读《神经网络与深度学习》一书,随笔。

在NLP领域几乎都是序列标注问题,上下文信息非常重要,与图像有明显不同。本节需要HMM、Collins感知机、CRF等传统序列标注模型的基础才能好理解。

1 RNN(Recurrent Network)

前面学习的CNN更适合图像领域,而RNN是针对文本领域提出的,专门处理序列化数据的神经网络结构。RNN的一个循环神经单元和按时间展开后的样子如下图:

matlab长短期记忆神经网络需求预测 长短期记忆网络原理_激活函数

数学表达式为:

,理解为,t时刻的输出

与当前的输入

和上一时刻的输出

有关。

输入一句话时RNN的过程如下图,可以看出前面所有的输入都对未来的输出产生了影响,圆形隐藏层中包含了前面所有的颜色。

matlab长短期记忆神经网络需求预测 长短期记忆网络原理_matlab长短期记忆神经网络需求预测_02

理论上讲,RNN能够处理“长期依赖”问题。但在实践中,RNN效果却并不好。Hochreiter和Bengio深入探讨了这个问题,为普通RNN无法解决长期记忆问题提供了理论证明。从上图中也能看出,短期的记忆影响较大(如橙色区域),但是长期的记忆影响就很小(如黑色和绿色区域),这就是 RNN 存在的短期记忆问题。RNN另外一个缺点就是训练需要投入极大的成本。

2 LSTM(Long Short Term Memory Networks)

1997年,Hochreiter和Schmidhuber提出了LSTM,而深度学习是在2012年兴起的,LSTM又经过了若干代大牛(Felix Gers, Fred Cummins, Santiago Fernandez, Justin Bayer, Daan Wierstra, Julian Togelius, Faustino Gomez, Matteo Gagliolo, and Alex Gloves)的发展,由此便形成了比较系统且完整的LSTM框架,并且在很多领域得到了广泛的应用。

matlab长短期记忆神经网络需求预测 长短期记忆网络原理_matlab长短期记忆神经网络需求预测_03

matlab长短期记忆神经网络需求预测 长短期记忆网络原理_matlab长短期记忆神经网络需求预测_04

LSTM的计算流程如下:

matlab长短期记忆神经网络需求预测 长短期记忆网络原理_神经网络_05

3 LSTM变体

matlab长短期记忆神经网络需求预测 长短期记忆网络原理_激活函数_06