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
6f24b3a5
Commit
6f24b3a5
authored
Nov 16, 2020
by
曹润柘
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新 chapter16.tex
parent
0c1f968d
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
8 行增加
和
8 行删除
+8
-8
Chapter16/chapter16.tex
+8
-8
没有找到文件。
Chapter16/chapter16.tex
查看文件 @
6f24b3a5
...
@@ -460,11 +460,11 @@ Joint training for neural machine translation models with monolingual data
...
@@ -460,11 +460,11 @@ Joint training for neural machine translation models with monolingual data
\subsection
{
基于枢轴语的方法
}
\subsection
{
基于枢轴语的方法
}
\parinterval
传统的多语言翻译中,广泛使用的是
基于枢轴语言的翻译(Pivot-based Translation)
\upcite
{
DBLP:conf/emnlp/KimPPKN19
}
。在这种方法中,会使用一种数据丰富语言作为中介语言或者枢轴语言
(Pivot Language),之后让源语言和目标语言向枢轴语言进行翻译。这样,通过资源丰富的中介语言将源语言和目标语言桥接在一起,达到解决源语言-目标语言双语数据缺乏的问题。比如,想要得到泰语到波兰语的翻译,可以通过英语做枢轴。通过“泰语
$
\rightarrow
$
英语
$
\rightarrow
$
波兰语”的翻译过程完成泰语到波兰语的转换。
\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
基于枢轴语的方法很早就出现在基于统计机器翻译中。在基于短语的机器翻译中,已经有很多方法建立了源到枢轴和枢轴到目标的短语/单词级别特征,并基于这些特征开发了源语言到目标语言的系统
\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
,其翻译过程可以被建模为如下公式:
\parinterval
基于枢轴的方法可以被描述为如图
\ref
{
fig:16-1-ll
}
所示的过程。这里,使用虚线表示具有双语平行语料库的语言对,并使用带有箭头的实线表示翻译方向,令
$
x
$
,
$
y
$
和
$
p
$
分别表示源语言,目标语言和枢轴语言,对于输入源语言句子
$
x
$
和目标语言句子
$
y
$
,其翻译过程可以被建模为如下公式:
\begin{figure}
[h]
\begin{figure}
[h]
\centering
\centering
...
@@ -490,7 +490,7 @@ Joint training for neural machine translation models with monolingual data
...
@@ -490,7 +490,7 @@ Joint training for neural machine translation models with monolingual data
\subsection
{
基于知识蒸馏的方法(teacher-student)
}
\subsection
{
基于知识蒸馏的方法(teacher-student)
}
\parinterval
为了解决基于枢轴的方法的问题,研究人员提出基于知识蒸馏的方法
\upcite
{
DBLP:conf/acl/ChenLCL17,DBLP:conf/iclr/TanRHQZL19
}
。知识蒸馏是一种常用的模型压缩方法
\upcite
{
DBLP:journals/corr/HintonVD15
}
,基于教师-学生框架,在第十三章已经进行了详细介绍。本节中主要介绍如何将知识蒸馏方法用于稀缺资源任务中。针对稀缺资源任务,基于教师-学生框架的方法
\upcite
{
DBLP:conf/acl/ChenLCL17
}
基本思想如图
X
所示。
\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]
\begin{figure}
[h]
\centering
\centering
...
@@ -539,7 +539,7 @@ Joint training for neural machine translation models with monolingual data
...
@@ -539,7 +539,7 @@ Joint training for neural machine translation models with monolingual data
% NEW SUB-SUB-SECTION
% NEW SUB-SUB-SECTION
%----------------------------------------------------------------------------------------
%----------------------------------------------------------------------------------------
\subsubsection
{
1. 参数初始化方法
(pretrain-finetune)
}
\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
}
中,左侧模型为父模型,右侧模型为子模型。我们假设从英语到中文语言的翻译为富资源翻译,从英语到德语语言的翻译为稀缺资源翻译,则首先用英中双语平行语料库训练出一个初始化的父模型,之后再用英德的数据在父模型上微调得到子模型,这个子模型即为我们想要得到的迁移学习的模型。此过程可以看作是在富资源训练模型上对稀缺资源语言对进行微调,将富资源语言对中知识迁移到稀缺资源语言对中,从而提升稀缺资源语言对模型性能。
\parinterval
在解决多语言翻译这个问题的具体做法中,首先需要在富资源语言对上训练一个模型,将其称为
{
\small\bfnew
{
父模型
}}
(Parent Model)。在父模型的参数进行模型初始化基础上,训练资源不足的稀缺资源语言对模型,称之为
{
\small\bfnew
{
子模型
}}
(Child Model),这意味着低资源翻译模型将不会从随机权重开始学习,而是从父模型的权重开始
\upcite
{
gu2018meta,DBLP:conf/icml/FinnAL17,DBLP:conf/naacl/GuHDL18
}
,参数初始化也是迁移学习的核心方法。在图
\ref
{
fig:16-4-ll
}
中,左侧模型为父模型,右侧模型为子模型。我们假设从英语到中文语言的翻译为富资源翻译,从英语到德语语言的翻译为稀缺资源翻译,则首先用英中双语平行语料库训练出一个初始化的父模型,之后再用英德的数据在父模型上微调得到子模型,这个子模型即为我们想要得到的迁移学习的模型。此过程可以看作是在富资源训练模型上对稀缺资源语言对进行微调,将富资源语言对中知识迁移到稀缺资源语言对中,从而提升稀缺资源语言对模型性能。
...
@@ -558,9 +558,9 @@ Joint training for neural machine translation models with monolingual data
...
@@ -558,9 +558,9 @@ Joint training for neural machine translation models with monolingual data
\subsubsection
{
2. 多语言单模型系统
}
\subsubsection
{
2. 多语言单模型系统
}
\parinterval
多语言单模型方法也可以被看做是一种迁移学习。多语言单模型方法能够有效地改善低资源神经机器翻译性能
\upcite
{
DBLP:journals/tacl/JohnsonSLKWCTVW17,DBLP:conf/lrec/RiktersPK18,dabre2019brief
}
,尤其适用于翻译方向较多的情况,因为为每一个翻译方向单独训练一个模型是不实际的,不仅由于设备资源和时间上的限制,还由于很多翻译方向都没有双语平行数据。比如要翻译100个语言之间的互译的系统,理论上就需要训练
100×99
个翻译模型,代价是十分巨大的。这时就需要用到多语言单模型方法。
\parinterval
多语言单模型方法也可以被看做是一种迁移学习。多语言单模型方法能够有效地改善低资源神经机器翻译性能
\upcite
{
DBLP:journals/tacl/JohnsonSLKWCTVW17,DBLP:conf/lrec/RiktersPK18,dabre2019brief
}
,尤其适用于翻译方向较多的情况,因为为每一个翻译方向单独训练一个模型是不实际的,不仅由于设备资源和时间上的限制,还由于很多翻译方向都没有双语平行数据。比如要翻译100个语言之间的互译的系统,理论上就需要训练
$
100
\times
99
$
个翻译模型,代价是十分巨大的。这时就需要用到多语言单模型方法。
\parinterval
多语言单模型系统即用单个模型训练具有多个语言翻译方向的系统。对于源语言集合
$
G
_
x
$
和目标语言集合
$
G
_
y
$
,多语言单模型的学习目标是学习一个单一的模型,这个模型可以进行任意源语言到任意目标语言翻译,即同时支持所有
$
(
x,y
)
∈
(
G
_
x,G
_
y
)
$
的翻译。多语言单模型方法又可以进一步分为一对多
\upcite
{
DBLP:conf/acl/DongWHYW15
}
、多对一
\upcite
{
DBLP:journals/tacl/LeeCH17
}
和多对多
\upcite
{
DBLP:conf/naacl/FiratCB16
}
的方法。不过这些方法本质上是相同的,因此这里以多对多翻译为例进行介绍。
\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”。
\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”。
...
@@ -587,9 +587,9 @@ Joint training for neural machine translation models with monolingual data
...
@@ -587,9 +587,9 @@ Joint training for neural machine translation models with monolingual data
\begin{itemize}
\begin{itemize}
\vspace
{
0.5em
}
\vspace
{
0.5em
}
\item
父模型和子模型之间的语言空间不匹配问题:父模型使用的语言跟子模型使用的语言的数据很少甚至没有(零资源)的情况下,无法通过训练弥补父模型跟子模型之间的差异,因此微调的结果很差。一种解决方案是先预训练一个多语言的模型,然后固定这个预训练模型的部分参数后训练父模型,最后从父模型中微调子模型
\upcite
{
ji2020cross
}
。这样做的好处在于先用预训练提取父模型的任务和子模型的任务之间通用的信息(保存在模型参数里),然后强制在训练父模型的时候保留这些信息(通过固定参数),这样最后微调子模型的时候就可以利用这些通用信息,减少了父模型和子模型之间的差异,使得微调的结果得到提升。
(加参考文献)
\item
父模型和子模型之间的语言空间不匹配问题:父模型使用的语言跟子模型使用的语言的数据很少甚至没有(零资源)的情况下,无法通过训练弥补父模型跟子模型之间的差异,因此微调的结果很差。一种解决方案是先预训练一个多语言的模型,然后固定这个预训练模型的部分参数后训练父模型,最后从父模型中微调子模型
\upcite
{
ji2020cross
}
。这样做的好处在于先用预训练提取父模型的任务和子模型的任务之间通用的信息(保存在模型参数里),然后强制在训练父模型的时候保留这些信息(通过固定参数),这样最后微调子模型的时候就可以利用这些通用信息,减少了父模型和子模型之间的差异,使得微调的结果得到提升。
{
\red
{
(加参考文献)
}}
\vspace
{
0.5em
}
\vspace
{
0.5em
}
\item
脱靶翻译问题:多语言单模型系统经常出现脱靶翻译问题,即把源语翻译成错误的目标语言,比如要求翻译成英文,结果却是中文或者英文夹杂其他语言的字符。这是因为多语言单模型系统对所有语言都使用一样的参数,导致每个语言竞争系统固定的建模能力。研究人员提出在原来共享参数的基础上为每种语言添加额外的独立的参数,使得每种语言拥有足够的建模能力,以便于特定语言的翻译
\upcite
{
DBLP:conf/acl/ZhangWTS20
}
。
(加参考文献)
\item
脱靶翻译问题:多语言单模型系统经常出现脱靶翻译问题,即把源语翻译成错误的目标语言,比如要求翻译成英文,结果却是中文或者英文夹杂其他语言的字符。这是因为多语言单模型系统对所有语言都使用一样的参数,导致每个语言竞争系统固定的建模能力。研究人员提出在原来共享参数的基础上为每种语言添加额外的独立的参数,使得每种语言拥有足够的建模能力,以便于特定语言的翻译
\upcite
{
DBLP:conf/acl/ZhangWTS20
}
。
{
\red
{
(加参考文献)
}}
\vspace
{
0.5em
}
\vspace
{
0.5em
}
\end{itemize}
\end{itemize}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论