标准RNN的推导

编程入门 行业动态 更新时间:2024-10-20 05:37:31

<a href=https://www.elefans.com/category/jswz/34/1770499.html style=标准RNN的推导"/>

标准RNN的推导

1.RNN前向计算:对于如下结构,x是输入,s为隐层,o为输出,U,W,V为不同层的权值,同一类型的权连接权值相同

则ot可表示为

其中,g,f为输出层,隐层的激活函数,f一般选择tanh函数,若RNN用于分类的话,g选择softmax函数

2.RNN反向传播:BPTT算法,本质还是BP算法,因为RNN处理序列数据,所以在原有基础上增加了序列维度反向传播。BPTT的中心思想与BP算法相同,沿着需要优化的参数的负梯度方向不断寻找更优的点直至收敛。其中RNN损失为各个时间点的损失之和,故各个梯度的变化为各个时间点梯度变化之和

 

 

从上图可以看出,反向传播每计算一个隐层,都会与一个激活函数的导数相乘,而激活函数的累乘会导致梯度消失或梯度爆炸的现象发生

3.常用的几个激活函数

(1)sigmoid函数

从图中可以看出,函数的导数取值范围为(0,0.025],反向传播时每多一个一层,梯度变化都会至少缩小四倍,传到神经网络前部很容易造成梯度消失。同时,sigmoid函数的输出不是中心对称,均大于0,称为偏移现象,这就导致后一层的神经元 将上一层输出的非0均值的信号也学习到作为此层的输入,易学习到噪声。

(2)tanh函数

从图中可以看出,tanh函数的输出关于零点中心对称,网络收敛性更好,同时,tanh函数的导数范围为(0,1],反向传播每经过一层,梯度变化较sigmoid函数慢,也就是梯度消失的速度更慢

(3)Relu函数

relu函数的导数左侧为0,右侧为1,在一定程度上避免了梯度消失的问题,但是与激活函数相乘的另一个因子在反向传播中呈现增长的趋势,则恒为1的导数容易引起梯度爆炸,而恒为0的导数有可能把神经元学死,设置合适的步长可有效避免这个问题的发生

解决梯度消失或梯度爆炸的方法主要有:

1. 选择更适合的激活函数

2.改变传播结构

更多推荐

标准RNN的推导

本文发布于:2024-03-13 02:35:03,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1732990.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:标准   RNN

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!