目录
前置知识:BP神经网络、CNN卷积神经网络
网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。
RNN结构
X 表示输入,O 表示输出,St 表示t时刻存储的状态信息
W, U, V为权值矩阵,b为偏置值。
在t =1时刻,一般初始化输入S0=0,随机初始化W, U, V。
其中,f 和 g 均为激活函数。f 可以是tanh, relu, sigmoid等激活函数,通常取tanh;g 在二分类任务中常采用sigmoid,多酚类任务通常采用softmax。
W, U, V在每个时刻都是相等的(权重共享)
RNN训练方法
每一步的输出不仅仅依赖当前步的网络,并且还需要前若干步网络的状态,这种BP改版的算法叫做Backpropagation Through Time(BPTT) ,也就是将输出端的误差值反向传递,运用梯度下降法进行更新。
损失函数可以使用交叉熵损失函数也可以使用平方误差损失函数
整理可得:(注:此处ht=St)
这里存在着一个连乘的函数,ht引入激活函数后有
或者
其中,
存在问题
梯度消失、梯度爆炸
这里的梯度消失主要指由于时间过长造成的记忆值较小的现象。
改进算法:LSTM、GRU
-
对于梯度消失:有特殊的方式存储“记忆”,那么以前梯度比较大的”记忆”不会像简单的RNN一样马上被抹除。
-
对于梯度爆炸:使用gradient clipping(梯度裁剪),即当计算的梯度超过阈值c或者小于阈值-c的时候,便把此时的梯度设置成c或-c。