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
61c7b92e
Commit
61c7b92e
authored
Nov 30, 2020
by
曹润柘
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mirror update
parent
29b196a1
显示空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
129 行增加
和
50 行删除
+129
-50
Chapter16/Figures/figure-the-iterative-process-of-bidirectional-training.jpg
+0
-0
Chapter16/Figures/figure-unsupervised-dual-learning-process.jpg.jpg
+0
-0
Chapter16/chapter16.tex
+52
-50
bibliography.bib
+77
-0
没有找到文件。
Chapter16/Figures/figure-the-iterative-process-of-bidirectional-training.jpg
0 → 100644
查看文件 @
61c7b92e
73.8 KB
Chapter16/Figures/figure-unsupervised-dual-learning-process.jpg.jpg
0 → 100644
查看文件 @
61c7b92e
19.8 KB
Chapter16/chapter16.tex
查看文件 @
61c7b92e
...
...
@@ -97,7 +97,7 @@
\vspace
{
0.5em
}
\end{itemize}
\parinterval
图
\ref
{
fig:16-4-xc
}
展示了三种加噪方法的示例。这里,
$
\funp
{
P
}_{
\rm
{
Drop
}}$
和
$
\funp
{
P
}_{
\rm
{
Mask
}}$
均设置为0.1,表示每个词有
$
10
\%
$
的概率被丢弃或掩码。打乱顺序的操作略微复杂,一种实现方法是,通过一个数字来表示每个词在句子中的位置,如“我”是第一个词,“你”是第三个词,然后,在每个位置生成一个
$
1
$
到
$
n
$
的随机数,
$
n
$
一般设置为3,然后将每个词的位置数和对应的随机数相加,即图中的
$
\seq
{
S
}$
(
{
\color
{
blue
}
S为啥要加粗???
}
)
。 对
$
\seq
{
S
}$
按照从小到大排序,根据排序后每个位置的索引从原始句子中选择对应的词,从而得到最终打乱顺序后的结果。比如,在排序后,
$
S
_
2
$
的值小于
$
S
_
1
$
,其余词则保持递增顺序,则将原始句子中的第零个词和第一个词的顺序进行交换,其他词保持不变。
\parinterval
图
\ref
{
fig:16-4-xc
}
展示了三种加噪方法的示例。这里,
$
\funp
{
P
}_{
\rm
{
Drop
}}$
和
$
\funp
{
P
}_{
\rm
{
Mask
}}$
均设置为0.1,表示每个词有
$
10
\%
$
的概率被丢弃或掩码。打乱顺序的操作略微复杂,一种实现方法是,通过一个数字来表示每个词在句子中的位置,如“我”是第一个词,“你”是第三个词,然后,在每个位置生成一个
$
1
$
到
$
n
$
的随机数,
$
n
$
一般设置为3,然后将每个词的位置数和对应的随机数相加,即图中的
$
\seq
{
S
}$
。 对
$
\seq
{
S
}$
按照从小到大排序,根据排序后每个位置的索引从原始句子中选择对应的词,从而得到最终打乱顺序后的结果。比如,在排序后,
$
S
_
2
$
的值小于
$
S
_
1
$
,其余词则保持递增顺序,则将原始句子中的第零个词和第一个词的顺序进行交换,其他词保持不变。
%----------------------------------------------
\begin{figure}
[htp]
...
...
@@ -301,14 +301,11 @@ g_{t}& = & \sigma (w^{T}s_{t}^{TM} + b)
\section
{
双向翻译模型
}
\parinterval
目前,我们提到的机器翻译系统主要是通过双语数据,训练一种语言到另外一种语言的翻译。但实际上,机器翻译是一种双向任务。对于给定的双语数据,可以同时学习源语言到目标语言和目标语言到源语言的翻译模型。那么,两个方向的翻译模型能否联合起来,相辅相成呢?下面从双向训练和对偶学习两方面对双向翻译模型进行介绍。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
{
\red
下面这部分是从以前的内容中拷贝过来的,对偶学习和无监督部分的关联比较大,可以把对偶学习拆出去变成新的一小节?把Semi-Supervised Learning for Neural Machine Translation和Mirror-Generative Neural Machine Translation加进来?
}{
\color
{
blue
}
[肖]:我同意,不过感觉Semi-Supervised Learning for Neural Machine Translation有些意思,Mirror-Generative Neural Machine Translation一般,不过可以简单提及一下,或者对核心思想进行介绍。还有,无监督对偶学习是不是应该放到李炎洋那部分?这里面我们还是放有监督的方法,可以和李炎洋讨论一下。
}
机器翻译是一种双向任务。对于给定的双语数据,可以同时学习源语言到目标语言、目标语言到源语言的翻译模型。因此,一种思路是让两个方向的任务互相帮助。
\subsection
{
双向训练
}
\parinterval
回顾神经机器翻译系统的建模过程,给定一个互译的句对
$
(
\mathbi
{
x
}
,
\mathbi
{
y
}
)
$
,一个从源语言句子
$
\mathbi
{
x
}$
到目标语言句子
$
\mathbi
{
y
}$
的翻译被表示为求条件概率
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
的问题。类似地,一个从目标语言句子
$
\mathbi
{
y
}$
到源语言句子
$
\mathbi
{
x
}$
的翻译可以表示为
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
。通常来说,神经机器翻译的训练一次只得到一个方向的模型,也就是
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
或者
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
。这意味着
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
和
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
之间是互相独立的。
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
和
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
是否真的没有关系呢?比如,
$
\mathbi
{
x
}$
和
$
\mathbi
{
y
}$
是相同大小的向量,且
$
\mathbi
{
x
}$
到
$
\mathbi
{
y
}$
的变换是一个线性变换,也就是与一个方阵
$
\mathbi
{
W
}$
做矩阵乘法:
...
...
@@ -320,16 +317,18 @@ g_{t}& = & \sigma (w^{T}s_{t}^{TM} + b)
\parinterval
这里可以把
$
\mathbi
{
x
}$
和
$
\mathbi
{
y
}$
都看作分布式的向量表示;
$
\mathbi
{
W
}$
应当是一个满秩矩阵,否则对于任意一个
$
\mathbi
{
x
}$
经过
$
\mathbi
{
W
}$
变换得到的
$
\mathbi
{
y
}$
只落在所有可能的
$
\mathbi
{
y
}$
的一个子空间内,即在给定
$
\mathbi
{
W
}$
的情况下有些
$
\mathbi
{
y
}$
不能被任何一个
$
\mathbi
{
x
}$
表达,而这不符合常识,因为不管是什么句子,我们总能找到它的一种译文。若
$
\mathbi
{
W
}$
是满秩矩阵说明
$
\mathbi
{
W
}$
可逆,也就是给定
$
\mathbi
{
x
}$
到
$
\mathbi
{
y
}$
的变换
$
\mathbi
{
W
}$
下,
$
\mathbi
{
y
}$
到
$
\mathbi
{
x
}$
的变换必然是
$
\mathbi
{
W
}$
的逆而不是其他矩阵。
\parinterval
这个例子说明
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
和
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
直觉上应当存在联系。当然,
$
\mathbi
{
x
}$
和
$
\mathbi
{
y
}$
之间是否存在简单的线性变换关系并没有结论,但是上面的例子给出了一种对源语言句子和目标语言句子进行相互转化的思路。实际上,研究人员已经通过一些数学技巧用目标函数来把
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
和
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
联系起来,这样训练神经机器翻译系统一次就可以同时得到两个方向的翻译模型,使得训练变得更加高效
\upcite
{
Hassan2018AchievingHP
}{
\color
{
red
}
其它参考文献?
}
。
{
\color
{
red
}
这个地方也没有描述方法是啥啊?
用公式,简单说明一下。还有,参考文献太少~
\parinterval
这个例子说明
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
和
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
直觉上应当存在联系。当然,
$
\mathbi
{
x
}$
和
$
\mathbi
{
y
}$
之间是否存在简单的线性变换关系并没有结论,但是上面的例子给出了一种对源语言句子和目标语言句子进行相互转化的思路。实际上,研究人员已经通过一些数学技巧用目标函数来把
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
和
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
联系起来,这样训练神经机器翻译系统一次就可以同时得到两个方向的翻译模型,使得训练变得更加高效
\upcite
{
Hassan2018AchievingHP,DBLP:conf/aaai/Zhang0LZC18,DBLP:conf/wmt/SunJXHWW19
}
。双向联合训练的基本思想是:使用两个方向的翻译模型对单语数据进行解码,之后用解码后的翻译与原始的单语数据作为训练语料,通过多次迭代更新两个方向上的机器翻译模型。
Achieving Human Parity on Automatic Chinese to English News Translation
\parinterval
图
\ref
{
fig:16-1-fk
}
给出了一个双向训练的详细流程,这里只展示了前两轮迭代。在第一次迭代开始之前,首先使用双语数据对两个初始翻译模型执行预训练。为了保持一致性,这里称之为第0轮迭代。在第一轮迭代中,首先使用这两个翻译模型
$
M
_{
x
\rightarrow
y
}^{
0
}$
和
$
M
_{
y
\rightarrow
x
}^{
0
}$
翻译单语数据
$
X
=
\{
x
^{
(
s
)
}
\}
$
和
$
Y
=
\{
y
^{
(
t
)
}
\}
$
后得到伪训练数据集
$
X'
=
\{
x
^{
(
s
)
}
,y
_{
0
}^{
s
}
\}
$
与
$
Y'
=
\{
x
^{
(
t
)
}
,y
_{
0
}^{
t
}
\}
$
。然后,模型
$
M
_{
x
\rightarrow
y
}^{
1
}$
和
$
M
_{
y
\rightarrow
x
}^{
1
}$
使用上面的两个伪训练集和原始双语数据混合进行训练并执行参数更新。第二轮迭代继续重复上述过程,使用更新参数后的翻译模型
$
M
_{
x
\rightarrow
y
}^{
1
}$
和
$
M
_{
y
\rightarrow
x
}^{
1
}$
得到更为准确的伪数据集
$
X'
=
\{
x
^{
(
s
)
}
,y
_{
1
}^{
s
}
\}
$
和
$
Y'
=
\{
x
^{
(
t
)
}
,y
_{
1
}^{
t
}
\}
$
。从而,使得第二次迭代后的翻译模型
$
M
_{
x
\rightarrow
y
}^{
2
}$
和
$
M
_{
y
\rightarrow
x
}^{
2
}$
取得更高的性能。
Joint training for neural machine translation models with monolingual data
}
%----------------------------------------------
\begin{figure}
[h]
\centering
\includegraphics
[scale=0.7]
{
Chapter16/Figures/figure-the-iterative-process-of-bidirectional-training.jpg
}
\caption
{
双向训练的迭代过程
}
\label
{
fig:16-1-fk
}
\end{figure}
%----------------------------------------------
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
...
...
@@ -337,78 +336,81 @@ Joint training for neural machine translation models with monolingual data
\subsection
{
对偶学习
}
\parinterval
除了用条件概率
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
建模翻译问题,还可以使用联合分布
$
\funp
{
P
}
(
\mathbi
{
x
}
,
\mathbi
{
y
}
)
$
进行建模
\upcite
{
DBLP:conf/icml/XiaQCBYL17
}
。根据条件概率的定义,有:
\parinterval
对称,也许是人类最喜欢的美,其始终贯穿在整个人类文明的诞生与发展之中。古语“夫美者,上下、内外、大小、远近皆无害焉,故曰美”描述的即是这样的美。在人工智能的任务中,也存在着这样的对称结构,比如机器翻译中英译汉和汉译英、图像处理中的图像标注和图像生成以及语音处理中的语音识别和文字合成等。利用这些任务的对称性质(也称对偶性),可以使互为对偶的两个任务获得更有效的反馈,从而使对应的模型相互学习、相互提高。目前,对偶学习的思想已经广泛应用于低资源机器翻译领域,其不仅能够提升在有限双语资源下的翻译模型性能(
{
\small\bfnew
{
有监督对偶学习
}}
,Supervised Dual Learning)
\upcite
{
DBLP:conf/icml/XiaQCBYL17,DBLP:conf/acl/SuHC19,DBLP:journals/ejasmp/RadzikowskiNWY19
}
,而且能够利用未标注的单语数据来进行学习(
{
\small\bfnew
{
无监督对偶学习
}}
,Dual Unsupervised Learning)
\upcite
{
qin2020dual,DBLP:conf/iccv/YiZTG17,DBLP:journals/access/DuRZH20
}
。下面将一一展开讨论。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection
{
1. 有监督对偶学习
}
\parinterval
对偶学习涉及两个任务,分别是原始任务和它的对偶任务。在机器翻译任务中,给定一个互译的句对
$
(
\seq
{
x
}
,
\seq
{
y
}
)
$
,原始任务学习一个条件概率
$
\funp
{
P
}
(
\seq
{
y
}
|
\seq
{
x
}
)
$
将源语言句子
$
\seq
{
x
}$
翻译成目标语言句子
$
\seq
{
y
}$
;对偶任务同样学习一个条件概率
$
\funp
{
P
}
(
\seq
{
x
}
|
\seq
{
y
}
)
$
将目标语言句子
$
\seq
{
y
}$
翻译成源语言句子
$
\seq
{
x
}$
。除了使用条件概率建模翻译问题,还可以使用联合分布
$
\funp
{
P
}
(
\seq
{
x
}
,
\seq
{
y
}
)
$
进行建模。根据条件概率定义,有:
\begin{eqnarray}
\funp
{
P
}
(
\mathbi
{
x
}
,
\mathbi
{
y
}
)
&
=
&
\funp
{
P
}
(
\mathbi
{
x
}
)
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
\nonumber
\\
&
=
&
\funp
{
P
}
(
\mathbi
{
y
}
)
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
\label
{
eq:16-7-xc
}
\end{eqnarray}
\parinterval
公式
\ref
{
eq:16-7-xc
}
很自然地把两个方向的翻译模型
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
和
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
以及两个语言模型
$
\funp
{
P
}
(
\mathbi
{
x
}
)
$
和
$
\funp
{
P
}
(
\mathbi
{
y
}
)
$
联系起来:
$
\funp
{
P
}
(
\mathbi
{
x
}
)
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
应该与
$
\funp
{
P
}
(
\mathbi
{
y
}
)
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
接近,因为它们都表达了同一个联合分布
$
\funp
{
P
}
(
\mathbi
{
x
}
,
\mathbi
{
y
}
)
$
。因此,在构建训练两个方向的翻译模型的目标函数时,除了它们单独训练时各自使用的极大似然估计目标函数,可以额外增加一个目标项来鼓励两个方向的翻译模型。这种方法也被看做是一种
{
\small\bfnew
{
有监督对偶学习
}}
\index
{
有监督对偶学习
}
(Supervised Dual Learning
\index
{
Supervised Dual Learning
}
):
\parinterval
公式
\ref
{
eq:16-7-xc
}
很自然地把两个方向的翻译模型
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
和
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
以及两个语言模型
$
\funp
{
P
}
(
\mathbi
{
x
}
)
$
和
$
\funp
{
P
}
(
\mathbi
{
y
}
)
$
联系起来:
$
\funp
{
P
}
(
\mathbi
{
x
}
)
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
应该与
$
\funp
{
P
}
(
\mathbi
{
y
}
)
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
接近,因为它们都表达了同一个联合分布
$
\funp
{
P
}
(
\mathbi
{
x
}
,
\mathbi
{
y
}
)
$
。因此,在构建训练两个方向的翻译模型的目标函数时,除了它们单独训练时各自使用的极大似然估计目标函数,可以额外增加一个目标项来鼓励两个方向的翻译模型:
\begin{eqnarray}
\mathcal
{
L
}
&
=
&
(
\textrm
{
log P
}
(
\mathbi
{
x
}
) +
\textrm
{
log P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
) -
\textrm
{
log P
}
(
\mathbi
{
y
}
) -
\textrm
{
log P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
))
^{
2
}
\mathcal
{
L
}
_{
\rm
{
dual
}}
&
=
&
(
\log
{
\funp
{
P
}
(
\mathbi
{
x
}
)
}
+
\log
{
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
}
-
\log
{
\funp
{
P
}
(
\mathbi
{
y
}
)
}
-
\log
{
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
))
^{
2
}
}
\label
{
eq:16-8-xc
}
\end{eqnarray}
\noindent
这里,
$
\funp
{
P
}
(
\mathbi
{
x
}
)
$
和
$
\funp
{
P
}
(
\mathbi
{
y
}
)
$
这两个语言模型是预先训练好的,并不参与翻译模型的训练。可以看到,对于单独的一个模型来说,其目标函数增加了与另外一个方向的模型相关的项。这样的形式与L1/L2正则化非常类似(见
\ref
{
subsection-13.1
}
节
{
\red
{
引用正则化一节
}}
),因此可以把这个方法看作是一种任务特定的正则化的手段(由翻译任务本身的性质所启发而来)。由于两个方向的翻译模型和语言模型相互影响,这种方法能得到比基于单个方向训练效果更好的模型。
\parinterval
在有监督对偶学习对联合分布
$
\funp
{
P
}
(
\mathbi
{
x
}
,
\mathbi
{
y
}
)
$
建模的基础上,如果把
$
\mathbi
{
y
}$
看作一个隐变量,那么可以得到边缘分布
$
\funp
{
P
}
(
\mathbi
{
x
}
)
$
,也就是关于
$
\mathbi
{
x
}$
的语言模型:
\parinterval
通过该正则化项,我们将互为对偶的两个任务放在一块学习,通过任务对偶性加强监督学习的过程,就是有监督对偶学习
\upcite
{
DBLP:conf/icml/XiaQCBYL17,qin2020dual
}
。这里,
$
\funp
{
P
}
(
\seq
{
x
}
)
$
和
$
\funp
{
P
}
(
\seq
{
y
}
)
$
这两个语言模型是预先训练好的,并不参与翻译模型的训练。可以看到,对于单独的一个模型来说,其目标函数增加了与另外一个方向的模型相关的项。这样的形式与L1/L2正则化非常类似(
{
\red
{
引用正则化一节
}}
),因此可以把这个方法看作是一种任务特定的正则化的手段(由翻译任务本身的性质所启发而来)。有监督对偶学习实际上要优化下面这个损失函数:
\begin{eqnarray}
\funp
{
P
}
(
\mathbi
{
x
}
)
&
=
&
\sum
_{
\mathbi
{
y
}}
\funp
{
P
}
(
\mathbi
{
x
}
,
\mathbi
{
y
}
)
\nonumber
\\
&
=
&
\sum
_{
\mathbi
{
y
}}
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
\label
{
eq:16-9-xc
}
\mathcal
{
L
}
&
=
&
\log
{
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
}
+
\log
{
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
}
+
\mathcal
{
L
}_{
\rm
{
dual
}}
\label
{
eq:16-2-fk
}
\end{eqnarray}
\noindent
公式
\ref
{
eq:16-9-xc
}
假设
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)=
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
x
}
,
\mathbi
{
y
}
)
$
。这个假设显然是成立的,因为当知道一个句子的译文时,并不需要知道它的源文就可以把它翻译回去。如果直接优化(最大化)公式
\ref
{
eq:16-9-xc
}
右侧,相当于对这个等式
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
和
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
施加了
{
\small\sffamily\bfnew
{
循环一致性
}}
\index
{
循环一致性
}
(Circle Consistency)
\index
{
Circle Consistency
}
的约束
\upcite
{
DBLP:conf/iccv/ZhuPIE17
}
,也就是对于一个句子
$
\mathbi
{
x
}$
,通过
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
把它翻译成
$
\mathbi
{
y
}$
后,根据
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
应该能重新翻译出
$
\mathbi
{
x
}$
,如图
\ref
{
fig:16-7-xc
}
所示。公式
\ref
{
fig:16-7-xc
}{
\color
{
red
}
一定注意引用错误!!!
}
给出了同时优化
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
和
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
的一个目标函数形式。这个目标函数的一个额外的好处是它本质上是在学习一个由
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
和
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
组成的语言模型
$
\funp
{
P
}
(
\mathbi
{
x
}
)
$
,而
$
\funp
{
P
}
(
\mathbi
{
x
}
)
$
的学习依赖于单语数据,这意味着这个目标函数可以很自然地直接使用大量单语数据来同时训练两个翻译模型。相同的结论可以推广到
$
\funp
{
P
}
(
\mathbi
{
y
}
)
$
上
\upcite
{
DBLP:conf/nips/HeXQWYLM16
}
。这种方法也可以被看做是
{
\small\bfnew
{
无监督对偶学习
}}
\index
{
无监督对偶学习
}
(Un-supervised Dual Learning
\index
{
Un-supervised Dual Learning
}
)。
\parinterval
由于两个方向的翻译模型和语言模型相互影响,这种共同训练、共同提高的方法能得到比基于单个方向训练效果更好的模型。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection
{
2. 无监督对偶学习
}
\parinterval
如上一节所述,有监督的对偶学习需要使用双语数据来训练两个翻译模型。幸运的是,存在大量的单语数据可供我们使用。因此,如何使用这些单语数据来提升翻译模型的性能是一个关键问题。
\parinterval
无监督对偶学习为我们提供了一个思路
\upcite
{
qin2020dual
}
。假设目前有两个比较弱的翻译模型,一个原始任务模型f将源语言句子
$
\seq
{
x
}$
翻译成目标语言句子
$
\seq
{
y
}$
和一个对偶任务模型g将目标语言句子
$
\seq
{
y
}$
翻译成源语言句子
$
\seq
{
x
}$
。翻译模型可由有限的双语训练或者使用无监督机器翻译的方法得到。如图
\ref
{
fig:16-10-xc
}
所示,无监督对偶学习的做法是,先通过原始任务模型f将一个源语言单语句子
$
s
_
x
$
翻译为目标语言句子
$
s
_
y
$
。由于没有参考译文,我们无法判断
$
s
_
y
$
的正确性。但通过语言模型,可以判断这个句子是否通顺、符合语法规范,这些信息可用来评估翻译模型f的翻译流畅性。随后,再通过对偶任务模型g将目标语言句子
$
s
_
y
$
再翻译为源语言句子
$
s
_
x
^{
'
}$
。如果模型f和g的翻译性能较好,那么
$
s
_
x
^{
'
}$
和
$
s
_
x
$
会十分相似。通过计算二者的
{
\small\bfnew
{
重构损失
}}
(reconstruction loss),就可以优化模型f和g的参数。经过多次迭代,两个翻译模型都能从大量的无标注单语数据上进行学习并达到不错的性能。
%----------------------------------------------
\begin{figure}
[htp]
\centering
\in
put
{
./Chapter16/Figures/figure-cycle-consistency
}
\caption
{
循环一致性
}
\in
cludegraphics
[scale=0.4]
{
./Chapter16/Figures/figure-unsupervised-dual-learning-process.jpg
}
\caption
{
无监督对偶学习流程
}
\label
{
fig:16-10-xc
}
\end{figure}
%----------------------------------------------
\parinterval
从概率角度来看待这个问题,如果在有监督对偶学习对联合分布P(y|x)建模的基础上把y看作一个隐变量,那么可以得到边缘分布P(x),也就是关于x的语言模型:
\begin{eqnarray}
\funp
{
P
}
(
\mathbi
{
x
}
)
&
=
&
\sum
_{
\mathbi
{
y
}}
\funp
{
P
}
(
\mathbi
{
x
}
,
\mathbi
{
y
}
)
\nonumber
\\
&
=
&
\sum
_{
\mathbi
{
y
}}
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
\label
{
eq:16-9-xc
}
\end{eqnarray}
\parinterval
公式
\ref
{
eq:16-9-xc
}
假设
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)=
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
x
}
,
\mathbi
{
y
}
)
$
。这个假设显然是成立的,因为当知道一个句子的译文时,并不需要知道它的源文就可以把它翻译回去。如果直接优化(最大化)公式
\ref
{
eq:16-9-xc
}
右侧,相当于对这个等式
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
和
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
施加了
{
\small\sffamily\bfnew
{
循环一致性
}}
\index
{
循环一致性
}
(Circle Consistency)
\index
{
Circle Consistency
}
的约束
\upcite
{
DBLP:conf/iccv/ZhuPIE17
}
,也就是对于一个句子
$
\mathbi
{
x
}$
,通过
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
把它翻译成
$
\mathbi
{
y
}$
后,根据
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
应该能重新翻译出
$
\mathbi
{
x
}$
,如图
\ref
{
fig:16-10-xc
}
所示。公式
\ref
{
eq:16-9-xc
}
给出了同时优化
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
和
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
的一个目标函数形式。这个目标函数的一个额外的好处是它本质上是在学习一个由
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
和
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
组成的语言模型
$
\funp
{
P
}
(
\mathbi
{
x
}
)
$
,而
$
\funp
{
P
}
(
\mathbi
{
x
}
)
$
的学习依赖于单语数据,这意味着这个目标函数可以很自然地直接使用大量单语数据来同时训练两个翻译模型。相同的结论可以推广到
$
\funp
{
P
}
(
\mathbi
{
y
}
)
$
上
\upcite
{
DBLP:conf/nips/HeXQWYLM16
}
。
\parinterval
但是直接使用公式
\ref
{
eq:16-9-xc
}
作为目标函数需要解决两个问题:
\begin{itemize}
\vspace
{
0.5em
}
\item
计算公式
\ref
{
eq:16-9-xc
}
要枚举所有可能的隐变量
$
\mathbi
{
y
}$
的取值,也就是所有可能产生的目标语句子,而这是不可能的,因此一般会通过平均多个随机产生的
$
\mathbi
{
y
}$
对应的损失来近似真正的目标函数值;
\vspace
{
0.5em
}
\item
从公式
\ref
{
eq:16-9-xc
}
可以看到,在
$
\funp
{
P
}
(
\mathbi
{
x
}
)
$
上计算完目标函数值后,得到的梯度首先传递给
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
,然后通过
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
传递给
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
。由于
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
的输入
$
\mathbi
{
y
}$
由
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
采样得到,而采样操作不可导,导致梯度的传播在
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
的输出处断开了,因此
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
接收不到任何梯度来进行更新。常见的解决方案是使用策略梯度
\upcite
{
DBLP:conf/nips/SuttonMSM99
}
。它把
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
采样得到的
$
\mathbi
{
y
}$
当成
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
的目标来学习,并使用
$
\textrm
{
log P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
对
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
的损失进行加权。但是由于仅使用少量样本来近似真正的目标函数,得到的策略梯度方差非常大,系统无法稳定学习,特别是训练的初期,因此通常会需要先使用双语数据预训练两个方向的翻译模型,然后把公式
\ref
{
eq:16-9-xc
}
作为正常训练的一个正则化项使用。
\item
从公式
\ref
{
eq:16-9-xc
}
可以看到,在
$
\funp
{
P
}
(
\mathbi
{
x
}
)
$
上计算完目标函数值后,得到的梯度首先传递给
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
,然后通过
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
传递给
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
。由于
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
的输入
$
\mathbi
{
y
}$
由
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
采样得到,而采样操作不可导,导致梯度的传播在
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
的输出处断开了,因此
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
接收不到任何梯度来进行更新。常见的解决方案是使用策略梯度
\upcite
{
DBLP:conf/nips/SuttonMSM99
}
。策略梯度的基本思想如下:如果我们在执行某个动作之后,获得了一个不错的反馈,那么我们会调整策略来增加这个状态下执行该动作的概率;反之,如果采取某个动作后获得了一个负反馈,就需要调整策略来降低这个状态下执行该动作的概率。在算法的实现上,首先对两个翻译模型求梯度,然后在策略调整时选择将梯度加到模型上(获得正反馈)或者减去该梯度(获得负反馈)。
\vspace
{
0.5em
}
\end{itemize}
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection
{
翻译中回译(
{
\color
{
red
}
缺参考文献!
}
)
}
\parinterval
重新回顾公式
\ref
{
eq:16-9-xc
}
对应的目标函数,无监督对偶学习跟回译(假设现在只在一个句对
$
(
\mathbi
{
x
}
,
\mathbi
{
y
}
)
$
上做回译)之间有着很深的内在联系:给定一个句子
$
\mathbi
{
x
}$
,无监督对偶学习和回译都首先用
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
把
$
\mathbi
{
x
}$
翻译成
$
\mathbi
{
y
}$
,然后无监督对偶学习最大化
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
,而回译则是最大化
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
。可以看到,当无监督对偶学习假设
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
是一个完美的翻译模型的时候,它与回译是等价的。此外,在共享两个方向的模型参数
$
\theta
$
的情况下,可以看到无监督对偶学习的梯度为
\begin{equation}
\frac
{
\partial
\funp
{
P
}
(
\mathbi
{
x
}
)
}{
\partial
\theta
}
=
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
\frac
{
\partial
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
}{
\partial
\theta
}
+
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
\frac
{
\partial
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
}{
\partial
\theta
}
\end{equation}
\noindent
而回译的梯度为
$
\frac
{
\partial
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
}{
\partial
\theta
}$
。从这个角度出发,无监督对偶学习与回译都在优化语言模型
$
\funp
{
P
}
(
\mathbi
{
x
}
)
$
这个目标函数,只不过回译使用对
$
\theta
$
有偏的梯度估计。
\parinterval
这个事实说明对回译进行适当的增广后应该能取得与无监督对偶学习相似的结果。
{
\small\sffamily\bfnew
{
翻译中回译
}}
\index
{
翻译中回译
}
(On-the-fly Back-translation)
\index
{
On-the-fly Back-translation
}
就是这样一个例子。一般回译的过程是先把数据集里所有
$
\mathbi
{
x
}$
都翻译出来,然后只训练
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
。区别于回译,从数据集中采集到一个
$
\mathbi
{
x
}$
之后,翻译中回译立刻把
$
\mathbi
{
x
}$
翻译成
$
\mathbi
{
y
}$
,然后训练
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
,并且在下一步迭代中采集一个
$
\mathbi
{
y
}$
然后训练
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
,这样交替更新
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
和
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
。尽管翻译中回译无法像无监督对偶学习那样在一个样本里通过梯度把
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
的信息传到
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
,但是它交替更新
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
和
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
的策略允许
$
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
$
在两个样本间通过其产生的输出
$
\mathbi
{
x
}$
来把信息传递到
$
\funp
{
P
}
(
\mathbi
{
y
}
|
\mathbi
{
x
}
)
$
,因此也能获得相近的效果,并且在实现和计算上都非常高效。翻译中回译已经在无监督神经机器翻译系统训练中被广泛使用
\upcite
{
lample2019cross
}
。
\subsubsection
{
三角结构训练
}
{
\red
[Triangular Architecture for Rare Language Translation]也不是利用单语数据,而是类似于枢轴语,在这里加是否合适?
}{
\color
{
blue
}
可以放到林野那部分提一下?
}
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\section
{
多语言翻译模型
}
\label
{
multilingual-translation-model
}
\parinterval
低资源机器翻译面临的主要挑战是缺乏大规模高质量的双语数据。这个问题往往伴随着多语言的翻译任务
\upcite
{
dabre2019brief
}
\upcite
{
dabre2020survey
}
。也就是,要同时开发多个不同语言之间的机器翻译系统,其中少部分语言是富资源语言,而其它语言是低资源语言。针对低资源语种双语数据稀少或者缺失的情况,一种常见的思路是利用富资源语种的数据或者系统帮助低资源机器翻译系统。这也构成了多语言翻译的思想,并延伸出大量的研究工作。有三个典型研究方向:
\parinterval
低资源机器翻译面临的主要挑战是缺乏大规模高质量的双语数据。这个问题往往伴随着多语言的翻译任务
\upcite
{
dabre2019brief
,
dabre2020survey
}
。也就是,要同时开发多个不同语言之间的机器翻译系统,其中少部分语言是富资源语言,而其它语言是低资源语言。针对低资源语种双语数据稀少或者缺失的情况,一种常见的思路是利用富资源语种的数据或者系统帮助低资源机器翻译系统。这也构成了多语言翻译的思想,并延伸出大量的研究工作。有三个典型研究方向:
\begin{itemize}
\vspace
{
0.5em
}
...
...
bibliography.bib
查看文件 @
61c7b92e
...
...
@@ -11592,7 +11592,84 @@ author = {Zhuang Liu and
publisher = {European Association of Computational Linguistics},
year = {2017}
}
@inproceedings{DBLP:conf/aaai/Zhang0LZC18,
author = {Zhirui Zhang and
Shujie Liu and
Mu Li and
Ming Zhou and
Enhong Chen},
title = {Joint Training for Neural Machine Translation Models with Monolingual
Data},
pages = {555--562},
publisher = {AAAI Conference on Artificial Intelligence},
year = {2018}
}
@inproceedings{DBLP:conf/wmt/SunJXHWW19,
author = {Meng Sun and
Bojian Jiang and
Hao Xiong and
Zhongjun He and
Hua Wu and
Haifeng Wang},
title = {Baidu Neural Machine Translation Systems for {WMT19}},
pages = {374--381},
publisher = {Annual Meeting of the Association for Computational Linguistics},
year = {2019}
}
@inproceedings{DBLP:conf/acl/SuHC19,
author = {Shang-Yu Su and
Chao-Wei Huang and
Yun-Nung Chen},
title = {Dual Supervised Learning for Natural Language Understanding and Generation},
pages = {5472--5477},
publisher = {Annual Meeting of the Association for Computational Linguistics},
year = {2019}
}
@article{DBLP:journals/ejasmp/RadzikowskiNWY19,
author = {Kacper Radzikowski and
Robert Nowak and
Le Wang and
Osamu Yoshie},
title = {Dual supervised learning for non-native speech recognition},
journal = {{EURASIP} J. Audio Speech Music. Process.},
volume = {2019},
pages = {3},
year = {2019}
}
@incollection{qin2020dual,
title={Dual Learning for Machine Translation and Beyond},
author={Qin, Tao},
pages={49--72},
year={2020},
publisher={Springer}
}
@inproceedings{DBLP:conf/iccv/YiZTG17,
author = {Zili Yi and
Hao (Richard) Zhang and
Ping Tan and
Minglun Gong},
title = {DualGAN: Unsupervised Dual Learning for Image-to-Image Translation},
pages = {2868--2876},
publisher = {{IEEE} Computer Society},
year = {2017}
}
@article{DBLP:journals/access/DuRZH20,
author = {Liang Du and
Xin Ren and
Peng Zhou and
Zhiguo Hu},
title = {Unsupervised Dual Learning for Feature and Instance Selection},
journal = {{IEEE} Access},
volume = {8},
pages = {170248--170260},
year = {2020}
}
%%%%% chapter 16------------------------------------------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论