学习总结

(1)NMT的优缺点:
和SMT相比:
优点:

  • 更好的性能,翻译更流畅,能更好利用上下文,利用短语相似性。
  • 通过“端到端”形式网络优化
  • 不用特征工程,节约人力,对所有的语言可用同样的方法

缺点:

  • NMT缺乏可解释性,较难debug;
  • NMT较难控制,如不能容易地指定翻译规则,有一定安全问题。

文章目录

  • 学习总结
  • 一、Pre-Neural Machine Translation
    • 1.1 Machine Translation
    • 1.2 Learning alignment for SMT
    • 1.3 Decoding for SMT
  • 二、Neural Machine Translation
    • 2.1 What is Neural Machine Translation?
    • 2.2 Sequence-to-sequence
    • 2.3 Training a Neural Machine Translation system
    • 2.4 Multi-layer RNNs
    • 2.5 Multi-layer deep encoder-decoder machine translation net
    • 2.6 Greedy decoding
    • 2.7 Exhaustive search decoding
    • 2.8 Beam search decoding
    • 2.9 评估指标
  • 三、Attention机制
    • 3.1 Sequence-to-sequence: the bottleneck problem
    • 3.2 Sequence-to-sequence with attention
    • 3.3 Attention: in equations
    • 3.4 Attention variants
  • 四、总结
  • Reference

一、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:argmax⁡yP(y∣x)\operatorname{argmax}_{y} P(y \mid x) argmaxy​P(y∣x)使用贝叶斯规则将其分解为2个部分,分别学习:argmax⁡yP(x∣y)P(y)\operatorname{argmax}_{y} P(x \mid y) P(y) argmaxy​P(x∣y)P(y)其中:

  • P(y∣x)P(y \mid x)P(y∣x)

    • 翻译模型
    • 分析单词和短语应该如何翻译
    • 从并行数据中学习
  • P(y)P(y)P(y)
    • 语言模型
    • 模型如何写出好英语
    • 从单语数据中学习

问题:如何学习翻译模型P(y∣x)P(y \mid x)P(y∣x)
——需要大量的并行数据(例如成对的人工翻译的法语/英语句子)

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之间的单词级对应。

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

对齐可以是多对一的:

对齐可以是一对多的:

对齐可以是多对多的:

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

  • 特定单词对齐的概率
  • 特定单词具有特定fertility的概率(对应单词的数量)
  • CS228有讲相关对齐变量aaa的学习(最大期望)

1.3 Decoding for SMT


如何计算argmax:
(1)可以穷举所有可能的y并计算概率(复杂度高)
(2)在模型中强化独立性假设,用动态规划DP求解最优解(如Viterbi算法 )。这个过程叫作decoding(解码)。

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

二、Neural Machine Translation

2.1 What is Neural Machine Translation?

  • 神经机器翻译是利用单个神经网络进行机器翻译的一种方法
  • 神经网络架构称为sequence-to-sequence (又名seq2seq),它包含两个RNNs

2.2 Sequence-to-sequence

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

  • 摘要(长文本——>短文本)
  • 对话(前⼀句话——>下⼀句话)
  • 解析(输入文本——>输出解析为序列)
  • 代码生成(自然语言——>Python代码)

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

NMT直接计算P(y∣x)P(y \mid x)P(y∣x):
P(y∣x)=P(y1∣x)P(y2∣y1,x)P(y3∣y1,y2,x)…P(yT∣y1,…,yT−1,x)P(y \mid x)=P\left(y_{1} \mid x\right) P\left(y_{2} \mid y_{1}, x\right) P\left(y_{3} \mid y_{1}, y_{2}, x\right) \ldots P\left(y_{T} \mid y_{1}, \ldots, y_{T-1}, x\right) P(y∣x)=P(y1​∣x)P(y2​∣y1​,x)P(y3​∣y1​,y2​,x)…P(yT​∣y1​,…,yT−1​,x)
如何训练一个NMT系统?
答:需要找一个大的平行语料库。

2.3 Training a Neural Machine Translation system

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

2.4 Multi-layer RNNs

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

2.5 Multi-layer deep encoder-decoder machine translation net


多层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。

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

2.7 Exhaustive search decoding

理想情况下,我们想找到一个长度为T的翻译句子,即最大化:
P(y∣x)=P(y1∣x)P(y2∣y1,x)P(y3∣y1,y2,x)…,P(yT∣y1,…,yT−1,x)=∏t=1TP(yt∣y1,…,yt−1,x)\begin{aligned} P(y \mid x) &=P\left(y_{1} \mid x\right) P\left(y_{2} \mid y_{1}, x\right) P\left(y_{3} \mid y_{1}, y_{2}, x\right) \ldots, P\left(y_{T} \mid y_{1}, \ldots, y_{T-1}, x\right) \\ &=\prod_{t=1}^{T} P\left(y_{t} \mid y_{1}, \ldots, y_{t-1}, x\right) \end{aligned} P(y∣x)​=P(y1​∣x)P(y2​∣y1​,x)P(y3​∣y1​,y2​,x)…,P(yT​∣y1​,…,yT−1​,x)=t=1∏T​P(yt​∣y1​,…,yt−1​,x)​
我们可以穷举计算所有可能的序列y,这意味着在解码器decode的每一步t步骤中,时间复杂度为O(VT)O(V^T)O(VT),其中TTT是词表大小。

2.8 Beam search decoding

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

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

基于y1,…,yty_{1}, \ldots, y_{t}y1​,…,yt​有一个对数概率分数,分数都是负数的,数值越大越好:
score⁡(y1,…,yt)=log⁡PLM(y1,…,yt∣x)=∑i=1tlog⁡PLM(yi∣y1,…,yi−1,x)\operatorname{score}\left(y_{1}, \ldots, y_{t}\right)=\log P_{\mathrm{LM}}\left(y_{1}, \ldots, y_{t} \mid x\right) \\=\sum_{i=1}^{t} \log P_{\mathrm{LM}}\left(y_{i} \mid y_{1}, \ldots, y_{i-1}, x\right) score(y1​,…,yt​)=logPLM​(y1​,…,yt​∣x)=i=1∑t​logPLM​(yi​∣y1​,…,yi−1​,x)

举一个beam search decoding的栗子,设beam size=k=2,下图中蓝色的数字是score⁡(y1,…,yt)=log⁡PLM(y1,…,yt∣x)=∑i=1tlog⁡PLM(yi∣y1,…,yi−1,x)\operatorname{score}\left(y_{1}, \ldots, y_{t}\right)=\log P_{\mathrm{LM}}\left(y_{1}, \ldots, y_{t} \mid x\right)=\sum_{i=1}^{t} \log P_{\mathrm{LM}}\left(y_{i} \mid y_{1}, \ldots, y_{i-1}, x\right) score(y1​,…,yt​)=logPLM​(y1​,…,yt​∣x)=i=1∑t​logPLM​(yi​∣y1​,…,yi−1​,x)的结果,算法的步骤:

  • 计算下一个单词的概率分布
  • 取前k个单词并计算分数
  • 对于每一次的 k 个假设,找出最前面的 k 个单词并计算分数
  • 在k2k^2k2的假设中,保留 k 个最高的分值,如 t = 2 时,保留分数最高的 hit 和 was

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

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

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

  • 当⼀个假设生成了<END>令牌,该假设完成
  • 把它放在⼀边,通过 Beam Search 继续探索其他假设

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

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

基于完成的假设列表,有个问题:较长的假设得分较低,修正方法:按长度标准化,用下式来选择top one:1t∑i=1tlog⁡PLM(yi∣y1,…,yi−1,x)\frac{1}{t} \sum_{i=1}^{t} \log P_{\mathrm{LM}}\left(y_{i} \mid y_{1}, \ldots, y_{i-1}, x\right) t1​i=1∑t​logPLM​(yi​∣y1​,…,yi−1​,x)

2.9 评估指标

BLEU (Bilingual Evaluation Understudy)
PS:在assignment4有BLEU的详细介绍。

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

  • n-gram precision(n可以是1,2,3,4)
  • 对过短的机器翻译加上惩罚项

BLEU有用但不完美:

  • 有很多有效的方法来翻译⼀个句子
  • 所以⼀个好的翻译可以得到⼀个糟糕的BLEU score,因为它与⼈⼯翻译的n-gram重叠较低

MT发展史:

神经机器翻译于2014年从边缘研究活动到2016年成为领先标准方法。
2014:第⼀篇 seq2seq 的⽂章发布
2016:谷歌翻译从 SMT 换成了 NMT,18年很多大公司也使用了。

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

  • 词表外的单词处理;
  • 训练集和测试集之间的领域不匹配(domain mismatch);
  • 在较长文本上维护上下文;
  • 缺乏足够多的语言对;
  • 代词或者零代词(zero pronoun)解析错误;
  • Morphological agreement errors。

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

三、Attention机制

3.1 Sequence-to-sequence: the bottleneck problem

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

3.2 Sequence-to-sequence with attention

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

  • 将解码器部分的第⼀个<token> 与源语句中的每一个时间步的隐藏状态进行 Dot Product 得到每⼀时间步的分数;
  • 通过softmax将分数转化为概率分布
  • 在这个解码器时间步长上,我们主要关注第⼀个编码器隐藏状态(“he”)

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

将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

  • 我们现在有编码器encoder的隐藏层状态h1,…,hN∈Rhh_{1}, \ldots, h_{N} \in \mathbb{R}^{h}h1​,…,hN​∈Rh
  • 在时间步ttt时,我们有解码器隐藏层状态st∈Rhs_{t} \in \mathbb{R}^{h}st​∈Rh
  • 可以得到这一步的注意力分数ete^{t}et(注意:这一步可以有很多不同的方法):et=[stTh1,…,stThN]∈RN\boldsymbol{e}^{t}=\left[\boldsymbol{s}_{t}^{T} \boldsymbol{h}_{1}, \ldots, \boldsymbol{s}_{t}^{T} \boldsymbol{h}_{N}\right] \in \mathbb{R}^{N} et=[stT​h1​,…,stT​hN​]∈RN
  • 我们使用softmax得到这一步的注意分布αt\alpha^{t}αt(是一个概率分布,sum=1)αt=softmax⁡(et)∈RN\alpha^{t}=\operatorname{softmax}\left(\boldsymbol{e}^{t}\right) \in \mathbb{R}^{N} αt=softmax(et)∈RN
  • 利用αt\alpha^tαt计算编码器encoder的隐藏层状态的加权和,得到注意力output,at\boldsymbol{a}_{t}at​,有时也叫做context向量:at=∑i=1Nαithi∈Rh\boldsymbol{a}_{t}=\sum_{i=1}^{N} \alpha_{i}^{t} \boldsymbol{h}_{i} \in \mathbb{R}^{h} at​=i=1∑N​αit​hi​∈Rh
  • 最后,将注意力输出at\boldsymbol{a}_{t}at​与解码器decoder的隐藏层hidden state拼接起来,然后按照非注意力的seq2seq剩下的部分进行,拼接过程如下:[at;st]∈R2h\left[\boldsymbol{a}_{t} ; \boldsymbol{s}_{t}\right] \in \mathbb{R}^{2 h} [at​;st​]∈R2h

注意力机制的优点:

  • 大幅度提高NMT性能;
  • 注意力分数大的部分被重视;
  • 解决梯度消失问题;
  • 具有可解释性:
    • 通过看attention distribution,能看到decoder重点关注哪些部分;
    • 不用对齐alignment(网络自己学会对齐)。

图:attention distribution

  • 注意力能够很好改变MT的seq2seq模型;attention也能用在很多任务中。
  • attention的更一般定义:基于向量value和向量query,attention即一种根据query,计算value的加权和的方法。
  • query attends to the values:比如seq2seq+attention模型中,每个解码器的隐藏状态(query)关注所有编码器的隐藏状态(value)。

3.4 Attention variants

基于 h1,…,hN∈Rd1\boldsymbol{h}_{1}, \ldots, \boldsymbol{h}_{N} \in \mathbb{R}^{d_{1}}h1​,…,hN​∈Rd1​和 s∈Rd2\boldsymbol{s} \in \mathbb{R}^{d_{2}}s∈Rd2​,有几种方法,计算 e∈RN\boldsymbol{e} \in \mathbb{R}^{N}e∈RN:

  • Basic dot-product(点乘) attention:ei=sThi∈R\boldsymbol{e}_{i}=\boldsymbol{s}^{T} \boldsymbol{h}_{i} \in \mathbb{R}ei​=sThi​∈R

    • 注意:这里假设 d1d_1d1​ = d2d_2d2​,这也是早期的版本
  • Multiplicative(乘法) attention: ei=sTWhi∈R\boldsymbol{e}_{i}=\boldsymbol{s}^{T} \boldsymbol{W} \boldsymbol{h}_{i} \in \mathbb{R}ei​=sTWhi​∈R
    • 其中W∈Rd2×d1\boldsymbol{W} \in \mathbb{R}^{d_{2} \times d_{1}}W∈Rd2​×d1​是权重矩阵
  • Additive(加法) attention:ei=vTtanh⁡(W1hi+W2s)∈R\boldsymbol{e}_{i}=\boldsymbol{v}^{T} \tanh \left(\boldsymbol{W}_{1} \boldsymbol{h}_{i}+\boldsymbol{W}_{2} \boldsymbol{s}\right) \in \mathbb{R}ei​=vTtanh(W1​hi​+W2​s)∈R
    • 其中W1∈Rd3×d1\boldsymbol{W}_{1} \in \mathbb{R}^{d_{3} \times d_{1}}W1​∈Rd3​×d1​、W2∈Rd3×d2\boldsymbol{W}_{2} \in \mathbb{R}^{d_{3} \times d_{2}}W2​∈Rd3​×d2​是权重矩阵,v∈Rd3\boldsymbol{v} \in \mathbb{R}^{d_{3}}v∈Rd3​是权重向量;
    • 注意力维度d3d_3d3​是一个超参数。

四、总结

Reference

(1)课程ppt:https://web.stanford.edu/class/cs224n/slides/
(2)Speech and Language Processing :https://web.stanford.edu/~jurafsky/slp3/
(3)课程官网:https://see.stanford.edu/Course/CS224N#course-details
(4)https://www.vice.com/en/article/j5npeg/why-is-google-translate-spitting-out-sinister-religious-prophecies

【CS224n】(lecture7)机器翻译NMT,seq2seq和attention相关推荐

  1. NMT实战理解Attention、Seq2Seq

    最近在看NMT相关的研究,论文很多,每隔几个月就会有新的论文发出来,提出新的模型或者改进,作为小白,我觉得还是先搞懂一些基础理念,试着去实现最简单的模型,练练手. 本次以Pytorch的Transla ...

  2. 深度学习与自然语言处理教程(6) - 神经机器翻译、seq2seq与注意力机制(NLP通关指南·完结)

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/36 本文地址:https://www.showmeai.tech/article-d ...

  3. seq2seq与Attention机制

    学习目标 目标 掌握seq2seq模型特点 掌握集束搜索方式 掌握BLEU评估方法 掌握Attention机制 应用 应用Keras实现seq2seq对日期格式的翻译 4.3.1 seq2seq se ...

  4. 第十二课.Seq2Seq与Attention

    目录 Seq2Seq,机器翻译Encoder-Decoder 机器翻译数据集与数据预处理 Encoder-Decoder模型 损失函数 训练与测试 结合Luong Attention Luong At ...

  5. 完全图解RNN、RNN变体、Seq2Seq、Attention机制

    完全图解RNN.RNN变体.Seq2Seq.Attention机制 本文作者:思颖 2017-09-01 18:16 导语:帮助初学者开启全新视角 雷锋网(公众号:雷锋网) AI科技评论按:本文作者何 ...

  6. PyTorch学习(7)-Seq2Seq与 Attention

    Seq2Seq与 Attention import os import sys import math from collections import Counter import numpy as ...

  7. 「自然语言处理(NLP)」神经机器翻译(NMT)论文整理(一)

    来源: AINLPer 微信公众号(每日更新-) 编辑: ShuYini 校稿: ShuYini 时间: 2020-02-27 引言: 下面是作者整理的关于神经机器翻译(NMT)相关的论文文章,下面这 ...

  8. DL之Attention-ED:基于TF NMT利用带有Attention的 ED模型训练、测试(中英文平行语料库)实现将英文翻译为中文的LSTM翻译模型过程全记录

    DL之Attention-ED:基于TF NMT利用带有Attention的 ED模型训练(中英文平行语料库)实现将英文翻译为中文的LSTM翻译模型过程全记录 目录 测试输出结果 模型监控 训练过程全 ...

  9. seq2seq到attention到transformer理解

    1.seq2seq 1.1 模型结构 encoder ,decoder都是用RNN实现的 所有信息共用一个语义表示C,C为隐藏状态 缺点:无法表达序列信息 句子长,效果差,丢失信息 训练时: enco ...

最新文章

  1. linux网络配置练习
  2. 计算机应用基础测试成绩截图,计算机应用基础测试题图文稿.docx
  3. 下一清分日期是几年前_下一清分日期是什么意思
  4. echarts2.2.7入门
  5. python psycopg2_python2.7 psycopg2
  6. python class类里给列表排序_python笔记:Class(类)
  7. 前端学习(2786):完成推荐商品结构之头部标签栏
  8. 数据库提示:正在还原中,无法访问 应该怎么办?
  9. 《空中交通管理基础》-潘卫军主编-第三章-航空器和飞行高度层
  10. mysql连接自己的ip地址_mysql 连接字符串 远程连接用IP地址 而非只是localhost时
  11. linux x中文显示,01_Linux系统系统语言查询,设置Xshell工具,中文显示,测试Xshell中文字符显示,Linux中文显示乱码设置...
  12. 码农和程序员的区别,网友:月入三万以下全是码农!
  13. NFL计划将数据跟踪芯片放入橄榄球中
  14. Linux系统cp:omitting directory`XXX'问题解决
  15. STM32F4系列定时器简介
  16. 手把手撸一个小而美的日历组件
  17. openssh离线升级8.8
  18. ccitt crc16
  19. 计算机控制知识点总结,自己整理的计算机控制重点
  20. 上线周期缩短上百倍!NLP流水线系统发布,10分钟搭建检索、问答等复杂系统...

热门文章

  1. linux卸载nps,CentOS安装nps
  2. 2019互联网年会图鉴:去年煮酒论英雄,今年却似新亭会
  3. c语言asinh函数,C ++ STL中的asinh()函数
  4. 冷热酸甜、想成就成?冷酸灵母公司登康口腔欲在深交所主板上市
  5. 面试题错题解析5_操作系统
  6. 华大半导体HC32F4A0笔记(五),使用CMSIS-DSP库进行FFT运算
  7. ntc温度控制程序 c语言,NTC热敏电阻温度计算以及C语言实现
  8. 立国之本——制造业,云计算、大数据助推升级中
  9. 华为路由器hilink怎么用_路由器是华为HiLink协议的连接中心
  10. HBuilder检测不到海马玩模拟器的解决办法。