Skip to content

Commit

Permalink
up
Browse files Browse the repository at this point in the history
  • Loading branch information
fierceX committed Jul 28, 2022
1 parent 47c9ff5 commit cff5f2e
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 13 deletions.
Binary file modified MLY.epub
Binary file not shown.
Binary file modified MLY.pdf
Binary file not shown.
14 changes: 7 additions & 7 deletions MLY_cn.tex
Original file line number Diff line number Diff line change
Expand Up @@ -1733,26 +1733,26 @@ \chapter{优化验证测试}\label{ux4f18ux5316ux9a8cux8bc1ux6d4bux8bd5}}
test)}: 首先计算 \(S_{out}\)\(S^*\)
,接着比较他们的大小。有两种可能:

情况1:\(\text{Score}\_A {(S^*)} \gt \text{Score}\_A {(S_{out})}\)
情况1:\(\text{Score}_A {(S^*)} \gt \text{Score}_A {(S_{out})}\)

在这种情况下,你的学习算法正确地给了 \(S^*\) 一个比 \(S_{out}\)
更高的分数。尽管如此,我们的近似搜索算法选择了 \(S_{out}\) 而不是
\(S^*\) . 则表示你的近似搜索算法没能够找到最大化\(\text{Score}_A(S)\)
的那个 \(S\) .
此时优化验证测试告诉你,搜索算法存在着问题,应该花时间研究。例如,你可以尝试增加定向搜索的搜索宽度。

情况2:\(\text{Score}\_A (S^*) \leq \text{Score}\_A (S_{out})\)
情况2:\(\text{Score}_A (S^*) \leq \text{Score}_A (S_{out})\)

在这种情况下,计算 \(\text{Score}\_A (.)\)
在这种情况下,计算 \(\text{Score}_A (.)\)
的方式是错误的:它没有给正确的输出 \(S^*\) 比实际输出 \(S_{out}\)
一个相同或更高的分数。优化验证测试告诉你,目标(得分函数)存在问题。因此,你应该专注于改进你的算法对不同的句子
\(S\) 学习或近似出得分 \(\text{Score}_A (S)\) 的方式。

我们上面的讨论集中于某个单一的样本 \(A\)
上,想要在实践中运用优化验证测试,你需要在开发集中检测这些误差样本。对于每一个误差样本,你都需要测试是否有
\(\text{Score}\_A (S^*) \gt \text{Score}\_A (S)\_{out}\) .
\(\text{Score}_A (S^*) \gt \text{Score}_A(S_{out})\) .
开发集中所有满足该不等式的样本都将被标记为优化算法自身所造成的误差,而满足不等式
\(\text{Score}\_A (S^*) \leq \text{Score}\_A (S)_{out}\)
\(\text{Score}_A (S^*) \leq \text{Score}_A(S_{out})\)
的样本将被记为是计算得分 \(\text{Score}_A (.)\) 造成的误差。

假设你最终发现 95\% 的误差是得分函数 \(\text{Score}_A (.)\)
Expand All @@ -1772,7 +1772,7 @@ \chapter{优化验证测试的一般形式}\label{ux4f18ux5316ux9a8cux8bc1ux6d4b

假设 \(y^*​\)``正确的'' 输出,可算法输出了 \(y_{out}​\) .
此时的关键在于测量是否有
\(\text{Score}\_x(y^*) \ge \text{Score}\_x(y\_{out})​\) .
\(\text{Score}_x(y^*) \ge \text{Score}_x(y_{out})​\) .
如果该不等式成立,我们便可以将误差归咎于优化算法。(请参考前一章的内容,以确保你理解这背后的逻辑。)否则,我们将误差归咎于
\(\text{Score}_x (y)​\) 的计算方式。

Expand All @@ -1789,7 +1789,7 @@ \chapter{优化验证测试的一般形式}\label{ux4f18ux5316ux9a8cux8bc1ux6d4b

假设你的算法输出了一个错误的翻译 \(E_{out}​\),而不是正确的翻译 \(E^*​\) .
优化验证测试会要求你计算是否有
\(\text{Score}\_C (E^*) \gt \text{Score}\_C (E)_{out}​\) .
\(\text{Score}_C (E^*) \gt \text{Score}_C(E_{out}​)\) .
如果这个不等式成立,表明 \(\text{Score}_C(.)​\) 正确地辨认 \(E^*​\)
是一个更好的输出;因此你可以将把这个误差归咎于近似搜索算法。否则,你可以将这个误差归咎于
\(\text{Score}_C(.)​\) 的计算方式。
Expand Down
8 changes: 4 additions & 4 deletions doc/ch44.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,14 @@ $$

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

情况1:$\text{Score}\_A {(S^*)} \gt \text{Score}\_A {(S_{out})}$
情况1:$\text{Score}_A {(S^*)} \gt \text{Score}_A {(S_{out})}$

在这种情况下,你的学习算法正确地给了 $S^*$ 一个比 $S_{out}$ 更高的分数。尽管如此,我们的近似搜索算法选择了 $S_{out}$ 而不是 $S^*$ . 则表示你的近似搜索算法没能够找到最大化$\text{Score}_A(S)$ 的那个 $S$ . 此时优化验证测试告诉你,搜索算法存在着问题,应该花时间研究。例如,你可以尝试增加定向搜索的搜索宽度。

情况2:$\text{Score}\_A (S^*) \leq \text{Score}\_A (S_{out})$
情况2:$\text{Score}_A (S^*) \leq \text{Score}_A (S_{out})$

在这种情况下,计算 $\text{Score}\_A (.)$ 的方式是错误的:它没有给正确的输出 $S^*$ 比实际输出 $S_{out}$ 一个相同或更高的分数。优化验证测试告诉你,目标(得分函数)存在问题。因此,你应该专注于改进你的算法对不同的句子 $S$ 学习或近似出得分 $\text{Score}_A (S)$ 的方式。
在这种情况下,计算 $\text{Score}_A (.)$ 的方式是错误的:它没有给正确的输出 $S^*$ 比实际输出 $S_{out}$ 一个相同或更高的分数。优化验证测试告诉你,目标(得分函数)存在问题。因此,你应该专注于改进你的算法对不同的句子 $S$ 学习或近似出得分 $\text{Score}_A (S)$ 的方式。

我们上面的讨论集中于某个单一的样本 $A$ 上,想要在实践中运用优化验证测试,你需要在开发集中检测这些误差样本。对于每一个误差样本,你都需要测试是否有 $\text{Score}\_A (S^*) \gt \text{Score}\_A (S)\_{out}$ . 开发集中所有满足该不等式的样本都将被标记为优化算法自身所造成的误差,而满足不等式 $\text{Score}\_A (S^*) \leq \text{Score}\_A (S)_{out}$ 的样本将被记为是计算得分 $\text{Score}_A (.)$ 造成的误差。
我们上面的讨论集中于某个单一的样本 $A$ 上,想要在实践中运用优化验证测试,你需要在开发集中检测这些误差样本。对于每一个误差样本,你都需要测试是否有 $\text{Score}_A (S^*) \gt \text{Score}_A(S_{out})$ . 开发集中所有满足该不等式的样本都将被标记为优化算法自身所造成的误差,而满足不等式 $\text{Score}_A (S^*) \leq \text{Score}_A(S_{out})$ 的样本将被记为是计算得分 $\text{Score}_A (.)$ 造成的误差。

假设你最终发现 95% 的误差是得分函数 $\text{Score}_A (.)$ 造成的,而仅有 5% 的误差是由优化算法造成的。现在你应该知道了,无论你如何改进你的优化程序, 实际上也只会消除误差中的 5% 左右。因此,你应该专注于改进你的得分函数 $\text{Score}_A (.)$ .
4 changes: 2 additions & 2 deletions doc/ch45.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

你可以在如下情况运用优化验证测试,给定输入 $x$ ,且知道如何计算 $\text{Score}_x (y)$ 来表示 $y$ 对输入 $x$ 的响应好坏。此外,你正在使用一种近似算法来尽可能地找到$\arg \max_y \text{Score}_x(y)$ ,但却怀疑该搜索算法有时候并不能找到最大值。在我们先前提到的语音识别的例子中,$x=A$ 代表某个音频片段, $y=S$ 代表输出的转录。

假设 $y^*​$ 是 “正确的” 输出,可算法输出了 $y_{out}​$ . 此时的关键在于测量是否有 $\text{Score}\_x(y^*) \ge \text{Score}\_x(y\_{out})​$ . 如果该不等式成立,我们便可以将误差归咎于优化算法。(请参考前一章的内容,以确保你理解这背后的逻辑。)否则,我们将误差归咎于 $\text{Score}_x (y)​$ 的计算方式。
假设 $y^*​$ 是 “正确的” 输出,可算法输出了 $y_{out}​$ . 此时的关键在于测量是否有 $\text{Score}_x(y^*) \ge \text{Score}_x(y_{out})​$ . 如果该不等式成立,我们便可以将误差归咎于优化算法。(请参考前一章的内容,以确保你理解这背后的逻辑。)否则,我们将误差归咎于 $\text{Score}_x (y)​$ 的计算方式。

让我们再看一个例子:假设你正在构建一个中译英的机器翻译系统,输入一个中文句子$C$ ,并计算出每一个可能的翻译句子 $E$ 的得分 $\text{Score}_C(E)$,例如,你可以使用 $\text{Score}_C(E)=P(E\|C)$,表示给定输入句子 $C$ ,对应翻译句子为 $E$ 的概率。

Expand All @@ -13,7 +13,7 @@ $$
$$
然而所有可能的英语句子构成的集合太大了,所以你将依赖于启发式搜索算法。

假设你的算法输出了一个错误的翻译 $E_{out}​$,而不是正确的翻译 $E^*​$ . 优化验证测试会要求你计算是否有 $\text{Score}\_C (E^*) \gt \text{Score}\_C (E)_{out}​$ . 如果这个不等式成立,表明 $\text{Score}_C(.)​$ 正确地辨认 $E^*​$ 是一个更好的输出;因此你可以将把这个误差归咎于近似搜索算法。否则,你可以将这个误差归咎于 $\text{Score}_C(.)​$ 的计算方式。
假设你的算法输出了一个错误的翻译 $E_{out}​$,而不是正确的翻译 $E^*​$ . 优化验证测试会要求你计算是否有 $\text{Score}_C (E^*) \gt \text{Score}_C(E_{out}​)$ . 如果这个不等式成立,表明 $\text{Score}_C(.)​$ 正确地辨认 $E^*​$ 是一个更好的输出;因此你可以将把这个误差归咎于近似搜索算法。否则,你可以将这个误差归咎于 $\text{Score}_C(.)​$ 的计算方式。

在人工智能领域,这是一种非常常见的 “设计模式”,首先要学习一个近似的得分函数 $\text{Score}_X(.)$ ,然后使用近似最大化算法。如果你能够发现这种模式,就能够使用优化验证测试来理解造成误差的来源。

0 comments on commit cff5f2e

Please sign in to comment.