前言
从这一部分开始我们将进入到NLP的具体任务环节,首先我们来讲解下机器翻译任务。
一、 机器翻译简介
1. 任务定义
机器翻译任务旨在将文本从一种源语言 (Source Language) 翻译到另一种目标语言 (Target Language)。
2. 发展历史
机器翻译的发展历史包括以下四个阶段:基于规则的机器翻译 (Rule-Based Machine Translation, RBMT);基于实例的机器翻译 (Example-Based Machine Translation, EBMT);统计机器翻译 (Statistical Machine Translation, SMT);神经机器翻译 (Neural Machine Translation, NMT)。
我们在这里主要简单介绍下前两种,即RBMT和EBMT。SMT和NMT我们将在后续做更详细的介绍。
RBMT:顾名思义,基于规则,那么规则就需要人来手动编写,所以就会存有设计复杂,不全面等一系列不足。
EBMT:主要思想是通过实例类比对于短语片段进行翻译。举例来讲:我们知道“我爱吃苹果”可以翻译为“I like eat apple”,在翻译“我爱吃桃子”的时候可以直接将“apple”替换为“peach”就可以。这样做在一定程度上减少了规则的定义。
二、统计机器翻译
统计机器翻译的核心思路是:从数据中学习一个概率模型。优化目标则是概率最大时候的目标语言。
1. 翻译模型和语言模型
在引出翻译模型和语言模型前,我们先给出概率模型的形式化定义,如下:
以中英翻译为例,公式中
x
x
x代表给定的中文句子,
y
y
y代表所有可能对应的英文翻译。
a
r
g
m
a
x
y
argmax_y
argmaxy是代表的是取最大的概率。整个目标函数是找到最优的
y
y
y使得
P
P
P最大。
然后使用贝叶斯公式将上式展开,得到两个需要分别学习的模型。如下所示,其中
P
(
X
)
P(X)
P(X) 不随
y
y
y改变,故可省略。
在上式中有两个模型(或者可以称之为有两个概率需要被计算),即:
P
(
x
∣
y
)
P(x|y)
P(x∣y) 和
P
(
y
)
P(y)
P(y) 。
•
P
(
x
∣
y
)
P(x|y)
P(x∣y) 被称作翻译模型,代表的意义是从平行语料中学习单词和短语如何被正确翻译。
•
P
(
y
)
P(y)
P(y) 被称作语言模型,代表的意义是从单语语料中学习如何生成流畅的英语。
除此之外,还有$argmax_y$需要被计算。一种计算方案:枚举所有可能的 𝑦 并计算概率,但是效率太低。一个好的解决方法便是启发式搜索算法。
2. 启发式搜索算法
• 首先选取输入中的短语并翻译,注意短语可能包含多个单词。
• 其次可以不依据原来的短语顺序进行选取。
• 最后将具有较低概率的句子被丢弃。
3. 统计机器翻译的不足
• 系统通常由多个分开设计的子部件构成。
• 依赖于大量的特征工程,需要为特殊的语言现象设计特征。
• 依赖大量的人力进行维护。
三、神经机器翻译
神经机器翻译主要以Seq2Seq为代表。
1. 网络架构
常用的神经网络架构为序列到序列模型 (Seq2Seq),其中包含两个RNN,一个是编码器RNN,另一个是解码器RNN。编码器RNN用于学习源语言的表示。解码器RNN可以看作一个条件语言模型,它基于编码器学到的表示产生目标语言。
以“Only use neural nets”翻译成“只用神经网络”为例,具体的模型框架图如下所示:
2.训练方式
这里我们主要有以下三个需要注意的点。
1⃣️目标函数是每个位置预测目标词的损失的加和。(注意包括图中所示的“END”,同时可以思考下为加和这种方式到底合不合理。)
2⃣️模型训练过程同时更新两个RNN,模型的参数包括了输入的词向量。
3⃣️在解码器生成隐状态后,也就指的是
h
i
h_i
hi,在这之后还需要有一个线性映射,最后再做softmax。
3. 解码策略
3.1. 原来的解码策略
我们看下模型在训练时候是如何进行解码的。即:可以通过在解码器的每一步取概率最大的单词生成目标语句,这就是贪婪解码策略。具体形式化表达如下:
可以看的出来,这种贪婪的解码策略仅仅可以保证局部最优,并不能总是生成全局最优解。或者说无法撤销之前的决定,例如我们翻译“我爱吃桃子”的时候,当翻译出来“I”时候便无法更改了。
3.2. 束搜索解码
束搜索解码是为了解决贪婪解码策略的不足所提出来的。
• 基本原理:理想情况下,想找到一个 𝑦 使其能够最大化概率。
这个公式实际上是将以前计算联合概率的方式由加和变为了连乘。
• 具体实施方式:首先想一下我们可以列举出所有的y来找到概率最大化的y,但这种方式显然需要更高的空间和时间复杂度。束搜索具体的做法是在每一步,记录 k个最有可能的答案信息。k 也被叫做束宽,实际常常设定为5至10之间。
以下图为例,假设我们第一个词计算出“just”具有最高的概率,但这个时候我们并不直接确定下来,相反我们也会将概率排第二的“only”也暂时记录下来,接下来我们在这两个词的基础上再分别计算概率最高的的两个词,以此类推。最后选取概率连乘最大的作为翻译的结果。
值得注意的是,这种方式不能保证提供一个全局最优解,但是产生的结果往往更加实用。
4. 评价指标
机器翻译常用 BLEU (Bilingual Evaluation Understudy) 作为其自动评价指标。
BLEU 是将机器的翻译结果与一个或多个翻译答案进行比较,具体公式如下图所示。
以标准翻译结果“Apple is one of the most delicious fruits.”和实际翻译结果“Apples are one of the best fruits to eat.”为例。1-gram的精度是5/9;2-gram的精度是1/4;3-gram的精度是1/7。这里2-gram实际上就是在标准翻译结果中查看“Apples are”,“are one”…“to eat”这8个词组出现的次数,然后再比上8就是精度。BP实际上是用来衡量标准翻译结果和实际翻译结果长度差异性。
BLEU非常有效但是并不完美,对于一个句子的翻译有多重可行的方式。有时候一个好的翻译会得到非常低的BLEU值,因为它和人工翻译的答案可能有较低的n-gram重合。
5. 与SMT的对比
和SMT相比,NMT有很多优势:
• 更好的性能:更流畅;更好地利用上下文;更好地利用短语的相似性。
• 使用一个端到端优化的单一神经网络:没有需要单独进行优化的子部件。
• 需要更少的人力:不依赖于特征工程;对于所有的语言对均使用相同的方法。
和SMT相比,NMT的缺点:
• NMT更不具备可解释性:难以查错。
• NMT更不容易受人类控制:不能方便地指定翻译规则或指导原则;还有一些安全方面的隐患。
四、Seq2Seq中的注意力
1. Seq2Seq 模型中的瓶颈问题
主要包括以下三点:
1⃣️ 源语句编码后得到的单一向量需要保留源语句中的全部信息。
2⃣️学习到的单一向量表示能力不足,限制了编码器最终的表示能力,这就是信息瓶颈。
3⃣️大部分输出只与部分输入有关,其余的输入内容会带来噪声。
2. 注意力在Seq2Seq 中的具体用法
注意力机制为机器翻译中的瓶颈问题提供了一个解决方案。核心思路是:在解码的每一步,使用注意力机制使解码器关注于源语言的一个特定部分。带注意力的seq2seq模型剧架构如下图所示。
相关公式如下:
• 编码器中的隐状态:
h
1
ℎ1
h1,
h
2
ℎ2
h2… ,
h
N
h_N
hN ∈
R
d
R^d
Rd
• 解码器在时间步t的隐状态:
s
t
s_t
st ∈
R
d
R^d
Rd
• 将注意力机制的输出和解码器的隐状态连接并用这个向量预测下一个单词:[
o
t
o_t
ot;
s
t
s_t
st]∈
R
2
d
R^{2d}
R2d
总结
这一部分我们主要重点回顾了传统的统计机器翻译和神经机器翻译,随后我们对注意力在seq2seq中的应用也做了相应分析。