神经机器学习 NMT
神经机器翻译的优势
1.所谓端到端的训练,是指整个模型一起训练,一个输入,一个损失函数
与之相对的是传统机器学习的组合式模型,分别训练
优点是能找到全局最优,而不是局部最优的组合
2.分布式表示,应该是指词向量。与之相对的是1/N
3.更好的发挥上下文,指RNN。与之相对的是N-gram
4.生成更流畅。
NMT模型比较小,可以放在手机上
Attention
问题
早期模型在短句翻译的表现比较优秀,在长句翻译表现较差
分析原因可能出现在编码结果上,即解码的输入是固定的Y
思想
既然编码迭代了那么多次,为什么只用最后一次的结果呢?
因而有了源状态池的引入,使得解码器可以按需取用不同阶段的源状态
(甚至同时取用多个状态,并安装不同比例输入)
(其实人类翻译的时候似乎也是这么做的)
实现
根据上一层解码输出和每一层编码输出,对每层编码输出进行打分
根据分数作为权重,将各层的信息综合起来,作为一个输入表示量
(做一个softmax)
打分函数 or 注意力函数
1.编码输出和解码输出做点积运算(相似度)
2.编码输出和解码输出做点积运算(加一个中间权重矩阵,让包含的信息尽可能多而灵活)
3.做一个单层神经网络
关于解码器是如何生成词的
打分法
首先最朴素的想法是给所有候选项打分,穷举
但这显然是不可能的,因为词汇表太大的,复杂度很高
采样法
模型输出候选词的概率分布,根据概率分布进行随机采样
直到句子结尾
缺点就是不确定性,甚至在相同输入的前提下输出都是不同的
那么准确方差必然很大
贪婪搜索
每次选出概率最高的词
束搜索
部分解决贪婪带来的短视问题