Sigmoid 与 Tanh 激活函数(S 型饱和激活函数)

激活函数是神经网络最关键的组成部分之一,它就像是给网络注入"非线性"灵魂的开关。如果没有它,无论网络有多少层,最终都只能解决线性问题,也就无法学习到数据中复杂的模式了。

Sigmoid 与 Tanh 激活函数

二者都属于饱和 S 型激活 :输入绝对值很大时,曲线变得平坦,导数趋近于 0,产生梯度消失问题。

Sigmoid(S 型函数)

公式:\(\sigma(z)=\frac{1}{1+e^{-z}}\)

导数: \(\sigma'(z)=\sigma(z)\cdot(1-\sigma(z))\)

  • 输出值域:\(\boldsymbol{(0,1)}\),输出永远大于 0,非零均值
  • 导数最大值:0.25(仅在\(z=0\)处),输入\(|z|\)稍大,导数迅速趋近 0

✅优点

  1. 输出压缩到 0~1,可以解释为概率;
  2. 处处连续可导,早期神经网络广泛使用。

❌缺点

  1. 梯度消失:输入很大 / 很小进入饱和区,梯度几乎为 0,深层网络参数很难更新;
  2. 非零均值输出:输出恒为正数,传给下一层,权重更新方向单一,收敛速度变慢;
  3. 包含指数运算,计算开销大。

使用场景

  • 只适合二分类输出层,搭配 BCE 损失;
  • 隐藏层现在几乎不再使用。

Tanh(双曲正切函数)

公式:\(\tanh(z)=\frac{e^z-e^{-z}}{e^z+e^{-z}}\)

导数: \(\tanh'(z)=1-\tanh^2(z)\)

  • 输出值域:\(\boldsymbol{(-1,1)}\),零均值,解决 Sigmoid 非零均值的缺陷
  • 导数最大值:1(\(z=0\)处),梯度能力比 Sigmoid 更强,但\(|z|\)大时导数依旧趋近 0。

✅优点

  1. 零中心输出,特征有正有负,权重更新更加灵活,收敛速度比 Sigmoid 更好;
  2. 曲线平滑连续可导。

❌缺点

  1. 依然存在梯度消失!两端饱和,输入绝对值大梯度趋近 0;
  2. 同样有指数运算,计算开销较高。

使用场景

  • 早期 RNN 循环神经网络的隐藏层;
  • 现在 CNN、深度网络隐藏层一般不用。

Sigmoid vs Tanh 直观对比

梯度消失图像理解

看导数(蓝色 / 灰色钟形曲线):

  • 只有在y靠近 0 的一小段区间,梯度有效;
  • 左右两边(饱和区)导数贴近横轴≈0;
  • 深层网络多层连乘梯度,梯度就会变得几乎为 0,参数不再更新。
项目 Sigmoid Tanh
值域 (0,1) (−1,1)
是否零均值 ❌否,全部输出 > 0 ✅是,输出正负都有
导数最大值 0.25 1
梯度消失 严重 仍然存在,但梯度上限更高
适用位置 二分类输出层 早期 RNN 隐藏层

PyTorch 简单示例

python 复制代码
import torch
import torch.nn as nn

z = torch.tensor([-2, -1, 0, 1, 2],dtype=torch.float32)

print(torch.sigmoid(z))   # Sigmoid
print(torch.tanh(z))      # Tanh

深层网络隐藏层现在优先用 ReLU 系列,避免饱和梯度消失问题。

输出层二分类可以使用 Sigmoid。

相关推荐
锋行天下5 小时前
langgraph 后端发自定义数据,前端接收方法概括
人工智能·python
泯泷7 小时前
单个 AI 再强,为什么也干不过一支 AI 团队?
人工智能·llm·agent
浪遏7 小时前
认识 wm:从多平台发布到可扩展 CLI 的架构设计
人工智能
深蓝AI7 小时前
英伟达换帅当天,我先跑了一遍 GPU 环境体检:版本矩阵比人事更值得盯
人工智能·gpu
罗西的思考9 小时前
【轻量化复刻大模型 / KIMI K3】AttnRes 模块交互式演示
人工智能·算法·机器学习
stormzhangV9 小时前
涨薪 50% 怎么做到的?
人工智能·面试·aigc
老金带你玩AI10 小时前
如何在5分钟之内创建Grok Bot的超级团队
人工智能
程序员cxuan10 小时前
离谱,AI 大佬顺手搓了个 YouTube ,而我顺手给他搓了个中文插件
人工智能·后端·程序员
zixu_star10 小时前
上下文工程:Prompt、记忆和上下文如何管理?
人工智能·prompt
ZONGYUAN-ROOT10 小时前
【3D仿真数据集】从“能生成”到“能用”:面向工业仿真的3D资产自治自愈流水线全链路落地
人工智能