https://www.3blue1brown.com/lessons/gradient-descent
梯度下降:
成本函数:当网络自信地正确地对这个图像进行分类时,成本很小,但当它不知道自己在做什么时,成本就很大。
最小化成本函数:找到训练成本的最小值
微积分,有时可以通过求解斜率为零时来明确地计算出最小值。然而,对于真正复杂的函数来说,这并不总是可行的。
另一种想法,检查每个点的新斜率并重复执行此操作,即可接近函数的局部最小值。
有两个输入和一个输出的函数。您可以将输入空间视为 xy 平面,类似小球滑倒底谷
梯度:
高维空间中,将“斜率”作为一个单一的数字来谈论是没有意义的。相反,我们需要使用向量来表示最陡峭的上升方向。
熟悉多变量微积分,这个向量被称为“梯度”,它告诉你应该朝哪个方向迈进才能最快地增加函数
梯度下降:
找到最小成本函数,这是一种告诉计算机的方法,让他来调整模型的参数和权重的。例如:“不,糟糕的计算机,输出层应该有激活,大多数神经元的激活是 0,但第三个神经元的激活是 1。你给我的完全是垃圾
经典的梯度消失到梯度爆炸!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
梯度消失
定义:
梯度消失是指在神经网络训练过程中,由于链式法则的多次相乘,导致某些梯度变得非常小,甚至趋近于零。这可能导致网络无法学习到某些参数的更新,从而影响整个网络的性能。
原因:
因为某些激活函数(如 sigmoid 或 tanh)在输入较大或较小的情况下,导数的值趋于零,因此反向传播时,梯度也会趋于零,从而引发梯度消失问题
表现:
损失函数变得很缓慢,无法从模型中学习到新的内容
解决:
换激活函数
梯度爆炸
定义:
通常发生在反向传播过程中。当神经网络的权重更新过大,导致梯度急剧增加(陡峭),进而权重的更新也变得非常大,这可能导致模型训练不稳定甚至无法收敛。
表现:
损失函数的值变得非常大,模型在训练数据上无法收敛
训练过程不收敛: 如果损失函数在训练过程中不收敛,或者波动幅度很大,这也可能是梯度爆炸的迹象
解决:
-
权重初始化: 使用合适的权重初始化方法,如Xavier/Glorot初始化,以确保权重的初始值不会过大。这有助于防止在初始阶段就出现梯度爆炸。
-
梯度裁剪: 设置一个梯度阈值,如果梯度的范数超过这个阈值,就将梯度裁剪到阈值以内。这有助于防止梯度爆炸传播到整个网络。
-
使用梯度正则化: 在损失函数中引入梯度正则化项,类似于权重正则化(L1或L2正则化),以限制梯度的增长。
-
调整学习率: 适当的学习率对于防止梯度爆炸非常重要。如果梯度爆炸发生,可以尝试减小学习率,或者使用自适应学习率算法,如Adam。
-
使用梯度归一化技术: Batch Normalization可以帮助在每一层的输入分布上保持稳定性,有助于缓解梯度爆炸问题。
标签:函数,权重,爆炸,梯度,消失,正则,训练 From: https://www.cnblogs.com/mxleader/p/17831241.html