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
cbeea749
Commit
cbeea749
authored
4 years ago
by
孟霞
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新 chapter14.tex
parent
cccbe612
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
8 行增加
和
8 行删除
+8
-8
Chapter14/chapter14.tex
+8
-8
没有找到文件。
Chapter14/chapter14.tex
查看文件 @
cbeea749
...
...
@@ -108,13 +108,13 @@
\parinterval
以上两种推断方式在神经机器翻译中都有应用,对于源语言句子
$
\seq
{
x
}
=
\{
x
_
1
,x
_
2
,
\dots
,x
_
m
\}
$
和目标语句子
$
\seq
{
y
}
=
\{
y
_
1
,y
_
2
,
\dots
,y
_
n
\}
$
,用自左向右的方式可以将翻译概率
$
\funp
{
P
}
(
\seq
{
y
}
\vert\seq
{
x
}
)
$
描述为公式
\eqref
{
eq:14-1
}
:
\begin{eqnarray}
\funp
{
P
}
(
\seq
{
y
}
\vert\seq
{
x
}
)
=
\prod
_{
j=1
}^
n
\funp
{
P
}
(y
_
j
\vert\seq
{
y
}_{
<j
}
,
\seq
{
x
}
)
\funp
{
P
}
(
\seq
{
y
}
\vert\seq
{
x
}
)
&
=
&
\prod
_{
j=1
}^
n
\funp
{
P
}
(y
_
j
\vert\seq
{
y
}_{
<j
}
,
\seq
{
x
}
)
\label
{
eq:14-1
}
\end{eqnarray}
\parinterval
而用自右向左的方式可以得到公式
\eqref
{
eq:14-2
}
:
\begin{eqnarray}
\funp
{
P
}
(
\seq
{
y
}
\vert\seq
{
x
}
)
=
\prod
_{
j=1
}^
n
\funp
{
P
}
(y
_{
n+1-j
}
\vert\seq
{
y
}_{
>j
}
,
\seq
{
x
}
)
\funp
{
P
}
(
\seq
{
y
}
\vert\seq
{
x
}
)
&
=
&
\prod
_{
j=1
}^
n
\funp
{
P
}
(y
_{
n+1-j
}
\vert\seq
{
y
}_{
>j
}
,
\seq
{
x
}
)
\label
{
eq:14-2
}
\end{eqnarray}
\parinterval
其中,
$
\seq
{
y
}_{
<j
}
=
\{
y
_
1
,y
_
2
,
\dots
,y
_{
j
-
1
}
\}
$
,
$
\seq
{
y
}_{
>j
}
=
\{
y
_{
j
+
1
}
,y
_{
j
+
2
}
,
\dots
,y
_
n
\}
$
。
...
...
@@ -148,7 +148,7 @@
\item
长度惩罚因子。用译文长度来归一化翻译概率是最常用的方法:对于源语言句子
$
\seq
{
x
}$
和译文句子
$
\seq
{
y
}$
,模型得分
$
\textrm
{
score
}
(
\seq
{
x
}
,
\seq
{
y
}
)
$
的值会随着译文
$
\seq
{
y
}$
的变长而减小,为了避免此现象,可以引入一个长度惩罚函数
$
\textrm
{
lp
}
(
\seq
{
y
}
)
$
,并定义模型得分如公式
\eqref
{
eq:14-12
}
所示:
\begin{eqnarray}
\textrm
{
score
}
(
\seq
{
x
}
,
\seq
{
y
}
)
=
\frac
{
\log
\funp
{
P
}
(
\seq
{
y
}
\vert\seq
{
x
}
)
}{
\textrm
{
lp
}
(
\seq
{
y
}
)
}
\textrm
{
score
}
(
\seq
{
x
}
,
\seq
{
y
}
)
&
=
&
\frac
{
\log
\funp
{
P
}
(
\seq
{
y
}
\vert\seq
{
x
}
)
}{
\textrm
{
lp
}
(
\seq
{
y
}
)
}
\label
{
eq:14-12
}
\end{eqnarray}
...
...
@@ -188,7 +188,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\noindent
其中,
$
\textrm
{
cp
}
(
\seq
{
x
}
,
\seq
{
y
}
)
$
表示覆盖度模型,它度量了译文对源语言每个单词的覆盖程度。
$
\textrm
{
cp
}
(
\seq
{
x
}
,
\seq
{
y
}
)
$
的定义中,
$
a
_{
ij
}$
表示源语言第
$
i
$
个位置与目标语第
$
j
$
个位置的注意力权重,这样
$
\sum
\limits
_{
j
}^{
|
\seq
{
y
}
|
}
a
_{
ij
}$
就可以用来衡量源语言第
$
i
$
个单词被翻译了“多少”,如果它大于1,表明翻译多了;如果小于1,表明翻译少了。公式
\eqref
{
eq:14-6
}
会惩罚那些欠翻译的翻译假设。覆盖度模型的一种改进形式是
\upcite
{
li-etal-2018-simple
}
:
\begin{eqnarray}
\textrm
{
cp
}
(
\seq
{
x
}
,
\seq
{
y
}
)
=
\sum
_{
i=1
}^{
|
\seq
{
x
}
|
}
\log
(
\textrm
{
max
}
(
\sum
_{
j
}^{
|
\seq
{
y
}
|
}
a
_{
ij
}
,
\beta
))
\textrm
{
cp
}
(
\seq
{
x
}
,
\seq
{
y
}
)
&
=
&
\sum
_{
i=1
}^{
|
\seq
{
x
}
|
}
\log
(
\textrm
{
max
}
(
\sum
_{
j
}^{
|
\seq
{
y
}
|
}
a
_{
ij
}
,
\beta
))
\label
{
eq:14-7
}
\end{eqnarray}
\noindent
公式
\eqref
{
eq:14-7
}
将公式
\eqref
{
eq:14-6
}
中的向下截断方式换为了向上截断。这样,模型可以对过翻译(或重复翻译)有更好的建模能力。不过,这个模型需要在开发集上细致地调整
$
\beta
$
,也带来了一定的额外工作量。此外,也可以将这种覆盖度单独建模并进行参数化,与翻译模型一同训练
\upcite
{
Mi2016CoverageEM,TuModeling,Kazimi2017CoverageFC
}
。这样可以得到更加精细的覆盖度模型。
...
...
@@ -416,7 +416,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\parinterval
目前主流的神经机器翻译的推断是一种
{
\small\sffamily\bfseries
{
自回归翻译
}}
\index
{
自回归翻译
}
(Autoregressive Translation)
\index
{
Autoregressive Translation
}
过程。所谓自回归是一种描述时间序列生成的方式。对于目标序列
$
\seq
{
y
}
=
\{
y
_
1
,
\dots
,y
_
n
\}
$
,自回归模型假设
$
j
$
时刻状态
$
y
_
j
$
的生成依赖于之前的状态
$
\{
y
_
1
,
\dots
,y
_{
j
-
1
}
\}
$
,而且
$
y
_
j
$
与
$
\{
y
_
1
,
\dots
,y
_{
j
-
1
}
\}
$
构成线性关系,那么生成
$
y
_
j
$
就是自回归的序列生成过程。神经机器翻译借用了这个概念,但是并不要求线性模型。对于输入的源语言序列
$
\seq
{
x
}
=
\{
x
_
1
,
\dots
,x
_
m
\}
$
,用自回归翻译模型生成译文序列
$
\seq
{
y
}
=
\{
y
_
1
,
\dots
,y
_
n
\}
$
的概率可以被定义为:
\begin{eqnarray}
\funp
{
P
}
(
\seq
{
y
}
|
\seq
{
x
}
)
=
\prod
_{
j=1
}^
n
{
\funp
{
P
}
(y
_
j|y
_{
<j
}
,
\seq
{
x
}
)
}
\funp
{
P
}
(
\seq
{
y
}
|
\seq
{
x
}
)
&
=
&
\prod
_{
j=1
}^
n
{
\funp
{
P
}
(y
_
j|y
_{
<j
}
,
\seq
{
x
}
)
}
\label
{
eq:14-8
}
\end{eqnarray}
...
...
@@ -425,7 +425,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\parinterval
对于这个问题,研究者也考虑移除翻译的自归回性,进行
{
\small\sffamily\bfseries
{
非自回归翻译
}}
\index
{
非自回归翻译
}
(Non-Autoregressive Translation,NAT)
\index
{
Non-Autoregressive Translation
}
\upcite
{
Gu2017NonAutoregressiveNM
}
。一个简单的非自回归翻译模型将问题建模为:
\begin{eqnarray}
\funp
{
P
}
(
\seq
{
y
}
|
\seq
{
x
}
)
=
\prod
_{
j=1
}^
n
{
\funp
{
P
}
(y
_
j|
\seq
{
x
}
)
}
\funp
{
P
}
(
\seq
{
y
}
|
\seq
{
x
}
)
&
=
&
\prod
_{
j=1
}^
n
{
\funp
{
P
}
(y
_
j|
\seq
{
x
}
)
}
\label
{
eq:14-9
}
\end{eqnarray}
...
...
@@ -485,7 +485,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\parinterval
另外,在每个解码器层中还包括额外的位置注意力模块,该模块与Transformer模型的其它部分中使用的多头注意力机制相同,如下:
\begin{eqnarray}
\textrm
{
Attention
}
(
\mathbi
{
Q
}
,
\mathbi
{
K
}
,
\mathbi
{
V
}
)
&
=
&
\textrm
{
Softmax
}
(
\frac
{
\mathbi
{
Q
}{
\mathbi
{
K
}}^{
T
}}{
\sqrt
{
d
_
k
}}
)
\cdot
\mathbi
{
V
}
\textrm
{
Attention
}
(
\mathbi
{
Q
}
,
\mathbi
{
K
}
,
\mathbi
{
V
}
)
&
=
&
\textrm
{
Softmax
}
(
\frac
{
\mathbi
{
Q
}{
\mathbi
{
K
}}^{
T
}}{
\sqrt
{
d
_
k
}}
)
\cdot
\mathbi
{
V
}
\label
{
eq:14-10
}
\end{eqnarray}
...
...
@@ -651,7 +651,7 @@ b &=& \omega_{\textrm{high}}\cdot |\seq{x}| \label{eq:14-4}
\parinterval
神经机器翻译模型对每个目标端位置
$
j
$
的单词分布进行预测,即对于目标语言词汇表中的每个单词
$
y
_
j
$
,需要计算
$
\funp
{
P
}
(
y
_
j |
\seq
{
y
}_{
<j
}
,
\seq
{
x
}
)
$
。假设有
$
K
$
个神经机器翻译系统,那么每个系统
$
k
$
都可以独立的计算这个概率,记为
$
\funp
{
P
}_{
k
}
(
y
_
j |
\seq
{
y
}_{
<j
}
,
\seq
{
x
}
)
$
。于是,可以用公式
\eqref
{
eq:14-11
}
融合这
$
K
$
个系统的预测:
\begin{eqnarray}
\funp
{
P
}
(y
_{
j
}
|
\seq
{
y
}_{
<j
}
,
\seq
{
x
}
)
=
\sum
_{
k=1
}^
K
\gamma
_{
k
}
\cdot
\funp
{
P
}_{
k
}
(y
_
j |
\seq
{
y
}_{
<j
}
,
\seq
{
x
}
)
\funp
{
P
}
(y
_{
j
}
|
\seq
{
y
}_{
<j
}
,
\seq
{
x
}
)
&
=
&
\sum
_{
k=1
}^
K
\gamma
_{
k
}
\cdot
\funp
{
P
}_{
k
}
(y
_
j |
\seq
{
y
}_{
<j
}
,
\seq
{
x
}
)
\label
{
eq:14-11
}
\end{eqnarray}
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论