循环神经网络中的梯度消失或梯度爆炸问题产生原因分析
2023-12-21 13:02:15
循环神经网络中,通过时间反向传播(backpropagation through time,BPTT)实际上是循环神经网络中反向传播技术的一个特定应用。
(1)它要求我们将循环神经网络的计算图以此展开一个时间步,以获得模型变量和参数之间的依赖关系
(2)然后,基于链式法则,应用反向传播来计算和存储梯度。
(3)由于序列可能相当长,因此依赖关系链也可能相当长。
? ? ? ? 例如,某个1000个字符的序列,其第一个词元可能会对最后位置的词元产生重大影响。这在计算上是不可行的,它需要的时间和内存都太多了,并且还需要超过1000个矩阵的乘积才能得到非常难以捉摸的梯度。这个过程充满可计算与统计的不确定性。
循环神经网络的梯度分析
? ? ? ?分析一个简化的模型,此模型描述了循环神经网络工作原理,模型中忽略了隐状态及其更新方式的细节。
? ? ? 在简化模型中,将时间步的隐状态表示为,输入表示为,输出表示为。和分别表示隐藏层和输出层的权重。和分别表示隐藏层和输出层的变换。
前向传播的计算:
.
反向传播的计算:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
上式中第一项和第二项很容易计算,第三项是比较难计算的,我们需要循环的计算参数对的影响。
经过推导(此处省略推导过程),得到:
其中当很大时,链就很长,其中代表的乘积阶数就会很高。
? ? ? ?这样就会导致最终的梯度会因为其中的幂指数变得很敏感,容易产生非常大的数(梯度爆炸)和非常小的数(梯度消失)。
文章来源:https://blog.csdn.net/xw555666/article/details/135101776
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!