RNN
RNN与人类大脑很相似。人类阅读时,会从左到又阅读一段文字,阅读时会不断积累信息,阅读完这段话后就会记录了整段文字的大意。
RNN将状态信息存储在h中。某个节点的h会包含这个节点以及之前节点的信息。最后一个状态h包含了整句话的信息。
RNN使用参数矩阵A。RNN也是权值共享的,整个RNN的矩阵A都是一样的。A随机初始化,并用训练数据来学习更新。
Simple RNN Model
激活函数使用双曲正切激活函数(hyperbolic tangent function )用了这激活函数后,每次更新h之后,都会将h中的参数恢复到-1与1之间。
其中参数矩阵A的大小为 shape(h) * [ shape(h) + shape(x) ]
LSTM Model
LSTM结构比simle RNN结构复杂很多,
LSTM 中的第一步是决定我们会从细胞状态中丢弃什么信息。这个决定通过一个遗忘门完成。
下一步是确定什么样的新信息被存放在细胞状态中。这里包含两个部分。第一,sigmoid 层称 “输入门层” 决定什么值我们将要更新。然后,一个 tanh 层创建一个新的候选值向量。
现在是更新旧状态的时间了,C_t-1
更新为C_t
。
我们把旧状态与f_t
相乘,丢弃掉我们确定需要丢弃的信息。接着加上i_t * {C}_t
。这就是新的候选值,根据我们决定更新每个状态的程度进行变化。
在语言模型的例子中,这就是我们实际根据前面确定的目标,丢弃旧代词的性别信息并添加新的信息的地方。
最终,我们需要确定输出什么值。首先,我们运行一个 sigmoid 层来确定细胞状态的哪个部分将输出出去。接着,我们把细胞状态通过 tanh 进行处理(得到一个在 -1 到 1 之间的值)并将它和 sigmoid 门的输出相乘,最终我们仅仅会输出我们确定输出的那部分。
Attention Model(注意力机制)
注意力机制最核心的操作就是一串权重参数,要从序列中学习到每一个元素的重要程度,然后按重要程度将元素合并。权重参数就是一个注意力分配的系数,给哪个元素分配多少注意力。
Attention函数的工作步骤总结: 1.s与h进行相似度计算得到权值;2.对上部权值归一化;3.用归一化的权值与h加权求和。此时加权求和的结果就为注意力值,也即是c