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
364d36c3
Commit
364d36c3
authored
Jan 07, 2021
by
曹润柘
Browse files
Options
Browse Files
Download
Plain Diff
合并分支 'master' 到 'caorunzhe'
Master 查看合并请求
!805
parents
1c5de3e2
0522cc35
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
44 行增加
和
44 行删除
+44
-44
Chapter16/Figures/figure-data-based-domain-adaptation-approach.tex
+1
-1
Chapter16/Figures/figure-optimization-of-the-model-initialization-method.tex
+2
-2
Chapter16/chapter16.tex
+41
-41
没有找到文件。
Chapter16/Figures/figure-data-based-domain-adaptation-approach.tex
查看文件 @
364d36c3
...
...
@@ -100,7 +100,7 @@
\draw
[->,thick] ([yshift=-0.2em]one-3.south) .. controls +(south:2.5em) and +(north:2.5em) .. ([yshift=1.5em]one
_
-3.north);
\draw
[->,thick] ([yshift=-0.2em]two-3.south) .. controls +(south:2.5em) and +(north:2.5em) .. ([yshift=1.5em]two
_
-3.north);
\draw
[->,thick] ([yshift=-0.2em]three-3.south) .. controls +(south:2.5em) and +(north:2.5em) .. ([yshift=1.5em]three
_
-3.north);
\draw
[->,thick] ([yshift=-0.0em]monolingual-3.south) .. controls +(south:2.5em) and +(north:2.5em) .. ([xshift=0.8em,yshift=1.7em]new
_
-3.north) node[pos=0.5,left,align=center,font=
\tiny
]
{
解码
}
;
\draw
[->,thick] ([yshift=-0.0em]monolingual-3.south) .. controls +(south:2.5em) and +(north:2.5em) .. ([xshift=0.8em,yshift=1.7em]new
_
-3.north) node[pos=0.5,left,align=center,font=
\tiny
]
{
翻译
}
;
\draw
[->,thick] ([xshift=1.7em,yshift=-0.2em]two
_
-3.south) -- ([yshift=0.2em]mo-3.north) node[pos=0.5,left,align=center,font=
\footnotesize
]
{
训练
}
;
\node
[font=\small]
at ([yshift=-4em]mo-3.south)
{
(c)伪数据
}
;
...
...
Chapter16/Figures/figure-optimization-of-the-model-initialization-method.tex
查看文件 @
364d36c3
...
...
@@ -14,7 +14,7 @@
\draw
[->,thick] ([yshift=1pt]data.north) .. controls +(90:2em) and +(90:2em) .. ([yshift=1pt]model.north) node[above,midway]
{
\small
{
参数优化
}}
;
\draw
[->,thick] ([yshift=1pt]model.south) .. controls +(-90:2em) and +(-90:2em) .. ([yshift=1pt]data.south) node[below,midway]
{
\small
{
数据优化
}}
;
\node
[word]
at ([xshift=-0.5em,yshift=-4em]data.south)
{
\small
{
(a) 基于数据的初始化
方法
}}
;
\node
[word]
at ([xshift=-0.5em,yshift=-4em]data.south)
{
\small
{
(a) 基于数据的初始化
}}
;
\end{scope}
\end{tikzpicture}
...
...
@@ -33,7 +33,7 @@
\draw
[->,thick] ([yshift=1pt]data.north) .. controls +(90:2em) and +(90:2em) .. ([yshift=1pt]model.north) node[above,midway]
{
\small
{
参数优化
}}
;
\draw
[->,thick] ([yshift=1pt]model.south) .. controls +(-90:2em) and +(-90:2em) .. ([yshift=1pt]data.south) node[below,midway]
{
\small
{
数据优化
}}
;
\node
[word]
at ([xshift=-0.5em,yshift=-4em]model.south)
{
\small
{
(b) 基于模型的初始化
方法
}}
;
\node
[word]
at ([xshift=-0.5em,yshift=-4em]model.south)
{
\small
{
(b) 基于模型的初始化
}}
;
\end{scope}
\end{tikzpicture}
...
...
Chapter16/chapter16.tex
查看文件 @
364d36c3
...
...
@@ -479,7 +479,7 @@
\section
{
无监督机器翻译
}
\label
{
sec:unsupervised-nmt
}
\parinterval
低资源机器翻译的一种极端情况是:没有任何可以用于模型训练的双语平行数据。一种思路是借用多语言翻译方面的技术(见
\ref
{
multilingual-translation-model
}
节),利用基于枢轴语言或者零资源的方法构建翻译系统。但是,这类方法仍然需要多个语种的平行数据。对于某一个语言对,在只有源语言和目标语言单语数据的前提下,
是否仍然可以训练一个有效的
翻译模型呢?这里称这种不需要双语数据的机器翻译方法为
{
\small\bfnew
{
无监督机器翻译
}}
\index
{
无监督机器翻译
}
(Unsupervised Machine Translation
\index
{
Unsupervised Machine Translation
}
)。
\parinterval
低资源机器翻译的一种极端情况是:没有任何可以用于模型训练的双语平行数据。一种思路是借用多语言翻译方面的技术(见
\ref
{
multilingual-translation-model
}
节),利用基于枢轴语言或者零资源的方法构建翻译系统。但是,这类方法仍然需要多个语种的平行数据。对于某一个语言对,在只有源语言和目标语言单语数据的前提下,
能否训练一个
翻译模型呢?这里称这种不需要双语数据的机器翻译方法为
{
\small\bfnew
{
无监督机器翻译
}}
\index
{
无监督机器翻译
}
(Unsupervised Machine Translation
\index
{
Unsupervised Machine Translation
}
)。
\parinterval
直接进行无监督机器翻译是很困难的。一个简单可行的思路是把问题进行分解,然后分别解决各个子问题,最后形成完整的解决方案。放到无监督机器翻译里面,可以首先使用无监督方法寻找词与词之间的翻译,然后在此基础上,进一步得到句子到句子的翻译模型。这种“由小到大”的建模思路十分类似于统计机器翻译中的方法(见
\chapterseven
)。
...
...
@@ -490,7 +490,7 @@
\subsection
{
无监督词典归纳
}
\label
{
unsupervised-dictionary-induction
}
\parinterval
{
\small\bfnew
{
词典归纳
}}
\index
{
词典归纳
}
(Bilingual Dictionary Induction,BDI
\index
{
Bilingual Dictionary Induction
}
)可用于处理
语种间单词级别翻译的任务。在统计机器翻译中,词典归纳是一项核心的任务,它从双语平行语料中发掘互为翻译的单词,是翻译知识的主要来源
\upcite
{
黄书剑0统计机器翻译中的词对齐研究
}
。在端到端神经机器翻译中,词典归纳通常被用到无监督机器翻译、多语言机器翻译等任务中。在神经机器翻译中,单词通过实数向量来表示,即词嵌入。所有单词分布在一个多维空间中,而且研究人员发现:词嵌入空间在各种
语言中显示出类似的结构,这使得直接利用词嵌入来构建双语词典成为可能
\upcite
{
DBLP:journals/corr/MikolovLS13
}
。其基本想法是先将来自不同语言的词嵌入投影到共享嵌入空间中,然后在这个共享空间中归纳出双语词典,原理如图
\ref
{
fig:16-16
}
所示。较早的尝试是使用一个包含数千词对的种子词典作为锚点来学习从源语言到目标语词言嵌入空间的线性映射,将两个语言的单词投影到共享的嵌入空间之后,执行一些对齐算法即可得到双语词典
\upcite
{
DBLP:journals/corr/MikolovLS13
}
。最近的研究表明,词典归纳可以在更弱的监督信号下完成,这些监督信号来自更小的种子词典
\upcite
{
DBLP:conf/acl/VulicK16
}
、 相同的字符串
\upcite
{
DBLP:conf/iclr/SmithTHH17
}
,甚至仅仅是共享的数字
\upcite
{
DBLP:conf/acl/ArtetxeLA17
}
。
\parinterval
{
\small\bfnew
{
词典归纳
}}
\index
{
词典归纳
}
(Bilingual Dictionary Induction,BDI
\index
{
Bilingual Dictionary Induction
}
)可用于处理
不同语言间单词级别的翻译任务。在统计机器翻译中,词典归纳是一项核心的任务,它从双语平行语料中发掘互为翻译的单词,是翻译知识的主要来源
\upcite
{
黄书剑0统计机器翻译中的词对齐研究
}
。在神经机器翻译中,词典归纳通常被用在无监督机器翻译、多语言机器翻译等任务中。这里,单词通过实数向量进行表示,即词嵌入。所有单词分布在一个多维空间中,而且研究人员发现:词嵌入空间在一些
语言中显示出类似的结构,这使得直接利用词嵌入来构建双语词典成为可能
\upcite
{
DBLP:journals/corr/MikolovLS13
}
。其基本想法是先将来自不同语言的词嵌入投影到共享嵌入空间中,然后在这个共享空间中归纳出双语词典,原理如图
\ref
{
fig:16-16
}
所示。较早的尝试是使用一个包含数千词对的种子词典作为锚点来学习从源语言到目标语词言嵌入空间的线性映射,将两个语言的单词投影到共享的嵌入空间之后,执行一些对齐算法即可得到双语词典
\upcite
{
DBLP:journals/corr/MikolovLS13
}
。最近的研究表明,词典归纳可以在更弱的监督信号下完成,这些监督信号来自更小的种子词典
\upcite
{
DBLP:conf/acl/VulicK16
}
、 相同的字符串
\upcite
{
DBLP:conf/iclr/SmithTHH17
}
,甚至仅仅是共享的数字
\upcite
{
DBLP:conf/acl/ArtetxeLA17
}
。
%----------------------------------------------
\begin{figure}
[h]
\centering
...
...
@@ -523,9 +523,9 @@
\vspace
{
0.5em
}
\item
对于图
\ref
{
fig:16-17
}
(a)中的分布在不同空间中的两个单语词嵌入
$
\mathbi
{
X
}$
和
$
\mathbi
{
Y
}$
,基于两者近似同构的假设,利用无监督匹配的方法来得到一个粗糙的线性映射
$
\mathbi
{
W
}$
,使得两个空间能大致对齐,结果如图
\ref
{
fig:16-17
}
(b)所示。
\vspace
{
0.5em
}
\item
在
此
共享空间中执行对齐算法从而归纳出一个种子词典,如图
\ref
{
fig:16-17
}
(c)所示。
\item
在
这个
共享空间中执行对齐算法从而归纳出一个种子词典,如图
\ref
{
fig:16-17
}
(c)所示。
\vspace
{
0.5em
}
\item
利用种子词典不断迭代微调进一步提高映射
$
\mathbi
{
W
}$
的性能,最终映射的效果如图
\ref
{
fig:16-17
}
(d)所示,之后即可从中推断出词典作为最后的结果。
\item
利用种子词典不断迭代微调进一步提高映射
$
\mathbi
{
W
}$
的性能,最终映射的效果如图
\ref
{
fig:16-17
}
(d)所示,之后即可从中推断出词典
,并
作为最后的结果。
\vspace
{
0.5em
}
\end{itemize}
%----------------------------------------------
...
...
@@ -537,11 +537,11 @@
\end{figure}
%----------------------------------------------
\parinterval
不同的无监督方法最大的区别主要在于第一阶段,获得初始种子词典的手段,第二阶段微调的原理都大同小异。第一阶段的主流方法主要有两大类:
\parinterval
不同的无监督方法最大的区别主要在于第一阶段,获得初始种子词典的手段,
而
第二阶段微调的原理都大同小异。第一阶段的主流方法主要有两大类:
\begin{itemize}
\vspace
{
0.5em
}
\item
基于
GAN
的方法
\upcite
{
DBLP:conf/iclr/LampleCRDJ18,DBLP:conf/acl/ZhangLLS17,DBLP:conf/emnlp/XuYOW18,DBLP:conf/naacl/MohiuddinJ19
}
。在这个方法中,通过生成器来产生映射
$
\mathbi
{
W
}$
,鉴别器负责区分随机抽样的元素
$
\mathbi
{
W
}
\mathbi
{
X
}$
和
$
\mathbi
{
Y
}$
,两者共同优化收敛后即可得到映射
$
\mathbi
{
W
}$
。
\item
基于
生成对抗网络
的方法
\upcite
{
DBLP:conf/iclr/LampleCRDJ18,DBLP:conf/acl/ZhangLLS17,DBLP:conf/emnlp/XuYOW18,DBLP:conf/naacl/MohiuddinJ19
}
。在这个方法中,通过生成器来产生映射
$
\mathbi
{
W
}$
,鉴别器负责区分随机抽样的元素
$
\mathbi
{
W
}
\mathbi
{
X
}$
和
$
\mathbi
{
Y
}$
,两者共同优化收敛后即可得到映射
$
\mathbi
{
W
}$
。
\vspace
{
0.5em
}
\item
基于Gromov-wasserstein 的方法
\upcite
{
DBLP:conf/emnlp/Alvarez-MelisJ18,DBLP:conf/lrec/GarneauGBDL20,DBLP:journals/corr/abs-1811-01124,DBLP:conf/emnlp/XuYOW18
}
。Wasserstein距离是度量空间中定义两个概率分布之间距离的函数。在这个任务中,它用来衡量不同语言中单词对之间的相似性,利用空间近似同构的信息可以定义出一些目标函数,之后通过优化该目标函数也可以得到映射
$
\mathbi
{
W
}$
。
\vspace
{
0.5em
}
...
...
@@ -549,18 +549,18 @@
\parinterval
在得到映射
$
\mathbi
{
W
}$
之后,对于
$
\mathbi
{
X
}$
中的任意一个单词
$
x
_{
i
}$
,通过
$
\mathbi
{
W
}
\mathbi
{
E
}
(
{
x
}_{
i
}
)
$
将其映射到空间
$
\mathbi
{
Y
}$
中(
$
\mathbi
{
E
}
(
{
x
}_{
i
}
)
$
表示的是单词
$
x
_{
i
}$
的词嵌入向量),然后在
$
\mathbi
{
Y
}$
中找到该点的最近邻点
$
y
_{
j
}$
,于是
$
y
_{
j
}$
就是
$
x
_{
i
}$
的翻译词,重复该过程即可归纳出种子词典
$
D
$
,第一阶段结束。事实上,由于第一阶段缺乏监督信号,得到的种子词典
$
D
$
会包含大量的噪音,因此需要进行进一步的微调。
\parinterval
微调的原理普遍基于普氏分析
\upcite
{
DBLP:journals/corr/MikolovLS13
}
。假设现在有一个种子词典
$
D
=
\left\{
x
_{
i
}
, y
_{
i
}
\right\}
$
其中
${
i
\in\{
1
, n
\}
}$
,和两个单语词嵌入
$
\mathbi
{
X
}$
和
$
\mathbi
{
Y
}$
,那么就可以将
$
D
$
作为
{
\small\bfnew
{
映射锚点
}}
\index
{
映射锚点
}
(Anchor
\index
{
Anchor
}
)学习一个转移矩阵
$
\mathbi
{
W
}$
,使得
$
\mathbi
{
W
}
\mathbi
{
X
}$
与
$
\mathbi
{
Y
}$
这两个空间尽可能相近,此外通过对
$
\mathbi
{
W
}$
施加正交约束可以显著提高性能
\upcite
{
DBLP:conf/naacl/XingWLL15
}
,于是这个优化问题就转变成了
{
\small\bfnew
{
普鲁克问题
}}
\index
{
普鲁克问题
}
(Procrustes Problem
\index
{
Procrustes Problem
}
)
\upcite
{
DBLP:conf/iclr/SmithTHH17
}
,可以通过
{
\small\bfnew
{
奇异值分解
}}
\index
{
奇异值分解
}
(Singular Value Decomposition,SVD
\index
{
Singular Value Decomposition
}
)来获得近似解:
\parinterval
微调的原理普遍基于普氏分析
\upcite
{
DBLP:journals/corr/MikolovLS13
}
。假设现在有一个种子词典
$
D
=
\left\{
x
_{
i
}
, y
_{
i
}
\right\}
$
其中
${
i
\in\{
1
, n
\}
}$
,和两个单语词嵌入
$
\mathbi
{
X
}$
和
$
\mathbi
{
Y
}$
,那么就可以将
$
D
$
作为
{
\small\bfnew
{
映射锚点
}}
\index
{
映射锚点
}
(Anchor
\index
{
Anchor
}
)学习一个转移矩阵
$
\mathbi
{
W
}$
,使得
$
\mathbi
{
W
}
\mathbi
{
X
}$
与
$
\mathbi
{
Y
}$
这两个空间尽可能相近,此外通过对
$
\mathbi
{
W
}$
施加正交约束可以显著提高性能
\upcite
{
DBLP:conf/naacl/XingWLL15
}
,于是这个优化问题就转变成了
{
\small\bfnew
{
普鲁克问题
}}
\index
{
普鲁克问题
}
(Procrustes Problem
\index
{
Procrustes Problem
}
)
\upcite
{
DBLP:conf/iclr/SmithTHH17
}
,可以通过
{
\small\bfnew
{
奇异值分解
}}
\index
{
奇异值分解
}
(Singular Value Decomposition,SVD
\index
{
Singular Value Decomposition
}
)来获得近似解
。这里用
$
\mathbi
{
X
}
'
$
和
$
\mathbi
{
Y
}
'
$
表示
$
D
$
中源语言单词和目标语言单词的词嵌入矩阵,优化
$
\mathbi
{
W
}$
的过程可以被描述为
:
\begin{eqnarray}
\
mathbi
{
W
}^{
\star
}
&
=
&
\underset
{
\mathbi
{
W
}
\in
O
_{
d
}
(
\mathbb
{
R
}
)
}{
\operatorname
{
argmin
}}
\|\mathbi
{
W
}
\mathbi
{
X
}
'-
\mathbi
{
Y
}
'
\|
_{
\mathrm
{
F
}}
\nonumber
\\
\
widehat
{
\mathbi
{
W
}
}
&
=
&
\underset
{
\mathbi
{
W
}
\in
O
_{
d
}
(
\mathbb
{
R
}
)
}{
\operatorname
{
argmin
}}
\|\mathbi
{
W
}
\mathbi
{
X
}
'-
\mathbi
{
Y
}
'
\|
_{
\mathrm
{
F
}}
\nonumber
\\
&
=
&
\mathbi
{
U
}
\mathbi
{
V
}^{
\rm
{
T
}}
\\
\label
{
eq:16-9
}
\textrm
{
s.t.
\ \ \ \
}
\mathbi
{
U
}
\Sigma
\mathbi
{
V
}^{
\rm
{
T
}}
&
=
&
\operatorname
{
SVD
}
\left
(
\mathbi
{
Y
}
'
\mathbi
{
X
}
'
^{
\rm
{
T
}}
\right
)
\label
{
eq:16-10
}
\end{eqnarray}
\noindent
其中,
$
\|\cdot\|
_{
\mathrm
{
F
}}$
表示矩阵的Frobenius范数,即矩阵元素绝对值的平方和再开方,
$
d
$
是词嵌入的维度,
$
\mathbb
{
R
}$
是实数,
$
O
_
d
(
\mathbb
{
R
}
)
$
表示
$
d
\times
d
$
的实数空间,
$
\operatorname
{
SVD
}
(
\cdot
)
$
表示奇异值分解,
$
\mathbi
{
Y
}
'
$
和
$
\mathbi
{
X
}
'
$
中的单词来自
$
D
$
且行对齐
。利用上式可以获得新的
$
\mathbi
{
W
}$
,通过
$
\mathbi
{
W
}$
可以归纳出新的
$
D
$
,如此迭代进行微调最后即可以得到收敛的
$
D
$
。
\noindent
其中,
$
\|\cdot\|
_{
\mathrm
{
F
}}$
表示矩阵的Frobenius范数,即矩阵元素绝对值的平方和再开方,
$
d
$
是词嵌入的维度,
$
O
_
d
(
\mathbb
{
R
}
)
$
表示
$
d
\times
d
$
的实数空间,
$
\operatorname
{
SVD
}
(
\cdot
)
$
表示奇异值分解
。利用上式可以获得新的
$
\mathbi
{
W
}$
,通过
$
\mathbi
{
W
}$
可以归纳出新的
$
D
$
,如此迭代进行微调最后即可以得到收敛的
$
D
$
。
\parinterval
较早的无监督方法是基于
GAN的方法
\upcite
{
DBLP:conf/acl/ZhangLLS17,DBLP:conf/emnlp/ZhangLLS17,DBLP:conf/iclr/LampleCRDJ18
}
,这是一个很自然的想法,利用生成器产生映射然后用判别器来区别两个空间。然而研究表明GAN缺乏稳定性,容易在低资源语言对上失败
\upcite
{
hartmann2018empirical
}
,因此有不少改进的工作,比如:利用
{
\small\bfnew
{
变分自编码器
}}
\index
{
变分自编码器
}
(Variational Autoencoders,VAEs)
\index
{
Variational Autoencoders
}
来捕获更深层次的语义信息并结合对抗训练的方法
\upcite
{
DBLP:conf/emnlp/DouZH18,DBLP:conf/naacl/MohiuddinJ19
}
;通过改进最近邻点的度量函数来提升性能的方法
\upcite
{
DBLP:conf/acl/HuangQC19,DBLP:conf/emnlp/JoulinBMJG18
}
;利用多语言信号来提升性能的方法
\upcite
{
DBLP:conf/emnlp/ChenC18,DBLP:conf/emnlp/TaitelbaumCG19,DBLP:journals/corr/abs-1811-01124,DBLP:conf/naacl/HeymanVVM19
}
;也有一些工作舍弃GAN
,通过直接优化空间距离来进行单词的匹配
\upcite
{
DBLP:conf/emnlp/HoshenW18,DBLP:conf/emnlp/XuYOW18,DBLP:conf/emnlp/Alvarez-MelisJ18,DBLP:conf/emnlp/MukherjeeYH18
}
。
\parinterval
较早的无监督方法是基于
生成对抗网络的方法
\upcite
{
DBLP:conf/acl/ZhangLLS17,DBLP:conf/emnlp/ZhangLLS17,DBLP:conf/iclr/LampleCRDJ18
}
,这是一个很自然的想法,利用生成器产生单词间的映射,然后用判别器来区别两个空间。然而研究表明生成对抗网络缺乏稳定性,容易在低资源语言对上失败
\upcite
{
hartmann2018empirical
}
,因此有不少改进的工作,比如:利用
{
\small\bfnew
{
变分自编码器
}}
\index
{
变分自编码器
}
(Variational Autoencoders,VAEs)
\index
{
Variational Autoencoders
}
来捕获更深层次的语义信息并结合对抗训练的方法
\upcite
{
DBLP:conf/emnlp/DouZH18,DBLP:conf/naacl/MohiuddinJ19
}
;通过改进最近邻点的度量函数来提升性能的方法
\upcite
{
DBLP:conf/acl/HuangQC19,DBLP:conf/emnlp/JoulinBMJG18
}
;利用多语言信号来提升性能的方法
\upcite
{
DBLP:conf/emnlp/ChenC18,DBLP:conf/emnlp/TaitelbaumCG19,DBLP:journals/corr/abs-1811-01124,DBLP:conf/naacl/HeymanVVM19
}
;也有一些工作舍弃生成对抗网络
,通过直接优化空间距离来进行单词的匹配
\upcite
{
DBLP:conf/emnlp/HoshenW18,DBLP:conf/emnlp/XuYOW18,DBLP:conf/emnlp/Alvarez-MelisJ18,DBLP:conf/emnlp/MukherjeeYH18
}
。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
...
...
@@ -589,18 +589,18 @@
\subsection
{
无监督统计机器翻译
}
\parinterval
在无监督词典归纳的基础上,可以进一步得到句子间的翻译,实现无监督机器翻译
\upcite
{
DBLP:journals/talip/MarieF20
}
。统计机器翻译作为机器翻译的主流方法,对其进行无监督学习可以帮助构建初始的无监督机器翻译系统,从而进一步帮助训练更为先进的无监督神经机器翻译系统。以基于短语的统计机器翻译为例,系统主要包含短语表、语言模型、调序模型以及权重调优等模块(见
{
\chapterseven
}
)。其中短语表和模型调优需要双语数据,而语言模型和调序模型只依赖于单语数据。因此,如果可以通过无监督的方法完成短语表和权重调优,那么就得到了无监督统计机器翻译系统
\upcite
{
DBLP:conf/emnlp/ArtetxeLA18
}
。
\parinterval
在无监督词典归纳的基础上,可以进一步得到句子间的翻译,实现无监督机器翻译
\upcite
{
DBLP:journals/talip/MarieF20
}
。统计机器翻译作为机器翻译的主流方法,对其进行无监督学习可以帮助构建初始的无监督机器翻译系统,从而进一步帮助训练更为先进的无监督神经机器翻译系统。以基于短语的统计机器翻译为例,系统主要包含短语表、语言模型、调序模型以及权重调优等模块(见
{
\chapterseven
}
)。其中短语表和模型调优需要双语数据,而语言模型和
(基于距离的)
调序模型只依赖于单语数据。因此,如果可以通过无监督的方法完成短语表和权重调优,那么就得到了无监督统计机器翻译系统
\upcite
{
DBLP:conf/emnlp/ArtetxeLA18
}
。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection
{
1. 无监督短语归纳
}
\parinterval
回顾统计机器翻译中的短语表,它类似于一个词典,对一个源语言短语给出相应的
短语翻译
\upcite
{
DBLP:conf/ki/ZensON02
}
。只不过词典的基本单元是词,而短语表的基本单元是短语(或
$
n
$
-gram)。此外短语表还提供短语翻译的得分。既然短语表跟词典如此相似,那么很容易就可以把无监督词典归纳的方法移植到处理
短语上,也就是把里面的词替换成短语,就可以无监督地得到短语表。
\parinterval
回顾统计机器翻译中的短语表,它类似于一个词典,对一个源语言短语给出相应的
译文
\upcite
{
DBLP:conf/ki/ZensON02
}
。只不过词典的基本单元是词,而短语表的基本单元是短语(或
$
n
$
-gram)。此外短语表还提供短语翻译的得分。既然短语表跟词典如此相似,那么很容易就可以把无监督词典归纳的方法移植到
短语上,也就是把里面的词替换成短语,就可以无监督地得到短语表。
\parinterval
如
\ref
{
unsupervised-dictionary-induction
}
节所述,无监督词典归纳的方法依赖于词的分布式表示,也就是词嵌入。因此当把无监督词典归纳拓展到短语上时,首先需要获得短语的分布式表示。比较简单的方法是把词换成短语,然后借助与无监督词典归纳相同的算法得到短语的分布式表示。最后直接应用无监督词典归纳方法,得到源语言短语与目标语言短语之间的对应。
\parinterval
尽管已经得到了短语的翻译,短语表的另外一个重要的组成部分,也就是短语对的得分(概率)无法由词典归纳方法直接给出,而这些得分在统计机器翻译模型中非常重要。在无监督词典归纳中,在推断词典的时候会为一对源语言单词和目标语言单词打分(词嵌入之间的相似度),再根据打分来决定哪一个目标语言单词更有可能是当前源语言单词的翻译。在无监督短语归纳中,这样一个打分已经提供了对短语对质量的度量,因此经过适当的归一化处理后就可以得到短语对
的得分。
\parinterval
在得到了短语翻译的基础上,需要确定短语翻译的得分。在无监督词典归纳中,在推断词典的时候会为一对源语言单词和目标语言单词打分(词嵌入之间的相似度),再根据打分来决定哪一个目标语言单词更有可能是当前源语言单词的翻译。在无监督短语归纳中,这样一个打分已经提供了对短语对质量的度量,因此经过适当的归一化处理后就可以得到短语翻译
的得分。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
...
...
@@ -619,21 +619,21 @@
\subsection
{
无监督神经机器翻译
}
\label
{
unsupervised-NMT
}
\parinterval
既然神经机器翻译已经在很多任务上优于统计机器翻译,为什么不直接做无监督神经机器翻译呢?实际上,由于神经网络的黑盒特性使其无法像统计机器翻译那样
对其
进行拆解,并定位问题。因此需要借用其它无监督翻译系统来训练神经机器翻译模型。
\parinterval
既然神经机器翻译已经在很多任务上优于统计机器翻译,为什么不直接做无监督神经机器翻译呢?实际上,由于神经网络的黑盒特性使其无法像统计机器翻译那样进行拆解,并定位问题。因此需要借用其它无监督翻译系统来训练神经机器翻译模型。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection
{
1. 基于无监督统计机器翻译的方法
}
\parinterval
一个简单的方法是,借助已经成功的无监督方法来为神经机器翻译模型提供少量双语监督信号。初始的监督信号可能很少或者包含大量噪声,因此需要逐步优化数据来重新训练出更好的模型。这也是目前绝大多数无监督神经机器翻译方法的核心思路。这个方案最简单最
直接的实现就是借助已经成功的无监督统计机器翻译模型产生伪双语数据来训练神经机器翻译模型 ,然后模型
进行迭代回译来进行数据优化
\upcite
{
DBLP:conf/acl/ArtetxeLA19
}
。这个方法的优点是直观,并且性能稳定,容易调试(所有模块都互相独立)。缺点是复杂繁琐,涉及许多超参数调整工作,而且训练代价较大。
\parinterval
一个简单的方法是,借助已经成功的无监督方法来为神经机器翻译模型提供少量双语监督信号。初始的监督信号可能很少或者包含大量噪声,因此需要逐步优化数据来重新训练出更好的模型。这也是目前绝大多数无监督神经机器翻译方法的核心思路。这个方案最简单最
实现就是借助已经构建的无监督统计机器翻译模型,用它产生伪双语数据来训练神经机器翻译模型 ,然后
进行迭代回译来进行数据优化
\upcite
{
DBLP:conf/acl/ArtetxeLA19
}
。这个方法的优点是直观,并且性能稳定,容易调试(所有模块都互相独立)。缺点是复杂繁琐,涉及许多超参数调整工作,而且训练代价较大。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection
{
2. 基于无监督词典归纳的方法
}
\parinterval
既然无监督神经机器翻译问题的核心在于通过无监督方法提供初始的监督信号,另一个思路就
是直接从无监督词典归纳中得到神经机器翻译模型,从而避免繁琐的无监督统计机器翻译模型的训练,同时也避免神经机器翻译模型继承统计机器翻译模型的错误。这种方法的核心就是把翻译看成一个两阶段的过程:
\parinterval
另一个思路
是直接从无监督词典归纳中得到神经机器翻译模型,从而避免繁琐的无监督统计机器翻译模型的训练,同时也避免神经机器翻译模型继承统计机器翻译模型的错误。这种方法的核心就是把翻译看成一个两阶段的过程:
\begin{itemize}
\vspace
{
0.5em
}
...
...
@@ -643,19 +643,21 @@
\vspace
{
0.5em
}
\end{itemize}
\parinterval
而第二阶段的改写任务其实也是一个特殊的翻译任务,只不过现在的源语言和目标语言是使用不同的方式表达的同一种语言的句子。因此可以使用神经机器翻译模型来完成这个任务,而且由于这里不涉及双语数据而只需要单语数据,模型的训练也将是无监督的。这样的方法不再需要无监督统计机器翻译,并且适应能力很强。对于新语种,不需要重新训练神经机器翻译模型,只需要训练无监督词典归纳进行词的翻译,再使用相同的模型进行改写。但是,目前训练数据需要使用其他语种的双语数据来进行构造(把源语言句子里每个词使用双语词典进行翻译作为输入,输出的目标语言句子不变)。虽然可以通过把单语句子根据规则或者随机进行打乱来生成训练数据,但是这些句子不符合语言学的规律,并且跟真实句子所服从的数据分布不一致,导致训练-测试不一致的问题。而且这样一个两阶段的过程会产生错误传播的问题,比如无监督词典归纳对一些词进行了错误的翻译,那么这些错误的翻译会被送到神经机器翻译模型里进行改写,因为翻译模型这时候已经无法看到源语言句子来进行修正,所以最终的结果将继承无监督词典归纳的错误
\upcite
{
DBLP:conf/acl/PourdamghaniAGK19
}
。
\parinterval
而第二阶段的改写任务其实也是一个特殊的翻译任务,只不过现在的源语言和目标语言是使用不同的方式表达的同一种语言的句子。因此可以使用神经机器翻译模型来完成这个任务,而且由于这里不涉及双语数据而只需要单语数据,模型的训练也将是无监督的。这样的方法不再需要无监督统计机器翻译,并且适应能力很强。对于新语种,不需要重新训练神经机器翻译模型,只需要训练无监督词典归纳进行词的翻译,再使用相同的模型进行改写。
\parinterval
但是,目前训练数据需要使用其他语种的双语数据来进行构造(把源语言句子里每个词使用双语词典进行翻译作为输入,输出的目标语言句子不变)。虽然可以通过把单语句子根据规则或者随机进行打乱来生成训练数据,但是这些句子与真实的句子差异较大,导致训练-测试不一致的问题。而且这样一个两阶段的过程会产生错误传播的问题,比如无监督词典归纳对一些词进行了错误的翻译,那么这些错误的翻译会被送下一阶段进行改写,因为翻译模型这时候已经无法看到源语言句子来进行修正,所以最终的结果将继承无监督词典归纳的错误
\upcite
{
DBLP:conf/acl/PourdamghaniAGK19
}
。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection
{
3. 更深层的融合
}
\parinterval
为了获得更好的神经机器翻译模型,可以对训练流程和模型做更深度的整合。
{
\chapterten
}
已经介绍,神经机器翻译模型的训练包含两个阶段:初始化和优化。而无监督神经机器翻译的核心思路也对应这两个阶段
:无监督方法提供初始的监督信号和数据优化,因此可以考虑在模型的初始化阶段使用无监督方法提供初始的监督信号,然后优化过程不但优化模型的参数,还优化训练使用的数据,从而避免流水线带来的错误传播。其中初始的监督信号可以通过两种方法提供给模型,一种是直接使用无监督方法提供最初的伪双语数据来训练最初的翻译模型,另一种则是借助无监督方法来初始化模型,得到最初的翻译模型后直接使用初始化好的翻译模型产生伪双语数据来训练自己,如图
\ref
{
fig:16-18
}
所示。图
\ref
{
fig:16-18
}
(a)的一个简单实现是利用无监督词典归纳得到的
词典对单语数据进行逐词的翻译,得到最初的伪双语数据,再在这些数据上训练最初的翻译模型,最后不断地交替优化数据和模型,得到更好的翻译模型和质量更好的伪数据
\upcite
{
DBLP:conf/iclr/LampleCDR18
}
。这样的做法通过不断优化训练用的双语数据,摆脱了无监督词典归纳在最初的伪双语数据中遗留下来的错误,同时也避免了使用无监督统计机器翻译模型的代价。图
\ref
{
fig:16-18
}
(b)的实现则依赖于具体的翻译模型初始化方法,下一节会讨论翻译模型的不同初始化方法。
\parinterval
为了获得更好的神经机器翻译模型,可以对训练流程和模型做更深度的整合。
{
\chapterten
}
已经介绍,神经机器翻译模型的训练包含两个阶段:初始化和优化。而无监督神经机器翻译的核心思路也对应这两个阶段
,因此可以考虑在模型的初始化阶段使用无监督方法提供初始的监督信号,然后不但优化模型的参数,还优化训练使用的数据,从而避免流水线带来的错误传播。其中初始的监督信号可以通过两种方法提供给模型。一种是直接使用无监督方法提供最初的伪双语数据,然后训练最初的翻译模型。另一种则是借助无监督方法来初始化模型,得到最初的翻译模型后,直接使用初始化好的翻译模型产生伪双语数据,然后训练自己,如图
\ref
{
fig:16-18
}
所示。图
\ref
{
fig:16-18
}
(a)的一个简单实现是利用无监督词典归纳得到词典,用这个
词典对单语数据进行逐词的翻译,得到最初的伪双语数据,再在这些数据上训练最初的翻译模型,最后不断地交替优化数据和模型,得到更好的翻译模型和质量更好的伪数据
\upcite
{
DBLP:conf/iclr/LampleCDR18
}
。这样的做法通过不断优化训练用的双语数据,摆脱了无监督词典归纳在最初的伪双语数据中遗留下来的错误,同时也避免了使用无监督统计机器翻译模型的代价。图
\ref
{
fig:16-18
}
(b)的实现则依赖于具体的翻译模型初始化方法,下一节会讨论翻译模型的不同初始化方法。
%----------------------------------------------
\begin{figure}
[h]
\centering
\input
{
Chapter16/Figures/figure-optimization-of-the-model-initialization-method
}
\caption
{
模型参数初始化
方法的优化
}
\caption
{
模型参数初始化
策略
}
\label
{
fig:16-18
}
\end{figure}
%----------------------------------------------
...
...
@@ -665,17 +667,17 @@
%----------------------------------------------------------------------------------------
\subsubsection
{
4. 其它问题
}
\parinterval
实际上无监督神经机器翻译模型的训练并不简单。一般可以认为,在生成的伪数据上优化模型会使模型变得更好,这时候对这个更好的模型使用数据增强的手段(如回译等)就可以生成更好的训练数据。这样的一个数据优化过程依赖于一个假设:模型经过参数优化后会生成比原始数据更好的数据。而在数据优化和参数优化的共同影响下,模型非常容易拟合数据中的简单模式,使得在数据优化过程中模型倾向产生包含这种简单模式的数据,造成模型对这种类型数据过拟合的现象。一个常见的问题就是模型对任何输入都输出相同的译文,这时候翻译模型无法产生任何有意义的结果,而它的训练过程则退化成普通的语言模型(数据优化产生的数据里无论什么目标语言对应的源语言都是同一个句子)。这种情况下翻译模型虽然能降低损失(训练语言模型)
,但是它不能学会任何源语言跟目标语言之间的对应关系,也就无法进行正确翻译。这个现象也反映出无监督机器翻译训练的脆弱性。
\parinterval
一般可以认为,在生成的伪数据上优化模型会使模型变得更好,这时候对这个更好的模型使用数据增强的手段(如回译等)就可以生成更好的训练数据。这样的一个数据优化过程依赖于一个假设:模型经过优化后会生成比原始数据更好的数据。而在数据优化和参数优化的共同影响下,模型非常容易拟合数据中的简单模式,使得模型倾向产生包含这种简单模式的数据,造成模型对这种类型数据过拟合的现象。一个常见的问题就是模型对任何输入都输出相同的译文,这时候翻译模型无法产生任何有意义的结果,也就是,数据优化产生的数据里无论什么目标语言对应的源语言都是同一个句子。这种情况下翻译模型虽然能降低损失
,但是它不能学会任何源语言跟目标语言之间的对应关系,也就无法进行正确翻译。这个现象也反映出无监督机器翻译训练的脆弱性。
\parinterval
比较常见的解决方案是在双语数据对应的目标函数外增加一个语言模型的目标函数。因为,在初始阶段,由于数据中存在大量不通顺的句子,额外的语言模型目标函数能把部分句子纠正过来,使得模型逐渐生成更好的数据
\upcite
{
DBLP:conf/emnlp/LampleOCDR18
}
。这个方法在实际应用中非常有效,尽管目前还没有太多理论上的支持。
\parinterval
无监督神经机器翻译还有两个关键的技巧:
\begin{itemize}
\vspace
{
0.5em
}
\item
词表共享:对于源语言和目标语言里都一样的词使用同一个词嵌入,而不是源语言和目标语言各自对应一个词嵌入,比如,阿拉伯数字或者一些实体名字。这样相当于
在模型设计上
告诉模型这个词在源语言和目标语言里面表达同一个意思,隐式地引入了单词翻译的监督信号。在无监督神经机器翻译里词表共享搭配子词切分会更加有效,因为子词的覆盖范围广,比如,多个不同的词可以包含同一个子词。
\item
词表共享:对于源语言和目标语言里都一样的词使用同一个词嵌入,而不是源语言和目标语言各自对应一个词嵌入,比如,阿拉伯数字或者一些实体名字。这样相当于告诉模型这个词在源语言和目标语言里面表达同一个意思,隐式地引入了单词翻译的监督信号。在无监督神经机器翻译里词表共享搭配子词切分会更加有效,因为子词的覆盖范围广,比如,多个不同的词可以包含同一个子词。
\vspace
{
0.5em
}
\item
模型共享:与多语言翻译系统类似,使用同一个翻译模型来进行正向翻译(源语言
$
\to
$
目标语言)和反向翻译(目标语言
$
\to
$
源语言)。这样做降低了模型的参数量
,减少
了过拟合的风险。
\item
模型共享:与多语言翻译系统类似,使用同一个翻译模型来进行正向翻译(源语言
$
\to
$
目标语言)和反向翻译(目标语言
$
\to
$
源语言)。这样做降低了模型的参数量
。而且,两个翻译方向可以互相为对方起到正则化的作用,减小
了过拟合的风险。
\vspace
{
0.5em
}
\end{itemize}
...
...
@@ -691,7 +693,7 @@
\noindent
{
\small\bfnew
{
1)模型参数初始化
}}
\parinterval
无监督神经机器翻译的关键在于如何提供最开始的监督信号,从而启动后续的迭代流程。无监督词典归纳已经可以提供一些可靠的监督信号,那么如何在模型初始化中融入这些信息?既然神经机器翻译模型都使用词嵌入
层作为输入,而无监督词典归纳总是先把两个语言各自的单语词嵌入映射到一个空间后才归纳双语词典,那么可以使用这些映射后的词嵌入来初始化模型的词嵌入层,然后在这个基础上训练模型,因为这些映射后的词嵌入天然就包含了大量的监督信号,
比如,两个语言里意思相近的词对应的词嵌入会比其他词更靠近对方
\upcite
{
DBLP:journals/ipm/FarhanTAJATT20
}
。 为了防止机器翻译训练过程中模型参数的更新会破坏词嵌入中蕴含的信息,通常初始化后会固定模型的词嵌入层不让其更新
\upcite
{
DBLP:conf/emnlp/ArtetxeLA18
}
。
\parinterval
无监督神经机器翻译的关键在于如何提供最开始的监督信号,从而启动后续的迭代流程。无监督词典归纳已经可以提供一些可靠的监督信号,那么如何在模型初始化中融入这些信息?既然神经机器翻译模型都使用词嵌入
作为输入,而且无监督词典归纳也是基于两种语言共享的词嵌入空间,那么可以使用共享词嵌入空间的词嵌入结果来初始化模型的词嵌入层,然后在这个基础上训练模型。
比如,两个语言里意思相近的词对应的词嵌入会比其他词更靠近对方
\upcite
{
DBLP:journals/ipm/FarhanTAJATT20
}
。 为了防止机器翻译训练过程中模型参数的更新会破坏词嵌入中蕴含的信息,通常初始化后会固定模型的词嵌入层不让其更新
\upcite
{
DBLP:conf/emnlp/ArtetxeLA18
}
。
\parinterval
进一步,无监督神经机器翻译能在提供更少监督信号的情况下启动,也就是可以去除无监督词典归纳这一步骤
\upcite
{
DBLP:conf/nips/ConneauL19
}
。这时候模型的初始化直接使用共享词表的预训练模型的参数作为起始点。这个预训练模型直接使用前面提到的预训练方法(如MASS)进行训练,区别在于模型的结构需要严格匹配翻译模型。此外,这个模型不仅仅只在一个语言的单语数据上进行训练,而是同时在两个语言的单语数据上进行训练,并且两个语言的词表进行共享。前面提到,在共享词表特别是共享子词词表的情况下,已经隐式地告诉模型源语言和目标语言里一样的(子)词互为翻译,相当于模型使用了少量的监督信号。在这基础上使用两个语言的单语数据进行预训练,通过模型共享进一步挖掘了语言之间共通的部分。因此,使用预训练模型进行初始化后,无监督神经机器翻译模型已经得到大量的监督信号,从而得以不断通过优化来提升模型性能。
...
...
@@ -699,11 +701,11 @@
\parinterval
无监督神经机器翻译的一个重要部分就是来自语言模型的目标函数。因为翻译模型本质上是在完成文本生成任务,所以只有文本生成类型的语言模型建模方法才可以应用到无监督神经机器翻译里。比如,给定前文预测下一词就是一个典型的自回归生成任务(见
{
\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
}$
的任务,并且在输入中注入噪声会让模型更加健壮,因此模型可以通过训练集数据学会如何利用句子中噪声以外的信息来屏蔽其中噪声并
得到正确的输出。通常来说,噪声函数有三种形式,如表
\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
}$
的任务,很难学到有价值的信息。并且在输入中注入噪声会让模型更加健壮,因此模型可以学会如何利用句子中噪声以外的信息来
得到正确的输出。通常来说,噪声函数有三种形式,如表
\ref
{
tab:16-1
}
所示。
%----------------------------------------------
\begin{table}
[h]
\centering
\caption
{
三种噪声
函数
(原句为``我
\
喜欢
\
吃
\
苹果
\
。'')
}
\caption
{
三种噪声
加噪方式示例
(原句为``我
\
喜欢
\
吃
\
苹果
\
。'')
}
\begin{tabular}
{
l|l|l
}
\multicolumn
{
1
}{
c|
}{
噪声函数
}
&
\multicolumn
{
1
}{
c|
}{
描述
}
&
\multicolumn
{
1
}{
c
}{
例子
}
\\
\hline
...
...
@@ -715,7 +717,7 @@
\end{table}
%----------------------------------------------
\parinterval
实际应用中以上三种形式的噪声函数都会被使用到,其中在交换方法中距离越
相近的词越容易被交换,并且保证被交换的词的对数有限,而删除和空白方法里词的删除和替换概率通常都会设置的非常低,如
$
0
.
1
$
等。
\parinterval
实际应用中以上三种形式的噪声函数都会被使用到,其中在交换方法中距离越
近的词越容易被交换,并且要保证交换次数有上限,而删除和空白方法里词的删除和替换概率通常都非常低,如
$
0
.
1
$
等。
%----------------------------------------------------------------------------------------
% NEW SECTION 16.5
...
...
@@ -745,7 +747,7 @@
\parinterval
在机器翻译任务中,新闻等领域的双语数据相对容易获取,所以机器翻译在这些领域上表现较佳。然而,即使在富资源语种上,化学、医学等专业领域的双语数据依然十分有限。如果直接使用这些低资源领域的数据来训练机器翻译模型,由于数据稀缺问题,会导致模型的性能较差
\upcite
{
DBLP:conf/iccv/SunSSG17
}
。如果混合多个领域的数据增大训练数据规模,不同领域数据量之间的不平衡会导致数据较少的领域训练不充分,使得在低资源领域上的翻译结果不尽人意
\upcite
{
DBLP:conf/acl/DuhNST13
}
。
\parinterval
{
\small\bfnew
{
领域适应
}}
(Domain Adaptation)方法是利用源领域的知识来改进目标领域模型效果的方法,该方法可以有效地减少模型对目标领域数据的依赖。领域适应的研究方向主要有以下两点
:
\parinterval
领域适应方法是利用源领域的知识来改进目标领域模型效果的方法,该方法可以有效地减少模型对目标领域数据的依赖。领域适应主要有两类方法
:
\begin{itemize}
\vspace
{
0.5em
}
...
...
@@ -762,7 +764,7 @@
\label
{
sec:domain-adaptatoin-data-based-method
}
\parinterval
在统计机器翻译时代,如何有效利用外部数据来改善目标领域的翻译效果已经备受关注
。其中的绝大多数
思想和方法和翻译模型无关,因此这些方法也同样适用于神经机器翻译。基于数据的领域适应可以分为基于数据加权的方法、基于数据选择的方法、基于伪数据的方法和使用多领域数据
。图
\ref
{
fig:16-20
}
展示了这几种方法的示意图。
。其中的绝大多数
方法与翻译模型无关,因此这些方法也同样适用于神经机器翻译。基于数据的领域适应可以分为基于数据加权的方法、基于数据选择的方法、基于伪数据的方法
。图
\ref
{
fig:16-20
}
展示了这几种方法的示意图。
%----------------------------------------------
\begin{figure}
[h]
...
...
@@ -778,9 +780,7 @@
%----------------------------------------------------------------------------------------
\subsubsection
{
1. 基于数据加权/数据选择的方法
}
\parinterval
在真实场景中,由于每个领域的数据量有限,同时领域数量较多,针对每个领域单独训练一个机器翻译模型是不现实的。所以,通常的策略是混合多领域的数据,来训练一个能够支持多领域翻译的机器翻译模型。虽然混合多个领域的数据可以有效增加训练数据规模,但正如前面所说,由于各个领域训练数据量之间的不平衡,在训练数据过少的领域上,模型表现往往差强人意。一种观点认为,数据量较少的领域数据应该在训练过程中获得更大的权重,从而使这些更有价值的数据发挥出更大的作用
\upcite
{
DBLP:conf/emnlp/MatsoukasRZ09,DBLP:conf/emnlp/FosterGK10
}
。
\parinterval
实际上,基于数据加权的方法与
{
\chapterthirteen
}
中基于样本价值的学习方法是一致的,只是描述的场景略有不同。这类方法本质上在解决
{
\small\bfnew
{
类别不均衡问题
}}
\index
{
类别不均衡问题
}
(Class Imbalance Problem
\index
{
Class Imbalance Problem
}
)
\upcite
{
DBLP:conf/emnlp/ZhuH07
}
。数据加权可以通过修改损失函数,将其缩放
$
\alpha
$
倍来实现(
$
\alpha
$
是样本的权重)。在具体实践中,也可以直接将低资源的领域数据进行复制
\footnote
{
相当于对数据进行重采样
}
达到与其相同的效果
\upcite
{
DBLP:conf/wmt/ShahBS10
}
。
\parinterval
一种观点认为,数据量较少的领域数据应该在训练过程中获得更大的权重,从而使这些更有价值的数据发挥出更大的作用
\upcite
{
DBLP:conf/emnlp/MatsoukasRZ09,DBLP:conf/emnlp/FosterGK10
}
。实际上,基于数据加权的方法与
{
\chapterthirteen
}
中基于样本价值的学习方法是一致的,只是描述的场景略有不同。这类方法本质上在解决
{
\small\bfnew
{
类别不均衡问题
}}
\index
{
类别不均衡问题
}
(Class Imbalance Problem
\index
{
Class Imbalance Problem
}
)
\upcite
{
DBLP:conf/emnlp/ZhuH07
}
。数据加权可以通过修改损失函数,将其缩放
$
\alpha
$
倍来实现(
$
\alpha
$
是样本的权重)。在具体实践中,也可以直接将低资源的领域数据进行复制
\footnote
{
相当于对数据进行重采样
}
达到与其相同的效果
\upcite
{
DBLP:conf/wmt/ShahBS10
}
。
\parinterval
数据选择是数据加权的一种特殊情况,它可以被看做是样本权重非零即一的情况。具体来说,可以直接选择与领域相关的数据参与训练
\upcite
{
DBLP:conf/acl/DuhNST13
}
。由于这种方法并不需要使用全量数据进行训练,因此模型的训练成本较低。由于
{
\chapterthirteen
}
已经对数据加权和数据选择方法进行了详细介绍,这里不再赘述。
...
...
@@ -789,7 +789,7 @@
%----------------------------------------------------------------------------------------
\subsubsection
{
2. 基于伪数据的方法
}
\parinterval
数据选择方法可以从源领域中选择出和目标领域相似的
训练数据
用于训练,但可用的数据是较为有限的。因此,另外一种思路是对现有的双语数据进行修改
\upcite
{
DBLP:conf/acl/UtiyamaI03
}
(如抽取双语短语对等)或通过单语数据生成伪数据来增加数据量
\upcite
{
DBLP:conf/wmt/BertoldiF09
}
。这个问题和
\ref
{
effective-use-of-data
}
小节所面临的场景是基本一致的,因此可以直接复用
\ref
{
effective-use-of-data
}
小节所描述的方法。
\parinterval
数据选择方法可以从源领域中选择出和目标领域相似的
样本
用于训练,但可用的数据是较为有限的。因此,另外一种思路是对现有的双语数据进行修改
\upcite
{
DBLP:conf/acl/UtiyamaI03
}
(如抽取双语短语对等)或通过单语数据生成伪数据来增加数据量
\upcite
{
DBLP:conf/wmt/BertoldiF09
}
。这个问题和
\ref
{
effective-use-of-data
}
小节所面临的场景是基本一致的,因此可以直接复用
\ref
{
effective-use-of-data
}
小节所描述的方法。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
...
...
@@ -798,7 +798,7 @@
\parinterval
领域适应中的目标领域往往不止一个,想要同时提升多个目标领域的效果,一种简单的思路是使用前文所述的单领域适应方法对每一个目标领域进行领域适应。不过,与多语言翻译一样,多领域适应也往往伴随着严重的数据稀缺问题,由于大多数领域的数据量很小,因此无法保证单个领域的领域适应效果。
\parinterval
解决该问题的一种思路是将所有数据混合使用,并训练一个能够同时适应所有领域的模型。同时,为了区分不同领域的数据,可以在样本上增加领域标签
\upcite
{
DBLP:conf/acl/ChuDK17
}
。事实上,这种方法
的本质
与
\ref
{
sec:multi-lang-single-model
}
节所描述的方法是一样的。它也是一种典型的小样本学习策略,旨在让模型自己从不同类型的样本中寻找联系,进而更加充分地利用数据,改善模型在低资源任务上的表现。
\parinterval
解决该问题的一种思路是将所有数据混合使用,并训练一个能够同时适应所有领域的模型。同时,为了区分不同领域的数据,可以在样本上增加领域标签
\upcite
{
DBLP:conf/acl/ChuDK17
}
。事实上,这种方法与
\ref
{
sec:multi-lang-single-model
}
节所描述的方法是一样的。它也是一种典型的小样本学习策略,旨在让模型自己从不同类型的样本中寻找联系,进而更加充分地利用数据,改善模型在低资源任务上的表现。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
...
...
@@ -847,7 +847,7 @@
%----------------------------------------------------------------------------------------
\subsubsection
{
2. 训练阶段的领域适应
}
\parinterval
实际上,
\ref
{
sec:domain-adaptatoin-data-based-method
}
节所描述的数据加权和数据选择方法本身也
与模型训练相关的,例如,数据选择方法会降低训练数据的数据量。所以具体实现时,需要对训练策略进行调整。一种方法是在不同的训练轮次动态地改变训练数据子
集。动态数据选择既可以使得每轮的训练数据均小于全部数据量,从而加快训练进程,又可以缓解训练数据覆盖度不足的问题,具体做法有两种:
\parinterval
实际上,
\ref
{
sec:domain-adaptatoin-data-based-method
}
节所描述的数据加权和数据选择方法本身也
是与模型训练相关的,例如,数据选择方法会降低训练数据的数据量。所以在具体实现时,需要对训练策略进行调整。一种方法是在不同的训练轮次动态地改变训练数据
集。动态数据选择既可以使得每轮的训练数据均小于全部数据量,从而加快训练进程,又可以缓解训练数据覆盖度不足的问题,具体做法有两种:
%----------------------------------------------
\begin{itemize}
...
...
@@ -859,9 +859,9 @@
\end{itemize}
%----------------------------------------------
\parinterval
另一种
优化训练策略的
方法是不从随机状态开始训练网络,而是使用翻译性能较好的源领域模型作为初始状态,因为源领域模型中包含着一些通用知识可以被目标领域借鉴。比如,想获得口语的翻译模型,可以使用新闻的翻译模型作为初始状态进行训练。这也可以被看作是一种预训练-微调方法。
\parinterval
另一种方法是不从随机状态开始训练网络,而是使用翻译性能较好的源领域模型作为初始状态,因为源领域模型中包含着一些通用知识可以被目标领域借鉴。比如,想获得口语的翻译模型,可以使用新闻的翻译模型作为初始状态进行训练。这也可以被看作是一种预训练-微调方法。
\parinterval
不过这种方法经常会带来灾难性遗忘问题,即在目标领域上过拟合,导致在源领域上的翻译性能大幅度下降(见
{
\chapterthirteen
}
)。如果想要保证模型在目标领域和源领域上都有较好的性能,一个比较常用的方法是进行混合微调
\upcite
{
DBLP:conf/acl/ChuDK17
}
。具体做法是先在源领域数据上训练一个神经机器翻译模型,然后将目标领域数据复制数倍和源领域数据量相等,之后将数据混合后对神经机器翻译模型进行微调。混合微调方法既降低了目标领域数据量小导致的过拟合问题,又带来了更好的微调性能。除了混合微调外,也可以使用知识蒸馏方法缓解灾难性遗忘问题(见
\ref
{
multilingual-translation-model
}
节),即对源领域和目标领域进行多次循环知识蒸馏,迭代学习对方领域的知识,可以保证在源领域和目标领域上的翻译性能共同逐步上升
\upcite
{
DBLP:conf/emnlp/ZengLSGLYL19
}
。
过拟合导致的灾难性遗忘问题还可以使用L2正则化和Dropout方法来缓解
\upcite
{
barone2017regularization
}
。
\parinterval
不过这种方法经常会带来灾难性遗忘问题,即在目标领域上过拟合,导致在源领域上的翻译性能大幅度下降(见
{
\chapterthirteen
}
)。如果想要保证模型在目标领域和源领域上都有较好的性能,一个比较常用的方法是进行混合微调
\upcite
{
DBLP:conf/acl/ChuDK17
}
。具体做法是先在源领域数据上训练一个神经机器翻译模型,然后将目标领域数据复制数倍和源领域数据量相等,之后将数据混合后对神经机器翻译模型进行微调。混合微调方法既降低了目标领域数据量小导致的过拟合问题,又带来了更好的微调性能。除了混合微调外,也可以使用知识蒸馏方法缓解灾难性遗忘问题(见
\ref
{
multilingual-translation-model
}
节),即对源领域和目标领域进行多次循环知识蒸馏,迭代学习对方领域的知识,可以保证在源领域和目标领域上的翻译性能共同逐步上升
\upcite
{
DBLP:conf/emnlp/ZengLSGLYL19
}
。
此外,还可以使用L2正则化和Dropout方法来缓解这个问题
\upcite
{
barone2017regularization
}
。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
...
...
@@ -876,21 +876,21 @@
\section
{
小结及扩展阅读
}
低资源机器翻译是机器翻译大规模应用所面临的挑战之一,因此也备受关注。一方面,小样本学习
和零样本学习技术的发展,使得研究人员可以有更多的手段对问题求解;另一方面,从多语言之间的联系出发,也可以进一步挖掘语料
背后的知识,并应用于低资源机器翻译任务。本章从多个方面介绍了低资源机器翻译方法,并结合多语言、零资源翻译等问题给出了不同场景下解决问题的思路。除此之外,还有几方面工作值得进一步关注:
低资源机器翻译是机器翻译大规模应用所面临的挑战之一,因此也备受关注。一方面,小样本学习
技术的发展,使得研究人员可以有更多的手段对问题求解;另一方面,从多语言之间的联系出发,也可以进一步挖掘不同语言
背后的知识,并应用于低资源机器翻译任务。本章从多个方面介绍了低资源机器翻译方法,并结合多语言、零资源翻译等问题给出了不同场景下解决问题的思路。除此之外,还有几方面工作值得进一步关注:
\begin{itemize}
\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
}
。
\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
}
。
\vspace
{
0.5em
}
\item
预训练模型也是自然语言处理的重要突破之一,也给低资源机器翻译提供了新的思路。除了基于语言模型或掩码语言模型的方法,也有很多新的架构和模型被提出,如排列语言模型、降噪自编码器等
\upcite
{
DBLP:conf/nips/YangDYCSL19,DBLP:conf/acl/LewisLGGMLSZ20,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
{
Peters2018DeepCW,DBLP:conf/rep4nlp/PetersRS19,DBLP:conf/cncl/SunQXH19
}
。但将预训练模型应用于下游任务存在的一个问题是,模型巨大的参数量会带来较大的延时及显存消耗。因此,很多工作对如何压缩预训练模型进行了研究
\upcite
{
shen2020q,Lan2020ALBERTAL,DBLP:journals/corr/abs-1910-01108,Jiao2020TinyBERTDB
}
。
\item
预训练模型也是自然语言处理的重要突破之一,也给低资源机器翻译提供了新的思路。除了基于语言模型或掩码语言模型的方法,也有很多新的架构和模型被提出,如排列语言模型、降噪自编码器等
\upcite
{
DBLP:conf/nips/YangDYCSL19,DBLP:conf/acl/LewisLGGMLSZ20,DBLP:conf/iclr/LanCGGSS20,DBLP:conf/acl/ZhangHLJSL19
}
。预训练技术也逐渐向多语言领域扩展
\upcite
{
DBLP:conf/nips/ConneauL19,DBLP:conf/emnlp/HuangLDGSJZ19,song2019mass
}
,甚至不再只局限于文本任务
\upcite
{
DBLP:conf/iccv/SunMV0S19,
BLP:conf/nips/LuBPL19,DBLP:conf/interspeech/ChuangLLL20
}
。对于如何将预训练模型高效地应用到下游任务中,也进行了很多的经验性对比与分析
\upcite
{
Peters2018DeepCW,DBLP:conf/rep4nlp/PetersRS19,DBLP:conf/cncl/SunQXH19
}
。
\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
}
。
\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
(
k
-
1
)
$
个语言对之间进行翻译
\upcite
{
DBLP:conf/naacl/Al-ShedivatP19
}
。 但是,零资源翻译的性能通常很不稳定并且明显落后于有监督的翻译方法。为了改善零资源翻译,可以开发新的跨语言正则化方法,例如对齐正则化方法
\upcite
{
DBLP:journals/corr/abs-1903-07091
}
,一致性正则化方法
\upcite
{
DBLP:conf/naacl/Al-ShedivatP19
}
;也可以通过反向翻译或基于枢轴语言的翻译生成伪数据
\upcite
{
DBLP:conf/acl/GuWCL19,firat2016zero,DBLP:conf/emnlp/CurreyH19
}
。
\item
零资源翻译也是近几年受到广泛关注的研究方向
\upcite
{
firat2016zero,DBLP:journals/corr/abs-1805-10338
}
。在零资源翻译中,仅使用少量并行语料库(覆盖
$
k
$
个语言),
一个模型就能在任何
$
k
(
k
-
1
)
$
个语言对之间进行翻译
\upcite
{
DBLP:conf/naacl/Al-ShedivatP19
}
。 但是,零资源翻译的性能通常很不稳定并且明显落后于有监督的翻译方法。为了改善零资源翻译,可以开发新的跨语言正则化方法,例如对齐正则化方法
\upcite
{
DBLP:journals/corr/abs-1903-07091
}
,一致性正则化方法
\upcite
{
DBLP:conf/naacl/Al-ShedivatP19
}
;也可以通过反向翻译或基于枢轴语言的翻译生成伪数据
\upcite
{
DBLP:conf/acl/GuWCL19,firat2016zero,DBLP:conf/emnlp/CurreyH19
}
。
\vspace
{
0.5em
}
\end{itemize}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论