欢迎光临
我们一直在努力

深入sigmod和relu

sigmod性质:

Sigmoid(S型函数),它之所以能用于二分类,核心原因可以总结为一句话:它将线性模型输出的任意实数(负无穷到正无穷)压缩到了 (0, 1) 之间,从而赋予了“概率”的含义。

注意线性回归的输出是y=ax+b(负无穷到正无穷)

在训练神经网络或逻辑回归时,我们需要用梯度下降来更新参数。Sigmoid 有一个非常优美的导数性质:S′(x)=S(x)⋅(1−S(x))。这个导数计算极快,且它的输出范围限制了梯度的极端值,在某些情况下能防止前向传播中的数值溢出。

必须要注意:

但在深度学习的深层网络中,Sigmoid 容易导致梯度消失(因为两端饱和区导数接近0)。因此,现代深度神经网络做二分类时,通常只在输出层使用 Sigmoid,而中间隐藏层更多使用 ReLU 等函数。

sigmoid与RELU的区别:

Sigmoid 的梯度会“杀死”深层网络,而 ReLU 的梯度则“拯救”了深层网络。

1. 导数公式与取值区间(数学本质)

  • Sigmoid:S′(x)=S(x)⋅(1−S(x))。它的导数最大值出现在 x=0处,仅为 0.25;当 xx走向正负无穷时,导数无限趋近于 0。所以,Sigmoid 的梯度永远在 (0, 0.25] 这个极小的区间内。

  • ReLU:ReLU(x)=max(0,x)。它的导数非常简单:当 x>0x>0 时,梯度恒为 1;当 x<0x<0 时,梯度恒为 0(在 x=0处不可导,但通常视为 0)。梯度取值只有 0 或 1。

2. 反向传播中的“连乘效应”(梯度消失 vs 梯度畅通)

这是两者最致命的差异。在深层网络中,梯度从输出层传到输入层,需要经过多层链式求导(连乘)。

  • Sigmoid(梯度消失):因为每层的梯度都小于 0.25,多层连乘后(比如 0.25×0.25×0.25…),传到浅层的梯度会指数级衰减,趋近于 0。这就导致靠近输入层的权重几乎无法更新,网络停止学习——这就是经典的梯度消失。

  • ReLU(梯度保持):对于所有激活值为正数的神经元,梯度恒为 1。多层连乘时,1×1×1…=1,梯度可以无损地从输出层直接传回输入层,极大地缓解了梯度消失,使得训练上百层的网络成为可能。

3. 梯度是否为“稀疏”?(死亡神经元 vs 非饱和)

  • Sigmoid(非稀疏):它的导数始终大于 0(除非在极端无穷远处),这意味着任何输入都会产生一个微小的梯度,所有神经元都会被更新,计算量大且特征区分不明显。

  • ReLU(稀疏激活性):当输入 x≤0 时,梯度直接变为 0。这会导致部分神经元输出为 0,从而不参与反向传播(权重不更新)。这种稀疏性让网络更具鲁棒性,但也带来了 ReLU 独有的“死穴”——死亡 ReLU 问题:如果学习率太大,某些神经元可能永远落在负数区间,梯度恒为 0,导致该神经元“坏死”再也无法激活。

4. 计算效率(指数运算 vs 简单比较)

  • Sigmoid:计算梯度需要复杂的指数运算 e^{-x},在 CPU/GPU 上开销较大。

  • ReLU:计算梯度只需要一个 if x > 0 的判断,计算速度极快,这也是它在大规模训练中更受欢迎的原因之一。

总结sigmoid和relu:

正因为 Sigmoid 梯度极小且非稀疏,它在深层网络中不适合作为隐藏层的激活函数(会梯度消失),但它输出范围在 (0,1)(0,1),完美对应概率,所以最适合作为二分类输出层的激活函数

而 ReLU 梯度恒定 1、计算快,是隐藏层(尤其是深层卷积网络)的绝对主流选择,只是需要注意设置较小的学习率以防止“神经元坏死”。

如果你现在设计一个神经网络,记住这个黄金准则:隐藏层优先用 ReLU(或其变体 LeakyReLU),输出层做二分类用 Sigmoid。

赞(0)
未经允许不得转载:171主机测评 » 深入sigmod和relu
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址