神经网络之sigmoid激活函数

🔹 一、Sigmoid 函数的定义

Sigmoid 函数是一种 S 型曲线函数,定义如下:

σ(x)=11+e−x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e−x1

其中:

  • x∈(−∞,+∞)x \in (-\infty, +\infty)x∈(−∞,+∞):任意实数输入
  • σ(x)∈(0,1)\sigma(x) \in (0, 1)σ(x)∈(0,1):输出被"压缩"到 0 和 1 之间

🔹 二、函数图像

图像特点:

  • S 型曲线(形似"滑梯")
  • 左侧趋近于 0,右侧趋近于 1
  • 中心对称点:(0,0.5)(0, 0.5)(0,0.5)
  • 单调递增
  • 平滑连续

lim⁡x→−∞σ(x)=0lim⁡x→+∞σ(x)=1σ(0)=0.5 \lim_{x \to -\infty} \sigma(x) = 0 \\ \lim_{x \to +\infty} \sigma(x) = 1 \\ \sigma(0) = 0.5 x→−∞limσ(x)=0x→+∞limσ(x)=1σ(0)=0.5


🔹 三、导数与梯度

Sigmoid 函数的导数非常优美,便于反向传播:

σ′(x)=σ(x)⋅(1−σ(x)) \sigma'(x) = \sigma(x) \cdot (1 - \sigma(x)) σ′(x)=σ(x)⋅(1−σ(x))

特点:

  • 只需要输出本身就能计算导数(简洁高效)
  • 导数最大值为 14=0.25\frac{1}{4} = 0.2541=0.25(当 x=0x = 0x=0)
  • 当 xxx 很大或很小时,导数接近 0 → 梯度消失问题

🔹 四、为什么使用 Sigmoid?

✅ 优点:

优点 说明
非线性 允许神经网络拟合复杂的函数
可微 所有点处都有导数,适合梯度下降法
输出范围 (0,1) 适合做概率解释(例如二分类)
光滑 输出变化连续平滑,有利于优化

❌ 缺点:

缺点 原因与后果
梯度消失 输入很大或很小时导数趋近于 0,导致神经网络前层无法有效训练
非零中心 输出总是正数,会导致偏置更新缓慢,训练不稳定
饱和问题 当输出接近0或1时,对输入的微小变化反应很小,神经元几乎"死掉"
计算慢 涉及指数函数 e−xe^{-x}e−x,相比于 ReLU 类函数更慢

🔹 五、在神经网络中的应用场景

场景 是否推荐使用 Sigmoid?
隐藏层 ❌ 不推荐(容易梯度消失)
输出层(二分类) ✅ 强烈推荐(概率解释 + BCE Loss)
多分类输出层 ❌ 不推荐,推荐使用 Softmax
早期网络结构 ✅ 使用较多(如早期 MLP)

🔹 六、数值实现注意(以 PyTorch 为例)

PyTorch 中常用组合:

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

# 单独使用 sigmoid
sigmoid = nn.Sigmoid()
out = sigmoid(x)

# 配合 BCE Loss,推荐使用 BCEWithLogitsLoss(数值更稳定)
loss_fn = nn.BCEWithLogitsLoss()

⚠️ 如果你使用了 BCEWithLogitsLoss不要再手动加 Sigmoid,它内部已包含。


🔹 七、Sigmoid 与 Logistic 回归的关系

Sigmoid 函数源自统计学中的 Logistic Regression

p(y=1∣x)=11+e−(wTx+b) p(y=1|x) = \frac{1}{1 + e^{-(w^T x + b)}} p(y=1∣x)=1+e−(wTx+b)1

神经网络中的二分类本质就是将前向传播部分看作线性变换,再通过 sigmoid 输出概率。


🔚 总结:Sigmoid 函数一览表

属性
数学表达式 11+e−x\frac{1}{1 + e^{-x}}1+e−x1
输出范围 (0,1)(0, 1)(0,1)
是否可导 ✅ 是
导数 σ(x)(1−σ(x))\sigma(x)(1 - \sigma(x))σ(x)(1−σ(x))
最大梯度 0.25
是否零中心 ❌ 否
是否饱和 ✅ 是(两端)
常用场景 二分类输出层
替代推荐 隐藏层用 ReLU / GELU / Swish 等更好
相关推荐
NAGNIP10 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab11 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab11 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP15 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年15 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼16 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS16 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区17 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈17 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang17 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx