【CS224n】(lecture7)机器翻译NMT,seq2seq和attention

本文涉及的产品
语种识别,语种识别 100万字符
文档翻译,文档翻译 1千页
文本翻译,文本翻译 100万字符
简介: (1)新任务:机器翻译(2)神经网络结构:sequence to sequence:机器翻译是seq2seq的一个主要应用。(3)注意力机制:seq2seq通过attention提升。

一、Pre-Neural Machine Translation

今日任务:

(1)新任务:机器翻译

(2)神经网络结构:sequence to sequence:机器翻译是seq2seq的一个主要应用。

(3)注意力机制:seq2seq通过attention提升。

1.1 Machine Translation

机器翻译的历史

(1)机器翻译起源于20世纪50年代,当时翻译系统是基于规则,使用双语词典来将俄语单词映射到对应的英语。

(2)1990-2010:基于统计学的机器翻译

核心:从数据中学习概率模型

比如需将法语翻译为英语,即给定法语句子x,找到最好的英语句子y:

image.png

1.2 Learning alignment for SMT

问题:如何从并行语料库中学习翻译模型P ( y ∣ x ) P(y \mid x)P(y∣x),实际上我们想要考虑P ( x , a ∣ y ) P(x, a \mid y)P(x,a∣y),其中a是alignment,即法语句子x和英语句子y之间的单词级对应。

注意:有些词没有对应词。

image.png

对齐可以是多对一的:

image.png

对齐可以是一对多的:

image.png

对齐可以是多对多的:

image.png

我们基于很多因素的组合,学习P ( x , a ∣ y ) P(x, a \mid y)P(x,a∣y),包括:

特定单词对齐的概率

特定单词具有特定fertility的概率(对应单词的数量)

CS228有讲相关对齐变量a aa的学习(最大期望)

1.3 Decoding for SMT

image.png

如何计算argmax:

(1)可以穷举所有可能的y并计算概率(复杂度高)

(2)在模型中强化独立性假设,用动态规划DP求解最优解(如Viterbi算法 )。这个过程叫作decoding(解码)。

image.png

1990s-2010s:基于统计学的机器翻译

SMT是一个巨大的研究领域,有很多单独设计的子模块,需要编译和维护额外的资源(如等价短语表);需要大量的人力维护(每种语言都需要重复操作)。

二、Neural Machine Translation

2.1 What is Neural Machine Translation?

神经机器翻译是利用单个神经网络进行机器翻译的一种方法

神经网络架构称为sequence-to-sequence (又名seq2seq),它包含两个RNNs

image.png

2.2 Sequence-to-sequence

seq2seq不仅对MT有用,许多NLP可看作是seq2seq任务:

摘要(长文本——>短文本)

对话(前⼀句话——>下⼀句话)

解析(输入文本——>输出解析为序列)

代码生成(自然语言——>Python代码)

因为解码器是基于源句x(conditional),预测目标句的下一个单词y(语言模型),所以seq2seq是条件语言模型(conditional language model)的一类。

image.png

如何训练一个NMT系统?

答:需要找一个大的平行语料库。

2.3 Training a Neural Machine Translation system

反向传播在“端到端”的过程中。

image.png

2.4 Multi-layer RNNs

可以堆叠多层RNN(stacked RNN),越高层的RNNs就计算更高level 的features。

2.5 Multi-layer deep encoder-decoder machine translation net

image.png

多层RNNs的实践:

多层RNN的性能往往更优,如2017年的Britz的paper指出,NMT神经模型中,encoder RNN是4层时结果最好,decoder RNN是4层时结果最好。很多时候为了训练更深层次的RNN还需要skip-connections / dense-connections。

基于transformer的网络(如bert)则更深,如12-24层,其中有很多skipping-like connection。

2.6 Greedy decoding

greedy decoding:通过对解码器的每个步骤使用argmax。

image.png

但是greedy decoding不能撤回错误决策:

image.png

2.7 Exhaustive search decoding

理想情况下,我们想找到一个长度为T的翻译句子,即最大化:

image.png

我们可以穷举计算所有可能的序列y,这意味着在解码器decode的每一步t步骤中,时间复杂度为O ( V T ) O(V^T)O(V

T

),其中T TT是词表大小。

2.8 Beam search decoding

beam search不能保证找到最优解,但大多时候比exhaustive search有效。

核心思想:在解码器decoding的每一步中,追踪k个最有可能的翻译句子。k即beam的大小(一般是5~10个)。

基于y 1 , … , y t y_{1}, \ldots, y_{t}y

1

,…,y

t

有一个对数概率分数,分数都是负数的,数值越大越好:

image.png

的结果,算法的步骤:

计算下一个单词的概率分布

取前k个单词并计算分数

对于每一次的 k 个假设,找出最前面的 k 个单词并计算分数

在k 2 k^2k

2

的假设中,保留 k 个最高的分值,如 t = 2 时,保留分数最高的 hit 和 was

image.png

在贪心解码中,我们通常解码,直到模型产生⼀个<END>令牌

例如: <START>he hit me with a pie<END>

在 Beam Search 解码中,不同的假设可能在不同的时间步长上产生<END>令牌

当⼀个假设生成了<END>令牌,该假设完成

把它放在⼀边,通过 Beam Search 继续探索其他假设

通常我们继续进行 Beam Search ,直到:

我们到达时间 T (其中 T 是预定义截止点)

我们至少有 n 个已完成的假设(其中 n 是预定义截止点)

基于完成的假设列表,有个问题:较长的假设得分较低,修正方法:按长度标准化,用下式来选择top one:

image.png

2.9 评估指标

BLEU (Bilingual Evaluation Understudy)

PS:在assignment4有BLEU的详细介绍。

BLEU将机器翻译和人工翻译结果进行比较,计算一个相似性分数,基于:

n-gram precision(n可以是1,2,3,4)

对过短的机器翻译加上惩罚项

BLEU有用但不完美:

有很多有效的方法来翻译⼀个句子

所以⼀个好的翻译可以得到⼀个糟糕的BLEU score,因为它与⼈⼯翻译的n-gram重叠较低

MT发展史:

image.png

神经机器翻译于2014年从边缘研究活动到2016年成为领先标准方法。

2014:第⼀篇 seq2seq 的⽂章发布

2016:谷歌翻译从 SMT 换成了 NMT,18年很多大公司也使用了。

image.png

由数百名工程师历经多年打造的SMT系统,在短短几个月内就被少数工程师训练过的NMT系统超越。但是翻译系统NT还有解决空间:

词表外的单词处理;

训练集和测试集之间的领域不匹配(domain mismatch);

在较长文本上维护上下文;

缺乏足够多的语言对;

代词或者零代词(zero pronoun)解析错误;

Morphological agreement errors。

2019年以来大佬们对“常规的”seq2seq NMT模型进行修改,其中就有加入attention机制。

三、Attention机制

3.1 Sequence-to-sequence: the bottleneck problem

seq2seq的瓶颈问题:源语句的编码需要捕获源句子的所有信息。

image.png

3.2 Sequence-to-sequence with attention

attention核心理念 :在解码器的每一步,使用与编码器的直接连接来专注于源序列的特定部分。

image.png

将解码器部分的第⼀个<token> 与源语句中的每一个时间步的隐藏状态进行 Dot Product 得到每⼀时间步的分数;

通过softmax将分数转化为概率分布

在这个解码器时间步长上,我们主要关注第⼀个编码器隐藏状态(“he”)

然后利用注意力分布对编码器的隐藏状态进行加权求和,注意力网络的output的主要包含来自值得高度注意的隐藏层状态。

image.png

将attention output和decoder hidden state拼接,用来计算 y ^ 1 \hat{y}_{1}

y

^

 

1

,y ^ 2 \hat{y}_{2}

y

^

 

2

等也是类似。有时我们会从前面的步骤中提取注意力输出,然后作为decoder编码器的input(assignment 4会做到这块)。

3.3 Attention: in equations

image.png

注意力机制的优点:

大幅度提高NMT性能;

注意力分数大的部分被重视;

解决梯度消失问题;

具有可解释性:

通过看attention distribution,能看到decoder重点关注哪些部分;

不用对齐alignment(网络自己学会对齐)。

image.png

图:attention distribution

注意力能够很好改变MT的seq2seq模型;attention也能用在很多任务中。

attention的更一般定义:基于向量value和向量query,attention即一种根据query,计算value的加权和的方法。

query attends to the values:比如seq2seq+attention模型中,每个解码器的隐藏状态(query)关注所有编码器的隐藏状态(value)。

3.4 Attention variants

image.png

相关文章
|
3月前
|
机器学习/深度学习 自然语言处理 算法
Seq2Seq模型在机器翻译任务中如何优化以提高翻译质量?
Seq2Seq模型在机器翻译任务中如何优化以提高翻译质量?
|
3月前
|
机器学习/深度学习 数据采集 自然语言处理
神经机器翻译(NMT)的关键组件
神经机器翻译(NMT)的关键组件
|
6月前
|
机器学习/深度学习 自然语言处理 算法框架/工具
python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译
python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译
|
6月前
|
机器学习/深度学习 自然语言处理 网络架构
神经机器翻译(NMT)
神经机器翻译(NMT)
272 2
|
机器学习/深度学习 人工智能 自然语言处理
Unsupervised NMT、PBSMT、coarse-to-fine...你都掌握了吗?一文总结机器翻译必备经典模型(3)
Unsupervised NMT、PBSMT、coarse-to-fine...你都掌握了吗?一文总结机器翻译必备经典模型
194 0
|
机器学习/深度学习 自然语言处理 算法
Unsupervised NMT、PBSMT、coarse-to-fine...你都掌握了吗?一文总结机器翻译必备经典模型(1)
Unsupervised NMT、PBSMT、coarse-to-fine...你都掌握了吗?一文总结机器翻译必备经典模型
|
机器学习/深度学习 存储 JSON
在PyTorch中使用Seq2Seq构建的神经机器翻译模型
在PyTorch中使用Seq2Seq构建的神经机器翻译模型
316 1
在PyTorch中使用Seq2Seq构建的神经机器翻译模型
|
机器学习/深度学习 自然语言处理 索引
机器翻译——基于注意力机制的seq2seq结构(下)
机器翻译——基于注意力机制的seq2seq结构(下)
|
机器学习/深度学习 数据采集 自然语言处理
机器翻译——基于注意力机制的seq2seq结构(上)
机器翻译——基于注意力机制的seq2seq结构
|
机器学习/深度学习 自然语言处理 PyTorch
在PyTorch中使用Seq2Seq构建的神经机器翻译模型(三)
在PyTorch中使用Seq2Seq构建的神经机器翻译模型
145 0
在PyTorch中使用Seq2Seq构建的神经机器翻译模型(三)