学习资料:
https://blog.csdn.net/zhaojc1995/article/details/80572098
https://zybuluo.com/hanbingtao/note/541458
笔记:
基础的神经网络只在层与层之间建立了权连接,RNN最大的不同之处就是在层之间的神经元之间也建立的权连接。RNN的训练方法是BPTT,沿着需要优化的参数的负梯度方向不断寻找更优的点直至收敛,需要优化的参数就是三个权重值(数据到输入层,隐藏层之间,隐藏层到输出层激活函数)。损失函数再对这几个参数求导的时候,由于激活函数tanh和sigmoid的导数累乘会导致“梯度消失”和“梯度爆炸”现象的发生。导致反向传播时梯度消失,变成了一层单纯的映射层;改进方法有两个:1⃣️一般选择更好的激活函数的话,可以选择RELU函数,relu的导数恒为1,虽然可能会产生梯度爆炸现象,但调节学习率可以避免;2⃣️采用LSTM传播结构。
LSTM通过门控制将短期记忆和长期记忆结合起来,解决了RNN的梯度消失问题。
BPTT算法:
前向计算每个神经元的输出值
反向计算每个神经元的误差值(BPTT算法将第l层t时刻的误差沿两个方向传播,一个方向是其传递到上一层网络,这部分只和权重矩阵U有关,另一个是沿时间线传递到初始时刻,这部分只和权重矩阵W有关)
计算每个权重的梯度,最后再用随机梯度下降算法更新权重