优化验证测试
,并为每一个可能的输出句子 计算得分。例如,你可以试着估计
,表示句子 是正确输出的转录的概率,其中
是给定的输入音频。
给定某种方法能够计算
后,你仍然需要找到一个英文句子 来使之最大化:
要如何去计算上面的
呢?假设在英文中共有 5000 个词汇,对于长度为 的句子,则有
种搭配,多到根本无法一一列举。因此,你需要使用一种近似搜索算法,努力去找到能够优化(最大化) 的那个
. 有一种叫做 “定向搜索” 的搜索算法,在搜索过程中仅保留最优的 个候选项(在本章中你并不需要了解该算法的细节)。类似这样的算法并不足以保证能够找到满足条件的
来最大化 .
假设有一个音频片段记录着某人说的:“我爱机器学习。”但你的系统输出的却是不正确的 “我爱机器人。”,它没能够输出正确的转录。造成该误差的可能原因有两种:
面对这种情况,一些研究人员将决定研究搜索算法;其他人则努力去找到更好的
. 但是,除非你知道其中哪一个是造成误差的潜在原因,否则你的努力可能会被浪费掉。怎么样才能更系统地决定要做什么呢?
让我们用
表示实际的输出 “我爱机器人”,用 表示正确的输出 “我爱机器学习” 。为了搞清楚上面的 1 或 2 是否存在问题,你可以执行 优化验证测试(Optimization Verification test): 首先计算 和
,接着比较他们的大小。有两种可能:
情况1:
在这种情况下,你的学习算法正确地给了
情况2:
在这种情况下,计算
的方式是错误的:它没有给正确的输出 比实际输出 一个相同或更高的分数。优化验证测试告诉你,目标(得分函数)存在问题。因此,你应该专注于改进你的算法对不同的句子
学习或近似出得分 的方式。
我们上面的讨论集中于某个单一的样本
上,想要在实践中运用优化验证测试,你需要在开发集中检测这些误差样本。对于每一个误差样本,你都需要测试是否有 . 开发集中所有满足该不等式的样本都将被标记为优化算法自身所造成的误差,而满足不等式
的样本将被记为是计算得分 造成的误差。
假设你最终发现 95% 的误差是得分函数