如何避免梯度爆炸梯度消失

本文探讨了深度学习中常见的梯度消失问题及其影响,包括导致浅层网络几乎不参与学习的情况,并介绍了几种解决方案,如ReLU激活函数、深度残差学习及归一化等技术。

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

以sigmoid函数为例子,sigmoid函数使得输出在[0,1]之间。

事实上x到了一定大小,经过sigmoid函数的输出范围就很小了,参考下图

如果输入很大,其对应的斜率就很小,我们知道,其斜率(梯度)在反向传播中是权值学习速率。在深度网络中,如果网络的激活输出很大,其梯度就很小,学习速率就很慢。假设每层学习梯度都小于0.25,网络有n层,因为链式求导(第一层偏移量的梯度=激活层斜率1x权值1x激活层斜率2x…激活层斜率(n-1)x权值(n-1)x激活层斜率n)的原因,第一层的梯度小于0.25的n次方,所以学习速率就慢,对于最后一层只需对自身求导1次,梯度就大,学习速率就快。这会造成的影响是在一个很大的深度网络中,浅层基本不学习,权值变化小,后面几层一直在学习,结果就是,后面几层基本可以表示整个网络,失去了深度的意义。

梯度消失的影响:

(1)浅层基本不学习,后面几层一直在学习,失去深度的意义。

(2)无法收敛。

如何解决:

1)第一个阶段就是逐层预训练方法,为了解决深层神经网络的训练问题,一种有效的手段是采取无监督逐层训练(unsupervised layer-wise training)。其基本思想是每次训练一层隐节点,训练时将上一层隐节点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入,这被称之为预训练pre-training);在预训练完成后,再对整个网络进行微调fine-tunning)训练。在使用无监督训练时,首先训练第一层,这是关于训练样本的RBM模型,可按标准的RBM进行训练;然后,将第一层预训练号的隐节点视为第二层的输入节点,对第二层进行预训练;各层预训练完成后,再利用BP算法对整个网络进行训练。虽然也解决了一些问题,但并没有特别火。事实上,预训练+微调的训 练方式可被视为是将大量参数分组,对每组先找到局部看起来较好的设置,然后再基于这些局部较优的结果联合起来进行全局寻优。这样就在利用了模型大量参数所提供的自由度的同时,有效地节省了训练开销。
2)第二个阶段开始的标志就是relu, dropout等小技巧,第二波深度学习算法已经基本抛弃了预训练的做法。引入RELU代替sigmoid激活函数。

3)深度残差学习(deepresidual learning)进一步避免了梯度消失(其实是把高阶特征和低阶做融合)。

4归一初始化,各层输入归一化,使得可以收敛的网络的深度提升为原来的十倍。







### LSTM防止梯度消失梯度爆炸的技术原理及方法 长期短期记忆网络(LSTM)是一种特殊的循环神经网络(RNN),专门设计用于解决传统RNN中存在的梯度消失梯度爆炸问题。以下是LSTM如何有效避免这些问题的具体技术原理和方法: #### 1. **门控机制的作用** LSTM的核心在于引入了三种不同的门结构:遗忘门、输入门以及输出门。这些门通过sigmoid激活函数控制信息流的大小,从而调节哪些信息应该被保留或丢弃。这种精细的信息流动管理有效地减少了梯度在时间上的累积效应[^1]。 - 遗忘门决定了前一时刻的状态有多少会被忘记; - 输入门决定当前输入中有多少新信息加入到细胞状态中; - 输出门则负责筛选最终输出的内容。 #### 2. **细胞状态的设计** 除了传统的隐藏状态外,LSTM还维护了一个称为“细胞状态”的额外组件。这个细胞状态就像一条贯穿整个序列的信息高速公路,在每个时间步上都可以选择性地添加或移除少量信息。由于大部分情况下只有部分数据发生变化,因此即使在网络很深的情况下也能保持较稳定的梯度值[^2]。 ```python # LSTM单元实现伪代码示例 def lstm_cell(x_t, h_prev, c_prev): forget_gate = sigmoid(W_f * [h_prev, x_t] + b_f) # 计算遗忘门 input_gate = sigmoid(W_i * [h_prev, x_t] + b_i) # 计算输入门 output_gate = sigmoid(W_o * [h_prev, x_t] + b_o) # 计算输出门 candidate_state = tanh(W_c * [h_prev, x_t] + b_c) # 候选细胞状态 cell_state = forget_gate * c_prev + input_gate * candidate_state # 更新细胞状态 hidden_state = output_gate * tanh(cell_state) # 当前隐藏状态 return hidden_state, cell_state ``` #### 3. **权重矩阵初始化策略** 为了进一步缓解梯度消失爆炸现象,通常会对LSTM中的权重矩阵采用特定的初始化方式,比如正交初始化或其他形式的小范围随机数分布。这样的做法有助于确保初始阶段各层之间的信号传输更加平稳[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值