20210626
循环神经网络_霜叶的博客-CSDN博客
LSTM的理解 - 走看看
重点
深入LSTM结构
首先使用LSTM的当前输入 (x^t)和上一个状态传递下来的 (h^{t-1}) 拼接训练得到四个状态。
其中, (z^f) , (z^i) ,(z^o) 是由拼接向量乘以权重矩阵之后,再通过一个(sigmoid) 激活函数转换成0到1之间的数值,来作为一种门控状态。而 (z)则是将结果通过一个 (tanh) 激活函数将转换成-1到1之间的值(这里使用 (tanh) 是因为这里是将其做为输入数据,而不是门控信号)。
四个状态在LSTM内部
(o.) 是Hadamard Product,也就是操作矩阵中对应的元素相乘,因此要求两个相乘矩阵是同型的。 (O+) 则代表进行矩阵加法。
LSTM内部主要有三个阶段:
-
忘记阶段。这个阶段主要是对上一个节点传进来的输入进行选择性忘记。简单来说就是会 “忘记不重要的,记住重要的”。
具体来说是通过计算得到的 (z^f) (f表示forget)来作为忘记门控,来控制上一个状态的 (c^{t-1}) 哪些需要留哪些需要忘。
-
选择记忆阶段。这个阶段将这个阶段的输入有选择性地进行“记忆”。主要是会对输入 (x^t) 进行选择记忆。哪些重要则着重记录下来,哪些不重要,则少记一些。当前的输入内容由前面计算得到的(z)表示。而选择的门控信号则是由 (z^i) (i代表information)来进行控制。
将上面两步得到的结果相加,即可得到传输给下一个状态的 (c^t) 。也就是上图中的第一个公式。
-
输出阶段。这个阶段将决定哪些将会被当成当前状态的输出。主要是通过 (z^o) 来进行控制的。并且还对上一阶段得到的(c^o) 进行了放缩(通过一个tanh激活函数进行变化)。
与普通RNN类似,输出 (y^t) 往往最终也是通过 (h^t) 变化得到。
参考链接
LSTM——起源、思想、结构 与“门” - 知乎
BILSTM原理介绍_sinat_24330297的博客-CSDN博客_bilstm原理
Bilstm
20210609
参见这个文件
命名实体识别现状及建议_lstm原理_CRF原理_20200603.doc
RNN
Recurrent Neural Networks,循环神经网络
(注意区别于recursive neural network,递归神经网络)
为了解决DNN存在着无法对时间序列上的变化进行建模的问题(如自然语言处理、语音识别、手写体识别),出现的另一种神经网络结构——循环神经网络RNN。
RNN结构
LSTM
RNN的隐含层变量梯度可能会出现衰减或爆炸。虽然梯度裁剪可以应对梯度爆炸,但无法解决梯度衰减。因此,给定一个时间序列,例如文本序列,循环神经网络在实际中其实较难捕捉两个时刻距离较大的文本元素(字或词)之间的依赖关系。
LSTM(long short-term memory)由Hochreiter和Schmidhuber在1997年被提出。
LSTM结构
这里两张图先不用细看,先着重记住公式后再回来看
GRU
由Cho、van Merrienboer、 Bahdanau和Bengio在2014年提出,比LSTM少一个门控,实验结果却相当
GRU结构