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
f73b87ba
Commit
f73b87ba
authored
Dec 29, 2020
by
孟霞
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
17的公式序号
parent
b1f4e1b9
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
8 行增加
和
8 行删除
+8
-8
Chapter17/chapter17.tex
+8
-8
没有找到文件。
Chapter17/chapter17.tex
查看文件 @
f73b87ba
...
@@ -561,11 +561,11 @@
...
@@ -561,11 +561,11 @@
\centering
\centering
\input
{
./Chapter17/Figures/figure-multiencoder
}
\input
{
./Chapter17/Figures/figure-multiencoder
}
\caption
{
多编码器结构
\upcite
{
DBLP:conf/acl/LiLWJXZLL20
}}
\caption
{
多编码器结构
\upcite
{
DBLP:conf/acl/LiLWJXZLL20
}}
\label
{
fig:17-
3-1
}
\label
{
fig:17-
18
}
\end{figure}
\end{figure}
%----------------------------------------------
%----------------------------------------------
\parinterval
区别于在输入上进行改进,另一种思路是对传统的编码器-解码器框架进行更改,引入额外的编码器来对上下文句子进行编码,该结构被称为多编码器结构
\upcite
{
DBLP:conf/acl/LiLWJXZLL20,DBLP:conf/acl/LiLWJXZLL20,DBLP:conf/discomt/SugiyamaY19
}
。这种结构最早被应用在基于循环神经网络的篇章级翻译模型中
\upcite
{
DBLP:journals/corr/JeanLFC17,DBLP:conf/coling/KuangX18,DBLP:conf/naacl/BawdenSBH18,DBLP:conf/pacling/YamagishiK19
}
,后期证明在Transformer模型上同样适用
\upcite
{
DBLP:journals/corr/abs-1805-10163,DBLP:conf/emnlp/ZhangLSZXZL18
}
。图
\ref
{
fig:17-
3-1
}
展示了一个基于Transformer模型的多编码器结构,基于源语言当前待翻译句子的编码表示
$
\mathbi
{
h
}$
和上下文句子的编码表示
$
\mathbi
{
h
}^{
\textrm
pre
}$
,模型首先通过注意力机制提取上下文信息
$
\mathbi
{
d
}$
:
\parinterval
区别于在输入上进行改进,另一种思路是对传统的编码器-解码器框架进行更改,引入额外的编码器来对上下文句子进行编码,该结构被称为多编码器结构
\upcite
{
DBLP:conf/acl/LiLWJXZLL20,DBLP:conf/acl/LiLWJXZLL20,DBLP:conf/discomt/SugiyamaY19
}
。这种结构最早被应用在基于循环神经网络的篇章级翻译模型中
\upcite
{
DBLP:journals/corr/JeanLFC17,DBLP:conf/coling/KuangX18,DBLP:conf/naacl/BawdenSBH18,DBLP:conf/pacling/YamagishiK19
}
,后期证明在Transformer模型上同样适用
\upcite
{
DBLP:journals/corr/abs-1805-10163,DBLP:conf/emnlp/ZhangLSZXZL18
}
。图
\ref
{
fig:17-
18
}
展示了一个基于Transformer模型的多编码器结构,基于源语言当前待翻译句子的编码表示
$
\mathbi
{
h
}$
和上下文句子的编码表示
$
\mathbi
{
h
}^{
\textrm
pre
}$
,模型首先通过注意力机制提取上下文信息
$
\mathbi
{
d
}$
:
\begin{eqnarray}
\begin{eqnarray}
\mathbi
{
d
}&
=
&
\textrm
{
Attention
}
(
\mathbi
{
h
}
,
\mathbi
{
h
}^{
\textrm
pre
}
,
\mathbi
{
h
}^{
\textrm
pre
}
)
\mathbi
{
d
}&
=
&
\textrm
{
Attention
}
(
\mathbi
{
h
}
,
\mathbi
{
h
}^{
\textrm
pre
}
,
\mathbi
{
h
}^{
\textrm
pre
}
)
\label
{
eq:17-3-3
}
\label
{
eq:17-3-3
}
...
@@ -592,13 +592,13 @@
...
@@ -592,13 +592,13 @@
\centering
\centering
\input
{
./Chapter17/Figures/figure-layer
}
\input
{
./Chapter17/Figures/figure-layer
}
\caption
{
层次注意力结构
\upcite
{
Werlen2018DocumentLevelNM
}}
\caption
{
层次注意力结构
\upcite
{
Werlen2018DocumentLevelNM
}}
\label
{
fig:17-
3-2
}
\label
{
fig:17-
19
}
\end{figure}
\end{figure}
%----------------------------------------------
%----------------------------------------------
\parinterval
多编码器结构通过额外的编码器对前一句进行编码,但是无法处理引入多个上下文句子的情况。为了捕捉到更充分的上下文信息,可以采用层次结构来对更多的上下文句子进行建模。层次结构可以有效地处理更长的上下文序列以及序列内不同单元之间的相互作用。类似的思想也成功的应用在基于树的翻译模型中(
{
\chaptereight
}
和
{
\chapterfifteen
}
)。
\parinterval
多编码器结构通过额外的编码器对前一句进行编码,但是无法处理引入多个上下文句子的情况。为了捕捉到更充分的上下文信息,可以采用层次结构来对更多的上下文句子进行建模。层次结构可以有效地处理更长的上下文序列以及序列内不同单元之间的相互作用。类似的思想也成功的应用在基于树的翻译模型中(
{
\chaptereight
}
和
{
\chapterfifteen
}
)。
\parinterval
图
\ref
{
fig:17-
3-2
}
描述了一个基于层次注意力的模型结构
\upcite
{
DBLP:conf/emnlp/WerlenRPH18
}
。首先通过翻译模型的编码器获取前
$
k
$
个句子的词序列编码表示
$
(
\mathbi
{
h
}^{
\textrm
{
pre
}
1
}
,
\mathbi
{
h
}^{
\textrm
{
pre
}
2
}
,
\dots
,
\mathbi
{
h
}^{
\textrm
{
pre
}
k
}
)
$
,然后针对前文每个句子的词序列编码表示
$
\mathbi
{
h
}^{
\textrm
{
pre
}
j
}$
,使用词级注意力提取句子级的上下文信息
$
\mathbi
{
s
}^{
j
}$
,然后在这
$
k
$
个句子级上下文信息
$
\mathbi
{
s
}
=(
\mathbi
{
s
}^
1
,
\mathbi
{
s
}^
2
,
\mathbi
{
s
}^
k
)
$
的基础上,使用句子级注意力提取最终的篇章上下文信息
$
\mathbi
{
d
}$
。最终上下文信息
$
\mathbi
{
d
}$
的获取涉及到词级和句子级两个不同层次的注意力操作,因此将该过程称为层次注意力。为了增强模型表示能力,层次注意力中并未直接使用当前句子第
$
t
$
个位置的编码表示
$
\mathbi
{
h
}_{
t
}$
作为查询,而是通过
$
f
_
w
$
和
$
f
_
s
$
两个线性变换分别获取词级注意力和句子级注意力的查询
$
\mathbi
{
q
}_{
w
}$
和
$
\mathbi
{
q
}_{
s
}$
,另外在句子级注意力之后添加了一个前馈全连接网络子层FFN。其具体计算过程如下所示:
\parinterval
图
\ref
{
fig:17-
19
}
描述了一个基于层次注意力的模型结构
\upcite
{
DBLP:conf/emnlp/WerlenRPH18
}
。首先通过翻译模型的编码器获取前
$
k
$
个句子的词序列编码表示
$
(
\mathbi
{
h
}^{
\textrm
{
pre
}
1
}
,
\mathbi
{
h
}^{
\textrm
{
pre
}
2
}
,
\dots
,
\mathbi
{
h
}^{
\textrm
{
pre
}
k
}
)
$
,然后针对前文每个句子的词序列编码表示
$
\mathbi
{
h
}^{
\textrm
{
pre
}
j
}$
,使用词级注意力提取句子级的上下文信息
$
\mathbi
{
s
}^{
j
}$
,然后在这
$
k
$
个句子级上下文信息
$
\mathbi
{
s
}
=(
\mathbi
{
s
}^
1
,
\mathbi
{
s
}^
2
,
\mathbi
{
s
}^
k
)
$
的基础上,使用句子级注意力提取最终的篇章上下文信息
$
\mathbi
{
d
}$
。最终上下文信息
$
\mathbi
{
d
}$
的获取涉及到词级和句子级两个不同层次的注意力操作,因此将该过程称为层次注意力。为了增强模型表示能力,层次注意力中并未直接使用当前句子第
$
t
$
个位置的编码表示
$
\mathbi
{
h
}_{
t
}$
作为查询,而是通过
$
f
_
w
$
和
$
f
_
s
$
两个线性变换分别获取词级注意力和句子级注意力的查询
$
\mathbi
{
q
}_{
w
}$
和
$
\mathbi
{
q
}_{
s
}$
,另外在句子级注意力之后添加了一个前馈全连接网络子层FFN。其具体计算过程如下所示:
\begin{eqnarray}
\begin{eqnarray}
\mathbi
{
q
}_{
w
}&
=
&
f
_
w(
\mathbi
{
h
}_
t)
\mathbi
{
q
}_{
w
}&
=
&
f
_
w(
\mathbi
{
h
}_
t)
\label
{
eq:17-3-6
}
\\
\label
{
eq:17-3-6
}
\\
...
@@ -619,7 +619,7 @@
...
@@ -619,7 +619,7 @@
\subsubsection
{
4. 基于缓存的方法
}
\subsubsection
{
4. 基于缓存的方法
}
\parinterval
除了以上提到的建模方法,还有一类基于缓存的方法
\upcite
{
DBLP:journals/tacl/TuLSZ18,DBLP:conf/coling/KuangXLZ18
}
。这种方法最大的特点在于将篇章翻译看作一个连续的过程,然后在这个过程中通过一个额外的缓存来记录一些相关信息,最后在每个句子解码的过程中使用这个缓存来提供上下文信息。图
\ref
{
fig:17-
3-3
}
描述了一种基于缓存的篇章级翻译模型结构
\upcite
{
DBLP:journals/tacl/TuLSZ18
}
。在这里,翻译模型基于循环神经网络(参考
{
\chapterten
}
),但是这种方法同样适用于包括Transformer在内的其他神经机器翻译模型。模型中篇章上下文的建模依赖于缓存的读和写操作。缓存的写操作指的是:按照一定规则将翻译历史中一些译文单词对应的上下文向量
$
\mathbi
{
C
}_
r
$
和其解码器端的隐藏状态
$
\mathbi
{
s
}_
r
$
分别作为一对键和值写入到缓存中。而缓存的读操作则是指将待翻译句子中第
$
t
$
个单词的上下文向量
$
\mathbi
{
C
}_
t
$
作为查询,与缓存中的所有键分别进行匹配,并根据其匹配概率进行带权相加得到当前待翻译句子的篇章上下文信息
$
\mathbi
{
d
}$
。该方法中单词的解码器端隐藏状态
$
\mathbi
{
s
}_
t
$
与对应位置的上下文信息
$
\mathbi
{
d
}_
t
$
的融合也是基于门控机制的方法。事实上,由于该方法中缓存空间是有限的,其内容的更新也存在一定的规则:在当前句子的翻译结束后,如果单词
$
y
_
t
$
的对应信息未曾写入缓存,则写入其中的空槽或者替换最久未使用的键值对;如果
$
y
_
t
$
已作为翻译历史存在于缓存中,则将对应的键值对按照以下规则进行更新:
\parinterval
除了以上提到的建模方法,还有一类基于缓存的方法
\upcite
{
DBLP:journals/tacl/TuLSZ18,DBLP:conf/coling/KuangXLZ18
}
。这种方法最大的特点在于将篇章翻译看作一个连续的过程,然后在这个过程中通过一个额外的缓存来记录一些相关信息,最后在每个句子解码的过程中使用这个缓存来提供上下文信息。图
\ref
{
fig:17-
20
}
描述了一种基于缓存的篇章级翻译模型结构
\upcite
{
DBLP:journals/tacl/TuLSZ18
}
。在这里,翻译模型基于循环神经网络(参考
{
\chapterten
}
),但是这种方法同样适用于包括Transformer在内的其他神经机器翻译模型。模型中篇章上下文的建模依赖于缓存的读和写操作。缓存的写操作指的是:按照一定规则将翻译历史中一些译文单词对应的上下文向量
$
\mathbi
{
C
}_
r
$
和其解码器端的隐藏状态
$
\mathbi
{
s
}_
r
$
分别作为一对键和值写入到缓存中。而缓存的读操作则是指将待翻译句子中第
$
t
$
个单词的上下文向量
$
\mathbi
{
C
}_
t
$
作为查询,与缓存中的所有键分别进行匹配,并根据其匹配概率进行带权相加得到当前待翻译句子的篇章上下文信息
$
\mathbi
{
d
}$
。该方法中单词的解码器端隐藏状态
$
\mathbi
{
s
}_
t
$
与对应位置的上下文信息
$
\mathbi
{
d
}_
t
$
的融合也是基于门控机制的方法。事实上,由于该方法中缓存空间是有限的,其内容的更新也存在一定的规则:在当前句子的翻译结束后,如果单词
$
y
_
t
$
的对应信息未曾写入缓存,则写入其中的空槽或者替换最久未使用的键值对;如果
$
y
_
t
$
已作为翻译历史存在于缓存中,则将对应的键值对按照以下规则进行更新:
\begin{eqnarray}
\begin{eqnarray}
\mathbi
{
k
}_{
i
}&
=
&
(
\mathbi
{
k
}_{
i
}
+
\mathbi
{
c
}_{
t
}
)/2
\mathbi
{
k
}_{
i
}&
=
&
(
\mathbi
{
k
}_{
i
}
+
\mathbi
{
c
}_{
t
}
)/2
\label
{
eq:17-3-10
}
\\
\label
{
eq:17-3-10
}
\\
...
@@ -632,7 +632,7 @@
...
@@ -632,7 +632,7 @@
\centering
\centering
\input
{
./Chapter17/Figures/figure-cache
}
\input
{
./Chapter17/Figures/figure-cache
}
\caption
{
基于Cache的解码器结构
\upcite
{
DBLP:journals/tacl/TuLSZ18
}}
\caption
{
基于Cache的解码器结构
\upcite
{
DBLP:journals/tacl/TuLSZ18
}}
\label
{
fig:17-
3-3
}
\label
{
fig:17-
20
}
\end{figure}
\end{figure}
%----------------------------------------------
%----------------------------------------------
...
@@ -646,14 +646,14 @@
...
@@ -646,14 +646,14 @@
\parinterval
在句子级翻译模型中引入目标语言端的篇章级语言模型
\upcite
{
DBLP:conf/discomt/GarciaCE19,DBLP:journals/tacl/YuSSLKBD20,DBLP:journals/corr/abs-2010-12827
}
是一种结合上下文信息的常用手段。 相比于篇章级双语数据,篇章级单语数据更容易获取。在双语数据稀缺的情况下,通过引入目标语言端的篇章级语言模型可以更充分的利用这些单语数据。最简单的做法是在句子级翻译模型的分数基础上加上语言模型的分数
\upcite
{
DBLP:conf/discomt/GarciaCE19,DBLP:journals/corr/abs-2010-12827
}
,既可以在推断的搜索过程中作为模型最终打分,也可以将其作为重排序阶段的一种特征。
\parinterval
在句子级翻译模型中引入目标语言端的篇章级语言模型
\upcite
{
DBLP:conf/discomt/GarciaCE19,DBLP:journals/tacl/YuSSLKBD20,DBLP:journals/corr/abs-2010-12827
}
是一种结合上下文信息的常用手段。 相比于篇章级双语数据,篇章级单语数据更容易获取。在双语数据稀缺的情况下,通过引入目标语言端的篇章级语言模型可以更充分的利用这些单语数据。最简单的做法是在句子级翻译模型的分数基础上加上语言模型的分数
\upcite
{
DBLP:conf/discomt/GarciaCE19,DBLP:journals/corr/abs-2010-12827
}
,既可以在推断的搜索过程中作为模型最终打分,也可以将其作为重排序阶段的一种特征。
\parinterval
另一种在推断过程中引入上下文信息的方法是通过两阶段解码
\upcite
{
DBLP:conf/aaai/XiongH0W19,DBLP:conf/acl/VoitaST19
}
和后编辑
\upcite
{
DBLP:conf/emnlp/VoitaST19
}
在句子级翻译结果上进行修正。这种方法不影响句子级翻译模型的推断过程,而是在完成翻译后使用额外的模块进行第二阶段的解码,如图
\ref
{
fig:17-
3-4
}
所示,这种两阶段解码的做法相当于将篇章级翻译的问题进行了分离和简化,适用于篇章级双语数据稀缺的场景。基于类似的思想,有研究人员使用后编辑的做法对翻译结果进行修正。区别于两阶段解码的方法,后编辑的方法无需参考源语信息,只是基于目标语言端的连续翻译结果来提供上下文信息。通过这种方式,可以降低对篇章级双语数据的需求。
\parinterval
另一种在推断过程中引入上下文信息的方法是通过两阶段解码
\upcite
{
DBLP:conf/aaai/XiongH0W19,DBLP:conf/acl/VoitaST19
}
和后编辑
\upcite
{
DBLP:conf/emnlp/VoitaST19
}
在句子级翻译结果上进行修正。这种方法不影响句子级翻译模型的推断过程,而是在完成翻译后使用额外的模块进行第二阶段的解码,如图
\ref
{
fig:17-
21
}
所示,这种两阶段解码的做法相当于将篇章级翻译的问题进行了分离和简化,适用于篇章级双语数据稀缺的场景。基于类似的思想,有研究人员使用后编辑的做法对翻译结果进行修正。区别于两阶段解码的方法,后编辑的方法无需参考源语信息,只是基于目标语言端的连续翻译结果来提供上下文信息。通过这种方式,可以降低对篇章级双语数据的需求。
%----------------------------------------------
%----------------------------------------------
\begin{figure}
[htp]
\begin{figure}
[htp]
\centering
\centering
\input
{
./Chapter17/Figures/figure-twodecoding
}
\input
{
./Chapter17/Figures/figure-twodecoding
}
\caption
{
两阶段解码
}
\caption
{
两阶段解码
}
\label
{
fig:17-
3-4
}
\label
{
fig:17-
21
}
\end{figure}
\end{figure}
%----------------------------------------------
%----------------------------------------------
%----------------------------------------------------------------------------------------
%----------------------------------------------------------------------------------------
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论