以下内容是个人参考网上的学习资料以及自己的理解进行总结的
1、循环神经网络的介绍具体看
https://www.cnblogs.com/pinard/p/6509630.html
深度神经网络无法利用数据中时间序列信息,循环神经网络应势而生。循环神经网络的主要用途是处理和预测序列数据,它最擅长解决的问题是与时间序列相关的。它与CNN一样参数是共享的。
循环神经网络工作的关键点就是利用历史的信息来帮助当前的决策,因此而带来了更大的技术挑战--长期依赖(此外RNN的序列过长时会出现梯度消失现象)LSTM(长短时记忆)的出现正是为了解决这一问题。LSTM是对RNN细胞进行了改造,加入了“遗忘门”它的作用是让循环神经网络“忘记”没有用的信息,它会根据当前的输入Xt和上一时刻的输出Ht-1以及上一时刻的细胞状态共同决定应该从上一时刻的细胞状态记忆中遗忘什么。在循环神经网络‘忘记’了部分之前的状态后,它还需要从当前的输入补充最新的记忆,这个过程是由输入门完成的。“输入门”会根据当前的输入Xt和上一时刻的输出Ht-1以及当前产生的新的细胞状态决定哪些部分进入当前时刻的状态Ct。“输出门”它会根据更新后的状态Ct,上一时刻的输出Ht-1和当前的输入Xt来决定该时刻的输出Ht。
注意:LSTM相比于RNN具备长期的记忆功能是因为除了隐状态Ht,增加了一个新的细胞状态,通过对赋予LSTM长期记忆功能的细胞状态不断进行更新,一方面及时的遗忘无用的信息,另一方面及时的补充新的信息。
当前时刻的隐藏状态输出由当前输入数据,之前的隐藏状态和更新后的细胞状态一起共同决定。
RNN以及其变种的一系列网络最大的问题是,由于其循环的结构导致其无法并行计算,所以训练RNN需要花费大量的时间。同时LSTM的记忆能力也是有限的,有论文证明当序列长度大于200时仍然会出现遗忘现象。
2、LSTM以及其变种(GRU等)图解析
其中牵扯到的计算如下:
(忘记门部分)
(输入门部分)
(当前时刻新细胞状态的产生)
(细胞状态的更新,忘记门结合上一时刻的细胞状态决定需要遗忘的信息,输入门结合当前时刻产生的新的细胞状态决定应该添加什么信息,最终共同对包含长期记忆的细胞状态进行更新)
(输出门部分)
(输出门结合包含长期记忆的细胞状态共同决定当前时刻的输出)
根据以上的公式能够发现,细胞的状态无法对门控结构造成影响,可以加入窥视孔连接,使得细胞状态得以对门控结构造成影响。细胞单元结构图的改变:
相应计算公式的改变:
另一个变型GRU,它把LSTM中的遗忘门和输入门合并为了一个单一的更新门,同时还混合了细胞状态及隐藏状态以及其它一些改动。GRU的门控结构减少到了两个,分别为更新门和重置门,更新门用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门的值越大说明前一时刻的状态信息带入越多。重置门用于控制忽略前一时刻的状态信息的程度,重置门的值越小说明忽略得越多。
细胞结构图以及计算公式如下:
3.LSTM为什么选用sigmoid和tanh两个激活函数是否可以改变
从LSTM的前向传播计算公式中能够得出,三个sigmoid激活函数用于门处,通过sigmoid转换为0-1之间的值能够得到对遗忘输入输出的更直观的表示(因为后来又和细胞状态相乘是否起到一个概率的作用),为什么不用其他sig函数因为sigmoid函数更容易达到饱和,其他的难以饱和,LSTM应该需要饱和的门来记住或忘记信息,不饱和的门会使得过去和现在的记忆一直在叠加,造成记忆错乱。sigmoid激活函数最好不要改变。
两个tanh用于细胞状态处,有论文指出这个可以替换。
原文地址:https://www.cnblogs.com/dyl222/p/10995298.html