文章目录
1. 为什么是ML策略
提升ML性能,快速投入使用。
2. 正交化
正交化就是指先调整一个维度,合适了以后再调整另一个维度。
确保四件事:
- 系统在训练集上结果不错
- 开发集表现不错
- 测试集表现不错
- 实际使用中令人满意
关于early stopping:同时影响了训练集和开发集的拟合。
3. 单一数字评估指标
准确率:分类器标记为猫的例子有多少正确。
召回率:所有真猫图片,分类器识别了多少。
F1值:其是准确率和召回率的调和平均值。
4. 满足和优化指标
将准确度和运行时间组合成一个整体评估指标。
一般情况下,考虑N个指标中的一个作为优化指标,其他N-1个指标都是满足指标。
5. 训练/开发/测试集划分
机器学习的工作流程:尝试很多思路,用训练集训练不同的模型,使用开发集评估不同的思路,选择一个,不断迭代其开发集的性能,直到得到一个令人满意的成本,在用测试集去评估。
首先设立的就是开发集和单实数评估指标,就像我们的靶心一样,朝着这个目标去迭代,优化。
但是需要确保开发集和测试集来自同一个分布。
6. 开发集和测试集的大小
早期:70/30、60/20/20
现在:98/1/1或者更小,测试集只要10000个就可以了。
7. 什么时候该改变开发/测试集和指标
上图算法A的对猫图片分类错误更低,但是却会选出色情图片,这是没法接受的。所以需要修改原来的指标。
蓝色的分类错误指标显然将色情图片一视同仁了。有一种修改方法就是加个权重项,如果图片x不是色情图片,权重值为1;是色情图片,权重值为10或更高。
达到的效果:算法将色情图片分类为猫图时,错误率将迅速变大,换句话说对将色情图片分类为猫的错误进行了惩罚。
如果需要归一化的,除以所有w的和。将错误率归一化到0~1之间。
这就是一个正交化的例子,先优化分类,然后再反色情。
还是同样的分类问题,但是这次发现发现在dev/test集上的表现和实际应用中的准确率不一样。这时候就需要改变度量函数或者dev/test集了。
8. 为什么是人的表现
贝叶斯最优错误率——从x到y映射理论上可能达到的最优错误率。
为什么超过人类表现之后提升就不那么明显了呢?
一,人类水平在很多任务中离贝叶斯最优错误率已经不远了;
二,表现比人类差的时候,有很多工具来提高性能,一旦超过,这些工具作用就不那么明显了。
9. 可避免偏差
可避免偏差=贝叶斯错误率与训练错误率之间的差值
左边的例子专注于减少可避免偏差比较合适,右边的减少方差更好。
10. 理解人的表现
这是一个医学图像分类问题,有几种不同的人类的错误率,我们应该选哪个作为人类水平错误率呢?
把其当做贝叶斯错误率的替代或者估计来讲,我们选择0.5%以下。
但是这要看我们的算法适用场景,比如1%就可以替代一个经验丰富的放射科医生了。
左边的情况,可避免偏差过大,所以需要专注于减少偏差的技术,比如训练更大的网络。
右边的情况,方差过大,所以主要使用减少方差的工具,比如正则化或者获取更大的训练集。
之前我们估计偏差是用训练错误率和0进行比较,现在我们是和贝叶斯错误率进行估计。
11. 超过人的表现
超过人类表现之后,是过拟合还是贝叶斯误差率实际更低,我们从有限的信息里难以推断。