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
3405c4bb
Commit
3405c4bb
authored
Dec 17, 2020
by
曹润柘
Browse files
Options
Browse Files
Download
Plain Diff
合并分支 'master' 到 'caorunzhe'
Master 查看合并请求
!628
parents
b07eee8a
4865f376
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
46 行增加
和
59 行删除
+46
-59
Chapter16/Figures/figure-multi-language-single-model-system-diagram.tex
+1
-1
Chapter16/chapter16.tex
+45
-58
没有找到文件。
Chapter16/Figures/figure-multi-language-single-model-system-diagram.tex
查看文件 @
3405c4bb
...
...
@@ -23,7 +23,7 @@
\node
[anchor=north,font=\footnotesize]
(pair2) at ([yshift=-4.5em,xshift=1em]train.south)
{
双语句对2:
}
;
\node
[anchor=west,lan]
(train3) at ([yshift=.7em,xshift=0.4em]pair2.east)
{
法语:
{
\color
{
red
}
<german>
}
\
Bonjour
}
;
\node
[anchor=west,lan]
(train4) at ([yshift=-.7em,xshift=0.4em]pair2.east)
{
德语:Hallo
}
;
\node
[anchor=north,font=\footnotesize]
(decode) at ([yshift=-8em]train.south)
{
\small\bfnew
{
解码
阶段:
}}
;
\node
[anchor=north,font=\footnotesize]
(decode) at ([yshift=-8em]train.south)
{
\small\bfnew
{
推断
阶段:
}}
;
\node
[anchor=north,font=\footnotesize]
(input) at ([xshift=2.13em,yshift=-0.6em]decode.south)
{
输入:
}
;
\node
[anchor=west,lan]
(decode2) at ([xshift=0.4em]input.east)
{
英语:
{
\color
{
red
}
<german>
}
\
hello
}
;
\node
[anchor=north,font=\footnotesize]
(output) at ([xshift=2.13em,yshift=-2.6em]decode.south)
{
输出:
}
;
...
...
Chapter16/chapter16.tex
查看文件 @
3405c4bb
...
...
@@ -748,12 +748,12 @@ P(\mathbi{y}|\mathbi{x}) & = & \frac{\mathrm{cos}(\mathbi{x},\mathbi{y})/\tau}{\
\vspace
{
0.5em
}
\item
{
\small\bfnew
{
模型参数初始化
}}
。无监督神经机器翻译的关键在于如何提供最开始的监督信号,从而启动后续的迭代流程。无监督词典归纳已经可以提供一些可靠的监督信号,那么如何在模型初始化中融入这些信息?既然神经机器翻译模型都使用词嵌入层作为输入,而无监督词典归纳总是先把两个语言各自的单语词嵌入映射到一个空间后才归纳双语词典,那么可以使用这些映射后的词嵌入来初始化模型的词嵌入层,然后在这个基础上训练模型,因为这些映射后的词嵌入天然就包含了大量的监督信号,比如,两个语言里意思相近的词对应的词嵌入会比其他词更靠近对方
\upcite
{
DBLP:journals/ipm/FarhanTAJATT20
}
。 为了防止训练过程中模型参数的更新会破坏词嵌入当中的词对齐信息,通常初始化后会固定模型的词嵌入层不让其更新
\upcite
{
DBLP:conf/emnlp/ArtetxeLA18
}
。
\parinterval
进一步
的研究表明
,无监督神经机器翻译能在提供更少监督信号的情况下启动,也就是可以去除无监督词典归纳这一步骤
\upcite
{
DBLP:conf/nips/ConneauL19
}
。这时候模型的初始化直接使用共享词表的预训练模型的参数作为起始点。这个预训练模型直接使用前面提到的预训练方法(如MASS)进行训练,区别在于模型的大小如宽度和深度需要严格匹配翻译模型。此外,这个模型不仅仅只在一个语言的单语数据上进行训练,而是同时在两个语言的单语数据上进行训练,并且两个语言的词表进行共享。前面提到,在共享词表特别是共享子词词表的情况下,已经隐式地告诉模型源语言和目标语言里一样的(子)词互为翻译,相当于模型使用了少量的监督信号。在这基础上使用两个语言的单语数据进行预训练,则通过模型共享进一步挖掘了语言之间共通的部分。因此,使用预训练模型进行初始化后,无监督神经机器翻译模型已经得到大量的监督信号,从而得以不断通过优化来提升模型性能。
\parinterval
进一步,无监督神经机器翻译能在提供更少监督信号的情况下启动,也就是可以去除无监督词典归纳这一步骤
\upcite
{
DBLP:conf/nips/ConneauL19
}
。这时候模型的初始化直接使用共享词表的预训练模型的参数作为起始点。这个预训练模型直接使用前面提到的预训练方法(如MASS)进行训练,区别在于模型的大小如宽度和深度需要严格匹配翻译模型。此外,这个模型不仅仅只在一个语言的单语数据上进行训练,而是同时在两个语言的单语数据上进行训练,并且两个语言的词表进行共享。前面提到,在共享词表特别是共享子词词表的情况下,已经隐式地告诉模型源语言和目标语言里一样的(子)词互为翻译,相当于模型使用了少量的监督信号。在这基础上使用两个语言的单语数据进行预训练,则通过模型共享进一步挖掘了语言之间共通的部分。因此,使用预训练模型进行初始化后,无监督神经机器翻译模型已经得到大量的监督信号,从而得以不断通过优化来提升模型性能。
\vspace
{
0.5em
}
\item
{
\small\bfnew
{
语言模型的使用
}}
。无监督神经机器翻译的一个重要部分就是来自语言模型的目标函数。因为翻译模型本质上是在完成文本生成任务,所以只有文本生成类型的语言模型建模方法才可以应用到无监督神经机器翻译里。比如,经典的给定前文预测下一词就是一个典型的自回归生成任务(见
{
\chaptertwo
}
),因此可以运用到无监督神经机器翻译里。但是,目前在预训练里流行的BERT等模型是掩码语言模型
\upcite
{
devlin2019bert
}
,就不能直接在无监督神经翻译里使用。
\parinterval
另外一个在无监督神经机器翻译中比较常见的语言模型目标函数则是降噪自编码器。它也是文本生成类型的语言模型建模方法。对于一个句子
$
\seq
{
x
}$
,首先使用一个噪声函数
$
\seq
{
x
}^{
'
}
=
\mathrm
{
noise
}
(
\seq
{
x
}
)
$
来对
$
\seq
{
x
}$
注入噪声,产生一个质量较差的句子
$
\seq
{
x
}^{
'
}$
。然后,让模型学习如何从
$
\seq
{
x
}^{
'
}$
还原出
$
\seq
{
x
}$
。这样一个目标函数比预测下一词更贴近翻译任务
的本质,因为它是一个序列到序列的映射,并且输入输出两个序列在语义上是等价的。我们之所以采用
$
\seq
{
x
}^{
'
}$
而不是
$
\seq
{
x
}$
自己来预测
$
\seq
{
x
}^{
'
}$
,是因为模型可以通过简单的复制输入作为输出来完成从
$
\seq
{
x
}$
预测
$
\seq
{
x
}$
的任务,并且在输入中注入噪声会让模型更加鲁棒,因此模型可以通过训练集数据学会如何利用句子中噪声以外的信息来处理
其中噪声并得到正确的输出。通常来说,噪声函数
$
\mathrm
{
noise
}$
有三种形式,如表
\ref
{
tab:16-1
}
所示。
\parinterval
另外一个在无监督神经机器翻译中比较常见的语言模型目标函数则是降噪自编码器。它也是文本生成类型的语言模型建模方法。对于一个句子
$
\seq
{
x
}$
,首先使用一个噪声函数
$
\seq
{
x
}^{
'
}
=
\mathrm
{
noise
}
(
\seq
{
x
}
)
$
来对
$
\seq
{
x
}$
注入噪声,产生一个质量较差的句子
$
\seq
{
x
}^{
'
}$
。然后,让模型学习如何从
$
\seq
{
x
}^{
'
}$
还原出
$
\seq
{
x
}$
。这样一个目标函数比预测下一词更贴近翻译任务
,因为它是一个序列到序列的映射,并且输入、输出两个序列在语义上是等价的。这里之所以采用
$
\seq
{
x
}^{
'
}$
而不是
$
\seq
{
x
}$
自己来预测
$
\seq
{
x
}$
,是因为模型可以通过简单的复制输入作为输出来完成从
$
\seq
{
x
}$
预测
$
\seq
{
x
}$
的任务,并且在输入中注入噪声会让模型更加健壮,因此模型可以通过训练集数据学会如何利用句子中噪声以外的信息来忽略
其中噪声并得到正确的输出。通常来说,噪声函数
$
\mathrm
{
noise
}$
有三种形式,如表
\ref
{
tab:16-1
}
所示。
%----------------------------------------------
\begin{table}
[h]
\centering
...
...
@@ -804,7 +804,7 @@ P(\mathbi{y}|\mathbi{x}) & = & \frac{\mathrm{cos}(\mathbi{x},\mathbi{y})/\tau}{\
\begin{itemize}
\vspace
{
0.5em
}
\item
基于数据的方法。利用源领域的双语数据或目标领域单语数据进行数据选择或数据增强,来
提升
模型训练的数据量。
\item
基于数据的方法。利用源领域的双语数据或目标领域单语数据进行数据选择或数据增强,来
增加
模型训练的数据量。
\vspace
{
0.5em
}
\item
基于模型的方法。针对领域适应开发特定的模型结构或训练策略、推断方法。
\vspace
{
0.5em
}
...
...
@@ -857,18 +857,18 @@ P(\mathbi{y}|\mathbi{x}) & = & \frac{\mathrm{cos}(\mathbi{x},\mathbi{y})/\tau}{\
%----------------------------------------------------------------------------------------
\subsubsection
{
3. 基于数据选择的方法
}
\parinterval
源领域大规模的双语数据中通常会包含一些和目标领域相似的句子,基于数据选择的方法通过相似度函数选择出与目标领域相似的源领域数据,再把选择出的源领域数据与原始目标领域数据进行混合,之后训练模型,增加目标领域的双语数据规模,从而提高模型在目标领域的性能。相似度可以通过语言模型
\upcite
{
DBLP:conf/lrec/EckVW04,DBLP:conf/coling/ZhaoEV04,DBLP:conf/acl/DuhNST13
}
、 多模型联合
\upcite
{
DBLP:conf/coling/HoangS14,joty2015using
}
、卷积神经网络
\upcite
{
chen2016bilingual
}
等方法进行计算。
\parinterval
源领域大规模的双语数据中通常会包含一些和目标领域相似的句子,基于数据选择的方法通过相似度函数选择出与目标领域相似的源领域数据,再把选择出的源领域数据与原始目标领域数据进行混合,之后训练模型,增加目标领域的双语数据规模,从而提高模型在目标领域的性能。相似度可以通过语言模型
\upcite
{
DBLP:conf/lrec/EckVW04,DBLP:conf/coling/ZhaoEV04,DBLP:conf/acl/DuhNST13
}
、 多模型联合
\upcite
{
DBLP:conf/coling/HoangS14,joty2015using
}
等方法进行计算。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection
{
4. 基于伪数据的方法
}
\parinterval
数据选择方法可以从源领域中选择出和目标领域相似的训练数据,但可用的数据量是较为有限的。因此,另外一种思路是对现有的双语数据进行修改或通过单语数据生成伪数据来增加数据量
。常用方法包括信息检索
\upcite
{
DBLP:conf/acl/UtiyamaI03
}
、平行词嵌入
\upcite
{
DBLP:conf/acl/MarieF17
}
等,通过生成一些伪平行句对或平行短语对
\upcite
{
DBLP:conf/coling/WangZLUS16,chu2015integrated
}
来增加可使用的伪双语数据
。
\parinterval
数据选择方法可以从源领域中选择出和目标领域相似的训练数据,但可用的数据量是较为有限的。因此,另外一种思路是对现有的双语数据进行修改或通过单语数据生成伪数据来增加数据量
\upcite
{
DBLP:conf/acl/UtiyamaI03,DBLP:conf/acl/MarieF17,DBLP:conf/coling/WangZLUS16,chu2015integrated
}
。
\parinterval
其中,
{
\small\bfnew
{
自学习
}}
\index
{
自学习
}
(Self-training)
\index
{
Self-training
}
是一种具有代表性的生成伪数据的方法
\upcite
{
DBLP:journals/tit/Scudder65a
}
。自学习利用源领域的双语训练数据训练一个基准翻译系统,然后对目标领域的单语数据进行翻译,再从翻译候选集合中选择高质量的译文和源语言句子组合成为双语句对,之后将其加入到训练数据中重新训练翻译系统,该过程将一直迭代到翻译性能稳定为止
\upcite
{
DBLP:conf/iwslt/Ueffing06
}
。基于自学习的统计机器翻译可以从一个性能较好的源领域机器翻译模型出发,逐步引入目标领域的知识,可以显著提高目标领域的翻译性能。
\parinterval
随着神经机器翻译的不断发展,许多基于神经网络的领域适应方法也被提出
\upcite
{
DBLP:conf/coling/ChuW18
}
,但其核心思想仍和统计机器翻译时期相似,也是从数据角度和模型角度两方面进行改进。不同之处在于,统计机器翻译模型是多个独立模型的组合,而神经机器翻译是一个整体的模型,因此统计机器翻译中基于模型的方法并不能直接应用于神经机器翻译。
\parinterval
随着神经机器翻译的不断发展,许多基于神经网络的领域适应方法也被提出
\upcite
{
DBLP:conf/coling/ChuW18
}
,但其核心思想仍和统计机器翻译时期相似,也是从数据角度和模型角度两方面进行改进。不同之处在于,统计机器翻译模型是多个独立模型的组合,而神经机器翻译是一个整体的
端到端
模型,因此统计机器翻译中基于模型的方法并不能直接应用于神经机器翻译。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
...
...
@@ -876,7 +876,7 @@ P(\mathbi{y}|\mathbi{x}) & = & \frac{\mathrm{cos}(\mathbi{x},\mathbi{y})/\tau}{\
\subsection
{
基于数据的神经机器翻译领域适应
}
\parinterval
增加训练数据是解决低资源领域
性能较差问题的一个主要思路。受统计机器翻译时代技术的启发,可以通过类似的思想来增加神经机器翻译的训练数据量
。下面分别介绍基于多领域数据的方法、基于数据选择的方法和基于单语数据的方法。
\parinterval
增加训练数据是解决低资源领域
适应一个主要思路。具体做法与统计机器翻译中的方法类似
。下面分别介绍基于多领域数据的方法、基于数据选择的方法和基于单语数据的方法。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
...
...
@@ -884,20 +884,21 @@ P(\mathbi{y}|\mathbi{x}) & = & \frac{\mathrm{cos}(\mathbi{x},\mathbi{y})/\tau}{\
\subsubsection
{
1. 基于多领域数据的方法
}
\parinterval
一种简单的思路是利用其他领域的数据来辅助低资源领域上的模型训练,即基于多领域数据的领域适应
\upcite
{
DBLP:journals/corr/abs-1708-08712,DBLP:conf/acl/WangTNYCP20,DBLP:conf/acl/JiangLWZ20
}
。实际上,多领域建模也可以看作是一种多语言建模问题(
相关内容见本章
\ref
{
multilingual-translation-model
}
节)。通过借助其他相似领域的训练数据,可以缓解目标领域数据缺乏的问题。比如,想要训练网络小说领域
的翻译系统,可以通过加入文学、字幕等领域的翻译数据来增加数据量。
\parinterval
一种简单的思路是利用其他领域的数据来辅助低资源领域上的模型训练,即基于多领域数据的领域适应
\upcite
{
DBLP:journals/corr/abs-1708-08712,DBLP:conf/acl/WangTNYCP20,DBLP:conf/acl/JiangLWZ20
}
。实际上,多领域建模也可以看作是一种多语言建模问题(
见
\ref
{
multilingual-translation-model
}
节)。通过借助其他相似领域的训练数据,可以缓解目标领域数据缺乏的问题。比如,想要训练网络小说
的翻译系统,可以通过加入文学、字幕等领域的翻译数据来增加数据量。
\parinterval
但在神经机器翻译中,多领域数据不平衡问题也会导致数据量较少的领域训练不充分,带来较低的翻译品质。目前比较常用的
多领域数据方
法是在数据中加入标签来提高神经机器翻译模型对不同领域的区分能力
\upcite
{
DBLP:conf/acl/ChuDK17
}
,该方法主要通过两种策略来缓解领域不平衡问题:
\parinterval
但在神经机器翻译中,多领域数据不平衡问题也会导致数据量较少的领域训练不充分,带来较低的翻译品质。目前比较常用的
解决办
法是在数据中加入标签来提高神经机器翻译模型对不同领域的区分能力
\upcite
{
DBLP:conf/acl/ChuDK17
}
,该方法主要通过两种策略来缓解领域不平衡问题:
\begin{itemize}
\vspace
{
0.5em
}
\item
在不同领域的源语言句子句首加上不同的标签来指定该句子所对应的领域,让神经机器翻译模型在预测过程中可以生成更符合领域特性的句子。
\item
把数据量较小的领域数据复制数倍,来对各个领域的数据量进行平衡,使模型对各个领域给与平等的关注。
\vspace
{
0.5em
}
\item
把数据量较小的领域数据复制数倍,来对各个领域的数据量进行平衡,使模型对各个领域给予相对平等的关注。
\vspace
{
0.5em
}
\end{itemize}
\parinterval
基于多领域数据的方法优点在于思路简单、易于实现,可以大大提高可用的数据量,但不同领域的数据不可避免地会产生一些干扰,在实际使用中可能会产生词汇预测错误的问题。
\parinterval
基于多领域数据的方法
的
优点在于思路简单、易于实现,可以大大提高可用的数据量,但不同领域的数据不可避免地会产生一些干扰,在实际使用中可能会产生词汇预测错误的问题。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
...
...
@@ -929,11 +930,11 @@ P(\mathbi{y}|\mathbi{x}) & = & \frac{\mathrm{cos}(\mathbi{x},\mathbi{y})/\tau}{\
\begin{itemize}
\vspace
{
0.5em
}
\item
基于模型结构的方法,设计
一个
更适用于领域适应问题的模型结构
\upcite
{
2015OnGulcehre,DBLP:conf/naacl/BapnaF19,britz2017effective,DBLP:conf/ranlp/KobusCS17
}
。
\item
基于模型结构的方法,设计更适用于领域适应问题的模型结构
\upcite
{
2015OnGulcehre,DBLP:conf/naacl/BapnaF19,britz2017effective,DBLP:conf/ranlp/KobusCS17
}
。
\vspace
{
0.5em
}
\item
基于训练策略的方法,制定能够更好利用多领域数据的训练方法
\upcite
{
DBLP:conf/emnlp/WangULCS17,DBLP:conf/emnlp/WeesBM17,DBLP:conf/acl/ChuDK17
}
。
\vspace
{
0.5em
}
\item
基于模型推断的方法,
生成更符合目标适应领域的翻译结果
\upcite
{
DBLP:conf/emnlp/DouWHN19,khayrallah2017neural,DBLP:journals/corr/FreitagA16,DBLP:conf/acl/SaundersSGB19
}
。
\item
基于模型推断的方法,
在推断阶段完成领域适应
\upcite
{
DBLP:conf/emnlp/DouWHN19,khayrallah2017neural,DBLP:journals/corr/FreitagA16,DBLP:conf/acl/SaundersSGB19
}
。
\vspace
{
0.5em
}
\end{itemize}
...
...
@@ -943,17 +944,8 @@ P(\mathbi{y}|\mathbi{x}) & = & \frac{\mathrm{cos}(\mathbi{x},\mathbi{y})/\tau}{\
%----------------------------------------------------------------------------------------
\subsubsection
{
1. 基于模型结构的方法
}
\parinterval
统计机器翻译时代基于模型结构的方法集中在提升词对齐模型、语言模型等子模型的领域适应性,从而提升统计机器翻译模型在特定领域的表现。而神经机器翻译模型是一个端到端的框架,因此对模型的调整往往体现在整体结构上。
\parinterval
在使用多领域数据时,混合多个相差较大的领域数据进行训练会使单个领域的翻译性能下降
\upcite
{
DBLP:conf/eacl/NegriTFBF17
}
。 为了解决这一问题,一个比较典型的做法是在使用多领域数据训练时,如图
\ref
{
fig:16-21
}
所示,在神经机器翻译模型的编码器中添加一个判别器,使用判别器预测输入句子的领域
\upcite
{
DBLP:conf/wmt/BritzLP17
}
,具体的做法为:在编码器的顶部添加一个判别器网络,这个判别器使用源语言句子
$
x
$
的编码器表示
$
\mathbi
{
x
}
'
$
作为输入,预测句子所属的领域标签
$
d
$
。为了使预测领域标签
$
d
$
的正确概率
$
\funp
{
P
(
d|H
)
}$
最大,模型在训练过程中最小化如下损失函数
$
\funp
{
L
}_{
\rm
{
disc
}}$
:
\parinterval
在使用多领域数据时,神经机器翻译的结构无法有效地利用多领域语料库的信息多样性,混合多个相差较大的领域数据进行训练会使单个领域的翻译性能下降
\upcite
{
DBLP:conf/eacl/NegriTFBF17
}
。为了解决这一问题,一个比较典型的做法是在使用多领域数据训练时,如图
\ref
{
fig:16-21
}
所示,在神经机器翻译模型的编码器中添加一个判别器,使用判别器预测输入句子的领域
\upcite
{
DBLP:conf/wmt/BritzLP17
}
,具体的做法为:在编码器的顶部添加一个判别器网络,这个判别器使用源语言句子
$
x
$
的编码器表示
$
\mathbi
{
x
}
'
$
作为输入,预测句子所属的领域标签
$
d
$
。为了使预测领域标签d的正确概率
$
\funp
{
P
(
d|H
)
}$
最大,模型在训练过程中最小化如下损失函数
$
\funp
{
L
}_{
\rm
{
disc
}}$
。
%----------------------------------------------
\begin{figure}
[h]
\centering
\input
{
Chapter16/Figures/figure-schematic-of-the-domain-discriminator
}
\caption
{
领域判别器示意图
}
\label
{
fig:16-21
}
\end{figure}
%----------------------------------------------
\begin{eqnarray}
\funp
{
L
}_{
\rm
{
disc
}}&
=
&
-
\log\funp
{
P
}
(d|H)
\label
{
eq:16-12
}
...
...
@@ -971,53 +963,39 @@ P(\mathbi{y}|\mathbi{x}) & = & \frac{\mathrm{cos}(\mathbi{x},\mathbi{y})/\tau}{\
\funp
{
L
}
&
=
&
\funp
{
L
}_{
\rm
{
disc
}}
+
\funp
{
L
}_{
\rm
{
gen
}}
\label
{
eq:16-14
}
\end{eqnarray}
\parinterval
这种方法使模型具备了识别不同领域数据的能力,从而可以针对不同领域进行特定的建模,生成符合领域特征的翻译结果。此外,还可以利用词频-逆文档频率方法
\upcite
{
DBLP:journals/ibmrd/Luhn58
}
预测输入句子的领域标签,在词嵌入层加上领域特定的嵌入表示。还有一些对模型结构进行更改的工作比如融合语言模型到神经机器翻译模型中
\upcite
{
2015OnGulcehre,DBLP:conf/emnlp/DomhanH17
}
。
\parinterval
这种方法使模型具备了识别不同领域数据的能力,从而可以针对不同领域进行建模,生成符合领域特征的翻译结果。此外,还可以利用TF-IDF方法
\upcite
{
DBLP:journals/ibmrd/Luhn58
}
预测输入句子的领域标签,在词嵌入层加上领域特定的嵌入表示。也可以融合语言模型到神经机器翻译模型中,达到领域适应的目的
\upcite
{
2015OnGulcehre,DBLP:conf/emnlp/DomhanH17
}
。
%----------------------------------------------
\begin{figure}
[h]
\centering
\input
{
Chapter16/Figures/figure-schematic-of-the-domain-discriminator
}
\caption
{
领域判别器示意图
}
\label
{
fig:16-21
}
\end{figure}
%----------------------------------------------
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection
{
2. 基于训练策略的方法
}
\parinterval
因为特定领域的训练数据通常十分稀缺,所以如何更充分地利用数据是一个重要问题。基于训练策略的领域适应方法是神经机器翻译中较为广泛使用的方法,具有易于实现、作用显著的优点
\upcite
{
DBLP:conf/naacl/SimianerWD19
}
。基于训练策略的领域适应方法是指在模型的训练阶段改变获得训练目标的过程,通过加权或者微调等方法更加高效地利用数据。
\parinterval
受到统计机器翻译中数据加权方法的启发,一个简单的思路是给神经机器翻译的训练数据分配不同的训练权重,从而使和目标领域更相似的数据发挥更大的作用,并减少不相似数据的干扰。一种常用的做法是使用目标领域内和领域外语言模型来计算样本的权重
\upcite
{
DBLP:conf/emnlp/WangULCS17
}
。领域内语言模型对句子的打分越高,表示该句子与目标领域越相似,反之,领域外语言模型对句子的打分越高,表示该句子可能与目标领域无关,会对训练过程造成一些干扰。
\parinterval
与句子级别进行加权方法相似,加权思想还可以应用在词级别,即对每个词进行权重评分,对目标领域中的词赋予更高的权重,以使模型倾向于生成更多目标领域的词
\upcite
{
DBLP:journals/corr/abs-1906-03129
}
。
\parinterval
数据选择方法会降低训练数据的数据量,而在数据量较少的时候模型性能表现可能较差,针对这个问题,一种方法是在不同的训练轮次动态地改变训练数据子集。动态数据选择使得每轮的训练数据均小于全部数据量,但是在每轮中的训练数据均不同,可能前一轮没有训练的数据在当前轮被包括进来,由此可以缓解训练数据减小的问题。另一种做法是先将完整的数据送入模型,再根据相似度逐次减少每轮的数据量,最后得到在目标领域上效果最好的领域适应模型
\upcite
{
DBLP:conf/emnlp/WeesBM17
}
。或者将最相似的句子最先送入模型,让模型可以最先学到跟目标领域最相关的知识,奠定良好的基础
\upcite
{
DBLP:conf/naacl/ZhangSKMCD19
}
。
\parinterval
因为特定领域的训练数据通常十分稀缺,所以如何更充分地利用数据是一个重要问题
\upcite
{
DBLP:conf/naacl/SimianerWD19
}
。受到统计机器翻译中数据加权方法的启发,一个简单的思路是给神经机器翻译的训练数据分配不同的训练权重,从而使和目标领域更相关的数据发挥更大的作用,并减少不相关数据的干扰。一种常用的做法是使用目标领域内和领域外语言模型来计算样本的权重
\upcite
{
DBLP:conf/emnlp/WangULCS17
}
。领域内语言模型对句子的打分越高,表示该句子与目标领域越相似,反之,领域外语言模型对句子的打分越高,表示该句子可能与目标领域无关,会对训练过程造成一些干扰。与句子级别进行加权方法相似,加权思想还可以应用在词级别,即对每个词进行权重评分,对目标领域中的词赋予更高的权重,以使模型倾向于生成更多目标领域的词
\upcite
{
DBLP:journals/corr/abs-1906-03129
}
。
\parinterval
还有一种方法是不从随机状态开始训练网络,而是使用翻译性能较好的源领域模型作为初始状态,因为源领域模型中包含着一些通用知识可以被目标领域借鉴。比如,想获得口语领域的机器翻译模型,可以使用新闻领域模型作为初始状态来训练口语领域模型。同时,微调方法经常配合预训练使用。微调方法的具体过程如下:
\parinterval
数据选择方法会降低训练数据的数据量,而在数据量较少的时候模型性能表现可能较差,针对这个问题,一种方法是在不同的训练轮次动态地改变训练数据子集。动态数据选择使得每轮的训练数据均小于全部数据量,但是在每轮中的训练数据均不同,可能前一轮没有训练的数据在当前轮被包括进来,由此可以缓解训练数据减小的问题。另一种做法是先将完整的数据送入模型,再根据相似度逐次减少每轮的数据量,最后得到在目标领域上效果最好的领域适应模型
\upcite
{
DBLP:conf/emnlp/WeesBM17
}
。或者将与领域相关的句子先送入模型,让模型可以最先学到跟目标领域最相关的知识
\upcite
{
DBLP:conf/naacl/ZhangSKMCD19
}
。
\begin{itemize}
\vspace
{
0.5em
}
\item
在资源丰富的源领域语料库上对系统进行训练直至收敛。
\vspace
{
0.5em
}
\item
在资源贫乏的目标领域语料库上进行训练,对系统参数进行微调使其更适应目标领域。
\vspace
{
0.5em
}
\end{itemize}
\parinterval
还有一种方法是不从随机状态开始训练网络,而是使用翻译性能较好的源领域模型作为初始状态,因为源领域模型中包含着一些通用知识可以被目标领域借鉴。比如,想获得口语的翻译模型,可以使用新闻的翻译模型作为初始状态进行训练。这也可以被看做是一种模型预训练方法。
\parinterval
然而微调的方法会带来严重的灾难性遗忘问题,即在目标领域上过拟合,导致在源领域上的翻译性能大幅度下降。如果想要保证模型在目标领域上有较好翻译性能的同时在源领域的翻译性能也不下降,一个比较常用的方法是进行混合微调
\upcite
{
DBLP:conf/acl/ChuDK17
}
。具体做法是先在源领域数据上训练一个神经机器翻译模型,然后将目标领域数据复制数倍和源领域数据量相等,之后将数据混合后对神经机器翻译模型进行微调。混合微调方法既降低了目标领域数据量小导致的过拟合问题,又带来了更好的微调性能。除了混合微调外,还有研究人员使用
\ref
{
multilingual-translation-model
}
节的知识蒸馏方法缓解灾难性遗忘问题,即对源领域和目标领域进行多次循环知识蒸馏,迭代学习对方领域的知识,可以保证在源领域和目标领域上的翻译性能共同逐步上升
\upcite
{
DBLP:conf/emnlp/ZengLSGLYL19
}
。过拟合导致的灾难性遗忘问题还可以使用
\ref
{
subsection-13.2
}
一节中的
L2正则化和Dropout方法来缓解
\upcite
{
barone2017regularization
}
。
\parinterval
同时,微调方法经常配合预训练使用。不过微调的方法会带来灾难性遗忘问题,即在目标领域上过拟合,导致在源领域上的翻译性能大幅度下降。如果想要保证模型在目标领域和源领域上都有较好的性能,一个比较常用的方法是进行混合微调
\upcite
{
DBLP:conf/acl/ChuDK17
}
。具体做法是先在源领域数据上训练一个神经机器翻译模型,然后将目标领域数据复制数倍和源领域数据量相等,之后将数据混合后对神经机器翻译模型进行微调。混合微调方法既降低了目标领域数据量小导致的过拟合问题,又带来了更好的微调性能。除了混合微调外,也可以使用知识蒸馏方法缓解灾难性遗忘问题(见
\ref
{
multilingual-translation-model
}
),即对源领域和目标领域进行多次循环知识蒸馏,迭代学习对方领域的知识,可以保证在源领域和目标领域上的翻译性能共同逐步上升
\upcite
{
DBLP:conf/emnlp/ZengLSGLYL19
}
。过拟合导致的灾难性遗忘问题还可以使用
L2正则化和Dropout方法来缓解
\upcite
{
barone2017regularization
}
。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection
{
3. 基于模型推断的方法
}
\parinterval
推断是指将输入序列转换成的向量再次转化为输出序列的过程,是机器翻译模型生成翻译结果的最后一步。典型的工作是优化推断算法
\upcite
{
khayrallah2017neural
}
,即通过更适用于领域适应任务的推断算法去选择最佳的结果,大部分基于模型推断的方法的相关工作集中在把多个模型融合成一个模型以增强模型的推断能力,来获得更适应目标领域的序列。目前比较常用的方法是集成推断,即把多个领域的模型使用
{
\chapterfourteen
}
的模型集成方法融合为一个模型用于推断
\upcite
{
DBLP:journals/corr/FreitagA16
}
,具体过程如下:
\begin{itemize}
\vspace
{
0.5em
}
\item
在目标领域和多个源领域数据上分别训练多个独立的机器翻译模型。
\vspace
{
0.5em
}
\item
把多个模型集成为一个模型。
\vspace
{
0.5em
}
\item
使用目标领域数据对集成模型进行微调。
\vspace
{
0.5em
}
\item
使用微调后的模型进行推断。
\vspace
{
0.5em
}
\end{itemize}
\parinterval
另一种典型思路是优化推断算法
\upcite
{
khayrallah2017neural
}
。目前比较常用的方法是集成推断(见
{
\chapterfourteen
}
),即把多个领域的模型融合为一个模型用于推断
\upcite
{
DBLP:journals/corr/FreitagA16
}
。
\parinterval
集成推断方法
相较于直接使用大量数据训练成一个模型的主要优势在于速度快,多个领域的模型可以独立训练,使训练时间大大缩短。集成推断也可以结合加权的思想,对不同领域的句子,赋予每个模型不同的先验权重进行推断,来获得最佳的推断结果
\upcite
{
DBLP:conf/acl/SaundersSGB19
}
。还有部分工作研究
在推断过程中融入语言模型
\upcite
{
2015OnGulcehre,DBLP:conf/emnlp/DomhanH17
}
或目标领域的罕见词
\upcite
{
DBLP:conf/naacl/BapnaF19
}
。
\parinterval
集成推断方法
的主要优势在于实现简单,多个领域的模型可以独立训练,使训练时间大大缩短。集成推断也可以结合加权的思想,对不同领域的句子,赋予每个模型不同的先验权重进行推断,来获得最佳的推断结果
\upcite
{
DBLP:conf/acl/SaundersSGB19
}
。也可以
在推断过程中融入语言模型
\upcite
{
2015OnGulcehre,DBLP:conf/emnlp/DomhanH17
}
或目标领域的罕见词
\upcite
{
DBLP:conf/naacl/BapnaF19
}
。
%----------------------------------------------------------------------------------------
% NEW SECTION
...
...
@@ -1027,13 +1005,22 @@ P(\mathbi{y}|\mathbi{x}) & = & \frac{\mathrm{cos}(\mathbi{x},\mathbi{y})/\tau}{\
低资源机器翻译是机器翻译大规模应用所面临的挑战之一,因此也备受关注。一方面,小样本学习和零样本学习技术的发展,使得研究者可以有更多的手段对问题求解;另一方面,从多语言之间的联系出发,也可以进一步挖掘语料背后的知识,并应用于低资源翻译任务。本章从多个方面介绍了低资源机器翻译方法,并结合多语言、零资源翻译等问题给出了不同场景下解决问题的思路。除此之外,还有几方面工作值得进一步关注:
\
parinterval
如何更高效地利用已有双语数据或单语数据进行数据增强始终是一个热点问题。研究人员分别探索了源语言单语和目标语言单语的使用方法
\upcite
{
DBLP:conf/emnlp/ZhangZ16,DBLP:conf/emnlp/WuWXQLL19,DBLP:conf/acl/XiaKAN19
}
,以及如何对已有双语数据进行修改
\upcite
{
DBLP:conf/emnlp/WangPDN18,DBLP:conf/acl/GaoZWXQCZL19
}
。经过数据增强得到的伪数据的质量时好时坏,如何提高伪数据的质量以及更好地利用伪数据进行训练也是十分重要的问题
\upcite
{
DBLP:conf/emnlp/FadaeeM18,DBLP:conf/nlpcc/XuLXLLXZ19,DBLP:conf/wmt/CaswellCG19,DBLP:journals/corr/abs200403672,DBLP:conf/emnlp/WangLWLS19
}
。此外,还有一些工作对数据增强技术进行了理论分析
\upcite
{
DBLP:conf/emnlp/LiLHZZ19,DBLP:conf/acl/MarieRF20
}
。
\
begin{itemize}
\parinterval
语言模型除了应用在解码过程中来提高翻译结果的流畅度之外,另外一种常用的做法是用来对翻译结果进行重排序。翻译模型在解码过程中可以生成多个候选,可以利用语言模型、不同的翻译模型等分别对每个候选打分,选择分数最高的句子作为最终的翻译结果
\upcite
{
DBLP:conf/wmt/WangCJYCLSWY17,ng2019facebook,DBLP:conf/wmt/WangLLJZLLXZ18,DBLP:conf/wmt/LiLXLLLWZXWFCLL19
}
,这一方法在各种机器翻译评测任务中得到了广泛使用。
\vspace
{
0.5em
}
\item
如何更高效地利用已有双语数据或单语数据进行数据增强始终是一个热点问题。研究人员分别探索了源语言单语和目标语言单语的使用方法
\upcite
{
DBLP:conf/emnlp/ZhangZ16,DBLP:conf/emnlp/WuWXQLL19,DBLP:conf/acl/XiaKAN19
}
,以及如何对已有双语数据进行修改
\upcite
{
DBLP:conf/emnlp/WangPDN18,DBLP:conf/acl/GaoZWXQCZL19
}
。经过数据增强得到的伪数据的质量时好时坏,如何提高伪数据的质量以及更好地利用伪数据进行训练也是十分重要的问题
\upcite
{
DBLP:conf/emnlp/FadaeeM18,DBLP:conf/nlpcc/XuLXLLXZ19,DBLP:conf/wmt/CaswellCG19,DBLP:journals/corr/abs200403672,DBLP:conf/emnlp/WangLWLS19
}
。此外,还有一些工作对数据增强技术进行了理论分析
\upcite
{
DBLP:conf/emnlp/LiLHZZ19,DBLP:conf/acl/MarieRF20
}
。
\parinterval
预训练模型BERT的提出引发了人们对预训练方法的关注,从多个维度对预训练方法进行了更广泛和更深入的探讨。预训练模型的目标最早主要是语言模型或掩码语言模型,之后又提出了新的预训练任务,如排列语言模型
\upcite
{
DBLP:conf/nips/YangDYCSL19
}
、降噪自编码器
\upcite
{
lewis2019bart
}
等
\upcite
{
DBLP:conf/iclr/LanCGGSS20,DBLP:conf/acl/ZhangHLJSL19
}
。预训练技术也逐渐向多语言领域扩展
\upcite
{
DBLP:conf/nips/ConneauL19,DBLP:conf/emnlp/HuangLDGSJZ19,song2019mass
}
,甚至不再只局限于文本任务,逐渐向更多模态探索
\upcite
{
DBLP:conf/iccv/SunMV0S19,DBLP:journals/corr/abs-2010-12831,DBLP:conf/nips/LuBPL19,DBLP:conf/interspeech/ChuangLLL20
}
。对于如何将预训练模型高效地应用到下游任务中,也进行了很多的经验性对比与分析
\upcite
{
DBLP:journals/corr/abs-1802-05365,DBLP:conf/rep4nlp/PetersRS19,DBLP:conf/cncl/SunQXH19
}
。但将预训练模型应用于下游任务存在的一个问题是,由于模型巨大的参数量会带来较大的延时及显存消耗。因此,很多工作对如何压缩预训练模型进行了研究
\upcite
{
shen2020q,Lan2020ALBERTAL,DBLP:journals/corr/abs-1910-01108,Jiao2020TinyBERTDB
}
。
\vspace
{
0.5em
}
\item
预训练模型也是自然语言处理的重要突破之一。除了基于语言模型或掩码语言模型的方法,也有很多新的架构和模型被提出,如排列语言模型、降噪自编码器等
\upcite
{
DBLP:conf/nips/YangDYCSL19,lewis2019bart,DBLP:conf/iclr/LanCGGSS20,DBLP:conf/acl/ZhangHLJSL19
}
。预训练技术也逐渐向多语言领域扩展
\upcite
{
DBLP:conf/nips/ConneauL19,DBLP:conf/emnlp/HuangLDGSJZ19,song2019mass
}
,甚至不再只局限于文本任务
\upcite
{
DBLP:conf/iccv/SunMV0S19,DBLP:journals/corr/abs-2010-12831,DBLP:conf/nips/LuBPL19,DBLP:conf/interspeech/ChuangLLL20
}
。对于如何将预训练模型高效地应用到下游任务中,也进行了很多的经验性对比与分析
\upcite
{
DBLP:journals/corr/abs-1802-05365,DBLP:conf/rep4nlp/PetersRS19,DBLP:conf/cncl/SunQXH19
}
。但将预训练模型应用于下游任务存在的一个问题是,由于模型巨大的参数量会带来较大的延时及显存消耗。因此,很多工作对如何压缩预训练模型进行了研究
\upcite
{
shen2020q,Lan2020ALBERTAL,DBLP:journals/corr/abs-1910-01108,Jiao2020TinyBERTDB
}
。
\parinterval
最早的多语言方向的工作开始于多任务学习,通过共享编码器模块或是注意力模块来进行一对多
\upcite
{
DBLP:conf/acl/DongWHYW15
}
或多对一
\upcite
{
DBLP:journals/tacl/LeeCH17
}
或多对多
\upcite
{
DBLP:conf/naacl/FiratCB16
}
的学习,然而这些方法需要为每个翻译语言对设计单独的编码器和解码器,限制了其可扩展性。为了解决以上问题,研究人员进一步探索了用于多语言翻译的单个机器翻译模型的方法,也就是我们所说的多语言单模型系统
\upcite
{
DBLP:journals/corr/HaNW16,DBLP:journals/tacl/JohnsonSLKWCTVW17
}
。为了弥补多语言单模型系统中缺乏语言表示多样性的问题,可以重新组织分享模块,设计特定任务相关模块
\upcite
{
DBLP:conf/coling/BlackwoodBW18,DBLP:conf/wmt/SachanN18,DBLP:conf/wmt/LuKLBZS18,DBLP:conf/acl/WangZZZXZ19
}
;可以将多语言单词编码和语言聚类分离,用一种多语言词典编码框架智能地共享词汇级别的信息,有助于语言间的泛化
\upcite
{
DBLP:conf/iclr/WangPAN19
}
;可以将语言聚类为不同的组,并为每个聚类单独训练一个多语言模型
\upcite
{
DBLP:conf/emnlp/TanCHXQL19
}
。零资源翻译是多语言翻译领域一个非常重要的问题,近两年受到了广泛的关注,零资源翻译不仅可以解决低资源语种双语数据缺失的问题,还可以显著提高数据使用效率,在零资源翻译中,仅在
$
O
(
k
)
$
并行语料库上进行训练之后,单个多语言翻译模型就能在任何
$
O
(
k
^{
2
}
)
$
语言对之间进行概括和转换
\upcite
{
DBLP:conf/naacl/Al-ShedivatP19
}
。但是,零资源翻译的性能通常很不稳定并且明显落后于有监督的翻译方向。为了改善零资源翻译,可以开发新的跨语言正则器,例如对齐正则器
\upcite
{
DBLP:journals/corr/abs-1903-07091
}
,一致性正则器
\upcite
{
DBLP:conf/naacl/Al-ShedivatP19
}
;可以通过反向翻译
\upcite
{
DBLP:conf/acl/GuWCL19,DBLP:conf/emnlp/FiratSAYC16
}
或基于枢轴的翻译
\upcite
{
DBLP:conf/emnlp/CurreyH19
}
生成人工并行数据;也可以尝试通过微调来改善零资源翻译性能
\upcite
{
firat2016zero,DBLP:journals/corr/abs-1805-10338
}
。
\vspace
{
0.5em
}
\item
多任务学习是多语言翻译的一种典型方法。通过共享编码器模块或是注意力模块来进行一对多
\upcite
{
DBLP:conf/acl/DongWHYW15
}
或多对一
\upcite
{
DBLP:journals/tacl/LeeCH17
}
或多对多
\upcite
{
DBLP:conf/naacl/FiratCB16
}
的学习,然而这些方法需要为每个翻译语言对设计单独的编码器和解码器,限制了其可扩展性。为了解决以上问题,研究人员进一步探索了用于多语言翻译的单个机器翻译模型的方法,也就是本章提到的多语言单模型系统
\upcite
{
DBLP:journals/corr/HaNW16,DBLP:journals/tacl/JohnsonSLKWCTVW17
}
。为了弥补多语言单模型系统中缺乏语言表示多样性的问题,可以重新组织分享模块,设计特定任务相关模块
\upcite
{
DBLP:conf/coling/BlackwoodBW18,DBLP:conf/wmt/SachanN18,DBLP:conf/wmt/LuKLBZS18,DBLP:conf/acl/WangZZZXZ19
}
;也可以将多语言单词编码和语言聚类分离,用一种多语言词典编码框架智能地共享词汇级别的信息,有助于语言间的泛化
\upcite
{
DBLP:conf/iclr/WangPAN19
}
;还可以将语言聚类为不同的组,并为每个聚类单独训练一个多语言模型
\upcite
{
DBLP:conf/emnlp/TanCHXQL19
}
。
\vspace
{
0.5em
}
\item
零资源翻译也是近几年收到广泛关注的方向
\upcite
{
firat2016zero,DBLP:journals/corr/abs-1805-10338
}
。在零资源翻译中,仅使用少量并行语料库(覆盖
$
k
$
个语言),单个多语言翻译模型就能在任何
$
k
^{
2
}$
个语言对之间进行翻译
\upcite
{
DBLP:conf/naacl/Al-ShedivatP19
}
。 但是,零资源翻译的性能通常很不稳定并且明显落后于有监督的翻译方向。为了改善零资源翻译,可以开发新的跨语言正则化方法,例如对齐正则化方法
\upcite
{
DBLP:journals/corr/abs-1903-07091
}
,一致性正则化方法
\upcite
{
DBLP:conf/naacl/Al-ShedivatP19
}
;也可以通过反向翻译或基于枢轴语言的翻译生成人工并行数据
\upcite
{
DBLP:conf/acl/GuWCL19,DBLP:conf/emnlp/FiratSAYC16,DBLP:conf/emnlp/CurreyH19
}
。
\vspace
{
0.5em
}
\end{itemize}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论