为了改善机器学习系统,我们有许多改善机器学习系统的方法,比如增加更多的训练集,修改神经网络的结构等等。如果没有机器学习策略,只是随便使用这些优化方法,那么机器学习系统可能毫无改进。漫无目的地改进机器学习,不如有针对性地改进机器学习。我们需要机器学习策略来指导我们如何改进机器学习系统。下面来了解一些机器学习策略。
正交化
搭建机器学习系统的挑战之一是你可以尝试和改变的东西太多了,比如有那么多的超参数可以调。效率很高的机器学习专家有个特点,他们思维清晰,非常清楚要调整什么,来达到某个效果,这个步骤称为正交化。
正交化或正交性是确保修改系统设计属性或者算法的一个组件不会创建或传播副作用到其他组件。这更容易相互独立地验证算法,它减少了测试和开发时间。
当设计学习系统时,有4个目标是要实现和正交。
第一,机器学习系统在训练集表现良好。如果没能实现,可以使用更大的神经网络,使用优化算法如Adam等。
第二,机器学习系统在开发集表现良好。如果没能实现,可以使用L2正则化,使用更大的数据集。使用L2正则化可能会影响到目标一,没有正交化,可以使用其他正则化方法,比如early sotpping。
第三,机器学习系统在测试集表现良好。如果没有实现,可能是因为开发集选择了错误的模型,可以加大开发集的数据。
第四,机器学习在现实世界中表现良好。如果没有实现,考虑一下训练集的数据的分布是否与现实世界的数据分布不一样,重新选择来自同一分布的数据集。
单一数字评估指标
无论是调整超参数,或者尝试不同的学习算法,如果你有一个数字评估指标,进展会快很多。单一数字评估指标可以指出新尝试的手段比之前的手段好还是坏。多评估指标有时会让人疑惑,比如有些指标说新的尝试效果好,有些指标说新的尝试效果不好。
常用的评估指标有分类的准确率,查准率和查全率,F1-score。
在某个二元分类问题中,数据集可以分成
- | - | - |
---|---|---|
- | 1 | 0 |
1 | True positive | False positive |
0 | False negative | True negative |
行代表实际的类别,列代表预测的类别。查准率(Precision)的公式是
查全率(Recall)的公式是
有时候需要权衡查准率和查全率,可是使用F1-score,F1-score又叫做查准率和查全率的调和平均数,公式如下
满足和优化指标
有许多不同的指标可以用来评估一个分类器的表现,他们叫评估指标。他们可以分为满足指标和优化指标。在训练集,开发集和测试集中使用这些评估指标来评估是很重要的。
有几个猫分类器,他们的分类准确率和运行时间如下表所示
Classifier | Accuracy | Running time |
---|---|---|
A | 90% | 80ms |
B | 92% | 95ms |
C | 95% | 1500ms |
在这种情况下,分类准确率和运行时间是评估指标。分类准确率是优化指标,因为我们希望猫分类器的分类准确率越高越好。运行时间是满足指标,在例子中要求小于100ms,意味着分类器要满足这个要求。
训练/开发/测试集
设置训练/开发/测试集时要注意一些问题
- 训练/开发/测试集和未来预测的数据要来自同一分布。在设置开发集时要同时设置一个评估指标,我们的工作就是为了这一评估指标满足某些条件。临时更改开发集或评估指标会让我们之前的工作都白费。
- 对于小的数据集,可以按照7/3的比例划分数据为训练集和测试集,或者按照6/2/2的比例划分数据为训练集、开发集和测试集。对于大数据,开发集和测试集占的比例可以更低,30%以下或20%以下也是可以的,因为对于1000000的大数据,开发集和测试集各占10000已经足够了,而10000只占所有数据的1%。
什么时候该改变开发/测试集和评估指标
当分类器在开发/测试集的评估指标已经很好了,但是在我们某些关注点中表现不好时,就需要改变开发/测试集或评估指标了。
比如有两个猫分类器,评估指标是分类的错误率。分类器A比分类器B的分类错误率低,因此选择分类器A。但是,分类器A会把一些色情图片误分类为猫,系统可能把这些色情图片推送给爱猫人士,我们会对这样的分类器分类器很不满意。而分类器B不会把色情图片误分类为猫,即使分类器B的分类错误率高点,但是我们更倾向于选分类器B。
一开始定义的评估指标不能正确地对分类器进行排序,需要修改评估指标。因为我们不希望猫分类器误把色情图片识别为猫,所以我们可以在计算错误率的公式上添加一个权重w,如果图片实际上是色情图片,那么权重w的数值要大一些,让公式对误识别色情图片的敏感度高些。比如权重为
加权错误率为
为什么是人的表现
现在已经有许多人比较机器学习算法和人的表现,为什么呢?因为现在机器学习的表现效果越来越好,甚至比人的表现更好。对于某些任务来说,人的表现几乎接近完美,把机器学习的表现和人的表现进行比较就很正常。
随着时间的增长,机器学习的表现和人的表现的关系如下图所示。
可以看到,随着时间的增长,机器学习的表现效果越来越好,甚至超过了人类的表现。我们希望机器学习能够到达理论最佳水平,但是分类器的性能无法超过某个理论的上限,这是所谓的贝叶斯最优误差。比如说语音识别,有些语音含有太大的噪声以致于不能知道说了些什么。
分类器在达到人类的水平之前进步得很快,超过人类水平之后就进步缓慢了。这有两个原因,第一是人类的表现已经很接近最优误差了,超过人类的水平后,分类器就没有很大的进步空间。第二,只要分类器比人类的表现更差,实际上可以使用某些工具来提高性能,一旦分类器超过人类的表现水平,这些工具就不再那么有效了。
只要机器学习的表现比人类更差,我们可以
- 获取更多带有标签的数据,
- 人工误差分析,
- 更好地分析偏差或方差,
来提高分类器的性能。
可避免偏差
可避免误差是只训练误差和最优误差的差值。
在猫分类器例子中,假设人类识别的错误率是1%,分类器在训练集中的错误率是8%,在开发集中的错误率是10%。这里,人类的识别误差很接近最优误差了,我们近似认为人类的识别误差就是最优误差。分类器在训练集的误差与最优误差相差7%,这是可避免偏差。分类器周期训练集的误差和在开发集的误差相差2%。所以,接下来的改进工作是减少分类器的偏差。
假设图片集很模糊,人识别的错误率是7.5%。人类的识别误差与分类器在训练集的误差相差0.5%,这个差别就是可避免误差。这个时候,改进的工作应该是缩小分类器在训练集的误差和开发集的误差的差距。
总结
使用人类水平误差作为贝叶斯误差的替代。如果可避免偏差大,那么分类器的主要问题是高偏差,改进方法可以是使用更复杂的神经网络、学习更长时间,使用优化算法(比如Adam)或更换其他的神经网络框架。如果训练误差和开发误差的差值大,那么分类器的主要问题是高方差,改进方法可以是增大训练集、正则化或更换其他的神经网络框架。