目录
-
神经机器翻译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的每一层,这样就不会有记忆丢失的后顾之忧了。
机器翻译的发展
神经机器翻译的四大优势
-
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&长序列
朴素encoder-decoder的问题是,只能用固定维度的最后一刻的encoder隐藏层来表示源语言Y,必须将此状态一直传递下去,这是个很麻烦的事情。事实上,早期的NMT在稍长一点的句子上效果就骤降。
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好了很多,还是比不上人类,有时候会把同一个意思的词重复两遍:
来源:https://blog.csdn.net/qq_37098526/article/details/90698106