|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Handsome_zhou 于 2022-10-11 11:21 编辑
首先考虑一个简单的、没有输入数据和激活函数的循环神经网络,其前向传播公式为:
ht=Wht-1, t=1,2,...n
对于之前的某一个时刻t0(0<= t0<t), 有:
ht = Wt-t0ht0
上述公式里出现了权值矩阵W的幂,根据线性代数知识可以知道,随着幂数的增加(即t的增加),
W中幅值小于1的特征值会不断向零衰减,而幅值大于1的特征值则会不断发散,由此导致信息在前向传播时容易出现消失或发散现象。
接下来看梯度的反向传播,记上述网络在t时刻的损失为Lt,则有:
可以看到,上述公式中也出现了权值矩阵W的幂,所以会遇到与前向传播类似的问题,导致梯度消失或爆炸。
因此,对于上述简单版本的循环神经网络来说,由于重复使用相同的循环模块(即W),导致网络在信息前向传播和误差反向传播的过程中都出现了矩阵的幂,
容易造成信息/梯度的消失或者爆炸。
而在一般的深度神经网络(如卷积神经网络)中,层与层之间的参数并不是共享的(即不同层有不同的权值矩阵W),因此问题没有像循环神经网络中那么严峻。
解决方法:1)按照计算方便的需要截断时间步长的尺寸,这种截断是通过在给定数量的时间步之后分离梯度来实现。
2)使用LSTM,GRU。 |
|