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
b6439e0e
Commit
b6439e0e
authored
Nov 16, 2020
by
曹润柘
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新 chapter16.tex
parent
c890c3e7
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
186 行增加
和
31 行删除
+186
-31
Chapter16/chapter16.tex
+186
-31
没有找到文件。
Chapter16/chapter16.tex
查看文件 @
b6439e0e
...
...
@@ -42,7 +42,7 @@
%----------------------------------------------------------------------------------------
\subsection
{
数据增强
}
\parinterval
{
\small\bfnew
{
数据增强
}}
(Data Augmentation)是一种增加训练数据的方法,通常通过对既有数据进行修改或者生成新的伪数据等方式实现。有时候,数据增强也可以被看做是一种防止模型过拟合的手段
\cite
{
DBLP:journals/jbd/ShortenK19
}
。在机器翻译中,典型的数据增强方法包括回译、加噪等。
\parinterval
{
\small\bfnew
{
数据增强
}}
(Data Augmentation)是一种增加训练数据的方法,通常通过对既有数据进行修改或者生成新的伪数据等方式实现。有时候,数据增强也可以被看做是一种防止模型过拟合的手段
\
up
cite
{
DBLP:journals/jbd/ShortenK19
}
。在机器翻译中,典型的数据增强方法包括回译、加噪等。
\subsubsection
{
1. 回译
}
...
...
@@ -155,7 +155,7 @@
\parinterval
可比语料大多存在于网页中,内容较为复杂,可能会存在较大比例的噪声,如HTML字符、乱码等。首先需要进行充分的数据清洗操作,得到干净的可比语料,然后从中抽取出可用的双语句对。传统的抽取方法一般通过统计模型或双语词典来得到,比如,通过计算两个不同语言句子之间的单词重叠数或BLEU值
\upcite
{
finding2006adafre,method2008keiji
}
,通过排序模型或二分类器判断一个目标语言句子和一个源语言句子互译的可能性
\upcite
{
DBLP:journals/coling/MunteanuM05,DBLP:conf/naacl/SmithQT10
}
。
\parinterval
另外一种比较有效的方法是根据两种语言中每个句子的表示向量来抽取。首先,对于两种语言的每个句子,分别使用词嵌入加权平均等方法计算得到句子的表示向量,然后计算每个源语言句子和目标语言句子之间的余弦相似度,相似度大于一定阈值的句对则认为是可用的双语句对
\cite
{
DBLP:conf/emnlp/WuZHGQLL19
}
。然而,不同语言单独训练得到的词嵌入可能多对应不同的表示空间,因此得到的句向量无法用于衡量两个句子的相似度。为了解决这个问题,一般使用在同一表示空间的跨语言词嵌入来表示两种语言的单词。在跨语言词嵌入中,不同语言相同意思的词对应的词嵌入具有较高的相似性,因此得到的句向量也就可以用于衡量两个句子是否表示相似的语义(
{
\color
{
red
}
参考文献!
}
)。关于跨语言词嵌入的具体内容,可以参考xxx节(
{
\color
{
red
}
双语词典归纳一节!
}
)。
\parinterval
另外一种比较有效的方法是根据两种语言中每个句子的表示向量来抽取。首先,对于两种语言的每个句子,分别使用词嵌入加权平均等方法计算得到句子的表示向量,然后计算每个源语言句子和目标语言句子之间的余弦相似度,相似度大于一定阈值的句对则认为是可用的双语句对
\
up
cite
{
DBLP:conf/emnlp/WuZHGQLL19
}
。然而,不同语言单独训练得到的词嵌入可能多对应不同的表示空间,因此得到的句向量无法用于衡量两个句子的相似度。为了解决这个问题,一般使用在同一表示空间的跨语言词嵌入来表示两种语言的单词。在跨语言词嵌入中,不同语言相同意思的词对应的词嵌入具有较高的相似性,因此得到的句向量也就可以用于衡量两个句子是否表示相似的语义(
{
\color
{
red
}
参考文献!
}
)。关于跨语言词嵌入的具体内容,可以参考xxx节(
{
\color
{
red
}
双语词典归纳一节!
}
)。
(扩展阅读)
\parinterval
除此之外,还有很多工作对数据增强方法进行了深入的研究与探讨。探索源语言单语数据在神经机器翻译中的使用方法
\upcite
{
DBLP:conf/emnlp/ZhangZ16
}
;选择何种单语数据来生成伪数据带来的收益更大
\upcite
{
DBLP:conf/emnlp/FadaeeM18,DBLP:conf/nlpcc/XuLXLLXZ19
}
;通过特别标识对真实双语和回译生成的伪双语数据进行区分
\upcite
{
DBLP:conf/wmt/CaswellCG19
}
;在回译过程中对训练数据进行动态选择与加权
\upcite
{
DBLP:journals/corr/abs200403672
}
;利用目标端单语数据和相关的富资源语言进行数据增强
\upcite
{
DBLP:conf/acl/XiaKAN19
}
;通过在源语言或目标语言中随机选择某些词,将这些词替换为词表中随机的一个词,可以得到伪双语数据
\upcite
{
DBLP:conf/emnlp/WangPDN18
}
;随机选择句子中的某个词,将这个词的词嵌入替换为多个语义相似词的加权表示融合
\upcite
{
DBLP:conf/acl/GaoZWXQCZL19
}
;基于模型的不确定性来量化预测结果的置信度,从而提升回译方法的性能
\upcite
{
DBLP:conf/emnlp/WangLWLS19
}
;探索如何利用大规模单语数据
\upcite
{
DBLP:conf/emnlp/WuWXQLL19
}
;还有一些工作对数据增强进行了理论分析
\upcite
{
DBLP:conf/emnlp/LiLHZZ19
}{
\color
{
red
}
,发现XXXX?
}
。(
{
\color
{
red
}
这部分写得不错
}
)
...
...
@@ -182,7 +182,7 @@
{
\color
{
red
}
这个公式和第九章的公式最好一致!!!
}
\noindent
这里,
$
\theta
$
是神经机器翻译模型的参数,
$
y
_{
<t
}$
表示第
$
t
$
个词前面生成的词。语言模型可以与上述过程融合,具体分为浅融合和深融合两种方法
\cite
{
2015OnGulcehre
}
,如图
\ref
{
fig:16-6-xc
}
所示。
\noindent
这里,
$
\theta
$
是神经机器翻译模型的参数,
$
y
_{
<t
}$
表示第
$
t
$
个词前面生成的词。语言模型可以与上述过程融合,具体分为浅融合和深融合两种方法
\
up
cite
{
2015OnGulcehre
}
,如图
\ref
{
fig:16-6-xc
}
所示。
%----------------------------------------------
\begin{figure}
[htp]
...
...
@@ -289,7 +289,7 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\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
}
。
\parinterval
此外,还有很多工作对如何将语言模型应用到神经机器翻译模型中进行了研究。研究人员分析了预训练词嵌入何时为何在神经机器翻译模型中有效
\
upcite
{
2018When
}
;如何在神经机器翻译模型中利用预训练的BERT模型
\upcite
{
DBLP:conf/emnlp/ClinchantJN19,DBLP:conf/emnlp/ImamuraS19,DBLP:conf/aaai/YangW0Z00020,DBLP:conf/aaai/WengYHCL20
}
;如何针对神经机器翻译任务进行预训练
\upcite
{
DBLP:journals/corr/abs-2001-08210,DBLP:conf/aaai/JiZDZCL20,DBLP:conf/acl/LewisLGGMLSZ20
}
;针对机器翻译中的Code-switching问题进行预训练
\upcite
{
DBLP:journals/corr/abs-2009-08088
}
;如何在微调过程中避免遗忘原始的语言模型任务
\up
cite
{
DBLP:journals/corr/abs-2010-09403
}
。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
...
...
@@ -436,6 +436,166 @@ Joint training for neural machine translation models with monolingual data
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\section
{
多语言翻译模型
}
\parinterval
低资源机器翻译面临的主要挑战是缺乏大规模高质量的双语数据。这个问题往往伴随着多语言的翻译任务
\upcite
{
dabre2019brief
}
\upcite
{
dabre2020survey
}
。也就是,要同时开发多个不同语言之间的机器翻译系统,其中少部分语言是富资源语言,而其它语言是低资源语言。针对低资源语种双语数据稀少或者缺失的情况,一种常见的思路是利用富资源语种的数据或者翻译模型帮助低资源翻译模型。这也构成了多语言翻译的思想,并延伸出大量的研究工作。
\parinterval
有三个典型研究方向:
\begin{itemize}
\vspace
{
0.5em
}
\item
基于枢轴语的方法,即以资源丰富的语言(通常为英语、汉语等)为中心,在语言对之间进行翻译
\upcite
{
DBLP:conf/emnlp/KimPPKN19
}
;
\vspace
{
0.5em
}
\item
基于知识蒸馏的方法,即用枢轴语到目标语言的训练指导源语言到目标语言的训练
\upcite
{
DBLP:conf/acl/ChenLCL17
}
;
\vspace
{
0.5em
}
\item
基于迁移学习的方法,即从富资源语言对中转移翻译知识以改善低资源语言对的翻译
\upcite
{
DBLP:conf/emnlp/KimPPKN19
}
,比如,将富资源的翻译知识迁移到零资源翻译模型上,即在没有双语训练数据的语言对之间进行翻译
\upcite
{
DBLP:journals/tacl/JohnsonSLKWCTVW17
}
。
\vspace
{
0.5em
}
\end{itemize}
\parinterval
下面对这些方法进行讨论。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection
{
基于枢轴语的方法
}
\parinterval
传统的多语言翻译中,广泛使用的是
{
\small\bfnew
{
基于枢轴语言的翻译
}}
(Pivot-based Translation)
\upcite
{
DBLP:conf/emnlp/KimPPKN19
}
。在这种方法中,会使用一种数据丰富语言作为
{
\small\bfnew
{
中介语言
}}
或者
{
\small\bfnew
{
枢轴语言
}}
(Pivot Language),之后让源语言和目标语言向枢轴语言进行翻译。这样,通过资源丰富的中介语言将源语言和目标语言桥接在一起,达到解决源语言-目标语言双语数据缺乏的问题。比如,想要得到泰语到波兰语的翻译,可以通过英语做枢轴。通过“泰语
$
\rightarrow
$
英语
$
\rightarrow
$
波兰语”的翻译过程完成泰语到波兰语的转换。
\parinterval
基于枢轴语的方法很早就出现在基于统计机器翻译中。在基于短语的机器翻译中,已经有很多方法建立了源到枢轴和枢轴到目标的短语/单词级别特征,并基于这些特征开发了源语言到目标语言的系统
\upcite
{
DBLP:conf/naacl/UtiyamaI07,DBLP:journals/mt/WuW07,Farsi2010somayeh,DBLP:conf/acl/ZahabiBK13,DBLP:conf/emnlp/ZhuHWZWZ14,DBLP:conf/acl/MiuraNSTN15
}
,这些系统也已经广泛用于翻译稀缺资源语言对
\upcite
{
DBLP:conf/acl/CohnL07,DBLP:journals/mt/WuW07,DBLP:conf/acl/WuW09
}
。由于基于枢轴语的方法与模型结构无关,因此该方法也快速适用于神经机器翻译,并且取得了不错的效果
\upcite
{
DBLP:conf/emnlp/KimPPKN19,DBLP:journals/corr/ChengLYSX16
}
。比如,可以直接使用源到枢轴和枢轴到目标的两个神经机器翻译模型,之后分别用两个模型进行翻译,得到最终的结果
\upcite
{
DBLP:conf/interspeech/KauersVFW02,de2006catalan
}
。在实现过程中,可以在枢轴语言中保留多个最佳翻译假设,以减少预测偏差
\upcite
{
DBLP:conf/naacl/UtiyamaI07
}
,并通过多系统融合改进最终翻译
\upcite
{
DBLP:conf/ijcnlp/Costa-JussaHB11
}
。
\parinterval
基于枢轴的方法可以被描述为如图
\ref
{
fig:16-1-ll
}
所示的过程。这里,使用虚线表示具有双语平行语料库的语言对,并使用带有箭头的实线表示翻译方向,令
$
x
$
,
$
y
$
和
$
p
$
分别表示源语言,目标语言和枢轴语言,对于输入源语言句子
$
x
$
和目标语言句子
$
y
$
,其翻译过程可以被建模为如下公式:
\begin{figure}
[h]
\centering
\includegraphics
[scale=1.0]
{
Chapter16/Figures/figure-pivot-based-translation-process.jpg
}
\caption
{
基于枢轴的翻译过程
}
\label
{
fig:16-1-ll
}
\end{figure}
\begin{equation}
\funp
{
P
}
(y|x) =
\sum
_{
p
}{
\funp
{
P
}
(p|x)
\funp
{
P
}
(y|p)
}
\label
{
eq:ll-1
}
\end{equation}
\noindent
其中,
$
p
$
表示一个枢轴语言句子,
$
\funp
{
P
(
y|x
)
}$
为从源语句子
$
x
$
翻译到目标语句子
$
y
$
的概率,
$
\funp
{
P
}
(
p|x
)
$
为从源语言句子
$
x
$
翻译到枢轴语言语句子
$
p
$
的概率,
$
\funp
{
P
}
(
y|p
)
$
为从枢轴语言句子
$
p
$
到目标语言句子
$
y
$
的概率。
\parinterval
$
\funp
{
P
}
(
p|x
)
$
和
$
\funp
{
P
}
(
y|p
)
$
可以直接复用既有的模型和方法。不过,枚举所有的枢轴语言语句子
$
p
$
是不可行的。因此一部分研究工作也探讨了如何选择有效的路径,从
$
x
$
经过少量
$
p
$
到达
$
y
$
\upcite
{
DBLP:conf/naacl/PaulYSN09
}
。
\parinterval
虽然基于枢轴语的方法简单且易于实现,但该方法仍有一些不足。例如,它需要两次翻译过程,因此增加了翻译时间。而且在两次翻译中,翻译错误会进行累积从而产生错误传播问题,导致模型翻译准确性降低。此外,基于枢轴的语言仍然假设源语言和枢轴语言(或者目标语言和枢轴语言)之间存在一定规模的双语平行数据,但是这个假设在很多情况下并不成立。比如,对于一些资源极度稀缺的语言,其到英语或者汉语的数据仍然十分缺乏,这时使用基于枢轴的方法的效果往往也并不理想。虽然存在以上问题,但是基于枢轴的方法仍然受到工业界的青睐,很多在线翻译引擎也在大量使用这种方法进行多语言的翻译。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection
{
基于知识蒸馏的方法(teacher-student)
}
\parinterval
为了解决基于枢轴的方法的问题,研究人员提出基于知识蒸馏的方法
\upcite
{
DBLP:conf/acl/ChenLCL17,DBLP:conf/iclr/TanRHQZL19
}
。知识蒸馏是一种常用的模型压缩方法
\upcite
{
DBLP:journals/corr/HintonVD15
}
,基于教师-学生框架,在第十三章已经进行了详细介绍。本节中主要介绍如何将知识蒸馏方法用于稀缺资源任务中。针对稀缺资源任务,基于教师-学生框架的方法
\upcite
{
DBLP:conf/acl/ChenLCL17
}
基本思想如图
\ref
{
fig:16-2-ll
}
所示。
\begin{figure}
[h]
\centering
\includegraphics
[scale=1.0]
{
Chapter16/Figures/figure-knowledge-distillation-based-translation-process.jpg
}
\caption
{
基于知识蒸馏的翻译过程
}
\label
{
fig:16-2-ll
}
\end{figure}
\noindent
其中,虚线表示具有平行语料库的语言对,带有箭头的实线表示翻译方向。这里,将枢轴语言(
$
p
$
)到目标语言(
$
y
$
)的翻译模型
$
\funp
{
P
}
(
y|p
)
$
当作教师模型,源语言(
$
x
$
)到目标语言(
$
y
$
)的翻译模型
$
\funp
{
P
}
(
y|x
)
$
当作学生模型。然后,用教师模型来指导学生模型的训练,这个过程中学习的目标就是让
$
\funp
{
P
}
(
y|x
)
$
尽可能地接近
$
\funp
{
P
}
(
y|p
)
$
,这样学生模型就可以学习到源语言到目标语言的翻译知识。
\parinterval
需要注意的是,基于知识蒸馏的方法需要基于翻译对等假设,该假设为:如果源语言句子
$
x
$
、枢轴语言句子
$
p
$
和目标语言句子
$
y
$
这三个句子互译,则从源语言句子
$
x
$
生成目标语言句子
$
y
$
的概率
$
\funp
{
P
}
(
y|x
)
$
应接近与源语言句子
$
x
$
对应的
$
p
$
的概率
$
\funp
{
P
}
(
y|p
)
$
,即:
\begin{equation}
\funp
{
P
}
(y|x)
\approx
\funp
{
P
}
(y|p)
\label
{
eq:ll-2
}
\end{equation}
\parinterval
和基于枢轴语的方法相比,基于教师-学生框架的方法无需训练源语言到枢轴语言的翻译模型,也就无需经历基于枢轴的方法中的两次翻译过程,翻译效率有所提升,又避免了两次翻译所面临的错误传播问题。
\parinterval
举个例子,假如图
\ref
{
fig:16-2-ll
}
中
$
x
$
为源语言德语 “hallo”,
$
p
$
为中间语言英语 “hello”,
$
y
$
为目标语言法语“bonjour”,则德语“hallo”翻译为法语“bonjour”的概率应该与英语“hello”翻译为法语“bonjour”的概率相近。
\parinterval
虽然基于知识蒸馏的方法相比于基于枢轴语的方法无论在性能还是效率上都具有一定优势。但是,它仍然需要显性的使用枢轴语言进行桥接,因此仍然面临着“源语言
$
\rightarrow
$
枢轴语言
$
\rightarrow
$
目标语言”转换中信息丢失的问题。比如,当枢轴语言到目标语言翻译效果较差时,由于教师模型无法提供准确的指导,学生模型也无法取得很好的学习效果。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection
{
基于迁移学习的方法
}
\parinterval
{
\small\bfnew
{
迁移学习
}}
(Transfer Learning)是一种机器学习的方法,指的是一个预训练的模型被重新用在另一个任务中,而并不是从头训练一个新的模型
\upcite
{
DBLP:conf/ijcnlp/Costa-JussaHB11,DBLP:journals/corr/HintonVD15
}
。迁移学习的目标是将某个领域或任务上学习到的知识应用到不同但相关的领域或问题中。在机器翻译中,可以用资源丰富的语言对中知识来改进稀缺资源语言对上的神经机器翻译性能,即将富资源语言对中知识迁移到稀缺资源知识中。
\parinterval
基于枢轴语言的方法需要显性的建立“源语言
$
\rightarrow
$
枢轴语言
$
\rightarrow
$
目标语言”的路径。这时,如果路径中某处出现了问题,就会成为整个路径的瓶颈。如果使用多个枢轴语言,这个问题会更加严重。不同于基于枢轴语言的方法,迁移学习无需进行两步解码,也就避免了翻译路径中累积错误的问题。
\parinterval
基于迁移学习的方法思想非常简单,如图
\ref
{
fig:16-3-ll
}
所示。迁移学习无需像传统的机器学习一样为每个任务单独训练一个模型,它将所有任务分类为源任务和目标任务,目标就是将源任务中的知识迁移到目标任务当中
\begin{figure}
[h]
\centering
\includegraphics
[scale=1.0]
{
Chapter16/Figures/figure-contrast-of-traditional-machine-learning
&
transfer-learning.jpg
}
\caption
{
传统机器学习
\&
迁移学习对比
}
\label
{
fig:16-3-ll
}
\end{figure}
\parinterval
在迁移学习中,所有任务的输出空间(词表)一样,但是服从不同的数据分布。由于不同语言空间(词表)不一样,所以多语言任务本身并不是迁移学习问题,因此可以进行共享词表,让所有语言使用同一个空间(词表)来使得多语言任务变成迁移学习问题。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection
{
1. 参数初始化方法
}
\parinterval
在解决多语言翻译这个问题的具体做法中,首先需要在富资源语言对上训练一个模型,将其称为
{
\small\bfnew
{
父模型
}}
(Parent Model)。在父模型的参数进行模型初始化基础上,训练资源不足的稀缺资源语言对模型,称之为
{
\small\bfnew
{
子模型
}}
(Child Model),这意味着低资源翻译模型将不会从随机权重开始学习,而是从父模型的权重开始
\upcite
{
gu2018meta,DBLP:conf/icml/FinnAL17,DBLP:conf/naacl/GuHDL18
}
,参数初始化也是迁移学习的核心方法。在图
\ref
{
fig:16-4-ll
}
中,左侧模型为父模型,右侧模型为子模型。我们假设从英语到中文语言的翻译为富资源翻译,从英语到德语语言的翻译为稀缺资源翻译,则首先用英中双语平行语料库训练出一个初始化的父模型,之后再用英德的数据在父模型上微调得到子模型,这个子模型即为我们想要得到的迁移学习的模型。此过程可以看作是在富资源训练模型上对稀缺资源语言对进行微调,将富资源语言对中知识迁移到稀缺资源语言对中,从而提升稀缺资源语言对模型性能。
\begin{figure}
[h]
\centering
\includegraphics
[scale=1.0]
{
Chapter16/Figures/figure-parameter-initialization-method-diagram.jpg
}
\caption
{
参数初始化方法图
}
\label
{
fig:16-4-ll
}
\end{figure}
\parinterval
尽管这种方法在某些资源匮乏的语言对中取得了成功,但在资源极度匮乏或零资源的翻译方案中仍然表现不佳。具体而言,如果没有任何子模型训练数据,则父模型在子测试集上的性能会很糟糕
\upcite
{
DBLP:conf/wmt/KocmiB18
}
。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection
{
2. 多语言单模型系统
}
\parinterval
多语言单模型方法也可以被看做是一种迁移学习。多语言单模型方法能够有效地改善低资源神经机器翻译性能
\upcite
{
DBLP:journals/tacl/JohnsonSLKWCTVW17,DBLP:conf/lrec/RiktersPK18,dabre2019brief
}
,尤其适用于翻译方向较多的情况,因为为每一个翻译方向单独训练一个模型是不实际的,不仅由于设备资源和时间上的限制,还由于很多翻译方向都没有双语平行数据。比如要翻译100个语言之间的互译的系统,理论上就需要训练
$
100
\times
99
$
个翻译模型,代价是十分巨大的。这时就需要用到多语言单模型方法。
\parinterval
多语言单模型系统即用单个模型训练具有多个语言翻译方向的系统。对于源语言集合
$
G
_
x
$
和目标语言集合
$
G
_
y
$
,多语言单模型的学习目标是学习一个单一的模型,这个模型可以进行任意源语言到任意目标语言翻译,即同时支持所有
$
(
x,y
)
\in
(
G
_
x,G
_
y
)
$
的翻译。多语言单模型方法又可以进一步分为一对多
\upcite
{
DBLP:conf/acl/DongWHYW15
}
、多对一
\upcite
{
DBLP:journals/tacl/LeeCH17
}
和多对多
\upcite
{
DBLP:conf/naacl/FiratCB16
}
的方法。不过这些方法本质上是相同的,因此这里以多对多翻译为例进行介绍。
\parinterval
在模型结构方面,多语言模型与普通的神经机器翻译模型相同,都是标准的编码-解码结构。多语言单模型方法的一个假设是:不同语言可以共享同一个表示空间。因此,该方法使用同一个编码器处理所有的源语言句子,使用同一个解码器处理所有的目标语言句子。为了使多个语言共享同一个解码器(或编码器),一种简单的方法是直接在输入句子上加入语言标记,让模型显性地知道当前句子属于哪个语言。如图
\ref
{
fig:16-5-ll
}
所示,在此示例中,标记“ <spanish>”指示目标句子为西班牙语,标记“ <german>”指示目标句子为德语,则模型在进行翻译时便会将句子开头加<spanish>标签的句子翻译为西班牙语
\upcite
{
DBLP:journals/tacl/JohnsonSLKWCTVW17
}
。假设训练时有英语到西班牙语 “<spanish> Hello”
$
\rightarrow
$
“Hola”和法语到德语“<german> Bonjour”
$
\rightarrow
$
“Hallo” 的双语句对,则在解码时候输入英语“<german> Hello”时就会得到解码结果“Hallo”。
\begin{figure}
[h]
\centering
\includegraphics
[scale=1.0]
{
Chapter16/Figures/multi-language-single-model-system-diagram.jpg
}
\caption
{
参数初始化方法图
}
\label
{
fig:16-5-ll
}
\end{figure}
\parinterval
多语言单模型系统无需训练基于枢轴语言的翻译系统,而是共享多个语言的编码器和解码器,因此极大提升了训练效率,因此更适用于某些语言翻译方向训练数据极度稀缺的情况。具体在使用时,又体现为基于迁移学习的方法和零资源翻译方法两种。
%----------------------------------------------------------------------------------------
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection
{
3. 零资源翻译
}
\parinterval
零资源翻译是一种极端的情况:源语言和目标语言之间没有任何对齐的数据。这时,系统需要学到一个模型,它可以让系统即使在没看到这个翻译任务中的训练数据的情况下,但在遇到的时候依然能通过这个模型得到这个翻译任务上的译文结果。本质上,零资源翻译也是一种迁移学习
\upcite
{
DBLP:books/crc/aggarwal14/Pan14,DBLP:journals/tkde/PanY10
}
,只是迁移的目标任务没有直接可以用的数据。
\parinterval
以德语到西班牙语的翻译为例,假设此翻译语言方向为零资源,即没有德语到西班牙语的训练数据,因此不适用于多语言单模型系统中提到的一对多或多对一的情况,只适用于多对多的翻译情况。在翻译时,训练数据的源语言可以进行加标签指定或是不指定目标语言种类,若不进行指定,存在潜在的缺点就是具有相同拼写但属于不同源语言的不同含义的单词可能难以翻译,但优点是整个多语言翻译的流程更简单。在翻译时假设多语言单模型系统中已经学习到了德语到英语和英语到西班牙语的翻译,那么模型也可以进行德语到西班牙语的翻译。从这个角度说,零资源神经机器翻译
\upcite
{
DBLP:journals/tacl/JohnsonSLKWCTVW17
}
也需要枢轴语言,只是这些枢轴语言数据仅在训练期间使用,而无需生成伪并行语料库。
\parinterval
需要注意的是,零资源翻译中多个语言共享同一个表示模型这个假设并不是永远成立。比如,汉语和英语的文字符号不同,因此用同一个表示模型对其进行表示会产生较大的偏差。因此,对于语言差异较大,且数据量不充分的情况,使用多语言单模型方法仍然有较大挑战:
\begin{itemize}
\vspace
{
0.5em
}
\item
父模型和子模型之间的语言空间不匹配问题:父模型使用的语言跟子模型使用的语言的数据很少甚至没有(零资源)的情况下,无法通过训练弥补父模型跟子模型之间的差异,因此微调的结果很差。一种解决方案是先预训练一个多语言的模型,然后固定这个预训练模型的部分参数后训练父模型,最后从父模型中微调子模型
\upcite
{
ji2020cross
}
。这样做的好处在于先用预训练提取父模型的任务和子模型的任务之间通用的信息(保存在模型参数里),然后强制在训练父模型的时候保留这些信息(通过固定参数),这样最后微调子模型的时候就可以利用这些通用信息,减少了父模型和子模型之间的差异,使得微调的结果得到提升。
{
\red
{
(加参考文献)
}}
\vspace
{
0.5em
}
\item
脱靶翻译问题:多语言单模型系统经常出现脱靶翻译问题,即把源语翻译成错误的目标语言,比如要求翻译成英文,结果却是中文或者英文夹杂其他语言的字符。这是因为多语言单模型系统对所有语言都使用一样的参数,导致每个语言竞争系统固定的建模能力。研究人员提出在原来共享参数的基础上为每种语言添加额外的独立的参数,使得每种语言拥有足够的建模能力,以便于特定语言的翻译
\upcite
{
DBLP:conf/acl/ZhangWTS20
}
。
{
\red
{
(加参考文献)
}}
\vspace
{
0.5em
}
\end{itemize}
%----------------------------------------------------------------------------------------
% NEW SECTION
%----------------------------------------------------------------------------------------
\section
{
无监督机器翻译
}
...
...
@@ -449,7 +609,7 @@ Joint training for neural machine translation models with monolingual data
\subsection
{
无监督词典归纳
}
\parinterval
词典归纳(Bilingual Dictionary Induction,BDI),也叫词典推断,是实现语种间单词级别翻译的任务。在统计机器翻译中,词典归纳是一项核心的任务,它从双语平行语料中发掘互为翻译的单词,是翻译知识的主要来源
\
cite
{
黄书剑0统计机器翻译中的词对齐研究
}
。在端到端的神经机器翻译中,词典归纳通常作为一个下游任务被用到无监督机器翻译、多语言机器翻译等任务中。在神经机器翻译中,单词通过连续化的向量来表示,词表分布在一个高维的空间中,基于人们对embedding空间的观察发现:连续的单词嵌入空间在各种语言中显示出类似的结构,这使得直接利用embedding来诱导双语词典成为可能。其基本想法是先将来自不同语言的embedding投影到共享嵌入空间中,然后在此共享空间中诱导出双语词典。研究人员们进行了众多的尝试,较早的尝试是使用一个包含数千词对的种子词典作为锚点来学习从源语到目标语词嵌入空间的线性映射,将两个语言的词汇投影到共享的嵌入空间之后,执行一些对齐算法即可得到双语词典
\cite
{
DBLP:journals/corr/MikolovLS13
}
。最近的研究表明,词典归纳可以在更弱的监督信号下被诱导,这些监督信号来自数百对小词典
\cite
{
DBLP:conf/acl/VulicK16
}
、相同的字符串
\cite
{
DBLP:conf/iclr/SmithTHH17
}
,甚至仅仅是共享的数字
\
cite
{
DBLP:conf/acl/ArtetxeLA17
}
。
\parinterval
词典归纳(Bilingual Dictionary Induction,BDI),也叫词典推断,是实现语种间单词级别翻译的任务。在统计机器翻译中,词典归纳是一项核心的任务,它从双语平行语料中发掘互为翻译的单词,是翻译知识的主要来源
\
upcite
{
黄书剑0统计机器翻译中的词对齐研究
}
。在端到端的神经机器翻译中,词典归纳通常作为一个下游任务被用到无监督机器翻译、多语言机器翻译等任务中
\cite
{
DBLP:conf/emnlp/VulicGRK19
}
。在神经机器翻译中,单词通过连续化的向量来表示,词表分布在一个高维的空间中,基于人们对embedding空间的观察发现:连续的单词嵌入空间在各种语言中显示出类似的结构,这使得直接利用embedding来诱导双语词典成为可能
\cite
{
DBLP:journals/corr/MikolovLS13
}
。其基本想法是先将来自不同语言的embedding投影到共享嵌入空间中,然后在此共享空间中诱导出双语词典。研究人员们进行了众多的尝试,较早的尝试是使用一个包含数千词对的种子词典作为锚点来学习从源语到目标语词嵌入空间的线性映射,将两个语言的词汇投影到共享的嵌入空间之后,执行一些对齐算法即可得到双语词典
\upcite
{
DBLP:journals/corr/MikolovLS13
}
。此后的一些研究表明,词典归纳可以在更弱的监督信号下被诱导,这些监督信号可以是数百对小词典
\upcite
{
DBLP:conf/acl/VulicK16
}
、相同的字符串
\upcite
{
DBLP:conf/iclr/SmithTHH17
}
,甚至仅仅是共享的数字
\up
cite
{
DBLP:conf/acl/ArtetxeLA17
}
。
\parinterval
在最近,有人提出了完全无监督的词典归纳方法,这类方法不依赖于任何种子词典即可实现词典归纳,下面进行介绍。
...
...
@@ -459,13 +619,13 @@ Joint training for neural machine translation models with monolingual data
\subsubsection
{
1. 方法框架
}
\parinterval
无监督词典归纳的核心思想是充分利用embedding空间近似同构的假设,基于一些无监督匹配的方法来得到一个初始化的种子词典,之后利用该种子词典作为起始
监督信号不断进行微调进一步提高性能,总结起来,无监督词典归纳系统通常包括以下两个阶段:
\parinterval
实现词典推断的核心步骤是把来自不同语言的embedding投影到共享嵌入空间中,那么缺乏监督信号怎样才能得到两个embedding空间的映射矩阵呢?目前仅有的信息是本任务的基本假设
\ \dash\
embedding空间近似同构,所以无监督词典归纳的核心思想是充分利用该假设所提供的信息,首先基于一些无监督匹配的方法来得到一个初始化的种子词典,之后利用该种子词典作为起始的
监督信号不断进行微调进一步提高性能,总结起来,无监督词典归纳系统通常包括以下两个阶段:
\begin{itemize}
\vspace
{
0.5em
}
\item
基于无监督的分布匹配。该步骤利用一些无监督的方法来得到一个包含噪声的初始化词典
D
。
\item
基于无监督的分布匹配。该步骤利用一些无监督的方法来得到一个包含噪声的初始化词典
$
D
$
。
\vspace
{
0.5em
}
\item
基于有监督的微调。利用两个单语embedding和第一步阶段中学习到的种子字典执行一些对齐算法例如Procrustes Analysis
\cite
{
1966ASchnemann
}
来迭代微调。
\item
基于有监督的微调。利用两个单语embedding和第一步阶段中学习到的种子字典执行一些对齐算法例如Procrustes Analysis
\
up
cite
{
1966ASchnemann
}
来迭代微调。
\vspace
{
0.5em
}
\end{itemize}
...
...
@@ -480,9 +640,9 @@ Joint training for neural machine translation models with monolingual data
\begin{itemize}
\vspace
{
0.5em
}
\item
对于图A中的分布在不同空间中的两个单语embedding
X和Y,基于两者近似同构的假设,利用无监督匹配的方法来得到一个粗糙的线性映射W
,结果如图B所示。
\item
对于图A中的分布在不同空间中的两个单语embedding
$
X
$
和
$
Y
$
,基于两者近似同构的假设,利用无监督匹配的方法来得到一个粗糙的线性映射
$
W
$
,结果如图B所示。
\vspace
{
0.5em
}
\item
利用映射W可以
执行一些对齐算法从而诱导出一个种子词典,如图C所示。
\item
在共享的空间中
执行一些对齐算法从而诱导出一个种子词典,如图C所示。
\vspace
{
0.5em
}
\item
利用种子词典不断迭代微调进一步提高映射性能,最终映射的效果如图D所示,之后即可从中推断出词典作为最后的结果。
\vspace
{
0.5em
}
...
...
@@ -492,29 +652,24 @@ Joint training for neural machine translation models with monolingual data
\begin{itemize}
\vspace
{
0.5em
}
\item
基于GAN的方法
\
cite
{
DBLP:conf/iclr/LampleCRDJ18,DBLP:conf/acl/ZhangLLS17,DBLP:conf/emnlp/XuYOW18,DBLP:conf/naacl/MohiuddinJ19
}
。GAN 是被广泛用于解决无监督学习问题的模型,在这个任务中,通过生成器来产生映射W,鉴别器负责区分随机抽样的元素WX 和Y,两者共同优化收敛后即可得到映射W
。
\item
基于GAN的方法
\
upcite
{
DBLP:conf/iclr/LampleCRDJ18,DBLP:conf/acl/ZhangLLS17,DBLP:conf/emnlp/XuYOW18,DBLP:conf/naacl/MohiuddinJ19
}
。GAN 是被广泛用于解决无监督学习问题的模型,在这个任务中,通过生成器来产生映射
$
W
$
,鉴别器负责区分随机抽样的元素
$
WX
$
和
$
Y
$
,两者共同优化收敛后即可得到映射
$
W
$
。
\vspace
{
0.5em
}
\item
基于Gromov-Wasserstein 的方法
\
cite
{
DBLP:conf/emnlp/Alvarez-MelisJ18,DBLP:conf/lrec/GarneauGBDL20,DBLP:journals/corr/abs-1811-01124,DBLP:conf/emnlp/XuYOW18
}
。Wasserstein distance是在度量空间中定义两个概率分布之间距离的函数,在这个任务中,它用来衡量不同语言中单词对之间的相似性,利用空间近似同构的信息可以定义出一些目标函数,之后通过优化该目标函数也可以得到映射W
。
\item
基于Gromov-Wasserstein 的方法
\
upcite
{
DBLP:conf/emnlp/Alvarez-MelisJ18,DBLP:conf/lrec/GarneauGBDL20,DBLP:journals/corr/abs-1811-01124,DBLP:conf/emnlp/XuYOW18
}
。Wasserstein 距离是在度量空间中定义两个概率分布之间距离的函数,在这个任务中,它用来衡量不同语言中单词对之间的相似性,利用空间近似同构的信息可以定义出一些目标函数,之后通过优化该目标函数也可以得到映射
$
W
$
。
\vspace
{
0.5em
}
\end{itemize}
\parinterval
在得到映射
W之后,对于X中的任意一个单词x,通过 Wx将其映射到空间Y中,然后在Y中找到该点的最近邻点y,于是y就是x的翻译词,重复该过程即可归纳出种子词典D,第一阶段结束。事实上,由于第一阶段缺乏监督信号,因此得到的种子词典D会包含大量的噪音,性能并不高,因此需要进行进一步的微调。微调的原理普遍基于Procrustes
\
cite
{
DBLP:journals/corr/MikolovLS13
}
,该方法的原理如下:
\parinterval
在得到映射
$
W
$
之后,对于
$
X
$
中的任意一个单词
$
x
$
,通过
$
Wx
$
将其映射到空间
$
Y
$
中,然后在
$
Y
$
中找到该点的最近邻点
$
y
$
,于是
$
y
$
就是
$
x
$
的翻译词,重复该过程即可归纳出种子词典
$
D
$
,第一阶段结束。事实上,由于第一阶段缺乏监督信号,因此得到的种子词典
$
D
$
会包含大量的噪音,性能并不高,因此需要进行进一步的微调。微调的原理普遍基于Procrustes
\up
cite
{
DBLP:journals/corr/MikolovLS13
}
,该方法的原理如下:
\parinterval
假设现在有一个种子词典
$
D
=
\left\{
x
_{
i
}
, y
_{
i
}
\right\}
_{
i
\in\{
1
, n
\}
}$
,和两个单语embedding
X、Y,那么我们就可以将D作为映射锚点(anchor)学习一个转移矩阵 W,使得 WX与 Y这两个空间尽可能相近,此外通过对W施加正交约束可以显著提高能
\cite
{
DBLP:conf/naacl/XingWLL15
}
,于是这个优化问题就转变成了Procrustes问题
\
cite
{
DBLP:conf/iclr/SmithTHH17
}
,可以通过奇异值分解(Singular Value Decomposition,SVD)来获得近似解:
\parinterval
假设现在有一个种子词典
$
D
=
\left\{
x
_{
i
}
, y
_{
i
}
\right\}
_{
i
\in\{
1
, n
\}
}$
,和两个单语embedding
$
X
$
、
$
Y
$
,那么我们就可以将
$
D
$
作为映射锚点(anchor)学习一个转移矩阵
$
W
$
,使得
$
WX
^{
'
}$
与
$
Y
^{
'
}$
这两个空间尽可能相近(
$
X
^{
'
}$
和
$
Y
^{
'
}$
是取
$
D
$
中的单词按行对齐构成),此外通过对
$
W
$
施加正交约束可以显著提高能
\upcite
{
DBLP:conf/naacl/XingWLL15
}
,于是这个优化问题就转变成了Procrustes问题
\up
cite
{
DBLP:conf/iclr/SmithTHH17
}
,可以通过奇异值分解(Singular Value Decomposition,SVD)来获得近似解:
\begin{eqnarray}
W
^{
\star
}
=
\underset
{
W
\in
O
_{
d
}
(
\mathbb
{
R
}
)
}{
\operatorname
{
argmin
}}
\|
W X
-Y
\|
_{
\mathrm
{
F
}}
=U V
^{
T
}
,
\text
{
with
}
U
\Sigma
V
^{
T
}
=
\operatorname
{
SVD
}
\left
(Y X
^{
T
}
\right
)
W
^{
\star
}
=
\underset
{
W
\in
O
_{
d
}
(
\mathbb
{
R
}
)
}{
\operatorname
{
argmin
}}
\|
W X
{
'
}
-Y
{
'
}
\|
_{
\mathrm
{
F
}}
=U V
^{
T
}
,
\text
{
with
}
U
\Sigma
V
^{
T
}
=
\operatorname
{
SVD
}
\left
(Y
{
'
}
X
^{
'
T
}
\right
)
\label
{
eq:16-1
}
\end{eqnarray}
\parinterval
上式子中,SVD中的Y和X行对齐,利用上式可以获得新的W,通过W可以归纳出新的D,如此迭代进行微调最后即可以得到收敛的D。
\parinterval
利用上式可以获得新的
$
W
$
,通过
$
W
$
可以归纳出新的
$
D
$
,如此迭代进行微调最后即可以得到收敛的
$
D
$
。
\parinterval
整体的无监督词典归纳工作主要集中在两个方向,一个方向是通过新的建模方法或改进上述两阶段来提升无监督词典归纳的性能
\upcite
{
DBLP:conf/emnlp/DouZH18,DBLP:conf/emnlp/HoshenW18,DBLP:conf/emnlp/KimGN18,DBLP:conf/emnlp/MukherjeeYH18,DBLP:conf/emnlp/Alvarez-MelisJ18,DBLP:conf/emnlp/XuYOW18,DBLP:conf/acl/HuangQC19,DBLP:conf/naacl/MohiuddinJ19,DBLP:conf/acl/YangLCLS19,DBLP:conf/acl/ArtetxeLA19a,DBLP:conf/rep4nlp/VulicKG20,DBLP:conf/emnlp/ChenC18,DBLP:conf/emnlp/TaitelbaumCG19,DBLP:journals/corr/abs-1811-01124,DBLP:conf/naacl/HeymanVVM19
}
,一个方向是分析或提升无监督词典归纳的鲁棒性
\upcite
{
DBLP:conf/acl/SogaardVR18,DBLP:conf/acl/OrmazabalALSA19,DBLP:conf/emnlp/VulicGRK19,DBLP:conf/emnlp/JoulinBMJG18,DBLP:conf/lrec/GarneauGBDL20,A2020Li,hartmann2018empirical,DBLP:conf/nips/HartmannKS19,DBLP:conf/emnlp/HartmannKS18,DBLP:conf/emnlp/Kementchedjhieva19
}
\parinterval
目前整体的无监督词典归纳工作主要集中在两个方向,一个方向是通过用新的建模方法或改进上述两阶段方法来提升无监督词典归纳的性能,另外一个方向是旨在分析或提升无监督词典归纳的鲁棒性,相关工作如下:
\begin{itemize}
\vspace
{
0.5em
}
\item
提升词典归纳的性能。比如,基于变分自编码器(Variational Autoencoders,VAEs)的方法
\cite
{
DBLP:conf/emnlp/DouZH18
}
;基于PCA的方法
\cite
{
DBLP:conf/emnlp/HoshenW18
}
;基于语言模型和噪声自编码器的方法
\cite
{
DBLP:conf/emnlp/KimGN18
}
;基于互信息的方法
\cite
{
DBLP:conf/emnlp/MukherjeeYH18
}
;基于GAN的方法(WORD TRANSLATION WITHOUT PARALLEL DATA);基于Gromov-Wasserstein匹配的方法
\cite
{
DBLP:conf/emnlp/Alvarez-MelisJ18
}
;多语言无监督词典归纳
\cite
{
DBLP:conf/emnlp/ChenC18,DBLP:conf/emnlp/TaitelbaumCG19,DBLP:journals/corr/abs-1811-01124,DBLP:conf/naacl/HeymanVVM19
}
;基于Sinkhorn距离和反向翻译的方法
\cite
{
DBLP:conf/emnlp/XuYOW18
}
;改进归纳阶段寻找最近邻点的度量函数
\cite
{
DBLP:conf/acl/HuangQC19
}
;基于对抗自编码器的方法
\cite
{
DBLP:conf/naacl/MohiuddinJ19
}
;基于语言形态学感知的方法
\cite
{
DBLP:conf/acl/YangLCLS19
}
;基于无监督机器翻译的方法
\cite
{
DBLP:conf/acl/ArtetxeLA19a
}
;基于后处理embedding的方法
\cite
{
DBLP:conf/rep4nlp/VulicKG20
}
。
\item
分析或提升无监督词典归纳的鲁棒性。分析无监督词典归纳的局限性
\cite
{
DBLP:conf/acl/SogaardVR18,DBLP:conf/acl/OrmazabalALSA19,DBLP:conf/emnlp/VulicGRK19
}
;提出新的初始化方法和改进迭代阶段
\cite
{
DBLP:conf/lrec/GarneauGBDL20
}
;改进优化目标函数
\cite
{
DBLP:conf/emnlp/JoulinBMJG18
}
;通过降维改进初始化阶段
\cite
{
A2020Li
}
;分析基于GAN方法的稳定性
\cite
{
hartmann2018empirical
}
;分析和对比各种无监督方法性能
\cite
{
DBLP:conf/nips/HartmannKS19
}
;分析无监督对齐方法的挑战和难点
\cite
{
DBLP:conf/emnlp/HartmannKS18
}
;通过实验分析指出目前所用的数据集存在一些问题
\cite
{
DBLP:conf/emnlp/Kementchedjhieva19
}
。
\vspace
{
0.5em
}
\end{itemize}
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
...
...
@@ -522,14 +677,14 @@ W^{\star}=\underset{W \in O_{d}(\mathbb{R})}{\operatorname{argmin}}\|W X-Y\|_{\m
\subsubsection
{
2. 鲁棒性问题
}
\parinterval
目前很多无监督词典归纳方法在相似语言对比如英-法,英-德已经取得不错的结果,然而在远距离语言对比如英-中,英-日等性能仍然很差,很多甚至为0
\cite
{
DBLP:conf/emnlp/VulicGRK19,A2020Li
}
,无监督词典归纳的鲁棒性仍然存在巨大的挑战。这有多个层面的原因:
\parinterval
目前很多无监督词典归纳方法在相似语言对比如英-法,英-德已经取得不错的结果,然而在远距离语言对比如英-中,英-日等性能仍然很差,很多甚至为0
\
up
cite
{
DBLP:conf/emnlp/VulicGRK19,A2020Li
}
,无监督词典归纳的鲁棒性仍然存在巨大的挑战。这有多个层面的原因:
\begin{itemize}
\vspace
{
0.5em
}
\item
首先词典归纳依赖于基于大规模单语语料训练出来的embedding,而embedding会受到单语数据的来源领域及数量、词向量训练算法、超参数配置等多方面因素的影响,这很容易导致假设的失效,从而使得模型运行失败。
\vspace
{
0.5em
}
\item
词典归纳强烈依赖于embedding空间近似同构的假设,然而许多语言对由于语言本身天然的差异导致该假设往往很弱,无监督系统通常是基于两阶段的方法,起始阶段由于缺乏监督信号的引导很容易就失败,从而导致后面的阶段无法有效运行。
\cite
{
DBLP:conf/acl/SogaardVR18,A2020Li
}
\item
词典归纳强烈依赖于embedding空间近似同构的假设,然而许多语言对由于语言本身天然的差异导致该假设往往很弱,无监督系统通常是基于两阶段的方法,起始阶段由于缺乏监督信号的引导很容易就失败,从而导致后面的阶段无法有效运行。
\
up
cite
{
DBLP:conf/acl/SogaardVR18,A2020Li
}
\vspace
{
0.5em
}
\item
由于embedding本身表示上的局限性,模型无法实现单词多对多的对齐,而且对于一些相似的词或者实体名词模型也很难实现对齐。
...
...
@@ -545,7 +700,7 @@ W^{\star}=\underset{W \in O_{d}(\mathbb{R})}{\operatorname{argmin}}\|W X-Y\|_{\m
\subsection
{
无监督统计机器翻译
}
\parinterval
上一节提到的无监督词典归纳允许我们在没有任何人类标注的情况下获得双语词典。在这个基础上,我们可以进一步得到句子间的翻译,实现无监督机器翻译
\cite
{
DBLP:journals/talip/MarieF20
}
。
\parinterval
上一节提到的无监督词典归纳允许我们在没有任何人类标注的情况下获得双语词典。在这个基础上,我们可以进一步得到句子间的翻译,实现无监督机器翻译
\
up
cite
{
DBLP:journals/talip/MarieF20
}
。
\parinterval
回顾统计机器翻译,它主要涉及短语表,语言模型,调序模型以及模型调优四个模块。其中短语表和模型调优需要双语数据,而语言模型和调序模型只依赖于单语数据。因此,如果我们可以通过无监督的方法完成短语表和模型调优,那么我们就得到了无监督统计机器翻译系统。
...
...
@@ -580,7 +735,7 @@ P(t|s)=\frac{\mathrm{cos}(s,t)/\tau}{\sum_{t'}\mathrm{cos}(s,t')\tau}
\parinterval
经过上述的无监督模型调优后,我们获得了一个比未经调优效果更好的翻译模型。这时候一个自然的想法就是我们可以使用这个更好更强的翻译模型去产生质量更高的数据,然后用这些数据来继续对我们的翻译模型进行调优,如此反复迭代一定次数后停止。这个方法也被称为
{
\small\bfnew
{
迭代优化
}}
(Iterative Refinement)。
\parinterval
迭代优化也会带来另外一个问题:在每一次迭代中都会产生新的模型,我们应该什么时候停止生成新模型,并且最终挑选哪一个模型?因为在无监督的场景当中我们没有任何双语数据,所以我们无法使用监督学习里的校验集来对每个模型进行检验并筛选。另外,即使我们有很少量的双语数据(比如100条双语句对),直接在上面挑选超参数会导致非常严重的过拟合,使得最后结果越来越差。一个经验上非常高效的挑选标准是我们可以挑选一些句子,然后使用我们的模型把这些句子翻译过去之后再翻译回来(源语
$
\to
$
目标语
$
\to
$
源语或者目标语
$
\to
$
源语
$
\to
$
目标语),得到的结果跟原始的结果计算BLEU,得分越高则效果越好。这样一个无监督模型挑选标准经验上被证明是跟使用大的双语校验集的结果高度相关
\cite
{
DBLP:conf/emnlp/LampleOCDR18
}
。
\parinterval
迭代优化也会带来另外一个问题:在每一次迭代中都会产生新的模型,我们应该什么时候停止生成新模型,并且最终挑选哪一个模型?因为在无监督的场景当中我们没有任何双语数据,所以我们无法使用监督学习里的校验集来对每个模型进行检验并筛选。另外,即使我们有很少量的双语数据(比如100条双语句对),直接在上面挑选超参数会导致非常严重的过拟合,使得最后结果越来越差。一个经验上非常高效的挑选标准是我们可以挑选一些句子,然后使用我们的模型把这些句子翻译过去之后再翻译回来(源语
$
\to
$
目标语
$
\to
$
源语或者目标语
$
\to
$
源语
$
\to
$
目标语),得到的结果跟原始的结果计算BLEU,得分越高则效果越好。这样一个无监督模型挑选标准经验上被证明是跟使用大的双语校验集的结果高度相关
\
up
cite
{
DBLP:conf/emnlp/LampleOCDR18
}
。
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
...
...
@@ -588,7 +743,7 @@ P(t|s)=\frac{\mathrm{cos}(s,t)/\tau}{\sum_{t'}\mathrm{cos}(s,t')\tau}
\subsection
{
无监督神经机器翻译
}
\parinterval
既然神经机器翻译已经证明在大多数情况下都优于统计机器翻译,为什么我们不直接做无监督神经机器翻译呢?实际上由于神经网络的黑盒特性,我们无法像统计机器翻译那样非常直观的定位并解决无监督神经机器翻译。一个折衷的方案是我们借助已经成功的无监督方法来为神经机器翻译模型提供少量双语监督信号,然后在这个基础上训练模型。由于初始的监督信号可能很少或者包含大量噪声,我们需要逐步优化数据来重新训练出更好的模型。这个方案最简单直接的实现就是借助已经成功的无监督统计机器翻译模型产生伪双语数据来训练神经机器翻译模型 ,然后模型进行迭代回译来进行数据优化,如图
\ref
{
fig:16-1
}
所示
\cite
{
DBLP:conf/acl/ArtetxeLA19
}
。这个方法的优点是直观,并且性能稳定,容易调试(所有模块都互相独立),缺点是复杂繁琐,涉及许多超参数调整工作。
\parinterval
既然神经机器翻译已经证明在大多数情况下都优于统计机器翻译,为什么我们不直接做无监督神经机器翻译呢?实际上由于神经网络的黑盒特性,我们无法像统计机器翻译那样非常直观的定位并解决无监督神经机器翻译。一个折衷的方案是我们借助已经成功的无监督方法来为神经机器翻译模型提供少量双语监督信号,然后在这个基础上训练模型。由于初始的监督信号可能很少或者包含大量噪声,我们需要逐步优化数据来重新训练出更好的模型。这个方案最简单直接的实现就是借助已经成功的无监督统计机器翻译模型产生伪双语数据来训练神经机器翻译模型 ,然后模型进行迭代回译来进行数据优化,如图
\ref
{
fig:16-1
}
所示
\
up
cite
{
DBLP:conf/acl/ArtetxeLA19
}
。这个方法的优点是直观,并且性能稳定,容易调试(所有模块都互相独立),缺点是复杂繁琐,涉及许多超参数调整工作。
\begin{figure}
[h]
\centering
...
...
@@ -597,7 +752,7 @@ P(t|s)=\frac{\mathrm{cos}(s,t)/\tau}{\sum_{t'}\mathrm{cos}(s,t')\tau}
\label
{
fig:16-1
}
\end{figure}
\parinterval
既然无监督神经机器翻译问题的核心在于通过无监督方法提供初始的监督信号,另一个思路就是直接从无监督词典归纳中得到神经机器翻译模型,从而避免繁琐的无监督统计机器翻译模型训练过程,同时也避免神经机器翻译模型继承统计机器翻译模型的错误,如图
\ref
{
fig:16-2
}
所示。这种方法的核心就是把翻译看成一个两阶段的过程:无监督词典归纳首先通过双语词典把一个源语句子转换成一个不通顺但是意思完整的目标语译文,然后把这样一个不通顺的句子改写成一个流畅的句子,同时保留原来的含义,最后达到翻译的目的。而第二阶段的改写任务其实也是一个特殊的翻译任务,因为翻译任务本质就是映射两个不同形态的序列并且保持两者之间语义上的一致,只不过现在的源语和目标语都是使用不同的表达方式表达的同一种语言。因此我们可以使用神经机器翻译模型来完成这个任务,而且由于这个任务不再涉及双语数据而只需要单语数据,模型的训练也将是无监督的。尽管这样的方法不再需要无监督统计机器翻译,并且适应能力很强(对于新语种,不需要重新训练神经机器翻译模型,只需要训练无监督词典归纳进行词的翻译,然后使用相同的模型进行改写),但是目前训练数据需要使用其他语种对的双语数据来进行构造(把源语句子里每个词使用双语词典进行翻译作为输入,输出的目标语句子不变)。虽然可以通过把单语句子根据规则或者随机进行打乱来生成训练数据,但是这些句子不符合语言学的规律并且跟实际应用里见到的句子所服从的数据分布不一致,导致训练测试不一致的问题。最后,这个思路简化了部分流程,但是两个阶段的过程无法避免最终翻译模型继承来自无监督词典归纳的错误
\
cite
{
DBLP:conf/acl/PourdamghaniAGK19
}
。一个相对更简洁一些的方法则是把无监督词典归纳得到的词典对单语数据进行逐词的翻译,然后在相应的伪数据上训练最初的翻译模型,最后不断地交替优化数据和模型,得到更好的翻译模型
\
cite
{
DBLP:conf/iclr/LampleCDR18
}
。
\parinterval
既然无监督神经机器翻译问题的核心在于通过无监督方法提供初始的监督信号,另一个思路就是直接从无监督词典归纳中得到神经机器翻译模型,从而避免繁琐的无监督统计机器翻译模型训练过程,同时也避免神经机器翻译模型继承统计机器翻译模型的错误,如图
\ref
{
fig:16-2
}
所示。这种方法的核心就是把翻译看成一个两阶段的过程:无监督词典归纳首先通过双语词典把一个源语句子转换成一个不通顺但是意思完整的目标语译文,然后把这样一个不通顺的句子改写成一个流畅的句子,同时保留原来的含义,最后达到翻译的目的。而第二阶段的改写任务其实也是一个特殊的翻译任务,因为翻译任务本质就是映射两个不同形态的序列并且保持两者之间语义上的一致,只不过现在的源语和目标语都是使用不同的表达方式表达的同一种语言。因此我们可以使用神经机器翻译模型来完成这个任务,而且由于这个任务不再涉及双语数据而只需要单语数据,模型的训练也将是无监督的。尽管这样的方法不再需要无监督统计机器翻译,并且适应能力很强(对于新语种,不需要重新训练神经机器翻译模型,只需要训练无监督词典归纳进行词的翻译,然后使用相同的模型进行改写),但是目前训练数据需要使用其他语种对的双语数据来进行构造(把源语句子里每个词使用双语词典进行翻译作为输入,输出的目标语句子不变)。虽然可以通过把单语句子根据规则或者随机进行打乱来生成训练数据,但是这些句子不符合语言学的规律并且跟实际应用里见到的句子所服从的数据分布不一致,导致训练测试不一致的问题。最后,这个思路简化了部分流程,但是两个阶段的过程无法避免最终翻译模型继承来自无监督词典归纳的错误
\
upcite
{
DBLP:conf/acl/PourdamghaniAGK19
}
。一个相对更简洁一些的方法则是把无监督词典归纳得到的词典对单语数据进行逐词的翻译,然后在相应的伪数据上训练最初的翻译模型,最后不断地交替优化数据和模型,得到更好的翻译模型
\up
cite
{
DBLP:conf/iclr/LampleCDR18
}
。
\begin{figure}
[h]
\centering
...
...
@@ -606,7 +761,7 @@ P(t|s)=\frac{\mathrm{cos}(s,t)/\tau}{\sum_{t'}\mathrm{cos}(s,t')\tau}
\label
{
fig:16-2
}
\end{figure}
\parinterval
为了获得更好的神经机器翻译模型,我们需要对目前训练流程和模型做更深度的整合。我们知道,神经机器翻译模型的训练包含两个阶段:初始化和优化,而无监督神经机器翻译的核心思路也是对应的两个阶段:无监督方法提供初始的监督信号和数据优化,因此我们可以考虑通过在模型的初始化阶段使用无监督方法提供初始的监督信号,然后优化过程不但优化模型的参数,还优化训练使用的数据,从而避免流水线带来的错误传播,如图
\ref
{
fig:16-3
}
所示
\cite
{
DBLP:conf/nips/ConneauL19
}
。
\parinterval
为了获得更好的神经机器翻译模型,我们需要对目前训练流程和模型做更深度的整合。我们知道,神经机器翻译模型的训练包含两个阶段:初始化和优化,而无监督神经机器翻译的核心思路也是对应的两个阶段:无监督方法提供初始的监督信号和数据优化,因此我们可以考虑通过在模型的初始化阶段使用无监督方法提供初始的监督信号,然后优化过程不但优化模型的参数,还优化训练使用的数据,从而避免流水线带来的错误传播,如图
\ref
{
fig:16-3
}
所示
\
up
cite
{
DBLP:conf/nips/ConneauL19
}
。
\begin{figure}
[h]
\centering
...
...
@@ -644,7 +799,7 @@ P(t|s)=\frac{\mathrm{cos}(s,t)/\tau}{\sum_{t'}\mathrm{cos}(s,t')\tau}
\subsubsection
{
3. 初始化
}
\parinterval
无监督神经机器翻译的关键在于如何提供最开始的监督信号,从而启动后续的迭代流程,而初始化正是提供这些监督信号的地方。前面章节提到的无监督词典归纳已经可以提供一些可靠的监督信号,那么问题就是如何在模型初始化中融入这些信息。一个直观的做法就是,既然神经机器翻译模型都使用词嵌入层作为输入,而无监督词典归纳总是首先把两个语言各自的单语词嵌入映射到一个空间后才推断双语词典,那么我们可以使用这些映射后的词嵌入来初始化模型的词嵌入层,然后在这个基础上训练模型,因为这些映射后的词嵌入天然就包含了大量的监督信号,比如两个语言里意思相近的词对应的词嵌入会比其他词更靠近对方
\cite
{
DBLP:journals/ipm/FarhanTAJATT20
}
。为了防止训练过程中模型参数的更新会破坏词嵌入当中的词对齐信息,通常初始化后会固定模型的词嵌入层不让其更新。
\parinterval
无监督神经机器翻译的关键在于如何提供最开始的监督信号,从而启动后续的迭代流程,而初始化正是提供这些监督信号的地方。前面章节提到的无监督词典归纳已经可以提供一些可靠的监督信号,那么问题就是如何在模型初始化中融入这些信息。一个直观的做法就是,既然神经机器翻译模型都使用词嵌入层作为输入,而无监督词典归纳总是首先把两个语言各自的单语词嵌入映射到一个空间后才推断双语词典,那么我们可以使用这些映射后的词嵌入来初始化模型的词嵌入层,然后在这个基础上训练模型,因为这些映射后的词嵌入天然就包含了大量的监督信号,比如两个语言里意思相近的词对应的词嵌入会比其他词更靠近对方
\
up
cite
{
DBLP:journals/ipm/FarhanTAJATT20
}
。为了防止训练过程中模型参数的更新会破坏词嵌入当中的词对齐信息,通常初始化后会固定模型的词嵌入层不让其更新。
\parinterval
后续的研究表明,无监督神经机器翻译能在更少监督信号被提供的情况下启动,也就是我们可以去除无监督词典归纳这一步骤。这时候模型的初始化直接使用共享词表的预训练模型的参数作为起始点。这个预训练模型直接使用前面章节提到的预训练方法如MASS或者MLM的方法进行训练,区别在于模型的大小如宽度和深度需要严格匹配翻译模型。此外,这个模型不仅仅只在一个语言的单语数据上进行训练,而是同时在两个语言的单语数据上进行训练,并且两个语言的词表进行共享。前面我们提到,共享词表特别是共享子词词表的情况下我们已经隐式的告诉模型源语和目标语里一样的(子)词互为翻译,相当于模型使用了少量的监督信号,而在这基础上使用两个语言的单语数据进行预训练则通过模型共享进一步挖掘了语言之间共通的部分,因此使用预训练模型进行初始化后无监督神经机器翻译模型已经得到大量的监督信号,从而得以不断通过优化来提升模型性能。
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论