Open xuehui1991 opened 9 years ago
本文是Google的I. Sutskever等人提出的一种序列到序列的学习方法, 最直接的应用就是机器翻译.
最近几年, DNN在各个领域取得了突飞猛进的进展, 但是DNN不能将一个序列映射到另外一个序列, 因为序列的长度是不固定的. 本文就此提出了一种新的序列到序列的学习算法.
算法的思想是, 利用LSTM将输入序列映射成一个固定维度的向量表示. 然后使用另外一个LSTM从中抽取出输出序列. 选用LSTM的原因是其能够学到数据中的比较长时间的依赖关系.
如果输入和输出之间的alignment已知, 那么RNN可以很方便的将输入序列映射成输出序列. 但是如果输入序列和输出序列的长度不一致, 并且有复杂的关系时, 应用RNN就比较困难.
一种做法是使用RNN将输入序列映射到一个固定长度的向量, 然后使用另外一个RNN将该向量映射到输出序列[1]. 传统的RNN效果不那么好, 因为其不能学到比较长时间的依赖关系, 而LSTM[2]正好可以解决这个问题.
我们的目标是估计条件概率$P(y1,...,y{T'}|x_1,...,x_T)$. 其中$x1, x{T}$是输入序列, $y1, ..., y{T'}$是输出序列. LSTM的原理是根据LSTM的最后隐层状态来得到一个固定长度的向量$v$来表示输入序列$x_1, ..., x_T$, 然后计算序列$y1,...,y{T'}$的概率. 其初始的隐层状态设置为$v$, 如下式所示
$p(y1, ..., y{T'}|x_1, ..., xT)=\prod{t=1}^{T'}p(y_t|v, y1, ..., y{t-1})$
需要注意的是, 对于每个句子, 我们都会在结尾添加一个结束单词$
这些实验细节是有share的code吗 我只知道 https://github.com/lisa-groundhog/GroundHog
如果gradient的norm变得很大进行normalization这个trick是在两种RNN常用,还是其他地方也常用呢。感觉如果是ada base的grad不会特别大呢?求证