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
0085782c
Commit
0085782c
authored
Sep 09, 2020
by
zengxin
Browse files
Options
Browse Files
Download
Plain Diff
合并分支 'zengxin' 到 'caorunzhe'
chapter10 查看合并请求
!169
parents
08a7bd70
88d7b1f8
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
3 行增加
和
3 行删除
+3
-3
Chapter10/chapter10.tex
+3
-3
没有找到文件。
Chapter10/chapter10.tex
查看文件 @
0085782c
...
...
@@ -905,7 +905,7 @@ L(\vectorn{Y},\widehat{\vectorn{Y}}) = \sum_{j=1}^n L_{\textrm{ce}}(\vectorn{y}_
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
\vspace
{
1.0em
}
\subsubsection
{
贪婪搜索
}
\subsubsection
{
1.
贪婪搜索
}
\vspace
{
0.6em
}
\parinterval
图
\ref
{
fig:10-32
}
展示了一个基于贪婪方法的神经机器翻译解码过程。每一个时间步的单词预测都依赖于其前一步单词的生成。在解码第一个单词时,由于没有之前的单词信息,会用<sos>进行填充,作为起始的单词,且会用一个零向量(可以理解为没有之前时间步的信息)表示第0步的中间层状态。
\vspace
{
0.8em
}
...
...
@@ -937,7 +937,7 @@ L(\vectorn{Y},\widehat{\vectorn{Y}}) = \sum_{j=1}^n L_{\textrm{ce}}(\vectorn{y}_
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection
{
束搜索
}
\subsubsection
{
2.
束搜索
}
\vspace
{
0.5em
}
\parinterval
束搜索是一种启发式图搜索算法。相比于全搜索,它可以减少搜索所占用的空间和时间,在每一步扩展的时候,剪掉一些质量比较差的结点,保留下一些质量较高的结点。具体到机器翻译任务,对于每一个目标语位置,束搜索选择了概率最大的前
$
K
$
个单词进行扩展(其中
$
K
$
叫做束宽度,或简称为束宽)。如图
\ref
{
fig:10-34
}
所示,假设
\{
$
y
_
1
, y
_
2
,..., y
_
n
$
\}
表示生成的目标语序列,且
$
K
=
3
$
,则束搜索的具体过程为:在预测第一个位置时,可以通过模型得到
$
y
_
1
$
的概率分布,选取概率最大的前3个单词作为候选结果(假设分别为“have”, “has”, “it”)。在预测第二个位置的单词时,模型针对已经得到的三个候选结果(“have”, “has”, “it”)计算第二个单词的概率分布。例如,可以在将“have”作为第二步的输入,计算
$
y
_
2
$
的概率分布。此时,译文序列的概率为
...
...
@@ -963,7 +963,7 @@ L(\vectorn{Y},\widehat{\vectorn{Y}}) = \sum_{j=1}^n L_{\textrm{ce}}(\vectorn{y}_
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection
{
长度惩罚
}
\subsubsection
{
3.
长度惩罚
}
\parinterval
这里用
$
\funp
{
P
}
(
\vectorn
{
y
}
|
\vectorn
{
x
}
)
=
\prod
_{
j
=
1
}^
n
\funp
{
P
}
(
y
_
j |
\vectorn
{
y
}_{
<j
}
,
\vectorn
{
x
}
)
$
作为翻译模型。直接实现这个公式有一个明显的缺点:当句子过长时乘法运算容易产生溢出,也就是多个数相乘可能会产生浮点数无法表示的运算结果。为了解决这个问题,可以利用对数操作将乘法转换为加法,得到新的概率公式:
$
\textrm
{
log
}
\funp
{
P
}
(
\vectorn
{
y
}
|
\vectorn
{
x
}
)
=
\sum
_{
j
=
1
}^
n
\textrm
{
log
}
\funp
{
P
}
(
y
_
j |
\vectorn
{
y
}_{
<j
}
,
\vectorn
{
x
}
)
$
,对数函数不会改变函数的单调性,因此在具体实现时,通常用
$
\textrm
{
log
}
\funp
{
P
}
(
\vectorn
{
y
}
|
\vectorn
{
x
}
)
$
表示句子的得分,而不用
$
\funp
{
P
}
(
\vectorn
{
y
}
|
\vectorn
{
x
}
)
$
。
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论