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
778b6a52
Commit
778b6a52
authored
Jan 19, 2021
by
孟霞
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
17小结
parent
54c3a7a8
显示空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
23 行增加
和
25 行删除
+23
-25
Chapter17/Figures/figure-cache.tex
+2
-2
Chapter17/Figures/figure-multiencoder.tex
+16
-15
Chapter17/chapter17.tex
+5
-8
没有找到文件。
Chapter17/Figures/figure-cache.tex
查看文件 @
778b6a52
...
...
@@ -13,8 +13,8 @@
\draw
[]
([yshift=-0.5em]value.180) -- ([yshift=-0.5em]value.0);
\draw
[]
([yshift=-1.5em]value.180) -- ([yshift=-1.5em]value.0);
\node
[anchor=south,font=\footnotesize,inner sep=0pt]
at ([yshift=0.1em]key.north)
{
key
}
;
\node
[anchor=south,font=\footnotesize,inner sep=0pt]
at ([yshift=0.
2em]value.north)
{
value
}
;
\node
[anchor=south,font=\footnotesize,inner sep=0pt]
at ([yshift=0.1em]key.north)
{
键
}
;
\node
[anchor=south,font=\footnotesize,inner sep=0pt]
at ([yshift=0.
1em]value.north)
{
值
}
;
\node
[anchor=south,font=\footnotesize,inner sep=0pt]
(cache)at ([yshift=2em,xshift=1.5em]key.north)
{
\small\bfnew
{
缓存
}}
;
\node
[draw,anchor=east,thick,minimum size=1.8em,fill=orange!30]
(dt) at ([yshift=2.1em,xshift=-4em]key.west)
{${
\mathbi
{
d
}}_{
t
}$}
;
...
...
Chapter17/Figures/figure-multiencoder.tex
查看文件 @
778b6a52
...
...
@@ -23,20 +23,20 @@
\node
(point
_
above)[above of = attention
_
right, yshift=1.8cm]
{
\Huge
{
...
}}
;
\node
(target
_
above)[above of = attention
_
right, yshift=3.3cm]
{
\large
{
目标语言句子
}}
;
\draw
[->,
very
thick]
(last)to([yshift=-0.05cm]encoder
_
c.south);
\draw
[->,
very
thick]
(current)to([yshift=-0.05cm]encoder
_
s.south);
\draw
[->,
very
thick]
(target.north)to([yshift=-0.05cm]point
_
below.south);
\draw
[->,
very
thick]
([yshift=0.05cm]encoder
_
c.north)to([yshift=0.03cm]h
_
pre.south);
\draw
[->,
very
thick]
([yshift=0.05cm]encoder
_
s.north)to(h.south);
\draw
[->,
very
thick]
([yshift=0cm]h.north)to([yshift=0.95cm]h.north);
\draw
[->,
very
thick,in=270,out=90]
([yshift=-0.15cm]h
_
pre.north)to([xshift=1.25cm,yshift=0.9cm]h
_
pre.north);
\draw
[->,
very
thick,in=270,out=80]
([yshift=-0.15cm]h
_
pre.north)to([xshift=2.4cm,yshift=0.9cm]h
_
pre.north);
\draw
[->,
very
thick]
([yshift=0.03cm]attention
_
left.north)to([yshift=0.1cm]d.south);
\draw
[->,
very
thick]
([xshift=-0.03cm]h.east)to([xshift=-0.03cm]cir.west);
\draw
[->,
very
thick]
(point
_
below.north)to([yshift=2.03cm]point
_
below.north);
\draw
[->,
very
thick]
(attention
_
right.north)to([yshift=-0.03cm]point
_
above.south);
\draw
[->,
very
thick]
(point
_
above.north)to([yshift=0.83cm]point
_
above.north);
\draw
[->,
very
thick, in=270,out=0]
([xshift=0.2cm]cir.east)to([xshift=3cm,yshift=0.88cm]cir.east);
\draw
[->,
very
thick, in=270,out=0]
([xshift=0.2cm]cir.east)to([xshift=2cm,yshift=0.88cm]cir.east);
\draw
[->,thick]
(last)to([yshift=-0.05cm]encoder
_
c.south);
\draw
[->,thick]
(current)to([yshift=-0.05cm]encoder
_
s.south);
\draw
[->,thick]
(target.north)to([yshift=-0.05cm]point
_
below.south);
\draw
[->,thick]
([yshift=0.05cm]encoder
_
c.north)to([yshift=0.03cm]h
_
pre.south);
\draw
[->,thick]
([yshift=0.05cm]encoder
_
s.north)to(h.south);
\draw
[->,thick]
([yshift=0cm]h.north)to([yshift=0.95cm]h.north);
\draw
[->,thick,in=270,out=90]
([yshift=-0.15cm]h
_
pre.north)to([xshift=1.25cm,yshift=0.9cm]h
_
pre.north);
\draw
[->,thick,in=270,out=80]
([yshift=-0.15cm]h
_
pre.north)to([xshift=2.4cm,yshift=0.9cm]h
_
pre.north);
\draw
[->,thick]
([yshift=0.03cm]attention
_
left.north)to([yshift=0.1cm]d.south);
\draw
[->,thick]
([xshift=-0.03cm]h.east)to([xshift=-0.03cm]cir.west);
\draw
[->,thick]
(point
_
below.north)to([yshift=2.03cm]point
_
below.north);
\draw
[->,thick]
(attention
_
right.north)to([yshift=-0.03cm]point
_
above.south);
\draw
[->,thick]
(point
_
above.north)to([yshift=0.83cm]point
_
above.north);
\draw
[->,thick, in=270,out=0]
([xshift=0.2cm]cir.east)to([xshift=3cm,yshift=0.88cm]cir.east);
\draw
[->,thick, in=270,out=0]
([xshift=0.2cm]cir.east)to([xshift=2cm,yshift=0.88cm]cir.east);
\draw
[->,very thick,]
([xshift=0.1cm]d.east)to([xshift=1.92cm]d.east)to([yshift=0.03cm]cir.north);
\end{tikzpicture}
\ No newline at end of file
Chapter17/chapter17.tex
查看文件 @
778b6a52
...
...
@@ -564,7 +564,7 @@
\end{figure}
%----------------------------------------------
\parinterval
为了增强模型的表示能力,层次注意力中并未直接使用当前句子第
$
t
$
个位置的编码表示
$
\mathbi
{
h
}_{
t
}$
作为
查询
,而是通过两个线性变换分别获取词级注意力和句子级注意力的查询
$
\mathbi
{
q
}_{
w
}$
和
$
\mathbi
{
q
}_{
s
}$
,定义如公式
\eqref
{
eq:17-3-6
}
\eqref
{
eq:17-3-8
}
,其中
${
\mathbi
W
}_
w
$
、
${
\mathbi
W
}_
s
$
、
${
\mathbi
b
}_
w
$
、
${
\mathbi
b
}_
s
$
分别是两个线性变换的权重和偏置。
\parinterval
为了增强模型的表示能力,层次注意力中并未直接使用当前句子第
$
t
$
个位置的编码表示
$
\mathbi
{
h
}_{
t
}$
作为
注意力操作的Query(查询)
,而是通过两个线性变换分别获取词级注意力和句子级注意力的查询
$
\mathbi
{
q
}_{
w
}$
和
$
\mathbi
{
q
}_{
s
}$
,定义如公式
\eqref
{
eq:17-3-6
}
\eqref
{
eq:17-3-8
}
,其中
${
\mathbi
W
}_
w
$
、
${
\mathbi
W
}_
s
$
、
${
\mathbi
b
}_
w
$
、
${
\mathbi
b
}_
s
$
分别是两个线性变换的权重和偏置。
\begin{eqnarray}
\mathbi
{
q
}_{
w
}&
=
&{
\mathbi
W
}_
w
\mathbi
{
h
}_
t+
{
\mathbi
b
}_
w
...
...
@@ -595,7 +595,7 @@
\parinterval
除了以上提到的建模方法,还有一类基于缓存的方法
\upcite
{
DBLP:journals/tacl/TuLSZ18,DBLP:conf/coling/KuangXLZ18
}
。这类方法最大的特点在于将篇章翻译看作一个连续的过程,即依次翻译篇章中的每一个句子,该过程中通过一个额外的缓存来记录一些相关信息,且在每个句子的推断过程中都使用这个缓存来提供上下文信息。图
\ref
{
fig:17-20
}
描述了一种基于缓存的篇章级翻译模型结构
\upcite
{
DBLP:journals/tacl/TuLSZ18
}
。 在这里,翻译模型基于循环神经网络(见
{
\chapterten
}
),但是这种方法同样适用于包括Transformer在内的其他神经机器翻译模型。
\parinterval
模型中篇章上下文的建模依赖于缓存的读和写操作。缓存的写操作指的是:按照一定规则,将翻译历史中一些译文单词对应的上下文向量作为键,将其解码器端的隐藏状态作为值,共同写入到缓存中。而缓存的读操作是指将待翻译句子中第
$
t
$
个单词的上下文向量
$
\mathbi
{
C
}_
t
$
作为
查询
,与缓存中的所有键分别进行匹配,并根据其匹配程度进行带权相加,最后得到当前待翻译句子的篇章上下文信息
$
\mathbi
{
d
}$
。 该方法中,解码器端隐藏状态
$
\mathbi
{
s
}_
t
$
与对应位置的上下文信息
$
\mathbi
{
d
}_
t
$
的融合也是基于门控机制。事实上,由于该方法中缓存空间是有限的,其内容的更新也存在一定的规则:在当前句子的翻译结束后,如果单词
$
y
_
t
$
的对应信息未曾写入缓存,则写入其中的空槽或者替换最久未使用的键值对;如果
$
y
_
t
$
已作为翻译历史存在于缓存中,则将对应的键值对按照以下规则进行更新:
\parinterval
模型中篇章上下文的建模依赖于缓存的读和写操作。缓存的写操作指的是:按照一定规则,将翻译历史中一些译文单词对应的上下文向量作为键,将其解码器端的隐藏状态作为值,共同写入到缓存中。而缓存的读操作是指将待翻译句子中第
$
t
$
个单词的上下文向量
$
\mathbi
{
C
}_
t
$
作为
Query(查询)
,与缓存中的所有键分别进行匹配,并根据其匹配程度进行带权相加,最后得到当前待翻译句子的篇章上下文信息
$
\mathbi
{
d
}$
。 该方法中,解码器端隐藏状态
$
\mathbi
{
s
}_
t
$
与对应位置的上下文信息
$
\mathbi
{
d
}_
t
$
的融合也是基于门控机制。事实上,由于该方法中缓存空间是有限的,其内容的更新也存在一定的规则:在当前句子的翻译结束后,如果单词
$
y
_
t
$
的对应信息未曾写入缓存,则写入其中的空槽或者替换最久未使用的键值对;如果
$
y
_
t
$
已作为翻译历史存在于缓存中,则将对应的键值对按照以下规则进行更新:
\begin{eqnarray}
\mathbi
{
k
}_{
i
}&
=
&
\frac
{
\mathbi
{
k
}_{
i
}
+
\mathbi
{
c
}_{
t
}}{
2
}
\label
{
eq:17-3-10
}
\\
...
...
@@ -630,7 +630,7 @@
\end{figure}
%----------------------------------------------
\parinterval
另一种方法是两阶段翻译。这种方法不影响句子级翻译模型的推断过程,而是在完成翻译后使用额外的模块进行第二阶段的翻译
\upcite
{
DBLP:conf/aaai/XiongH0W19,DBLP:conf/acl/VoitaST19
}
。如图
\ref
{
fig:17-21
}
所示,这种两阶段翻译的做法相当于将篇章级翻译的问题进行了分离和简化:在第一阶段翻译中使用句子级翻译模型完成对篇章中某个句子的翻译,为了进一步地引入篇章上下文信息,第二阶段的翻译过程在第一阶段翻译结果的基础上,利用两次注意力操作,融合并引入源语言和目标语言的篇章上下文信息和当前句子信息。该方法适用于篇章级双语数据稀缺的场景。基于类似的思想,也可以使用后编辑的做法对翻译结果进行修正。区别于两阶段翻译的方法,后编辑的方法无需参考源语言信息,只
是
对译文结果进行修正
\upcite
{
DBLP:conf/emnlp/VoitaST19
}
。
\parinterval
另一种方法是两阶段翻译。这种方法不影响句子级翻译模型的推断过程,而是在完成翻译后使用额外的模块进行第二阶段的翻译
\upcite
{
DBLP:conf/aaai/XiongH0W19,DBLP:conf/acl/VoitaST19
}
。如图
\ref
{
fig:17-21
}
所示,这种两阶段翻译的做法相当于将篇章级翻译的问题进行了分离和简化:在第一阶段翻译中使用句子级翻译模型完成对篇章中某个句子的翻译,为了进一步地引入篇章上下文信息,第二阶段的翻译过程在第一阶段翻译结果的基础上,利用两次注意力操作,融合并引入源语言和目标语言的篇章上下文信息和当前句子信息。该方法适用于篇章级双语数据稀缺的场景。基于类似的思想,也可以使用后编辑的做法对翻译结果进行修正。区别于两阶段翻译的方法,后编辑的方法无需参考源语言信息,只
利用目标语言端的上下文信息
对译文结果进行修正
\upcite
{
DBLP:conf/emnlp/VoitaST19
}
。
%----------------------------------------------------------------------------------------
% NEW SECTION
...
...
@@ -646,11 +646,8 @@
\vspace
{
0.5em
}
\item
此外,语音翻译的一个重要应用是机器同声传译。机器同声传译的一个难点在于不同语言的文字顺序不同。目前,同声传译的一种思路是基于目前已经说出的语音进行翻译
\upcite
{
DBLP:conf/acl/MaHXZLZZHLLWW19
}
,比如,等待源语
$
k
$
个词语,然后再进行翻译,同时改进束搜索方式来预测未来的词序列,从而提升准确度
\upcite
{
DBLP:conf/emnlp/ZhengMZH19
}
。或者,对当前语音进行翻译,但需要判断翻译的词是否能够作为最终结果,已决定是否根据之后的语音重新进行翻译
\upcite
{
DBLP:conf/naacl/DalviDSV18,DBLP:journals/corr/ChoE16
}
。第二种思路是动态预测当前时刻是应该继续等待还是开始翻译,这种方式更符合人类进行同传的行为。但是这种策略的难点在于标注每一时刻的决策状态十分耗时且标准难以统一,目前主流的方式是利用强化学习方法
\upcite
{
DBLP:conf/eacl/NeubigCGL17,DBLP:conf/emnlp/GrissomHBMD14
}
,对句子进行不同决策方案采样,最终学到最优的决策方案。此外,还有一些工作设计不同的学习策略
\upcite
{
DBLP:conf/acl/ZhengLZMLH20,DBLP:conf/emnlp/ZhengZMH19,DBLP:conf/acl/ZhengZMH19
}
或改进注意力机制
\upcite
{
DBLP:conf/acl/ArivazhaganCMCY19
}
以提升机器同声传译的性能。
\vspace
{
0.5em
}
%\item 在篇章级翻译方面,一些研究工作对这类模型的上下文建模能力进行了探索\upcite{DBLP:conf/discomt/KimTN19,DBLP:conf/acl/LiLWJXZLL20},发现模型性能在小数据集上的BLEU提升并不完全来自于上下文信息的利用。同时,受限于数据规模,篇章级翻译模型相对难以训练。一些研究人员通过调。除了训练策略的调整,也可以使用数据增强和预训练的手段来缓解数据稀缺的问题\upcite{DBLP:conf/discomt/SugiyamaY19,DBLP:journals/corr/abs-1911-03110,DBLP:journals/corr/abs-2001-08210}。此外,区别于传统的篇章级翻译,一些对话翻译也需要使用长距离上下文信息\upcite{DBLP:conf/wmt/MarufMH18}。
%\vspace{0.5em}
%\item 此外,多模态机器翻译、图像描述生成、视觉问答等多模态任务受到广泛关注。如何将多个模态的信息充分融合,是研究多模态任务的重要问题。另外,数据稀缺是大多数多模态任务的瓶颈之一,可以采取数据增强的方式缓解\upcite{DBLP:conf/emnlp/GokhaleBBY20,DBLP:conf/eccv/Tang0ZWY20}。但是,这时仍需要回答在:模型没有充分训练时,图像等模态信息究竟在翻译里发挥了多少作用?类似的问题在篇章级机器翻译中也存在,上下文模型在训练数据量很小的时候对翻译的作用十分微弱\upcite{DBLP:conf/acl/LiLWJXZLL20}。此外,受到预训练模型的启发,在多模态信息处理中,图像和文本联合预训练的工作也相继开展\upcite{DBLP:conf/eccv/Li0LZHZWH0WCG20,DBLP:conf/aaai/ZhouPZHCG20,DBLP:conf/iclr/SuZCLLWD20}。
%\vspace{0.5em}
\item
{
\red
这段有问题!周一确认。
}
在多模态机器翻译任务和篇章级机器翻译任务中,数据规模往往受限,导致模型训练困难,很难取得较好的性能。比如在篇章级机器翻译中,一些研究工作对这类模型的上下文建模能力进行了探索
\upcite
{
DBLP:conf/discomt/KimTN19,DBLP:conf/acl/LiLWJXZLL20
}
,发现模型性能在小数据集上的BLEU提升并不完全来自于对上下文信息的利用,针对这个问题一些研究人员通过调整训练策略使得模型更容易捕获上下文信息
\upcite
{
DBLP:journals/corr/abs-1903-04715,DBLP:conf/acl/SaundersSB20,DBLP:conf/mtsummit/StojanovskiF19
}
。除了训练策略的调整,也可以使用数据增强的方式(例如,构造伪数据)来提升整体数据量
\upcite
{
DBLP:conf/emnlp/GokhaleBBY20,DBLP:conf/eccv/Tang0ZWY20,DBLP:conf/discomt/SugiyamaY19
}
,或者使用预训练的手段来利用额外地单语或图像数据
\upcite
{
DBLP:conf/aaai/ZhouPZHCG20,DBLP:conf/iclr/SuZCLLWD20,DBLP:journals/corr/abs-1911-03110
}
。
\item
在多模态机器翻译任务和篇章级机器翻译任务中,数据规模往往受限,导致模型训练困难,很难取得较好的性能。比如在篇章级机器翻译中,一些研究工作对这类模型的上下文建模能力进行了探索
\upcite
{
DBLP:conf/discomt/KimTN19,DBLP:conf/acl/LiLWJXZLL20
}
,发现模型在小数据集上对上下文信息的利用并不能带来明显的性能提升。针对数据稀缺导致的训练问题,一些研究人员通过调整训练策略使得模型更容易捕获上下文信息
\upcite
{
DBLP:journals/corr/abs-1903-04715,DBLP:conf/acl/SaundersSB20,DBLP:conf/mtsummit/StojanovskiF19
}
。除了训练策略的调整,也可以使用数据增强的方式(例如,构造伪数据)来提升整体数据量
\upcite
{
DBLP:conf/emnlp/GokhaleBBY20,DBLP:conf/eccv/Tang0ZWY20,DBLP:conf/discomt/SugiyamaY19
}
,或者使用预训练的手段来利用额外地单语或图像数据
\upcite
{
DBLP:conf/aaai/ZhouPZHCG20,DBLP:conf/iclr/SuZCLLWD20,DBLP:journals/corr/abs-1911-03110
}
。
\vspace
{
0.5em
}
\end{itemize}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论