概述
公式:
输出层
ot表示输出值,输出层是一个全连接层与隐藏层的每一个节点连接,V是输出层的权重矩阵,g表示激活函数,
循环层
st 表示隐藏层的值,U是输入的权重矩阵,xt表示输入的值,W是上一时间步st-1作为当前时间步st的输入权重矩阵,f表示激活函数,
从上述公式可知:st的值不仅仅取决于输入的x,还取决于st-1
将st带入Ot的计算公式 得:
从上式可知循环网络的输出,和xt,xt-1,xt-3有关,这就是循环网络具有记忆的特性
RNN的BPTT(Backpropagation Through Time)
- 前向计算每一个神经元的输出值
- 反向计算每一个神经元的误差值,它是损失函数对神经元的加权输入求偏导数
- 计算每一个权重的梯度
- 利用梯度下降算法更新权重
以S3的权重梯度反向传播为例推导
根据上述分析整理可得, 对于任意时刻t对W求偏导的公式为
总结:从S3的梯度计算结果可知,如果W是一个一个大于0小于1的数,随着时间步的增加,W将以指数级减小,也就是出现了梯度消失的现象,这也是为什么RNN不能捕获长文本序列之间语义的原因。,如果W是一个一个大于1的数,则W将以指数级增加,也就是出现了梯度爆炸的原因
RNN的训练和CNN训练一样,同样适用BP算法的损失计算反向传播,区别是,RNN中参数U、V、W是共享的,并且在随机梯度下降算法中,每一步输出不仅仅依赖当前步的网络,而且还需要当前步之前时间步的网络,在CNN中,每一层的参数W1 ,W2,W3是互相独立的,W1 ,W2W3 进行连乘,一方面它们都是稀疏矩阵,另一方面W1 ,W2,W3 互不相同,很大程度上都能抵消掉梯度爆炸的影响,这就是为什么RNN会比CNN更容易出现梯度消失或爆炸的原因
最后
以上就是受伤小熊猫为你收集整理的为什么RNN会比CNN更容易出现梯度消失或爆炸的全部内容,希望文章能够帮你解决为什么RNN会比CNN更容易出现梯度消失或爆炸所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复