吴恩达Deeplearning.ai 知识点梳理(course 3,week 1)
这周主要讲的是ML Strategy
Why ML Strategy?
为什么要有ML Strategy呢?所谓战略,就是指通往目标的正确路径。(使命、愿景、战略:CEO最重要的三项工作)因为ML尤其是DeepLearning,有太多东西太多方向可以选择了,那么究竟哪一条路才是最高效的通向目标的呢?这就是本周要说的。
Orthogonalization
首先要有一个概念,就是Orthogonalization,正交化。也就是说,调一个参数,达到一个目标。比方说电脑或者电视屏幕,调宽的同时不能长也跟着变,尽可能的正交化。
- 首先要把training set在cost function上调到一个比较好的状态,例如在某些应用上到达Human level performance。例如使用Bigger Network或者使用Adam。
- 然后将dev set调到一个比较好的状态,例如使用Regularization,或者使用Bigger training set。
- 将Test set调到一个比较好的状态。如果不行,就试试Bigger dev set。因为一般来说如果dev set上很好,但是test set上不好,那么基本上就是对dev set overturned的了,也就是在dev set上过拟合了。
- 最后是在real world上表现很好。这个肯定是happy ending,但是如果不行,那就需要改变dev set后者cost funciton。因为如果test set上表现很好,但是real world不行,那么要么是dev set不能反映真实世界的distribution,要么就是cost function不能真正measure real world的需求。
对于early stopping,Dr Ng一般不主张用,因为这个early stopping并不是一个正交的tuning方法,因为它会影响training set和dev set两个数据集的性能。
Setting up your goal
Using single number evaluation metric
很多情景下,我们会有很多指标来评估一个classifier。比方说precision和recall,这两个概念比较类似于第一类错误和第二类错误,误检率和漏检率。precision是指检出的里边有多少是对的,recall是所有属于该检出的里边一共检出了多少。例如如下例子:
Precision | Recall |
---|---|
A | 95% |
B | 98% |
那么究竟用哪个呢?其实因为两个指标存在,并不容易选。所以人们一般使用F1 Score来对P和R进行平均。F1 Score是P和R的调和平均数。当只有一个指标的时候,就可以对分类器的性能更快速的迭代了。(Note:话说这个不是Neyman-Pearson定理确定这事儿不可能两全么)
Satisficing and Optimizing metric
很多时候我们找一个表达式来把所有指标都算进来是一个比较难的事,例如如下这个例子。
一方面分类器有精度的要求,另一方面也有Running Time的要求,那么我们是把cost放在accuracy+0.5*time么?这个就显得非常Artificial了。所以我们就把Running Time 设置成Satisficing metric,也就是一个约束,例如Running Time要小于100ms,然后在这个情况下去优化accuracy。
数据集
数据集一共有这么几个注意点:
- Train/Dev/Test set分布需要一致。也就是说,train/dev set要和最终的目标一致。
- Train/Dev/Test set大小比例,对于超过1,000,000的数据集来说,98%,1%,1%就可以了。不用把Dev和Test set设置的特别大。对于传统的小规模数据集来说,60%,20%,20%是一个比较合适的范围。
- 要将Metric选对。一个例子是如果一个Classifier准确率高,但是有一些pornography,那么就应该将cost function做成如果无法判别出pornography,那么cost就是普通的cost的十倍,也就是增加weight。
Compare to Human Level Performance
Why human level performance
首先了解几个界,第一个是human level performance,也就是人类的水平。第二个是Bayes Optimal,这个Optimal是不可能突破的。
Machine Learning一旦超越了Human Level Performance,就会变得比较慢了。一个原因是Human Level Performance本身就非常接近Bayes Optimal。另外一点,如果比Human Level差,那么是有一些工具能够来提升到Human Level的。这些工具是:
- 再多拿一些labeled data
- 从错误中做一些深入分析,为什么人类做得对?
- 对bias/variance 做更深入的分析。
Avoidable bias
Avoidable Bias主要是用来判别Training Set是不是做的足够好了。例如下面的例子:
对于情景A,说明Training Set的不够好,因为Training Error是8%,而Human是1%,有一个7这么大的gap,所以应该用更大的网络,或者Gradient Descent更长时间。而对于情景B,虽然Training Error和Dev Error和情景A相同,但是由于Human Level是7.5,说明Training set已经做的比较好了,重点是在variance上。所以Training Error和Human Performance被称作Avoidable Bias。
Surpassing Human-level Performance
对于第一种情况,avoidable bias是0.1,而variance是0.2,。对于第二种情况,其实就没法知道bias和variance reduction究竟能不能做到了。因为bayes optimal可能是0.1%,可能是0.2%也可能是0.3%。另外已知的那些能够判别是否bias和variance能够降低的方法不一定就work了。
其实在很多领域,尤其是结构化的machine learning问题,已经大大超越人类了。比方说广告推荐,产品推荐,物流以及贷款批准等。