RNN-week3
Sequence to sequence models:由encoder和decoder组成。decoder的前一个输出为当前输入。
应用1:文本翻译
应用2:图像标注。用CNN训练得到特征作为encoder,在后面加上decoder。
文本翻译
文本翻译与语言模型不同之处在于:语言模型在训练好之后是随机输出一个句子,而文本翻译需要找出最有可能的翻译句子。实现这种搜索的启发式搜索方式叫beam search(集束搜索)。(它不一定能够找到全局最优解)
beam search算法
参数:beam width:表示一次考虑的几种可能。例如B=3表示每次考虑3种可能的输出。
第一步:计算,假设单词表中有1000个单词,那么分别计算1000个单词的概率,选出其中概率最大的B个单词,假设这B个单词分别为:in ,Jane,september.
第二步:计算,也就是分别为3个单词计算后面连接1000个单词的概率,也就是3000个,选出其中概率最高的三种。
第三步同样如此,直到句子结束。(遇到结束的特殊符号)。
当B=1时,beam search就是greedy search.
beam search的改进
原始计算概率:
1.多次乘积容易导致计算机小数位溢出,解决方法:在计算结果前面加上log,将乘积变成Log的加法;
2.为了使概率更高,为了使概率更高,会趋向于选择更短的句子,因此将概率做归一化:
其中,的经验值一般取0.7.
对模型做误差分析
计算人类翻译的最优解的概率与学习得到的最优解概率。若前者得分高,说明是beam search出了问题,应该增加B的数值,若后者高,说明RNN模型出了问题,可能需要对模型做进一步改进。
用多个例子来对模型作分析,最后找出问题比较严重的部分是RNN还是beam search。
attention model
没有attention机制的encoder-decoder结构通常把encoder的最后一个状态作为decoder的输入(可能作为初始化,也可能作为每一时刻的输入),但是encoder的state毕竟是有限的,存储不了太多的信息,对于decoder过程,每一个步骤都和之前的输入都没有关系了,只与这个传入的state有关。attention机制的引入之后,decoder根据时刻的不同,让每一时刻的输入都有所不同。
模型简介:
首先根据初始的隐藏单元和输入计算出权重系数,也就是”match”过程,match的方法有几种:
1.利用余弦相似度计算两个向量间的相似度;
2.利用简单的神经网络进行训练;
预测出权重系数之后,利用权重系数计算出,作为rnn的输入部分,与隐藏单元一起作为输入预测第二个时刻的隐藏单元
然后继续用和各个输入一起预测第二个时刻的权重系数,继续用于第二个时刻的输出,直到翻译结束。
因此在输出每个时刻y时,都利用了不同输入的不同注意力,且这些注意力权重都是通过训练得到的。