1.1 为什么要选择ML策略
当你想要对一个神经网络模型进行改进时,调整方法可能会很多,比如:
1.扩增训练集的数目
2.增加训练集的多样性
3.用梯度下降法训练模型更长的时间
4.尝试新的梯度下降法策略,比如Adam
5.增大或减小网络规模的大小
6.尝试dropout
7.填加
L2
L
2
正则化
8.改变网络的算法结构,例如改变激活函数、改变隐藏节点的数目等。
如果按照不合适的策略进行调整,可能会白费大量的时间和精力,这就涉及到机器学习的策略选择的问题。
1.2 正交化
以早期的模拟信号电视机为例,当图像大小或形状不合适时,会有专门的几个旋钮来针对不同的需求来调试,比如改变高度、改变宽度、消除梯形等等。
图1 模拟信号电视机图像的调整
这几个按钮的功能是相互独立的,一个旋钮的转动不会对其他的功能产生影响,也可以称为这几个旋钮的功能时正交的。
在调试机器学习模型时,也会有很多旋钮(也就是上节讲到的调整策略)。机器学习主要实现的是以下四个阶段:
1.在训练集上代价函数表现良好;
2.在开发集上代价函数表现良好;
3.在测试集上代价函数表现良好;
4.在真实世界代价函数表现良好;
针对这4个不同的阶段的问题可以采取不同的策略,比如:
1.如果训练集表现不佳时,可以增加网络结构,或者采用Adam算法等;
2.如果训练集上表现不错,而在开发集上拟合效果不好时,可以采用正则化,增大输入数据量等方法;
3.如果在开发集上效果不错,而测试集上效果不好时,可能时开发集过拟合了,这时可以增大开发集的数据规模,返回上一步重新训练。
4.如果前面几步都表现不错,而在现实世界的用户体验较差时,可能需要你调整开发集或代价函数了,
1.3 单一数字评估指标
当你想要评价多个模型的训练效果时,可能会有多个指标来供你判断。例如,判断图片中是否有猫的问题,有查准率P和查全率R两个指标。
Classifier | Precision | Recall |
---|---|---|
A | 95% | 90% |
B | 98% | 85% |
查准率时指模型中找出的猫的图片中真正是猫的图片所占的比率,也就是表征有“多准”。
查全率是指模型中找出的猫的图片占测试数据集所有猫的图片的比率,也就是表征有“多全”。
如果同时考虑这两个指标的话,很难评价A和B两个模型效果更好,这时候就需要采用单一数字指标进行评估。
可以将这两个指标综合起来,用F1分数来表示,F1分数是这两个指标的协调平均数:
Classifier | Precision | Recall | F1 |
---|---|---|---|
A | 95% | 90% | 92.4% |
B | 98% | 85% | 91.0% |
可以看出A模型的F1指数更高,因此模型表现更为优秀。
1.4 满足和优化指标
有时候想要把多指标整合到一个单一指标并没有那么容易,这时可以考虑设置满足(satisficing)和优化(optimizing)指标。
Classifier | Accuracy | Running time |
---|---|---|
A | 90% | 80ms |
B | 92% | 95ms |
C | 95% | 1500ms |
满足指标是必须要满足的前提条件,也就是设置一定的门槛或者阈值,在本例中C模型虽然精度最好,但是运行时间太长,因此设置的满足指标时:Running time<100ms。当满足这个指标以后,不管Running time是大还是小都不再考虑,而是考虑优化指标。
本例中的优化指标时Accuracy,A和B模型都已经符合满足指标的要求,而B模型精度更高,因此整体表现B模型最优。
1.5 训练、开发、测试集划分
在机器学习模型的训练过程中,如果 训练、开发、测试集划分的不合理,将会显著降低模型的训练效率。以猫的二分类问题进行说明,假设你有以下不同国家的猫的图片数据:
图2 错误的开发集、测试集划分
如果按照图2的方法划分开发(dev)和测试(test)集的话,你会发现在开发集上表现良好的模型在测试集上效果很差。可以想象,开发集中这些欧美国家的猫的特征和测试集中亚洲国家的猫的特征肯定不同,因此适用于欧美猫的模型在亚洲猫的数据中肯定表现不会那么优秀。
因此,正确的做法时将所有这些数据随机打乱,再划分出开发集和测试集。这样开发集和测试集中数据的分布将会一致。
当你的模型构建好以后,如果又有新的数据,你想加入这些新数据来训练新的模型时,记得随机打乱以后再加入到开发集和测试集中。
1.6 开发集和测试集的大小
本节内容和前面章节的内容类似:
吴恩达《改善深层神经网络:超参数调试、正则化以及优化》week1
1.7 什么时候该改变开发、测试集和指标
有时候你的开发、测试集和指标部署好以后,模型训练了一段时间,你却发现出现了一些问题,这是你需要对你的开发、测试集和指标进行改进。
以的猫的分类器为例,假如我们把分类错误率设定为要评价模型的指标,两个模型A和B的表现如下,A模型3%的错误率,B模型5%的错误率,单从评价指标来说,A模型表现更好,但是有时候A模型会错误地将一些色情图片判断为猫,如果把A模型部署到产品中去,当用户需要猫的图片,却得到了一张色情图片,那这个产品对用户来说简直时灾难。B模型虽然错误率较高,却不会推送色情图片,因此不管是开发者还是用户都将会认为B模型效果更好。
上面讲到的就是预先布置的开发、测试集和指标不合适的情况,这时候就需要对其进行改进。
原始的错误率指标为:
其中, I I 为指示器,统计出花括号中表达式为真的个数。这个指标不将色情图片和其他图片一视同仁,不能重点突出色情图片的巨大问题。因此可以做如下改进:
其中当图片为非色情图片时, w[i]=1 w [ i ] = 1 ,而当图片为色情图片时,可以将 w[i] w [ i ] 设置为一个很大的值,如100或1000等。
1.8 为什么时人的表现
在过去几年中,很多机器学习团队开始讨论如何机器和人的表现。有两个主要原因:
1.机器学习的性能突然得到了很大的提升,已经可以在一些领域与人类媲美。
2.当人类在某些领域表现出色时,可以有针对性的对模型进行改进,不断提升机器学习的性能。
图3 机器和人类的表现
图2中紫色曲线时机器学习的表现随时间的变化规律,当它超越人类以后,上升速率将会变得平缓,并慢慢接近一个极限,但并不会达到这个极限,如图中的绿色虚线所示,绿色虚线就是贝叶斯最优误差(Bayes optimal error)。贝叶斯最优误差一般认为是理论上能够达到的最小误差。
紫色曲线在到达人类表现以前,上升速度很快,而达到人类表现以后就变得平缓,有两方面的原因:一是人类的认知水平已经很接近于贝叶斯最优误差了,机器超越人类以后剩余的上升空间已经不大。二是当机器性能比人类认知水平低时,还可以对样本进行标记,可以人为地对模型有针对性的改进,以及进行更好的偏差和方差分析。
1.9 可避免偏差
当训练模型的时候,你可能想要模型的表现尽量好,但是到底多好合适呢?这时你要参考人类的表现。以猫的二分类问题为例,
如果一个模型在训练集上的误差为8%,在测试集上的误差为10%,到底这个模型怎么样呢?下步该如何调试呢?
如果人类的分类误差为1%的话,那么认为这个模型对训练集拟合不够好,是高偏差的,调试的重点应该放到减小偏差上面,例如扩大神经网络的规模,或者延长梯度下降的时间等。
如果人类的分类误差为7.5%的话,那么认为这个模型是高方差的,调试的重点应该放到减小方差上面,使得开发集误差尽量接近于训练集误差。
在本例中,人类的判别误差约等于贝叶斯最优误差,因为人类很擅长图片的分析,人类的判别误差于贝叶斯误差之间的差别很小。
本课程中,将训练集误差与贝叶斯最优误差之间的差别叫做可避免偏差,而开发集与训练集之间的误差称为方差。
上例中,人类判别误差为1%时,可避免偏差为7%,方差为2%。
人类判别误差为7.5%时,可避免偏差为0.5%,方差为2%。
1.10 理解人类的表现
人类的判别误差用来估计贝叶斯误差。那么如何来确定人类的判别误差呢?
以X光照片的诊断为例,一般人能够达到3%的误差率,一般的医生能够达到1%的误差率,经验丰富的医生能够达到0.7%的误差率,专家组集中讨论后能够达到0.5%的误差率。
那么哪个误差率才是人类的表现水平呢?答案时0.5% 。
用人类表现来估计贝叶斯误差以后,可以根据可避免偏差和方差的大小来有针对性的对模型进行调整。
1.11 超过人的表现
在一些领域,机器学习的表现甚至可以超过人类。以上节的X光片诊断为例,人类的误差率为0.5%,如果你的训练集误差达为0.3%,开发集误差为0.4%。那么可避免偏差时多少呢?这时就很难回答。因为贝叶斯误差这时候可能为0.1%,0.2%等。由于 这时候机器的表现已经超过了人类,已经很难通过人类的直觉来对模型进行改进。
以下领域的机器学习性能已经超越了人类,包括:
1.在线广告,预测用户的点击行为。
2.商品推荐,向用户推荐商品,电影,音乐等。
3.物流预测,预测从A地到B地所需要的时间。
4.贷款审批,预测是否向某人发放贷款。
以上4个例子都是从结构化数据中学习而来的,计算机更擅长在这些信息中获得有用的统计特征。
1.12 改善你的模型表现
图4 改善模型的步骤
图3所示的是进行模型改进时的步骤。
对比训练集误差和贝叶斯误差之间的差别,即可避免偏差。如果可避免偏差大的话,说明在训练集上拟合不好,可以训练更大的模型、训练更长时间、采用更好的优化算法或更改神经网络结构如CNN、RNN等。
对比开发集误差和训练集误差之间的差值,即方差,如果方差大的话,说明在训练集上产生了过拟合,可以考虑增大数据量、正则化(L2,dropout等),或改进神经网络结构、搜索超参数等。