Andrew Ng's deeplearning Course3Week1 ML Strategy(结构化机器学习)

一、机器学习的策略

什么是机器学习策略,机器学习的策略就是一些分析机器学习问题的方法。

Andrew Ng's deeplearning Course3Week1 ML Strategy(结构化机器学习)

当你的模型精准度达到90%时,还不够好,你想让它更好,你可以选择收集更多的数据,尝试更大或更小的网络,尝试dropout,尝试调整各种参数,你的选择太多了,但你并不知道调整过后效果怎么样,可能花费几个月时间但是效果并没长进,有什么应对办法嘛,那就是正交化。

正交化,对于那些知道正交化的人来说,他们的思路非常清晰,他们知道要去调整哪些参数,来达到他们需要的效果。

如何正交化?

一般我们的机器学习有如下图的四个步骤:

Andrew Ng's deeplearning Course3Week1 ML Strategy(结构化机器学习)

正交化就类似于电视机上的按钮,每一个按钮只调整固定的东西,例如宽度不够,那么我们调整宽度的按钮就只调整宽度,不影响其他的。

反映到机器学习中,如下:

1.拟合训练集使成本函数较低   可用的“按钮”有:更大的神经网络、adam……

2.拟合验证集使成本函数较低   可用的“按钮”有:正则化、更大的训练集                            

3.拟合测试集使成本函数较低   可用的“按钮”有:更大的验证集

4.在现实世界中表现良好          可用的“按钮”有:改变验证集或成本函数

PS:还有一个是early stoping,但它会同时影响到1和2,如果你想用也可以。

二、设定指标

1.单一数字评估指标

Andrew Ng's deeplearning Course3Week1 ML Strategy(结构化机器学习)

Precision(查准率):样本中识别出来是猫的图片中有多少是真的猫的比例

Recall(查全率):样本中被识别出来是猫的占总体样本的比例

当分类A和分类B如上图时,我们该如何选择,这里我们可以用到“调和平均数”,即 [2/ (1/P + 1/R)],选择高的那个。

2.满足和优化指标

要把你所有要考虑的东西组合成单一数字评估指标并不如意,我们还有一种方法:满足和优化指标。

Andrew Ng's deeplearning Course3Week1 ML Strategy(结构化机器学习)

假设有n个指标,其中有一个是优化指标,我们尽力让它达到最好,剩下n-1个是满足指标,我们只需让它满足一个阈值就行,剩下的我们不去管它。

3.训练/验证/测试集划分

验证和测试集最好是来自同一分布。

正如之前所提到的,在当下的大数据时代,训练/验证/测试的规模划分最好是98%/1%/1%,或者类似的。并且最好有验证和测试集,验证集是去评估模型的效果,然后根据结果进行相应的调整。测试集就是真正的测试,用不带偏差的数据来真正衡量系统的性能。

4.总结

什么时候改变验证/测试集和指标:

(1)

Andrew Ng's deeplearning Course3Week1 ML Strategy(结构化机器学习)

当算法A的误差率为3%,算法B的误差率为5%时,我们认为算法A的效果更好。但是可能这是推松广告的算法,我们希望推送猫,但是算法A会有一定概率把色情图片认为是猫,这不是我们所希望的,因此虽然A的误差率要低一些,但是这个时候我们就需要改变了,例如可以在计算误差时,提高色情图片的权重,如猫为1,色情图片为10,这就是惩罚。

(2)

Andrew Ng's deeplearning Course3Week1 ML Strategy(结构化机器学习)

当在验证集和测试集都做的很好,但是在实际应用中并不好时,这时我们需要改变指标和验证/测试集。

三、机器学习性能与人类水平

Andrew Ng's deeplearning Course3Week1 ML Strategy(结构化机器学习)

在接近人类水平前,性能的进步比较快;到达或超越后,进步的趋势就减缓了,最终可能不会超过理论上的最好效果(贝叶斯最优误差)。

而为什么要与人类水平比较呢?

Andrew Ng's deeplearning Course3Week1 ML Strategy(结构化机器学习)

因为人类在很多任务上都做的比较好,只要机器学习性能不如人类,那么可以让人来帮忙提高性能,如:得到标记好的数据,错误分析,对偏差的分析。

1.选择避免偏差或方差

Andrew Ng's deeplearning Course3Week1 ML Strategy(结构化机器学习)

该如何选择避免偏差或是避免方差呢?

当人类的水平在1%的误差,训练集为8%,验证为10%时,我们认为还有很大提升空间,这时我们应该专注于避免偏差。

当人类的水平在7.5%的误差,训练集为8%,验证为10%时,我们认为可以接受,这时希望将验证更加接近训练,这时我们应该专注于避免方差。

更具体一点的说明看下图:
Andrew Ng's deeplearning Course3Week1 ML Strategy(结构化机器学习)
Human 0.5% 0.5% 0.5%
Training 5% 1% 0.7%
Dev 6% 5% 0.8%
我们可以看到
在第一个例子中,human~Training为4.5%,Training~Dev为1%,我们选择专注于避免偏差。
在第二个例子中,human~Training为0.5%,Training~Dev为4%,我们选择专注于避免方差。
在第三个例子中,human~Training为0.2%,Training~Dev为0.1%,我们选择专注于避免偏差。(即使这个表现已经算是非常不错的了)

2.总结

Andrew Ng's deeplearning Course3Week1 ML Strategy(结构化机器学习)

Andrew Ng's deeplearning Course3Week1 ML Strategy(结构化机器学习)