目录
神经机器翻译NMT
神经机器翻译的架构
神经机器翻译的青铜时代
现代神经机器翻译的序列模型
RNN Encoder
Decoder:循环语言模型
机器翻译的发展
神经机器翻译的四大优势
统计/神经机器翻译
神经机器翻译主要由工业界促进
Attention:朴素RNN&长序列
Attention机制
词语对齐
同时学习翻译和对齐
Scoring
- 神经机器翻译NMT
神经机器翻译的架构
文章图片
神经机器翻译的青铜时代
80年代神经网络是个很边缘的领域,另外计算力也很有限。当时的NMT系统很简陋:词表四五十,固定的50个输入(二进制编码),固定的66个输出,一到三层隐藏层,150个单元。
文章图片
90年代出现了一种类似RNN的更复杂的框架:
文章图片
现代神经机器翻译的序列模型
一个RNN做encoder,另一个RNN做decoder。
文章图片
实际系统中使用深层RNN:
文章图片
这里的RNN可视作条件循环语言模型:
文章图片
RNN Encoder
文章图片
最后一个隐藏层的状态Y是整个原文的总结。
常见的encoder实际上加了一些扩展,比如GRU或LSTM。
Decoder:循环语言模型
常见的做法是把encoder的最后一层(最后一个时刻)作为decoder的第一层,这样就必须用LSTM保持中期记忆。
另一种做法是将encoder最后一层喂给decoder的每一层,这样就不会有记忆丢失的后顾之忧了。
文章图片
机器翻译的发展
文章图片
神经机器翻译的四大优势
- 【NLP|CS224N笔记——神经机器翻译与Attention机制】End-to-end training
为优化同一个损失函数调整所有参数
- Distributed representation
更好地利用词语、短语之间的相似性
- Better exploitation of context
利用更多上下文——原文和部分译文的上下文
- More fluent text generation
深度学习文本生成质量更好
不同年份google翻译的效果测试:
神经机器翻译主要由工业界促进
2016-02 微软在Android和iOS上发布了离线NMT系统。
2016-08 Systran发布了NMT模型。
2016-09 Google发布了NMT系统,声称比得上人工翻译质量。
- Attention:朴素RNN&长序列
文章图片
Attention机制
文章图片
解决方法是将encoder的历史状态视作随机读取内存,这样不仅增加了源语言的维度,而且增加了记忆的持续时间(LSTM只是短时记忆)。
词语对齐
传统的SMT中需要显式地做双语对齐:
文章图片
而attention model是在翻译的过程中隐式地对齐。
同时学习翻译和对齐
attention model成功地对齐了法语和英语,其中一小段语序的调整也反应出来了:
文章图片
Scoring
在图示问号时刻,究竟应该关注哪些时刻的encoder状态呢?关注的强度是多少呢?
有一种打分机制,以前一刻的decoder状态和某个encoder状态为参数,输出得分:
文章图片
然后softmax归一化分值转化为概率,这个概率称为对齐权值(alignment weights):
文章图片
这个概率也代表模型应该将多少比例的注意力放在一个历史状态上:
文章图片
加权和得到一个context vector,作为条件之一生成decoder的当前状态:
文章图片
而分数的获得,是通过attention function进行的。attention function有多种选择,其中流行的是中间这种。Wa给了两个向量更复杂的interaction,而最后一种根本没有interaction。
文章图片
有一些观点认为模型不应该注意所有的事情:
文章图片
但这些观点并没有取得更好的成绩:
文章图片
句子特别短的时候,模型的得分都不高。这纯粹是因为语料中的短句子本来就语义隐晦,比如某个专有名词作为标题。而有attention的模型在句子很长的时候,效果依然没有下降,说明了attention的重要性。
LSTM非常擅长生成自然的文本,但有时候译文与原文相去甚远,没有把注意力放在原文上。比如下面红色的名字不知道从哪里冒出来的:
文章图片
加了attention好了很多,还是比不上人类,有时候会把同一个意思的词重复两遍:
文章图片
推荐阅读
- 人工智能|hugginface-introduction 案例介绍
- 深度学习|论文阅读(《Deep Interest Evolution Network for Click-Through Rate Prediction》)
- nlp|Keras(十一)梯度带(GradientTape)的基本使用方法,与tf.keras结合使用
- NER|[论文阅读笔记01]Neural Architectures for Nested NER through Linearization
- 深度学习|2019年CS224N课程笔记-Lecture 17:Multitask Learning
- 深度学习|[深度学习] 一篇文章理解 word2vec
- 论文|预训练模型综述2020年三月《Pre-trained Models for Natural Language Processing: A Survey》
- NLP|NLP预训练模型综述
- NLP之文本表示——二值文本表示
- 隐马尔科夫HMM应用于中文分词