循环神经网络(Recurrent Neural Network)
循环神经网络是一种人工神经网络,它的节点间的连接形成一个遵循时间序列的有向图,它的核心思想是,样本间存在顺序关系,每个样本和它之前的样本存在关联。通过神经网络在时序上的展开,我们能够找到样本之间的序列相关性。
下面给出RNN的一般结构:
其中各个符号的表示:xt,st,ot分别表示的是t时刻的输入、记忆和输出,U,V,W是RNN的连接权重,bs,bo 是RNN的偏置,σ,φ是激活函数,通常选tanh或sigmoid,φ通常选用softmax。
其中 softmax 函数,用于分类问题的概率计算。本质上是将一个K维的任意实数向量压缩 (映射)成另一个K维的实数向量,其中向量中的每个元素取值都介于(0,1)之间。
RNN训练算法 - BPTT
我们先来回顾一下BP算法,就是定义损失函数 Loss 来表示输出和真实标签 y 的误差,通过链式法则自顶向下求得 Loss 对网络权重的偏导。沿梯度的反方向更新权重的值, 直到 Loss 收敛。而这里的 BPTT 算法就是加上了时序演化,后面的两个字母 TT 就是 Through Time。
长短时记忆网络
在RNN中,存在一个很重要的问题,就是梯度消失问题,一开始我们不能有效的解决长时依赖问题,其中梯度消失的原因有两个:BPTT算法和激活函数Tanh
有两种解决方案,分别是ReLU函数和门控RNN(LSTM).
LSTM
LSTM,即长短时记忆网络,于1997年被Sepp Hochreiter 和Jürgen Schmidhuber提出来,LSTM是一种用于深度学习领域的人工循环神经网络(RNN)结构。一个LSTM单元由输入门、输出门和遗忘门组成,三个门控制信息进出单元。
- LSTM依靠贯穿隐藏层的细胞状态实现隐藏单元之间的信息传递,其中只有少量的线性操作
- LSTM引入了“门”机制对细胞状态信息进行添加或删除,由此实现长程记忆
- “门”机制由一个Sigmoid激活函数层和一个向量点乘操作组成,Sigmoid层的输出控制了信息传递的比例
其他经典的循环神经网络
Gated Recurrent Unit(GRU)、Peephole LSTM、Bi-directional RNN(双向RNN)、Continuous time RNN(CTRNN)
循环神经网络的主要应用
语言模型、自动作曲、机器翻译、自动写作、图像描述
参考资料:https://datawhalechina.github.io/unusual-deep-learning/