https://blog.csdn.net/jliang3
1.重点归纳
1)ML策略(机器学习策略)就是如何构建你的机器学习项目,目的是快速有效的方法能够判断哪些想法是靠谱的,或者甚至提出新的想法,判断哪些值得一试的想法,哪些是可以放心舍弃的。
2)正交化
(1)正交化原因
(2)机器学习正交化设计,分四个“按钮“
(3)每个“按钮“可调整的内容
(4)在训练神经网络时,一般不用提前停止(early stopping),提前停止有点难以分析,因为这个按钮会同时影响你对训练集的拟合,同时它也用来改善验证集的表现,所以这个按钮没有那么正交化,因为它同时影响两件事情。
3)为你的问题设置一个单实数评估指标,可以快速告诉你新尝试的手段比之前的手段好还是坏。
(1)评估猫分类器性能的例子:一个合理方式是观察它的查准率和查全率,两者之间往往需要折衷,两个指标都要顾及到。需要一个新的评估指标能够结合查准率和查全率,此处结合查准率和查全率的标准方法就是F1系数,就可以从多个模型中快速选出最好的模型。
(2)四大区数据中得到的误差来评估多个分类器例子:这四个数字很难一眼看出哪个分类器效果更好,建议计算四个数值的平均值作为一个单实数评估指标来衡量各个分类器的性能。
4)有时候并不容易把所有指标组合成单实数评估指标,有时候需要满足指标和优化指标,即符合满足指标的前提下选择优化指标最好的模型。
(1)分类器例子:看重分类器的准确率,但同时要考虑模型运行的时间。一个相当合理的权衡方式:在满足运行时间要求的前提下能够最大限度提高准确率。
(2)通过定义优化指标和满足指标,就可以有一个明确的方式来选择最好的分类器。如果要考虑N个指标,选择其中一个指标作为优化指标,并尽量优化这个指标,然后剩下的N-1个指标都是满足指标,只要满足一定阈值就好。
(3)语音控制设备的触发词检测系统例子:精确度为优化指标,每24h发生小于等于1次假阳性为满足指标。
5) 如何切分验证集(也叫开发集)和测试集
(1)验证集和测试集的划分:将所有数据随机混洗,再放入验证集合测试集上,验证集和测试集应该来自相同的分布。
(2)在选择验证集和测试集时,验证集和测试集数据应该来源于同一数据分布,收集数据时随机分配到验证集和测试集上。
(3)反例:在中等收入邮政编码的贷款审批数据中训练,预测是否有能力偿还贷款,在几个月的学习后,再到低收入邮政编码数据上测试。中等收入邮政编码数据与低收入邮政编码数据不一样,花了大量的时间在中等收入数据中优化分类器,导致在低收入数据中效果很差。
6)验证集(也叫开发集)和测试集大小
(1)在机器学习的早期,这样划分是相当合理的,因为数据集比较小,数据集大小在[100, 10000]之间。旧的经验法则其实是为了确保验证集足够大,能够达到帮你评估不同模型的效果,并选择最好的模型。划分方法:
(2)在现代机器学习中,我们更习惯操作规模大得多的数据集,比如说有100万数据集。划分方法:
7)有时候在项目进行途中,你可能意识到目标错误了,这时候你应该修改你的评估指标。
(1)例子:算法A有3%错误,但是会把很多色情图片分类成猫并推送给客户;算法B有5%的错误,但不会把色情图片分类成猫。
(2)如果评估指标无法正确评估好算法的排名,那么就需要定义一个新的评估指标。评估指标的意义在于准确告诉我们,多个算法中哪个算法更适合我们的应用。
(3)机器学习任务看成两个独立(正交化)的步骤,第一步是设定目标,第二步是根据目标来瞄准目标并命中目标。只有在定义指标后,才能想如何优化系统来提高这个指标评分。
8)人的表现
(1)为什么研究人的表现:当试图让机器学习做人类能做的事情时,可以精心设计机器学习系统的工作流程,让工作流程效率更高。在这些场合,比较人类和机器是很自然的,或者你想让机器模仿人类的行为。
(2)当机器学习超越人类水平时,机器学习进展和精确度的提升就会变慢
(3)超越人类表现后提升变慢的原因
9)训练集误差与贝叶斯误差(用人类水平误差近似)之间的差距称为可避免偏差
(1)可避免误差小意味着训练集拟合得很好;反之说明拟合得不好,还有很大的改善空间。
(2)可以一直提高训练集表现直到接近贝叶斯误差。但是训练集误差不可能小于贝叶斯误差,否则就是过拟合。
(3)选择优化偏差还是方差取决于训练误差-贝叶斯误差差距与验证误差-训练误差差距两者的大小。如果训练误差-贝叶斯误差差距比较大,则优化偏差。如果验证误差-训练误差差距比较大,则优化方差。
10)理解人的表现
(1)在定义人类水平误差时,要弄清楚你的目标所在。
(2)在人类可以做得很好的任务中,可以估计人类水平的误差,使用人类水平误差来估计贝叶斯误差。
11)超越人类的表现
(1)机器学习的进展会在接近或者超越人类水平的时候变得越来越慢
(2)机器学习可以访问大量数据,在这方面可以比人类做得更好一些,可以比人类更敏锐地识别出数据中的统计规律。已经大大超越人类水平的机器学习问题
(3)人类在自然感知任务中表现非常好,所以有可能计算机很难在自然感知任务中超越人类的表现。计算机已经超越了人类的水平的问题:某些语音识别系统、某些计算机视觉任务、医疗任务(如阅读ECG、诊断皮肤癌、某些特定领域的放射科读图任务中)。
(4)要超越人类的表现不容易,但如果有足够多的数据,已经有很多深度学习系统在单一监督学习问题上已经超越了人类的水平。
12)改善模型表现
(1)监督学习算法两个基本的步骤
(2)在正交化的指导下,处理偏差问题和处理方差问题是两套独立的技巧。
(3)训练误差与人类水平(近似贝叶斯误差)之间的差距称为可避免偏差,这是对训练集的可优化空间,降低可避免偏差的方法
(4)检查验证集误差与训练集误差的差距就知道方差问题有多大,降低方差的方法
2. 为什么是ML策略
1)机器学习策略就是如何构建你的机器学习项目
2)学习策略例子
(1)假设你正在调试猫分类器,经过一段时间的调整后系统达到90%准确率,但是这个准确率不能满足需求,以下想法可能可以改善你的系统
(2)当你在优化一个深度学习系统时,通常有很多想法可以尝试,但是如果做出了错误的选择,完成可能会白费了很长时间往错误的方向前进。如花费6个月时间收集更多数据,但是却没有改善模型。
(3)机器学习策略目的:快速有效的方法能够判断哪些想法是靠谱的,或者甚至提出新的想法,判断哪些值得一试的想法,哪些是可以放心舍弃的。
3)机器学习策略在深度学习时代在变化,因为现在对于深度学习算法来说,能够做到的事情比上一代机器学习算法大不一样,这些策略能够帮助我们提高效率,让我们的深度学习系统更快投入实用。
3. 正交化
1)搭建建立机器学习系统的挑战之一是可以尝试和改变的东西太多太多了(比如说有很多超参数可以调),那些效率很高的机器学习专家有个特点:对于要调整什么来达到某个效果非常清楚。这个步骤我们称之为正交化。
2)正交化例子:一台老式电视
(1)有很多按钮可以调整图像的各种性质
(2)每个按钮都有相对明确的功能。如果有一个按钮同时调整上面的所有参数,那几乎不可能把电视调好。正交化指的是设计的每个按钮都只调整一个性质。
(3)正交意味着互成90度,最理想的情况是设计出的控制装置,这样调整参数时就容易得多。
3)机器学习中的正交化
(1)要弄好一个监督学习系统,通常需要调你系统的“旋钮“,确保四件事情
(2)这4点类比上面电视机的4个按钮,每个按钮只控制一个参数,每个按钮可以控制这4个中1个的效果,每个按钮之间尽量互不影响。
4)在训练神经网络时,一般不用提前停止(early stopping),提前停止有点难以分析,因为这个按钮会同时影响你对训练集的拟合,同时它也用来改善验证集的表现,所以这个按钮没有那么正交化,因为它同时影响两件事情。
5)在机器学习中,如果系统某部分错误(在训练集上不好、在验证集上不错、在测试集上不错、无法满足用户体验),必须弄清楚到底是什么地方出问题了,然后再使用对应的“按钮“(或一组对应按钮)来解决这个问题。
4. 单一数字评估指标
1)无论是在调整参数,或者是尝试不同的学习算法,或者在搭建机器学习系统时尝试不同手段,如果你有一个单实数评估指标,你的进展会快得多。它可以快速告诉你新尝试的手段比之前的手段好还是坏,所以当团队开始进行机器学习项目时,推荐为你的问题设置一个单实数评估指标。
2)例子1:评估猫分类器性能
(1)评估你的分类器的一个合理方式是观察它的查准率和查全率,两者之间往往需要折衷,两个指标都要顾及到。
(2)使用查准率和查全率作为评估指标的时候有个问题,如果分类器A在查全率上表现更好,但分类器B在查准率上表现更好,无法判断哪个分类器更好。
(3)如果有两个评估指标就很难快速地从多个模型中选择一个最好的模型,所以不推荐使用两个评估指标来选择分类器,只需要一个新的评估指标能够结合查准率和查全率。此处结合查准率和查全率的标准方法就是F1系数,就可以从多个模型中快速选出最好的模型,可以加速改进机器学习算法的迭代过程。
3)例子2:通过四个地理大区的数据中得到的误差来评估多个分类器
(1)通过这四个数字很难一眼看出哪个分类器效果更好
(2)此处建议计算四个数值的平均值作为一个单实数评估指标来衡量各个分类器的性能,通过这个平均值可以快速判断哪个分类器好,哪个分类器最差。
5. 满足和优化指标
1)有时候并不容易把所有指标组合成单实数评估指标,有时候设立满足指标和优化指标很有用,即符合满足指标的前提下选择优化指标最好的模型。
2)例子:此处很看重分类器的准确率,但同时要考虑模型运行的时间
(1)如果我们把准确率和运行时间组合成一个单实数指标,如cost=accuracy – 0.5*runningTime,这种组合方式可能太刻意。
(2)一个相当合理的权衡方式:在满足运行时间要求的前提下能够最大限度提高准确率。此处准确率就是优化指标,我们希望准确率最大化;运行时间就是满足指标,只需要满足这个指标就好,但是并不关心这个指标有多好。
(3)通过定义优化指标和满足指标,就可以有一个明确的方式来选择最好的分类器。
(4)如果要考虑N个指标,选择其中一个指标作为优化指标,并尽量优化这个指标,然后剩下的N-1个指标都是满足指标,只要满足一定阈值就好。
3)例子:语音控制设备的触发词检测系统
(1)我们很在乎系统的精确度,也关注假阳性的情况(没有人说触发词时却被唤醒),这种情况下,组合两种苹果指标的合理的方式可能是最大化精确度,然后必须满足24h内最多只能有一次假阳性。
(2)精确度为优化指标,每24h发生小于等于1次假阳性为满足指标。
4)这些评估指标必须是在训练集/验证集/测试集上计算出来的,所以还需要设立训练集、验证集合测试集。
6. 训练/开发/测试集划分
1)设立训练集、开发集(dev集,有时也称保留交叉验证集)和测试集的方式会影响建立机器学习应用方面进展的速度,即使是大公司的团队,在设立这些数据集的方式也会让团队的进展变慢而不是加快。此处主要讲如何切分验证集和测试集。
2)机器学习的工作流程:尝试很多方法来使用训练集训练不同的模型,然后使用验证集来评估不同的方法,再选择其中一个方法不断迭代去改善模型在验证集的性能。最后,在验证集上得到一个满意的损失值,再用测试集去评估模型。
3)验证集和测试集的划分:将所有数据随机混洗,再放入验证集合测试集上,验证集和测试集应该来自相同的分布。
(1)如上图中,如果验证集数据来自前4个地区,测试集数据来自后4个地区,这样的划分会导致在验证集上表现很好的模型在测试集上表现很差。
(2)验证集和测试集的分布不同就类似,射箭时(类似训练并选择模型)往目标板上射,并不断逼近靶心。但最终在测试集上测试系统时,靶心却被移动到别的地方了。
4)反例:在中等收入邮政编码的贷款审批数据中训练,预测是否有能力偿还贷款,在几个月的学习后,再到低收入邮政编码数据上测试。中等收入邮政编码数据与低收入邮政编码数据不一样,花了大量的时间在中等收入数据中优化分类器,导致在低收入数据中效果很差。
5)在选择验证集和测试集时,验证集和测试集数据应该来源于同一数据分布,收集数据时随机分配到验证集和测试集上。
7. 开发集和测试集的大小
1)旧的划分数据方法
(1)划分方式:
(2)在机器学习的早期,这样划分是相当合理的,因为数据集比较小,数据集大小在[100, 10000]之间。
(3)旧的经验法则其实是为了确保验证集足够大,能够达到帮你评估不同模型的效果,并选择最好的模型。
2)现代数据划分方法
(1)在现代机器学习中,我们更习惯操作规模大得多的数据集,比如说有100万数据集。
(2)划分方式:
因为总样本有100万个,所以1%的样本有1万个,对于验证集和测试集来说可能已经足够。
3)测试集大小
(1)测试集的目的是完成系统开发后,测试集可以帮助你评估投产系统的性能。
(2)对于某些应用也许不需要对系统性能有置信度很高的评估,只需要训练集和验证集,而不需要单独的测试集。
8. 什么时候该改变开发/测试集和指标
1)有时候在项目进行途中,你可能意识到目标错误了,这时候你应该修改你的目标。例子:
(1)猫分类器中:算法A有3%错误,但是会把很多色情图片分类成猫并推送给客户;算法B有5%的错误,但不会把色情图片分类成猫。
(2)把一些色情图片推送给客户是公司不能接受的,因此算法B是更好的算法。
(3)根据评估指标来看算法A是最好的模型,但是实际上是一个更糟糕的算法,评估指标无法正确衡量算法之间的优劣排序。此时应该改变评估指标,或者改变验证集或测试集。
(4)评估指标修改:。赋予色情图片更大的权重,算法识别色情图片为猫时,误差项快速变大。
(5)如果评估指标无法正确评估好算法的排名,那么就需要定义一个新的评估指标。评估指标的意义在于准确告诉我们,多个算法中哪个算法更适合我们的应用。
2)机器学习任务看成两个独立(正交化)的步骤
(1)第一步是设定目标,要定义你要瞄准的目标,这是完全独立的一步。
(2)第二步是根据目标来瞄准目标并命中目标,在逼近目标时针对成本函数优化。只有在定义指标后,才能想如何优化系统来提高这个指标评分。
3)另一个例子:在网上下载高清的猫图片作训练集和验证集,部署到手机上时用户上传的模糊照片
(1)算法A的评估结果更好,但在实际测试时发现算法B表现其实更好,这是另一个指标和验证集测试集出问题的例子。
(2)指导思路:如果模型在验证集或测试集上指标表现很好,但实际应用时表现不好,那么就需要修改指标或者验证集和测试集。当前的指标和当前用来评估的数据和你真正关心的目标关系不大,那就应该改变评估指标,或者修改验证集和测试集,让它们更好反映你算法需要处理好的数据。
(3)此例子中应该修改验证集和测试集,让你的数据更能反映实际需要处理好的数据。
4)有一个评估指标和验证集可以让你更快做出决策判断哪个算法更优,可以加速团队迭代的速度。在没有评估指标和验证集时会减慢团队迭代和改善算法是速度,应该明确一个可以高速迭代改善性能的目标。
9. 为什么是人的表现
1)为什么要研究如何比较机器学习系统和人类的表现?
(1)深度学习系统的进步使得机器学习算法变得更好了,许多应用领域已经接近人类表现或已经比人类的表现更好。
(2)当试图让机器学习做人类能做的事情时,可以精心设计机器学习系统的工作流程,让工作流程效率更高。在这些场合,比较人类和机器是很自然的,或者你想让机器模仿人类的行为。
2)当机器学习超越人类水平时,机器学习进展和精确度的提升就会变慢。
(1)在超越人类水平后,它还可以继续变好,但性能增速准确度上升的速度就会变得越来越平缓。但用越来越大的模型,越来越多的数据训练模型时,越来越接近理论上限,但是无法超越理论上限。
(2)贝叶斯最优误差一般被认为是理论上可到达的最优误差。
2)超越人类表现后提升变慢的原因
(1)其中一个原因就是人类表现非常接近贝叶斯最优误差(理论最佳水平),特别是在感知问题上。当机器学习超越人类表现后,也许没有太多的空间可以继续改善。
(2)只要表现比人类更差,那么实际上可以使用某些工具来提高性能,一旦超越了人类的表现后,这些工具就没有用了。
10. 可避免偏差
1)当算法在训练集上的表现和人类水平的表现有很大差距的话(如Scenario A),说明算法对训练集拟合并不好。
(1)从减少偏差和方差的工具这个角度看,这种情况下,应该把重点放在减少偏差上。
(2)比如说训练更大的网络,或者增长运行梯度下降算法的时间。
2)当算法在训练集上的表现与人类水平很接近(如Scenario B),说明算法对训练集上表现不错,只比人类差一点点。
(1)重点应该放在减少算法的方差。
(2)可以尝试正则化,让验证集误差更接近训练集误差。
3)有一些任务的贝叶斯误差几乎为0,如人类在计算机视觉任务中能做到的水平和贝叶斯误差相差不远,误差只比贝叶斯误差高一点。
(1)上述两种情况的训练误差和验证误差一样,但是人类表现的水平不一样,算法对训练集拟合得好不好取决于人类水平误差的多少,即取决于训练误差与贝叶斯误差的差距。
(2)Scenario A中可以把训练误差降低到接近1%(有7%的优化空间),而验证集与训练集误差只有2%的优化空间,减少偏差的手段有效。
(3)Scenario B中训练误差没有太多的改善空间(只有0.5%的优化空间),而验证集误差还可以与训练集误差的差距2%还可以缩小一点,减少方差的手段有效。
(4)选择优化偏差还是方差取决于训练误差-贝叶斯误差差距与验证误差-训练误差差距两者的大小。如果训练误差-贝叶斯误差差距比较大,则优化偏差。如果验证误差-训练误差差距比较大,则优化方差。
4)训练集误差与贝叶斯误差的差距称为可避免偏差,可以一直提高训练集表现直到接近贝叶斯误差。但是训练集误差不可能小于贝叶斯误差,否则就是过拟合。
5)验证集误差与训练集误差的差距大概说明了算法在方差问题上还有多少改善空间。
11. 理解人的表现
1)普通人、医生、有经验的医生、有经验的医生团队有着不同的分类错误值
(1)人类水平错误的定义取决于分析的目的,当前例子中人类水平定义为0.5%,贝叶斯错误小于等于0.5%。
(2)为了发表研究论文或者部署系统,也许人类水平误差的定义可以不一样,可以使用只要你超越一个普通医生的表现,那系统已经达到实用了。表现超越了一名放射科医生,意味着系统在一些情况下可以有部署价值了。
(3)在定义人类水平误差时,要弄清楚你的目标所在。
2)误差分析
(1)Scenario A:无论选择哪种类型的医生作为人类水平都不影响,可避免偏差大概是4%,大于验证-训练误差的差值1%,应该优化偏差。
(2)Scenario B:无论选择哪种类型的医生作为人类水平都不影响,可避免偏差在0%-0.5%之间,验证-训练误差的差值4%大于可避免偏差,应该优化方差。
(3)Scenario C:估计贝叶斯误差应该选择最小值0.5%,因为训练误差不能小于人类水平,否则就属于过拟合了。因此可避免偏差为0.2%,大于验证-训练误差的差值0.1%,应该优化偏差。
(4)只有当模型表现足够好时才需要关心应该选择哪种类型医生作为人类水平,当接近人类水平时更难分辨出问题是偏差还是方差。
3)总结
(1)在人类可以做得很好的任务中,可以估计人类水平的误差,使用人类水平误差来估计贝叶斯误差。
(2)如果训练误差与人类水平误差的差值大于验证集误差与训练集误差的差值大,应该集中在优化偏差。
(3)如果验证集误差与训练集误差的差值大于训练误差与人类水平误差的差值大,应该集中在优化方差。
(4)贝叶斯误差有时为0,有时为小于某个阈值。
12. 超过人的表现
1)机器学习的进展会在接近或者超越人类水平的时候变得越来越慢
(1)对于Scenario A,我们很容易计算得到可避免误差为0.6%-0.5%=0.1%,我们不会用1%作为参考。
(2)对于Scenario B,我们很难知道可避免误差是多少,没有足够的信息让我们知道应该优化偏差还是方差。
2)已经大大超越人类水平的机器学习问题
(1)例子:
(2)这些例子都是从结构化数据中学习得来的,可能是记录用户点击的历史数据库、购物历史数据库、记录从A到B需要多久时间的数据库、以前贷款申请及结果的数据库。
(3)这些并不是自然感知问题(如计算机视觉问题、语音识别或自然语言处理任务),人类在自然感知任务中表现非常好,所以有可能计算机很难在自然感知任务中超越人类的表现。
(4)机器学习可以访问大量数据,在这方面可以比人类做得更好一些,可以比人类更敏锐地识别出数据中的统计规律。
3)深度学习最新的进展其中一方面是即使在自然感知任务中,在某些情况下计算机已经超越了人类的水平。
(1)已有语音识别系统超越人类水平
(2)已有一些计算机视觉任务,一些图像识别任务计算机已经超越人类水平,但人类很擅长这些,所以很难才能超越人类。
(3)医疗任务:如阅读ECG、诊断皮肤癌、某些特定领域的放射科读图任务中,计算机做得很好,也许超越了单个人类的水平。
4)要超越人类的表现不容易,但如果有足够多的数据,已经有很多深度学习系统在单一监督学习问题上已经超越了人类的水平。
13. 改善模型表现
1)想要让一个监督学习算法达到实用,
(1)两个基本的假设步骤
(2)在正交化的指导下,处理偏差问题和处理方差问题是两套独立的技巧
2)降低可避免偏差和方差总结
(1)训练误差与人类水平(近似贝叶斯误差)之间的差距称为可避免偏差,这是对训练集的可优化空间,降低可避免偏差的方法:
(2)检查验证集误差与训练集误差的差距就知道方差问题有多大,降低方差的方法:
相关文章:
《深度学习工程师-吴恩达》04结构化机器学习项目--机器学习(ML)策略2 学习笔记(如何进一步优化系统的方法论)