优化验证测试

假设你正在构建一个语音识别系统,该系统通过输入一个音频片段

优化验证测试 - 图1 ,并为每一个可能的输出句子优化验证测试 - 图2 计算得分优化验证测试 - 图3。例如,你可以试着估计优化验证测试 - 图4 ,表示句子优化验证测试 - 图5 是正确输出的转录的概率,其中优化验证测试 - 图6 是给定的输入音频。

给定某种方法能够计算

优化验证测试 - 图7 后,你仍然需要找到一个英文句子优化验证测试 - 图8 来使之最大化:

优化验证测试 - 图9

要如何去计算上面的

优化验证测试 - 图10 呢?假设在英文中共有 5000 个词汇,对于长度为优化验证测试 - 图11 的句子,则有优化验证测试 - 图12 种搭配,多到根本无法一一列举。因此,你需要使用一种近似搜索算法,努力去找到能够优化(最大化)优化验证测试 - 图13 的那个优化验证测试 - 图14 . 有一种叫做 “定向搜索” 的搜索算法,在搜索过程中仅保留最优的优化验证测试 - 图15 个候选项(在本章中你并不需要了解该算法的细节)。类似这样的算法并不足以保证能够找到满足条件的优化验证测试 - 图16 来最大化优化验证测试 - 图17 .

假设有一个音频片段记录着某人说的:“我爱机器学习。”但你的系统输出的却是不正确的 “我爱机器人。”,它没能够输出正确的转录。造成该误差的可能原因有两种:

  • 搜索算法存在问题。 近似搜索算法没能够找到最大化优化验证测试 - 图18的那个优化验证测试 - 图19.
  • 目标(得分函数)存在问题。 我们对优化验证测试 - 图20的估计并不准确。尤其在此例中,我们的得分函数没能辨认出 “我爱机器学习” 是正确的转录。对应不同的失败原因,你需要优先考虑的工作方向也将很不一样。如果原因 1 导致了问题,你应该改进搜索算法。如果原因 2 导致了问题,你应该在评估学习算法的函数

优化验证测试 - 图21 上面多花些心思。

面对这种情况,一些研究人员将决定研究搜索算法;其他人则努力去找到更好的

优化验证测试 - 图22 . 但是,除非你知道其中哪一个是造成误差的潜在原因,否则你的努力可能会被浪费掉。怎么样才能更系统地决定要做什么呢?

让我们用

优化验证测试 - 图23 表示实际的输出 “我爱机器人”,用优化验证测试 - 图24 表示正确的输出 “我爱机器学习” 。为了搞清楚上面的 1 或 2 是否存在问题,你可以执行 优化验证测试(Optimization Verification test): 首先计算优化验证测试 - 图25优化验证测试 - 图26 ,接着比较他们的大小。有两种可能:

情况1:

优化验证测试 - 图27

在这种情况下,你的学习算法正确地给了

优化验证测试 - 图28 一个比优化验证测试 - 图29 更高的分数。尽管如此,我们的近似搜索算法选择了优化验证测试 - 图30 而不是优化验证测试 - 图31 . 则表示你的近似搜索算法没能够找到最大化优化验证测试 - 图32 的那个优化验证测试 - 图33 . 此时优化验证测试告诉你,搜索算法存在着问题,应该花时间研究。例如,你可以尝试增加定向搜索的搜索宽度。

情况2:

优化验证测试 - 图34

在这种情况下,计算

优化验证测试 - 图35 的方式是错误的:它没有给正确的输出优化验证测试 - 图36 比实际输出优化验证测试 - 图37 一个相同或更高的分数。优化验证测试告诉你,目标(得分函数)存在问题。因此,你应该专注于改进你的算法对不同的句子优化验证测试 - 图38 学习或近似出得分优化验证测试 - 图39 的方式。

我们上面的讨论集中于某个单一的样本

优化验证测试 - 图40 上,想要在实践中运用优化验证测试,你需要在开发集中检测这些误差样本。对于每一个误差样本,你都需要测试是否有优化验证测试 - 图41 . 开发集中所有满足该不等式的样本都将被标记为优化算法自身所造成的误差,而满足不等式优化验证测试 - 图42 的样本将被记为是计算得分优化验证测试 - 图43 造成的误差。

假设你最终发现 95% 的误差是得分函数

优化验证测试 - 图44 造成的,而仅有 5% 的误差是由优化算法造成的。现在你应该知道了,无论你如何改进你的优化程序, 实际上也只会消除误差中的 5% 左右。因此,你应该专注于改进你的得分函数优化验证测试 - 图45 .