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
a6429e4d
Commit
a6429e4d
authored
Nov 16, 2020
by
曹润柘
Browse files
Options
Browse Files
Download
Plain Diff
合并分支 'master' 到 'caorunzhe'
Master 查看合并请求
!411
parents
b597f795
75e4b93d
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
49 行增加
和
18 行删除
+49
-18
Chapter16/chapter16.tex
+49
-18
没有找到文件。
Chapter16/chapter16.tex
查看文件 @
a6429e4d
...
...
@@ -270,7 +270,7 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\vspace
{
0.5em
}
\item
{
\small\sffamily\bfnew
{
序列到序列预训练
}}
\parinterval
传统的预训练模型都是针对自然语言理解任务设计的,比如情感分类和命名实体识别等任务,其目的是获得更好的句子表示结果,并用于下游任务。而在机器翻译和文本摘要等序列到序列的语言生成任务中,不仅包含源语言表示学习的问题,还有序列到序列的映射,以及目标端序列生成的问题,这些知识是无法通过(源语言)单语数据学习到的。为了能够在序列到序列任务上更好地使用单语数据,可以同时使用编码器和解码器的结构完成对单语数据的预训练
。
\parinterval
机器翻译是一种典型的语言生成任务,它不仅包含源语言表示学习的问题,还有序列到序列的映射,以及目标端序列生成的问题,这些知识是无法单独通过(源语言)单语数据学习到的。为了能够在序列到序列任务上更好地使用单语数据,另一种思路是用单语数据对编码器-解码器结构进行预训练(
{
\color
{
red
}
参考文献!
}
)。相比对解码器结构进行单独预训练,对编码器-解码器的预训练更加贴合机器翻译的需要
。
%----------------------------------------------
\begin{figure}
[htp]
...
...
@@ -281,12 +281,14 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\end{figure}
%-------------------------------------------
\parinterval
以MASS方法为例
\upcite
{
song2019mass
}
,可以直接对整个编码器-解码器的结构进行预训练。训练中采用掩码的方式,将源语词序列中的片段替换成特殊词<mask>,然后在解码器端预测这个未知片段,如图
\ref
{
fig:16-8-xc
}
所示,
\#
号表示特殊词<mask>。这种做法可以使得编码器端捕捉上下文信息,同时迫使解码器依赖于编码器,学习编码器和解码器之间的注意力进行预训练。同时。解码器端片段的预测也使得解码器能够学习到向前依赖的上下文表示。
\parinterval
这里以MASS方法为例
\upcite
{
song2019mass
}
。其思想与BERT预训练有相似之处,训练中采用掩码的方式,将源语词序列中的片段随机替换成特殊词<mask>,然后在解码器端预测这个未知片段,如图
\ref
{
fig:16-8-xc
}
所示,
\#
号表示特殊词<mask>。这种做法可以使得编码器端捕捉上下文信息,同时迫使解码器依赖于编码器,学习编码器和解码器之间的注意力进行预训练。同时。解码器端片段的预测也使得解码器能够学习到向前依赖的上下文表示。这种设计的好处在于,使用一种语言的数据同时学习了编码和解码的能力。而且这种预训练的结果可以直接用于初始化机器翻译模型。
{
\color
{
red
}
没有其它的工作了?参考文献?
}
\vspace
{
0.5em
}
\end{itemize}
(扩展阅读)
(扩展阅读)
{
\color
{
red
}
是否放在扩展阅读,还是分布在这节的各个部分?
}
\parinterval
此外,还有很多工作对如何将语言模型应用到神经机器翻译模型中进行了研究。研究人员分析了预训练词嵌入何时为何在神经机器翻译模型中有效
\cite
{
2018When
}
;如何在神经机器翻译模型中利用预训练的BERT模型
\cite
{
DBLP:conf/emnlp/ClinchantJN19,DBLP:conf/emnlp/ImamuraS19,DBLP:conf/aaai/YangW0Z00020,DBLP:conf/aaai/WengYHCL20
}
;如何针对神经机器翻译任务进行预训练
\cite
{
DBLP:journals/corr/abs-2001-08210,DBLP:conf/aaai/JiZDZCL20,DBLP:conf/acl/LewisLGGMLSZ20
}
;针对机器翻译中的Code-switching问题进行预训练
\cite
{
DBLP:journals/corr/abs-2009-08088
}
;如何在微调过程中避免遗忘原始的语言模型任务
\cite
{
DBLP:journals/corr/abs-2010-09403
}
。
%----------------------------------------------------------------------------------------
...
...
@@ -295,9 +297,9 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\subsubsection
{
3. 联合训练
}
\parinterval
{
\small\sffamily\bfnew
{
多任务学习
}}
\index
{
多任务学习
}
(Multitask Learning)
\index
{
Multitask Learning
}
是机器学习的一个子领域,是指同时学习多个独立但是相关的任务
\upcite
{
DBLP:journals/corr/Ruder17a
}
。多任务学习通过模型共享的方式,对多个模型进行学习,而这些模型都对应不同的任务,这样不同模型可以互相``促进''。在神经机器翻译中,为了使用单语数据,可以将翻译任务作为主任务,同时设置一些仅使用单语数据的子任务,通过这些子任务来捕捉单语数据中的语言知识
\upcite
{
DBLP:conf/emnlp/DomhanH17
}
。
\parinterval
{
\small\sffamily\bfnew
{
多任务学习
}}
\index
{
多任务学习
}
(Multitask Learning)
\index
{
Multitask Learning
}
是机器学习的一个子领域,是指同时学习多个独立但是相关的任务
\upcite
{
DBLP:journals/corr/Ruder17a
}
(
{
\color
{
red
}
多一些参考文献?
}
)。多任务学习通过模型共享的方式,对多个模型进行学习,而这些模型都对应不同的任务,这样不同模型可以互相``促进''。在神经机器翻译中,为了使用单语数据,可以将翻译任务作为主任务,同时设置一些仅使用单语数据的子任务,通过这些子任务来捕捉单语数据中的语言知识
\upcite
{
DBLP:conf/emnlp/DomhanH17
}
(
{
\color
{
red
}
多一些参考文献?
}
)
。
\parinterval
语言模型是使用目标端单语数据最直接的方式,但是翻译模型作为一个受限的语言模型,还需要依赖于源语,并不能直接进行多任务学习。针对这个问题,对原有翻译模型结构进行了修改,在解码器中增加了一个语言模型子层,将这个子层用于语言模型任务(图
\ref
{
fig:16-9-xc
}
)。在训练过程中,分别将双语数据和单语数据送入翻译模型和语言模型进行计算,得到的损失相加用于整体模型参数的梯度计算和参数更新,这里语言模型的参数是翻译模型的一部分。
\parinterval
语言模型是使用目标端单语数据最直接的方式,但是翻译模型作为一个受限的语言模型,还需要依赖于源语
言
,并不能直接进行多任务学习。针对这个问题,对原有翻译模型结构进行了修改,在解码器中增加了一个语言模型子层,将这个子层用于语言模型任务(图
\ref
{
fig:16-9-xc
}
)。在训练过程中,分别将双语数据和单语数据送入翻译模型和语言模型进行计算,得到的损失相加用于整体模型参数的梯度计算和参数更新,这里语言模型的参数是翻译模型的一部分。
%----------------------------------------------
\begin{figure}
[htp]
...
...
@@ -308,7 +310,20 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\end{figure}
%-------------------------------------------
\parinterval
除了多任务学习,还有一些方法将前向模型和反向模型一起训练,在训练过程中同时使用源语言端和目标语言端的单语数据来提升模型性能,在下一节中进行详细介绍。
\parinterval
除了多任务学习,还有一些方法将前向模型和反向模型一起训练,在训练过程中同时使用源语言端和目标语言端的单语数据来提升模型性能,在
{
\color
{
red
}
XXX
}
节中进行详细介绍。
{
\color
{
red
}
要说就全面一些,比如:
Multi-task learning for multiple language translation
Multi-task sequence to sequence learning
Exploiting source-side monolingual data in neural machine translation
在Neural Machine Translation: A Review and Survey中搜索一下关键词,还有别的survey
}
%----------------------------------------------------------------------------------------
% NEW SECTION
...
...
@@ -322,9 +337,9 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
{
\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
到目前为止,神经机器翻译系统都是每次一次只训练一个方向的模型。比如,给定中英的双语数据,一次只训练一个中到英或者英到中的翻译系统。既然两个方向的系统都使用同样的双语数据进行训练,那么是否可以一次训练同时得到两个方向的翻译系统呢?
\
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
}$
做矩阵乘法:
...
...
@@ -333,7 +348,18 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\label
{
eq:16-6-xc
}
\end{eqnarray}
\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
}$
的逆而不是其他矩阵。这个例子说明
$
\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
}
。
\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
}
这个地方也没有描述方法是啥啊?
用公式,简单说明一下。还有,参考文献太少~
Achieving Human Parity on Automatic Chinese to English News Translation
Joint training for neural machine translation models with monolingual data
}
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
...
...
@@ -348,15 +374,14 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\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
}
)
$
。因此,在构建训练两个方向的翻译模型的目标函数时,除了它们单独训练时各自使用的极大似然估计目标函数,可以额外增加一个目标项来鼓励两个方向的翻译模型去满足公式
\ref
{
eq:16-8-xc
}
:
\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
}
):
\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
}
\label
{
eq:16-8-xc
}
\end{eqnarray}
\parinterval
这里
$
\funp
{
P
}
(
\mathbi
{
x
}
)
$
和
$
\funp
{
P
}
(
\mathbi
{
y
}
)
$
这两个语言模型是预先训练好的,并不参与翻译模型的训练。可以看到,对于单独的一个模型来说,其目标函数增加了与另外一个方向的模型相关的项。这样的形式与L1/L2正则化非常类似(见
\ref
{
subsection-13.1
}
节
{
\red
{
引用正则化一节
}}
),因此可以把这个方法看作是一种任务特定的正则化的手段(由翻译任务本身的性质所启发而来)。由于两个方向的翻译模型和语言模型相互影响,这种方法能得到比基于单个方向训练效果更好的模型。
{
\color
{
red
}
无监督对偶学习?
}
\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
}$
的语言模型:
...
...
@@ -366,7 +391,7 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\label
{
eq:16-9-xc
}
\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
}
给出了同时优化
$
\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
}
。
\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
}
)
。
%----------------------------------------------
\begin{figure}
[htp]
...
...
@@ -388,19 +413,25 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\end{itemize}
%----------------------------------------------------------------------------------------
% NEW SUB
SUB
-SECTION
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection
{
4. 翻译中回译
}
\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}
\
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
$
的情况下,可以看到无监督对偶学习的梯度为
$
\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
}
$
,
而回译的梯度为
$
\frac
{
\partial
\funp
{
P
}
(
\mathbi
{
x
}
|
\mathbi
{
y
}
)
}{
\partial
\theta
}$
。从这个角度出发,无监督对偶学习与回译都在优化语言模型
$
\funp
{
P
}
(
\mathbi
{
x
}
)
$
这个目标函数,只不过回译使用对
$
\theta
$
有偏的梯度估计。
\
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]也不是利用单语数据,而是类似于枢轴语,在这里加是否合适?
}
{
\red
[Triangular Architecture for Rare Language Translation]也不是利用单语数据,而是类似于枢轴语,在这里加是否合适?
}
{
\color
{
blue
}
可以放到林野那部分提一下?
}
%----------------------------------------------------------------------------------------
% NEW SECTION
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论