前几章
20偏移和散布:错误的两个主要来源
译者的评论在更改之前,本章称为“系统性和随机性:两个主要错误源” ,也就是说,我使用术语“随机错误”和“系统性错误”来翻译偏差和方差。 但是,论坛成员robot @ Phaker在评论中正确地指出,在这些术语的俄语术语的机器学习领域中,“位移”和“散布”的概念是固定的。 我看着K.V. 沃龙佐夫(Vorontsov)当之无愧地是俄罗斯机器学习领域的权威之一和专业社区的资源,并同意上述机器人@ Phaker的观点 。 尽管事实上,从我的角度来看,算法训练中的“偏差”和“方差”与物理实验的“系统误差”和“随机误差”之间存在着深层的有意义的类比,除了它们在数学上均相等,不过,使用此字段中建立的术语是正确的。 因此,我对本章及后续各章的翻译进行了重新设计,将“系统性错误”和“随机错误”替换为“偏移和散布”,以后我将继续采用这种方法。
假设您的训练,验证和测试样本具有相同的分布。 然后您需要获取更多数据进行训练,这只会提高算法的质量,对吗?
尽管获取更多数据不会损害工作,但是不幸的是,新数据并不能总是如您所愿。 在某些情况下,获取其他数据的工作可能是浪费精力。 如何做出决定-在什么情况下添加数据,何时不担心它。
在机器学习中,错误的主要来源有两个:偏差和分散(方差)。 了解它们是什么将有助于您决定是否添加更多数据,也将帮助您选择提高分类器质量的策略。
假设您希望构建误差为5%的猫科动物标识符。 目前,您在训练样本上的分类器错误为15%,在验证样本上为16%。 在这种情况下,添加培训数据不太可能显着提高质量。 您应该专注于其他系统更改。 实际上,在训练集中添加更多示例只会使算法很难在该训练集中获得好的结果(为什么这将在以下章节中进行说明)。
如果您在训练样本中的错误百分比为15%(相当于85%的准确度),但您的目标是在5%(错误率为95%)中的错误百分比,那么首先需要提高训练样本中算法的质量。 验证/测试样本中算法的质量通常比训练样本(在训练样本中)的算法质量差。 您需要了解,那些算法使您所熟悉的示例中导致您的准确度不超过85%的方法将无法使您在该算法甚至没有看到的示例中获得95%的准确度。
如上所述,假设您的算法在验证样本中的错误率为16%(准确性为84%)。 我们必须将16%的错误分为两个部分:
- 首先,训练样本中算法错误的比例。 在此示例中,为15%。 我们非正式地称其为偏见 。
- 其次,该算法在验证(或测试)样本上比在训练样本上工作的效果要差多少。 在我们的示例中,验证样本比训练样本要差1%。 我们还将非正式地将其视为算法的一种变化 。
作者的评论在统计学中,对于偏差和散布(系统误差和随机误差)有一个更精确的定义,但这不应打扰我们。 粗略地说,当您拥有非常庞大的训练集时,我们认为偏差是训练集中算法中的一个错误。 散点图-与具有相同参数设置的训练样本相比,算法在测试样本上的效果要差得多。 如果使用标准误差,则可以编写定义这两个量的公式,并证明总误差等于偏差和散布的总和(随机误差和系统误差的总和)。 但是出于我们的目的,改进机器学习问题中的算法,对偏差和分散的非正式定义就足够了。
算法训练中的某些变化会影响误差的第一部分- 偏差,并提高训练样本中算法的性能。 一些变化会影响第二个成分- 方差,并有助于更好地将算法推广到验证和测试样本。 为了选择需要对系统进行的最有效的更改,了解这两个错误组件中的每一个如何影响整个系统错误非常有用。
作者的评论:还有一些方法可以同时减少位移和分散,从而对系统架构进行了重大更改。 但是它们通常更难找到和实施。
为了选择需要对系统进行的最有效的更改,了解这两个错误组件中的每一个如何影响整个系统错误非常有用。
理解贡献如何导致错误以及哪种分散的直觉的发展将帮助您有效地选择改进算法的方法。
21错误分类的例子
考虑我们的猫分类问题。 理想的分类器(例如,一个人)可以实现此任务的出色质量。
假设我们算法的质量如下:
- 训练样本中的误差= 1%
- 验证样本中的错误= 11%
这个分类器有什么问题? 应用上一章的定义,我们估计偏差为1%,点差为10%(= 11%-1%)。 因此,我们的算法具有很大的传播范围 。 分类器在训练样本中的错误率非常低,但是无法将训练结果推广到验证样本。 换句话说,我们正在处理过度拟合 。
现在考虑这种情况:
- 训练样本中的错误= 15%
- 验证样本中的错误= 16%
然后,我们估计偏差为15%,点差为1%。 该分类器在训练样本中训练不佳,而其在验证样本中的误差比训练样本中的误差大。 因此,该分类器的偏差较大,但传播范围较小。 可以得出结论,该算法是不适合的 。
我们还考虑以下错误分布:
- 训练样本中的错误= 15%
- 验证样本中的错误= 30%
在这种情况下,偏差为15%,价差也为15%。 该分类器具有较高的偏倚和扩散度:它在训练样本中效果不佳,偏倚较大,并且在验证样本中其质量比训练样本中的质量差得多。 分散也很大。 这种情况很难用再培训/教育不足来描述;该分类器既受过培训,又受过教育。
最后,考虑这种情况:
- 训练样本中的误差= 0.5%
- 验证样本中的误差= 1%
这是一个很好的分类器,它具有低偏差和分散性。 祝贺工程师取得了出色的成绩!
22比较最佳错误率
在我们识别猫的示例中,理想的错误份额是“最佳”分类器可用的级别,该级别接近0%。 观看图片的人几乎总是能够识别出图片中是否有猫,我们希望机器迟早也能做到这一点。
但是还有更复杂的任务。 例如,假设您正在开发一个语音识别系统,发现14%的音频录音中有很大的背景噪音或难以辨认的语音,甚至一个人都听不清那里所说的话。 在这种情况下,即使是最“最佳”的语音识别系统也可能在14%的范围内出现错误。
假设在我们的语音识别任务中,我们的算法取得了以下结果:
- 训练样本中的错误= 15%
- 验证样本中的错误= 30%
训练样本中分类器的质量已经接近最佳,错误率为14%。 因此,在这种情况下,我们没有太多机会来减少偏差 (改进训练样本中的算法)。 但是,不可能将该算法的操作推广到一个验证样本;因此,存在大量的散布减少活动领域。
这种情况类似于上一章的第三个示例,其中训练样本中的误差也等于15%,而验证样本中的误差为30%。 如果最佳错误率约为0%,则训练样本中的错误为15%,为改进算法提供了很大的工作空间。 在此假设下,减少算法偏差的努力可能会非常有成果。 但是,如果分类错误的最佳比例不能低于14%,则训练样本中算法错误的比例相似(即在14-15%的范围内)表明减少偏差的可能性几乎已经耗尽。
对于分类错误的最佳比例明显不同于零的问题,可以提出更详细的错误结构。 我们继续考虑带有语音识别的上述示例,可以将验证样本中的总误差30%分解为以下成分(可以用相同的方式分析测试样本中的误差):
- 最佳偏差(不可避免的偏差): 14%。 想象一下,我们认为即使是世界上最好的语音识别系统,其错误率也将达到14%。 我们将其称为学习算法偏移的“不可避免”部分。
- 可避免的偏差 :1%。 该值计算为训练样本中错误比例与最佳错误比例之间的差。
作者的评论:如果该值被证明是负值,那么,您在训练样本上的算法显示出的误差小于“最佳”误差。 这意味着您在训练集上进行了重新训练,算法记住了训练集的示例(及其类)。 在这种情况下,您应该专注于减少价差的方法,而不是进一步减少偏差。
- 差异 :15%。 训练样本和验证样本中的误差之间的差异
与此相关的以前的定义,位移和一次性位移之间的关系如下:
偏差(偏差) =最佳偏差( “不可避免的偏差” )+一次性偏差( “避免的偏差” )
作者的注释 :选择这些定义是为了更好地解释如何提高学习算法的质量。 这些定义不同于统计中采用的偏差和散布的正式定义。 从技术上讲,我定义为“偏移”应称为“数据结构中的错误(无法识别和消除)”,“消除偏差”应定义为“学习算法偏差超过最佳偏差” 。
可避免的偏差表明,训练样本中算法的质量比“最优分类器”的质量差得多。
方差的基本思想保持不变。 从理论上讲,我们可以通过在足够大的训练样本上进行训练来将传播始终减小到几乎为零。 因此,当样本足够大时,任何价差都是“可避免的”,因此不会存在“不可避免的价差”(不可避免的方差)之类的东西。
考虑另一个示例,其中最佳误差为14%,我们有:
- 训练样本中的错误= 15%
- 验证样本中的错误= 16%
在上一章中,我们将具有此类指标的分类器归类为高偏差分类器,在当前条件下,我们说“可避免偏差”为1%,利差约为1%。 因此,该算法已经可以很好地工作,并且几乎没有储备来提高其工作质量。 该算法的质量仅比最佳算法低2%。
从这些示例中可以清楚地了解到致命错误的大小对于决定采取进一步的措施非常有用。 在统计中,最佳错误率也称为贝叶斯错误率 。
如何找出最佳错误率的大小? 对于一个人可以很好地完成的任务,例如图像识别或解码音频片段,您可以要求评估者对数据进行标记,然后测量训练样本中人类标记的准确性。 这将给出最佳错误率的估计。 如果您正在解决甚至连一个人都难以应对的问题(例如,预测要推荐的电影或向用户显示的广告),那么在这种情况下,评估错误的最佳比例是相当困难的。
在“与人类水平的绩效进行比较”部分的第33至35章中,我将更详细地讨论将学习算法的质量与人可以达到的质量水平进行比较的过程。
在最后几章中,您学习了如何通过分析训练和验证样本中分类器错误的比例来评估可移动/不可恢复的偏差和散布。 下一章将研究如何利用这种分析得出的结论来决定是专注于减少偏差的方法还是减少价差的方法。 消除偏差的方法与减少分散的方法非常不同,因此您必须在项目中应用以提高质量的技术很大程度上取决于当前存在的问题-大偏差或大分散。
继续阅读!
23消除偏移和分散
这是消除偏差和分散的简单公式:
- 如果您有可以避免的较大偏差,请增加模型的复杂性(例如,通过添加层或(和)神经元来增加神经网络)
- 如果您分布广泛,请在训练集中添加示例。
如果您有机会增加神经网络的大小并无限地将数据添加到训练集中,这将有助于为大量机器学习任务获得良好的结果。
实际上,由于训练非常大的模型很慢,因此增加模型的大小最终会导致计算困难。 您也可以耗尽可用于培训的数据限制。 (即使在整个互联网上,当然也有猫的图像数量!)
与您的任务相关的算法模型的不同体系结构(例如,神经网络的不同体系结构)将为偏差和分散提供不同的值。 最近的深度学习研究的一大堆创建了许多创新的神经网络模型架构。 因此,如果您使用神经网络,则非小说可能是灵感的重要来源。 在开源中,例如在GitHub上,还有大量出色的算法实现。 但是,尝试使用新架构的结果比上面给出的简单公式的可预测性要差得多-增加了模型的大小并添加了数据。
增加模型的大小通常会减小偏差,但它也可能导致传播的增加,并且重新训练的风险也会增加。 但是,仅当您不使用正则化时才会出现再培训的问题。 如果在模型中包括设计良好的正则化方法,通常可以安全地增加模型的大小,而无需进行重新训练。
假设您使用L2正则化或辍学来应用深度学习( 译者注 :您可以在此处正常工作的正则化参数来阅读有关Dropout的信息 ,例如,在这里: https : //habr.com/company/wunderfund/blog/330814/ )。验证样本。 如果增加模型的大小,通常算法的质量会保持不变或增长; 其大幅下降的可能性不大。 我们不得不拒绝增加模型大小的唯一原因是庞大的计算开销。
24抵消与利差之间的权衡
您可能已经听说过“偏移量和分散量之间的折衷”。 在可以对学习算法进行的许多更改中,有一些可以减少偏差并增加传播,反之亦然。 «» .
, — () , , . , , .
( ). , , , .
, , . , , , , .
, , . .
, , .
25
, :
- (, ): , . , , , .
- , , . , ( ). , . ; , , , , .
- (L2 , L1 , Dropout): , , .
- (, ) : ,
:
26
, / .
, , , , , . , , . . .
, - . , , 100 , , . , :
, , . , .
, -, , . , - , , , - . , , .
27
, :
- : , , .
- (L1 , L2 , dropout): , .
- (. . , ): , . , .
- / : , . (, 1000 900) . ( 1000 100 10 ) , , . , , , , , , , . , , .
- () ( / ). ! , , . , . . . , . , , .
在这里,我给出了另外两种战术技术,它们与减少偏见有关,重复了前几章的内容:
- 根据从错误分析中获得的理解来修改传入的功能:假设您的错误分析导致您可以创建其他症状,以帮助算法消除某些类别的错误。这些新功能将有助于减少散射和偏移。从理论上讲,增加新特性可以增加传播。但是,如果发生这种情况,您总是可以利用正则化功能,通常可以使点差的增加平缓。
- 修改模型体系结构(例如,神经网络体系结构)以使其更适合您的任务:此方法可以减少偏差和分散。
延续