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
f106d4ec
Commit
f106d4ec
authored
Nov 15, 2020
by
xiaotong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wording (sec 16, lm-based methods)
parent
e967a74e
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
22 行增加
和
20 行删除
+22
-20
Chapter16/Figures/lm-fusion.tex
+2
-2
Chapter16/chapter16.tex
+20
-18
没有找到文件。
Chapter16/Figures/lm-fusion.tex
查看文件 @
f106d4ec
...
...
@@ -20,8 +20,8 @@
\node
[anchor=west] (a15-2) at ([xshift=-4.25em]a15.west)
{
\tiny
{$
\cdots
$}}
;
\node
[anchor=east] (a13-3) at ([yshift=0.8em]a13-2.west)
{
\small
{
无监督
语言
}}
;
\node
[anchor=north] (a13-4) at ([xshift=0em]a13-3.south)
{
\small
{
模型
隐藏层
}}
;
\node
[anchor=east] (a13-3) at ([yshift=0.8em]a13-2.west)
{
\small
{
模型
语言
}}
;
\node
[anchor=north] (a13-4) at ([xshift=0em]a13-3.south)
{
\small
{
隐藏层
}}
;
\node
[anchor=east] (a14-3) at ([yshift=0.8em]a14-2.west)
{
\small
{
神经机器翻译
}}
;
\node
[anchor=north] (a14-4) at ([xshift=0.5em]a14-3.south)
{
\small
{
模型隐藏层
}}
;
...
...
Chapter16/chapter16.tex
查看文件 @
f106d4ec
...
...
@@ -135,54 +135,54 @@
\parinterval
前向和反向语言模型均可以使用海量的单语数据训练得到。通过这种方法,选取到的稀有词保证了替换后句子的句法合理性以及流畅度。最后,根据词对齐找到替换词在目标语言句子中对应的位置
$
j
$
,根据翻译词典等方法,就可以将目标语言句子中的
$
y
_
j
$
替换为
$
x
_
i
^{
'
}$
对应的翻译结果
$
y
_
j
^{
'
}$
,从而生成得到伪双语数据。
(
{
\color
{
red
}
就介绍这一篇文章?我们是对一个方向进行整理,对典型工作进行描述,适当的还应该有些扩展,可以看一下14章的写法。单词替换的方式有很多,我印象里也有几篇。即使不是在数据增强方面的,包括张家俊的论文都提过类似的内容。我们写东西的全面性也是非常必要的。也可以再看一下李垠桥写的内容,他那个风格介绍还是很全面的。现在不是翻译一篇论文。
}
)
(
{
\color
{
red
}
就介绍这一篇文章?
可以再看一下我发给许晨的一篇文章,上面也有一些相关工作的整理。
我们是对一个方向进行整理,对典型工作进行描述,适当的还应该有些扩展,可以看一下14章的写法。单词替换的方式有很多,我印象里也有几篇。即使不是在数据增强方面的,包括张家俊的论文都提过类似的内容。我们写东西的全面性也是非常必要的。也可以再看一下李垠桥写的内容,他那个风格介绍还是很全面的。现在不是翻译一篇论文。
}
)
\vspace
{
0.5em
}
\end{itemize}
\subsubsection
{
3. 双语句对挖掘
}
\parinterval
从可比语料中挖掘可用的双语句对也是一种常用的数据增强方法。可比语料是指源语言和目标语言虽然不是完全互译的文本,但是蕴含了丰富的双语对照知识,可以从中挖掘出可用的双语句对来训练。相比有标注的双语语料来说,可比语料相对容易获取,比如
多种语言报道的新闻事件、多种语言的维基百科词条;多种语言翻译的书籍等。如图
\ref
{
fig:16-5-xc
}
中展示的维基百科词条所示。
\parinterval
在双语平行语料缺乏的时候,从可比语料中挖掘可用的双语句对也是一种常用的方法(
{
\color
{
red
}
参考文献!
}
)。可比语料是指源语言和目标语言虽然不是完全互译的文本,但是蕴含了丰富的双语对照知识,可以从中挖掘出可用的双语句对来训练。相比双语平行语料来说,可比语料相对容易获取,比如,
多种语言报道的新闻事件、多种语言的维基百科词条;多种语言翻译的书籍等。如图
\ref
{
fig:16-5-xc
}
中展示的维基百科词条所示。
%----------------------------------------------
\begin{figure}
[htp]
\centering
\input
{
./Chapter16/Figures/figure-examples-of-comparable-corpora
}
\caption
{
维基百科中的可比
预
料
}
\caption
{
维基百科中的可比
语
料
}
\label
{
fig:16-5-xc
}
\end{figure}
%-------------------------------------------
\parinterval
可比语料
一般从网页中爬取得到,内容一般较为复杂,可能会存在较大比例的噪声,如HTML字符、乱码等,首先需要进行充分的数据清洗操作,得到干净的可比语料,然后从中抽取出可用的双语句对。传统的抽取方法一般通过模型或双语词典来得到,比如
通过计算两个不同语言句子之间的单词重叠数或BLEU值
\upcite
{
finding2006adafre,method2008keiji
}
,通过排序模型或二分类器判断一个目标语言句子和一个源语言句子互译的可能性
\upcite
{
DBLP:journals/coling/MunteanuM05,DBLP:conf/naacl/SmithQT10
}
。
\parinterval
可比语料
大多存在于网页中,内容较为复杂,可能会存在较大比例的噪声,如HTML字符、乱码等。首先需要进行充分的数据清洗操作,得到干净的可比语料,然后从中抽取出可用的双语句对。传统的抽取方法一般通过统计模型或双语词典来得到,比如,
通过计算两个不同语言句子之间的单词重叠数或BLEU值
\upcite
{
finding2006adafre,method2008keiji
}
,通过排序模型或二分类器判断一个目标语言句子和一个源语言句子互译的可能性
\upcite
{
DBLP:journals/coling/MunteanuM05,DBLP:conf/naacl/SmithQT10
}
。
\parinterval
另外一种比较有效的方法是根据两种语言中每个句子的
句向量来抽取。首先,对于两种语言的每个句子,分别使用词嵌入加权平均等方法计算得到蕴含句子语义信息的句向量,然后计算每个源语言句子和目标语言句子之间的余弦相似度,相似度大于一定阈值的句对则认为是可用的双语句对
\cite
{
DBLP:conf/emnlp/WuZHGQLL19
}
。然而,不同语言单独训练得到的词嵌入可能在不同的表示空间,因此得到的句向量无法用于衡量两个句子的相似度。为了解决这个问题,一般使用在同一表示空间的跨语言词嵌入来表示两种语言的单词,在跨语言词嵌入中,不同语言相同意思的词对应的词嵌入具有较高的相似性,因此得到的句向量也就可以用于衡量两个句子是否表示相似的语义。关于跨语言词嵌入的具体内容,可以参考xxx(双语词典归纳一节
)。
\parinterval
另外一种比较有效的方法是根据两种语言中每个句子的
表示向量来抽取。首先,对于两种语言的每个句子,分别使用词嵌入加权平均等方法计算得到句子的表示向量,然后计算每个源语言句子和目标语言句子之间的余弦相似度,相似度大于一定阈值的句对则认为是可用的双语句对
\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
}
这部分写得不错
}
)
\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
}
这部分写得不错
}
)
%----------------------------------------------------------------------------------------
% NEW SUB-SECTION
%----------------------------------------------------------------------------------------
\subsection
{
基于语言模型的
单语数据使用
}
\subsection
{
基于语言模型的
方法
}
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
\parinterval
单语数据是一种无标注的数据形式,而自然语言处理领域中最常用的无监督任务是语言模型,用来描述文字序列出现的规律。语言模型在训练过程中逐渐具备了特征提取的作用,并且考虑了生成结果的流畅度。因此,通过单语数据训练语言模型,然后应用在神经机器翻译模型中,也是一种有效的辅助方法。下面从语言模型融合、预训练、联合训练等方向介绍基于语言模型的单语数据使用
。
\parinterval
除了构造双语平行数据,直接利用单语数据也是机器翻译中的常用方法。通常,单语数据会被用于语言模型的学习(见
{
\chaptertwo
}
)。对于机器翻译系统,使用语言模型也是一件十分“自然”的事情。在目标语言端,语言模型可以帮助系统产生更加流畅的译文。在源语言端,语言模型也可以用于句子编码,进而更好地生成句子的表示结果。在传统方法中,语言模型更多的被使用在目标语端。不过,近些年来随着预训练技术的发展,语言模型也被使用在神经机器翻译的编码端。下面从语言模型在目标端的融合、预训练编码器、联合训练等方向介绍基于语言模型的单语数据使用方法
。
\subsubsection
{
1. 语言模型融合
}
\subsubsection
{
1. 语言模型融合
(
{
\color
{
red
}
参考文献较少
}
)
}
\parinterval
单语数据是一种无标注的数据形式,而自然语言处理领域中最常用的无监督任务是语言模型,用来描述文字序列出现的规律。神经机器翻译模型本身也具备了语言模型的作用,在解码阶段,不仅考虑和源语言句子的语义对应,也考虑了预测的目标语言句子的流畅度。然而,训练神经机器翻译模型的双语数据是较为有限的,而语言模型可以使用海量的单语数据进行训练,预测结果的流畅度更高。因此,融合语言模型和神经机器翻译模型来生成翻译结果也是一种有效的单语数据使用方法。
\parinterval
神经机器翻译模型自回归地生成翻译结果。对于一个双语句对
$
(
x, y
)
$
,神经机器翻译模型根据源语言句子
$
x
$
和前面生成的词来预测当前位置词的概率分布:
\parinterval
融合目标语言端的语言模型是一种最直接的使用单语数据的方法。实际上,神经机器翻译模型本身也具备了语言模型的作用,因为在解码器本质上也是一个语言模型,用于描述生成译文词串的规律。类似于语言模型,神经机器翻译模型可以自回归地生成翻译结果。对于一个双语句对
$
(
x, y
)
$
,神经机器翻译模型根据源语言句子
$
x
$
和前面生成的词来预测当前位置词的概率分布:
\begin{eqnarray}
\log
_{
P(y | x;
\theta
)
}
=
\sum
_{
t
}{
\log
_{
P(y
_
t | x, y
_{
<t
}
;
\theta
)
}}
\label
{
eq:16-1-xc
}
\end{eqnarray}
\parinterval
这里,
$
\theta
$
是神经机器翻译模型的参数,
$
y
_{
<t
}$
表示第
$
t
$
个词前面生成的词。神经机器翻译模型考虑了结果的忠诚度和流畅度,忠诚度是指目标语翻译结果和源语言句子的语义保持一致,流畅度是指翻译结果符合人类的语言习惯。忠诚度需要建模源语言和目标语言之间的对应关系,但是流畅度只和目标语言有关。使用海量单语数据训练的语言模型可以生成更流利的句子,将其和神经机器翻译模型的解码过程结合,可以在保证忠诚度的情况下,得到更加流利的翻译结果。具体的结合方法包括两种,分别是浅融合和深融合
\cite
{
2015OnGulcehre
}
,如图
\ref
{
fig:16-6-xc
}
所示。
{
\color
{
red
}
这个公式和第九章的公式最好一致!!!
}
\noindent
这里,
$
\theta
$
是神经机器翻译模型的参数,
$
y
_{
<t
}$
表示第
$
t
$
个词前面生成的词。语言模型可以与上述过程融合,具体分为浅融合和深融合两种方法
\cite
{
2015OnGulcehre
}
,如图
\ref
{
fig:16-6-xc
}
所示。
%----------------------------------------------
\begin{figure}
[htp]
...
...
@@ -193,13 +193,13 @@
\end{figure}
%-------------------------------------------
\parinterval
浅融合通过对神经机器翻译模型和语言模型的预测概率进行
加权
来得到最终的预测概率:
\parinterval
浅融合通过对神经机器翻译模型和语言模型的预测概率进行
插值
来得到最终的预测概率:
\begin{eqnarray}
\log
_{
\funp
{
P
}
(y
_
t | x, y
_{
<t
}
)
}
=
\log
_{
\funp
{
P
}
(y
_
t | x, y
_{
<t
}
;
\theta
_{
TM
}
)
}
+
\beta
\log
_{
\funp
{
P
}
(y
_
t | y
_{
<t
}
;
\theta
_{
LM
}
)
}
\label
{
eq:16-2-xc
}
\end{eqnarray}
\
parinterval
这里,
$
\theta
_{
TM
}$
和
$
\theta
_{
LM
}$
分别表示翻译模型和语言模型的参数,
$
\beta
$
是一个超参数,表示语言模型预测概率在解码过程中的权重,通过对比不同权重在校验集上的性能表现来进行选择
。
\
noindent
其中,
$
\theta
_{
TM
}$
和
$
\theta
_{
LM
}$
分别表示翻译模型和语言模型的参数。
$
\beta
$
是一个超参数,表示语言模型预测概率在解码过程中的权重
。
\parinterval
深融合是在解码过程中,动态地融合翻译模型和语言模型的隐藏层表示来计算预测概率。
浅融合在解码过程对每个词均采用相同的语言模型权重,而深融合可以根据解码不同的词,动态选择语言模型的权重。
...
...
@@ -211,7 +211,7 @@
\label
{
eq:16-3-xc
}
\end{eqnarray}
\
parinterval
这里
,
$
s
_{
t
}$
表示当前时刻
$
t
$
的隐藏层表示。
\
noindent
其中
,
$
s
_{
t
}$
表示当前时刻
$
t
$
的隐藏层表示。
\begin{eqnarray}
s
_{
t
}
= s
_{
t
}^{
TM
}
+ g
_{
t
}
s
_{
t
}^{
LM
}
\label
{
eq:16-4-xc
}
...
...
@@ -223,13 +223,15 @@ g_{t} = \sigma (w^{T}s_{t}^{TM} + b)
\label
{
eq:16-5-xc
}
\end{eqnarray}
\parinterval
这里,
$
w
$
和
$
b
$
是可学习的参数,在训练过程中不断调整得到,
$
\sigma
$
是Sigmoid函数,将结果压缩到
$
(
0
,
1
)
$
范围内。
\noindent
其中,
$
w
$
和
$
b
$
是可学习的参数。
$
\sigma
$
是Sigmoid函数,将结果压缩到
$
(
0
,
1
)
$
范围内。
\parinterval
大多数情况下,译文端语言模型的使用可以提高翻译结果的流畅度。不过,它并不会增加翻译结果对源语言句子表达的
{
\small\bfnew
{
充分性
}}
\index
{
充分性
}
(Adequacy
\index
{
Adequacy
}
),即源语言句子的信息是否被充分提现到了译文中。也有一些研究发现,神经机器翻译过于关注译文的流畅度,但是充分性的问题没有很好的考虑,比如,神经机器翻译系统的结果中经常出现漏译等问题。也有一些研究者提出控制翻译充分性的方法,让译文在流畅度和充分性之间达到平衡(
{
\color
{
red
}
参考文献!Zhaopeng Tu组应该有工作,还有其它一些工作都可以引用
}
)。
%----------------------------------------------------------------------------------------
% NEW SUBSUB-SECTION
%----------------------------------------------------------------------------------------
\subsubsection
{
2. 预训练
}
\subsubsection
{
2. 预训练
(
{
\color
{
red
}
参考文献较少
}
)
}
{
\red
预训练模型ELMo、GPT、BERT等在这里是否要详细介绍?
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论