让我们来看看一些具体的数字,Jtrain和Jcv是什么,以及如何做出判断,如果学习算法具有高偏差或高方差,使用一个语音识别应用的例子作为讲解。
很多在手机上进行网络搜索的用户会使用语音识别,而不是在手机上的小键盘上打字,因为对着电话说话往往比打字快,所以网络搜索引擎得到的典型音频是这样的,语音识别算法的工作是输出文字记录,如果你训练一个语音识别系统并测量训练误差,训练误差意味着你的训练中音频片段的百分比是多少,算法不能完全正确地转录,假设这个数据集的训练误差是10.8%,意思是它完美地转录了89.2%,但在训练中犯了10.8%的错误,如果你也要测量你的语音识别算法的性能,在单独的交叉验证集中,假设它有14.8%的误差,所以如果你看看这些数字看起来训练误差真的很大,误差大然后交叉验证误差更高,但是即使你的训练设置错了十个,这似乎更高,似乎10%的误差会让你得出结论,它必须有很高的偏差,因为它在你的训练场上表现得不好,但事实证明,当分析语音识别时,同时测量另一件事,这就是人类的表现水平,换句话说,人类怎么能从这些音频片段中准确的转录语音呢?假设你测量了流利的演讲者可以转录音频剪辑,发现它是10.6%,你会发现人类水平的表现达到了10.6%的误差,为什么人为水平误差这么高?事实证明,对于网络搜索来说有很多有很多音频片段,有很多嘈杂的音频,没有人能准确地转录出所说的话,即使是人类也有10.6%的误差,那么,似乎很难指望一个学习算法做得更好,所以为了判断,如果训练误差高,事实证明,看到更有用的是,如果训练误差远高于人类的表现水平,在这个例子中,它只比人类插了0.2%,因为人类真的很擅长识别语言,如果建立一个语音识别系统能达到10.6%的误差,匹配人类的性能,所以它只是比人类做得差一点,但相比之下,Jcv和Jtrain的差距或差异要大得多,那里实际上有四个缺口,虽然之前说过可能有10.8%的误差意味着这是很高的偏差,当我们将它与人类水平性能进行基准测试时,我们看到算法实际上在训练集上做得更好,但更大的问题是交叉验证误差远小于训练误差,所以,这个算法实际上有更多的方差问题,而不是偏差问题,所以在评判的时候,如果训练误差高,对于建立性能的基线水平通常很有用,以及基准性能水平,错误的程度是多少希望算法最终可以达到。
建立基准性能水平的常见方法是,来衡量人类在这项任务上做得有多好,因为人类很擅长理解语音数据或处理图像或理解文本,当你使用非结构化数据时,人类级别的性能通常是一个很好的基准,例如,音频图像或文本。另一种估计性能基线水平的方法是,是否有一些竞争算法,可能是其他人以前实现的,甚至是一个竞争性的算法来建立一个性能的基线水平,如果你可以测量的话,或者有时你可能会根据以前的经验猜测,如果你可以访问此基准性能级别,这就是你可以合理地希望达到的错误水平,或者你希望算法达到的期望性能级别是什么,评判的时候,如果算法有很高的偏差或方差,你将查看性能的基线水平和训练错误,交叉验证误差,要测量的两个关键量是训练误差和你希望达到的基线水平有什么区别,所以0.2%,如果这个很大,你会说你有严重的偏见问题,然后你会看到你的训练错误之间的差距,交叉验证错误4.0%,如果这很高,那么会得出一个结论,你有一个高方差问题。
看第二个例子,如果性能的基线水平,这是人类水平的性能和训练错误,交叉验证错误,如下所示,分别是10.6%,15.0%,15.5%,第一个差距是4.4%,所以这实际上有一个很大的差距,训练误差比人类能做的和我们希望达到的要高得多,而交叉验证误差只比训练误差大一点,所以如果你的训练错误和交叉验证错误看起来像这样,这个算法有很高的偏差,所以通过观察这些数字,训练误差和交叉验证误差,可以直觉地或非正式地得到一种感觉,你的算法在多大程度上存在高偏差或高方差问题,总结一下,前两个数字之间的差距,给你一个感觉,你是否有一个高偏差问题,而这两个数字之间的差距,给你一个感觉,你是否有一个高方差问题,有时性能的基线水平可能为零,如果你的目标是达到完美的表现,那么性能的基线水平可以为0%,但对于某些应用,如语音识别应用,在那里一些音频只是嘈杂的,那么基线水平的性能可能远远高于零,就算法是否有偏差或方差而言,所以具体地说,如果你得到这样的数字,那么基线和训练误差的差距就大了,这将4.6%,训练误差与交叉验证误差的差距也很大,这是4.2%,所以如果它看起来像这样,得出结论,具有高偏差和高方差。