Commit d53b94a9 by 单韦乔

合并分支 'shanweiqiao' 到 'caorunzhe'

第二章修改

查看合并请求 !45
parents e4dff1e8 364cef67
......@@ -854,7 +854,7 @@ w^{'} = \argmax_{w \in \chi}\textrm{P}(w)
\end{figure}
%-------------------------------------------
\parinterval 从这个角度来看,可以很自然地引入语言模型打分来对枚举的解空间树的遍历进行增广:在解空间树中引入的权重\ \dash\ 将当前节点$i$的得分重设为语言模型打分$\log\textrm{P}(w_i | w_1 w_2...w_{i-1})$,其中$w_1 w_2...w_{i-1}$是该节点的全部祖先。与先前不同的是,由于在使用语言模型打分时,词的概率通常小于1,因此句子很长时概率会非常小,容易造成浮点误差,所以这里使用概率的对数形式$\log\textrm{P}(w_i | w_1 w_2...w_{i-1})$代替原始的$\textrm{P}(w_i | w_1 w_2...w_{i-1})$。此时对于图中一条包含<eos>的完整序列来说,它的最终得分为$\log\textrm{P}(w_1 w_2...w_m) = \sum_{i=1}^{m}\log\textrm{P}(w_i | w_1 w_2...w_{i-1})$,如图\ref{fig:2-15}所示,可知红线所示单词序列``<sos>\ I\ agree\ <eos>''的得分为:
\parinterval 从这个角度来看,可以很自然地引入语言模型打分来对枚举的解空间树的遍历进行增广:在解空间树中引入节点的权重\ \dash\ 将当前节点$i$的得分重设为语言模型打分$\log\textrm{P}(w_i | w_1 w_2...w_{i-1})$,其中$w_1 w_2...w_{i-1}$是该节点的全部祖先。与先前不同的是,由于在使用语言模型打分时,词的概率通常小于1,因此句子很长时概率会非常小,容易造成浮点误差,所以这里使用概率的对数形式$\log\textrm{P}(w_i | w_1 w_2...w_{i-1})$代替原始的$\textrm{P}(w_i | w_1 w_2...w_{i-1})$。此时对于图中一条包含<eos>的完整序列来说,它的最终得分为$\log\textrm{P}(w_1 w_2...w_m) = \sum_{i=1}^{m}\log\textrm{P}(w_i | w_1 w_2...w_{i-1})$,如图\ref{fig:2-15}所示,可知红线所示单词序列``<sos>\ I\ agree\ <eos>''的得分为:
\begin{eqnarray}
&&\textrm{score(``<sos>\ I\ agree\ <eos>'')} \nonumber \\
& = & \log\textrm{P}(\textrm{I} | \textrm{<sos>}) + \log\textrm{P}(\textrm{agree} | \textrm{<sos>\ I}) + \log\textrm{P}(\textrm{<sos>}| \textrm{<sos>\ I\ agree}) \nonumber \\
......@@ -877,7 +877,7 @@ w^{'} = \argmax_{w \in \chi}\textrm{P}(w)
\subsubsection{无信息搜索策略}
\parinterval 上述搜索过程中,在每次对当前节点进行扩展的时候,可以借助语言模型计算从当前节点到孩子节点的边所对应的权重。因此很自然的一个想法是:在单词序列的生成过程中使用权重信息可以帮助系统更快找到合适的解。
\parinterval 上述搜索过程中,在每次对当前节点进行扩展的时候,可以借助语言模型计算从当前节点的权重。因此很自然的一个想法是:在单词序列的生成过程中使用权重信息可以帮助系统更快找到合适的解。
%----------------------------------------------
\begin{figure}[htp]
......@@ -888,7 +888,7 @@ w^{'} = \argmax_{w \in \chi}\textrm{P}(w)
\end{figure}
%-------------------------------------------
\parinterval 在深度优先搜索中,每次总是先挑选一个单词,等枚举完当前单词全部子节点构成的序列后,才会选择下一个兄弟节点继续进行搜索。但是在挑选过程中先枚举词表中的哪个词是未定义的,也就是先选择哪个兄弟节点进行搜索是随机的。既然最终目标是寻找权重之和最大的路径,那么可以优先挑选分数较高的单词进行枚举。因为在路径长度有限的情况下,权重和最大的路径上每条边的权重也会比较大,而先尝试分数大的单词可以让系统更快地找到最优解。如图\ref{fig:2-16}所示,红色线表示了第一次搜索的路径。这是对深度优先搜索的一个自然的扩展。
\parinterval 在深度优先搜索中,每次总是先挑选一个单词,等枚举完当前单词全部子节点构成的序列后,才会选择下一个兄弟节点继续进行搜索。但是在挑选过程中先枚举词表中的哪个词是未定义的,也就是先选择哪个兄弟节点进行搜索是随机的。既然最终目标是寻找权重之和最大的路径,那么可以优先挑选分数较高的单词进行枚举。因为在路径长度有限的情况下,权重和最大的路径上每个节点的权重也会比较大,而先尝试分数大的单词可以让系统更快地找到最优解。如图\ref{fig:2-16}所示,红色线表示了第一次搜索的路径。这是对深度优先搜索的一个自然的扩展。
%----------------------------------------------
\begin{figure}[htp]
......@@ -899,11 +899,11 @@ w^{'} = \argmax_{w \in \chi}\textrm{P}(w)
\end{figure}
%-------------------------------------------
\parinterval 类似的思想也可以应用于宽度优先搜索,由于宽度优先搜索每次都选择了所有的单词,因此简单使用的权重来选择单词是不可行的。重新回顾宽度优先搜索的过程:它维护了一个未结束单词序列的集合,每次扩展单词序列后根据长度往集合里面加入单词序列。而搜索问题关心的是单词序列的得分而非其长度。因此可以在搜索过程中维护未结束的单词序列集合里每个单词序列的得分,然后优先扩展该集合中得分最高的单词序列,使得扩展过程中未结束的单词序列集合包含的单词序列分数逐渐变高。如图\ref{fig:2-17}所示,由于``<sos>\ I''在图右侧的5条路径中分数最高,因此下一步将要扩展$W_2$一列``I''节点后的全部后继。图中绿色节点表示下一步将要扩展的节点。普通宽度优先搜索中,扩展后生成的单词序列长度相同,但是分数却参差不齐。而改造后的宽度优先搜索则不同,它会优先生成得分较高的单词序列,这种宽度优先搜索也叫做{\small\bfnew{一致代价搜索}}\index{一致代价搜索}(Uniform-Cost Search)\index{Uniform-Cost Search}\cite{russell2003artificial}
\parinterval 类似的思想也可以应用于宽度优先搜索,由于宽度优先搜索每次都选择了所有的单词,因此简单使用节点的权重来选择单词是不可行的。重新回顾宽度优先搜索的过程:它维护了一个未结束单词序列的集合,每次扩展单词序列后根据长度往集合里面加入单词序列。而搜索问题关心的是单词序列的得分而非其长度。因此可以在搜索过程中维护未结束的单词序列集合里每个单词序列的得分,然后优先扩展该集合中得分最高的单词序列,使得扩展过程中未结束的单词序列集合包含的单词序列分数逐渐变高。如图\ref{fig:2-17}所示,由于``<sos>\ I''在图右侧的5条路径中分数最高,因此下一步将要扩展$W_2$一列``I''节点后的全部后继。图中绿色节点表示下一步将要扩展的节点。普通宽度优先搜索中,扩展后生成的单词序列长度相同,但是分数却参差不齐。而改造后的宽度优先搜索则不同,它会优先生成得分较高的单词序列,这种宽度优先搜索也叫做{\small\bfnew{一致代价搜索}}\index{一致代价搜索}(Uniform-Cost Search)\index{Uniform-Cost Search}\cite{russell2003artificial}
\parinterval 上面描述的两个改进后的搜索方法属于无信息搜索策略\cite{sahni1978fundamentals},因为他们依赖的信息仍然来源于问题本身而不是问题以外。改进后的方法虽然有机会更快寻找到分数最高的单词序列,也就是最优解。但是由于没有一个通用的办法来判断当前找到的解是否为最优解,这种策略不会在找到最优解后自动停止,因此最终仍然需要枚举所有可能的单词序列,寻找最优解需要的时间复杂度没有产生任何改变。尽管如此,如果只是需要一个相对好的解而不是最优解,改进后的搜索策略仍然是比原始枚举策略更优秀的算法。
\parinterval 此外,由于搜索过程中将语言模型的打分作为搜索树的权重,另一种改进思路是:能否借助语言模型的特殊性质来对搜索树进行{\small\bfnew{剪枝}}\index{剪枝}(Pruning)\index{Pruning},从而避免在搜索空间中访问一些不可能产生比当前解更好的结果的区域,提高搜索策略在实际运用当中的效率。简单来说,剪枝是一种可以缩小搜索空间的手段,比如,在搜索的过程中,动态的``丢弃''一些搜索路径,从而减少搜索的总代价。剪枝的程度在一定范围内影响了搜索系统的效率,剪枝越多搜索效率越高,一般找到最优解的可能性也越低;反之,搜索效率越低,但是找到最优解的可能性越大。在{\chapterten}中介绍的贪婪搜索和束搜索都可以被看作是剪枝方法的一种特例。
\parinterval 此外,由于搜索过程中将语言模型的打分作为搜索树的节点权重,另一种改进思路是:能否借助语言模型的特殊性质来对搜索树进行{\small\bfnew{剪枝}}\index{剪枝}(Pruning)\index{Pruning},从而避免在搜索空间中访问一些不可能产生比当前解更好的结果的区域,提高搜索策略在实际运用当中的效率。简单来说,剪枝是一种可以缩小搜索空间的手段,比如,在搜索的过程中,动态的``丢弃''一些搜索路径,从而减少搜索的总代价。剪枝的程度在一定范围内影响了搜索系统的效率,剪枝越多搜索效率越高,一般找到最优解的可能性也越低;反之,搜索效率越低,但是找到最优解的可能性越大。在{\chapterten}中介绍的贪婪搜索和束搜索都可以被看作是剪枝方法的一种特例。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论