GRU Gated Recurrent Unit门控循环单元

先回顾之前学习的重要概念

斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

 最简单的神经网络定义

斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

 RNN

斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

 传统机器翻译:

传统的基于统计的机器学习系统是非常复杂的集合 传统的机器学习基于简单贝叶斯 后验概率等于其先验概率乘上似然 然后除以边缘概率

斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

 第一步想要翻译就要做翻译模型 但是翻译的匹配的难度很大 单词可能会一对一 一对多 还有多对多 会形成潜在的组合爆炸 而且不同语言的语序并不一致

斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

 解码:实际上就是很复杂的搜索问题 找到最大的假设

斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

深度学习可能会改变上述的问题

定义一个简单的模型

斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

 模型的定义 Φ后面跟两个向量 代表会有2个分开的w矩阵在每个向量里

斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

RNN翻译模型扩展:

第一步对于不同的递归神经网络需要配置不同的权重 对于encoding和decoding需要分别设置W

斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

 第二:decoder中的隐藏层的输入来自3个方面:前一个时刻的隐藏层、encoder的最后一个隐藏层 c=h_t 前一个预测结果y_t-1 

斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

 不同的图片相同的思想

斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

 第三:使用深度RNN

第四:使用bidirectional encoder

第五:把训练序列用逆序传入可以简化优化器 因为A更可能翻译为X,而梯度消失导致A无法影响输出,倒过来A离输出近一些。逆转词序不会带来“语法语义上的改变”,因为模型学习的就是如何从逆序的原文翻译顺序的译文。但相应的,C就离Y更远了

 斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

第六 :主要提高:更好的单元 GRU Gated Recurrent Units 主要思想:保存一些记忆去捕获一些较长依赖的关系 需要有一个模型去学习何时以及如何去做那个 同时还允许错误消息流转 flow 基于输入 这些流转会向不同的方向以不同的强度传递

斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

GRUs :先根据当前输入的词向量和隐藏层计算一个update gate 然后利用相同的方法不同的权重计算reset gate 然后利用reset gate 计算新的记忆

斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

这里的意思是,之前的记忆由reset gate控制,如果reset gate元素都是0,则遗忘之前的事情。比如电影评论的情感分析,“有个文艺的少男爱死了一个平凡的少女,这个平凡的少女也爱死了那个文艺的少男,可两个人就是无法相会巴拉巴拉,真是个无聊的电影”。无论前面说了多少话,起决定性作用的可能就是“无聊”这个词。那么一些GRU可能会说,我遇到了一个情感强烈的词语,我不想让它被之前的记忆冲淡(求和),所以我把reset gate设为0,之前的记忆不起作用,把这个情感词汇写成新的记忆。 而update gate的作用是调节最后的更新,到底时刻t的记忆多少来自之前,多少来自当前:如果z_t是单位向量的话,则隐藏层只是复制前一个时刻的隐藏层,梯度不发生变化(衰减)。

斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

下图中,虚线代表某个gate的调节作用。隐藏层取决于上一个时刻的隐藏层和新的记忆,而update gate负责调节它们的比例,reset gate和输入共同决定新的记忆……

斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

 对于GRU 的一些直觉上的感受

斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

Long short term memorise (LSTMs)

 基本的结构 输出门 意味着 信息与当前时点是否有关 遗忘门告诉模型什么时候会保留信息和什么时候会忘记

斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

 一些可视化

斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

 斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

 LSTM非常潮 是序列标注、seq2seq任务的首选模型,可以层叠起来形成更深的模型。在数据量特别大的时候特别有用。

那时候的NN模型还是仅限于重新排序传统MT模型产生的结果,而最新的研究就是完全甩开了MT模型:前三用的都是NN。

斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

 深度LSTM用于机器翻译:输入原文序列,将最后一个时刻的隐藏层向量PCA降维后可视化 :发现无论词序如何,意义相同的句子在向量空间中更接近。

斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

RNN的最新的进展:

sotfmax的问题 无法预测出从未见过的词对分类问题来讲,你无法指望分类模型给你分出一个训练集中不存在的类。即便是训练集中存在的类,如果样本数很少,模型也很难预测出该类。 对于预测下一个单词的语言模型来讲,也是如此。比如某某女士巴拉巴拉,然后自我介绍说我叫某某。如果某某不存在于训练集中,则模型无法预测出某某。 虽然可以用字符级的模型,但代价实在太大。

斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

 考虑用指针来解决这个问题 如果把某某替换为“向前数第10个单词”这样的指针,问题就迎刃而解了。具体做法是,以前100个时刻的隐藏层作为输入,用一个softmax去计算前100个单词是pointer的概率,与原来的词表上的分布混合。

 斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs

 斯坦福CS224n NLP课程【九】——机器翻译和高级循环神经网络LSTMs和GRUs