怎么也逃不开这些NLP方面的模型,那就Good good study!
一:RNN
核心思想:包含循环的网络,允许信息的持久化。可以将RNN展开为以下的这种模型,简言之就是每一步产生的输出可以从当前步传递到下一步
所有 RNN 都具有一种重复神经网络模块的链式的形式。在标准的 RNN 中,这个重复的模块只有一个非常简单的结构,例如一个 tanh 层。
二:LSTM不同于上面的RNN,RNN仅有一个单一的tanh层,而LSTM是四个类似的层,如下图所示:
这四个图标的计算具体对应着什么???
在上面的图例中,每一条黑线传输着一整个向量,从一个节点的输出到其他节点的输入。粉色的圈代表 pointwise 的操作,诸如向量的和,而黄色的矩阵就是学习到的神经网络层。合在一起的线表示向量的连接,分开的线表示内容被复制,然后分发到不同的位置。
LSTM 的核心思想
LSTM 的关键就是细胞状态,水平线在图上方贯穿运行。细胞状态类似于传送带。直接在整个链上运行,只有一些少量的线性交互。信息在上面流传保持不变会很容易。
上面的Ct就类似于细胞状态的传输。
LSTM 有通过精心设计的称作为“门”的结构来去除或者增加信息到细胞状态的能力。门是一种让信息选择式通过的方法。他们包含一个 sigmoid 神经网络层和一个 pointwise 乘法操作。Sigmoid 层输出 0 到 1 之间的数值,描述每个部分有多少量可以通过。0 代表“不许任何量通过”,1 就指“允许任意量通过”!
LSTM 拥有三个门,来保护和控制细胞状态。
要逐步理解LSTM的三个门,可以参考链接
http://blog.csdn.net/prom1201/article/details/52221822里面有相关的介绍,图文并茂。以及LSTM的变体GRU也有。
接下来想实战跑一遍RNN和LSTM:
RNN的实现过程:史上最具体的代码讲解工作。
http://blog.csdn.net/zzukun/article/details/49968129
通过颜色标记序列,可以看到为什么我们用隐藏层来存储标记序列:
隐藏层循环能学习它到底去记忆什么,但是输入层循环仅仅能记住上次的数据点。
http://blog.csdn.net/dark_scope/article/details/47056361