【深度学习】RNN的梯度消失/爆炸与正交初始化

本文探讨了在深度学习中,RNN(循环神经网络)的梯度消失和爆炸问题,以及如何通过正交初始化来缓解这些问题。通过简单的例子,解释了RNN的动态过程,并分析了在不同特征值情况下梯度的行为。正交初始化确保参数矩阵的特征值绝对值为1,从而避免训练初期的梯度爆炸或消失。除此之外,还提到了其他解决方案,如使用ReLU激活函数、梯度剪切和引入LSTM、GRU等复杂结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在训练较为复杂的RNN类型网络时,有时会采取正交方法初始化(orthogonal initialization)网络参数。本文用简单的例子介绍其中的原因。

本文较大程度参考了这篇博客

简单例子

RNN具有如下形式:
h t = f h ( W ⋅ h t − 1 + V ⋅ x t ) h_t=f_h(W\cdot h_{t-1}+V\cdot x_t) ht=fh(Wht1+Vxt)

y t = f y ( U ⋅ h t ) y_t = f_y(U\cdot h_t) yt=fy(Uht)

我们考虑一个极端简化的版本:没有输入,激活函数为直通,直接输出隐变量。
y t = W ⋅ y t − 1 y_t=W\cdot y_{t-1} yt=Wyt1

计算第t步的输出时,需要计算参数矩阵的t次幂:
y t = W t ⋅ y 0 y_t=W^t\cdot y_0 yt=Wty0
为了计算简便,可以把方阵 W W W进行正交分解:
W = Q ⋅ Λ ⋅ Q − 1 W=Q\cdot\Lambda\cdot Q^{-1} W=QΛQ1

y t = Q ⋅ Λ t ⋅ Q − 1 ⋅ y 0 y_t=Q\cdot \Lambda^t \cdot Q^{-1}\cdot y_0 yt=QΛtQ1y0
其中 Q Q Q是单位正交矩阵; Λ \Lambda Λ是对角阵,计算其t次幂只需要把对角线上的特征值进行幂运算即可。

优化网络参数时,使用简单的二范数代价:
E = ∣ ∣ y t − y t ‾ ∣ ∣ 2 E=||y_t-\overline{y_t}||^2 E=ytyt2

为了更新参数,需要计算代价对于参数的导数(是个标量):
∂ E ∂ W i = 2 ( y t − y t ‾ ) T ⋅ ∂ y t ∂ W i \frac{\partial E}{\partial W_{i}}=2(y_t-\overline{y_t})^T\cdot \frac{\partial y_t}{\partial W_i} WiE=2(yt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值