首页 > 编程知识 正文

神经网络梯度消失怎么解决,神经网络梯度下降算法原理

时间:2023-05-06 12:00:11 阅读:9359 作者:3478

如果需要解决非常复杂的问题(如在高分辨率图像中检测数百种对象),则需要训练非常深的DNN。 可能需要几十层或几百层。 每层包含数百个神经元,通过数千个连接连接时,会发生以下问题。

首先,坡度消失或坡度爆炸

其次,训练很慢

第三,培训参数大于培训集的风险

梯度消失的原因:生物神经元似乎以Sigmoid(s型)激活函数进行活动,因此研究者长期坚持sigmoid函数。 但是,Relu激活函数通常被证明在htdxtg中更好地工作。 这是生物研究误解的例子之一。

神经网络有很多层,当每个隐层都使用Sigmoid函数作为激励函数时,容易出现梯度消失问题

我们知道Sigmoid函数有缺点。 如果x大或小,导数接近0。 另外,Sigmoid函数导数最大值为0.25

简化问题,说明坡度消失问题。 假设输入只有一个特征,没有偏移单元,每层只有一个神经元。

首先进行前方传播。 在这里,Sigmoid激励函数写为s(x )。

z1=w1*x

(a1=s(Z1 ) ) ) ) ) ) ) ) ) ) ) ) )。

z2=w2*a1

(A2=S(Z2 ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )

.

zn=wn*an-1 (其中n-1是下标) () ) ) ) ) ) ) ) )。

an=s(Zn )

通过链式求导和反向传播,很容易看出c是成本函数

使用标准方法初始化网络中的权重时,将使用平均值为0且标准差为1的psdnp分布。 因此,所有权重通常满足|wj|1,但s‘为小于0.25的值。 如果神经网络特别深,那么梯度按指数衰减,并且将导数压缩为每层至少1/4。 当z值的绝对值特别大时,导数为0。 出于这两个原因,继续从输出层到输入层的反向传播训练,导数逐渐变为0,容易产生权重和偏差,这被称为梯度消失问题。

那么,如果每层有多个神经元,其中a是Sigmoid函数的输出,其范围为-1a1。 只考虑的话,在参数||1的情况下,容易引起梯度消失。

如果将梯度爆炸的原因:初始化为较大的值,例如10的值,则对于从输出层到输入层的每个层,s‘(Zn ) wn为1倍,并且当s‘(Zn )为0.25时,s‘) Zn为*wn2.5

3358www.Sina.com/he初始化等良好的参数初始化方式

ReLU等非饱和的激活函数

批量规格化(Batch Normalization ) )。

梯度截断(Gradient Clipping ) )。

更快的优化程序

LSTM

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。