Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
M
mtbookv2
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
NiuTrans
mtbookv2
Commits
d53b94a9
Commit
d53b94a9
authored
Aug 05, 2020
by
单韦乔
Browse files
Options
Browse Files
Download
Plain Diff
合并分支 'shanweiqiao' 到 'caorunzhe'
第二章修改 查看合并请求
!45
parents
e4dff1e8
364cef67
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
5 行增加
和
5 行删除
+5
-5
Chapter2/chapter2.tex
+5
-5
没有找到文件。
Chapter2/chapter2.tex
查看文件 @
d53b94a9
...
...
@@ -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
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论