Concepts
seed

Sigmoid 函数

从有限增长模型走到概率接口与神经网络激活函数的 S 形函数。

deep-learningmachine-learningclassificationactivation-function

当前理解

Sigmoid 泛指一类 S 形函数;机器学习中说的 Sigmoid,通常特指 Logistic 函数:它把任意实数平滑地映射到 (0,1)(0,1):

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

它有三个值得先记住的性质:z=0z=0 时输出 0.50.5;输入越大,输出越接近 11;输入越小,输出越接近 00。曲线中间变化快,两端逐渐变平。落在 (0,1)(0,1) 内是它的数学范围,是否能被解释为可信概率,还要看模型的建模约定和校准情况。

输入 zz输出 σ(z)\sigma(z)直观含义
−4-40.0180.018几乎偏向类别 00
−1-10.2690.269更偏向类别 00
000.5000.500两类同样可能
110.7310.731更偏向类别 11
440.9820.982几乎偏向类别 11

起源:增长为什么会慢下来

Sigmoid 并不是为神经网络发明的。19 世纪的人口研究先提出了一个更一般的问题:人口越多,潜在增长越快;但土地、食物和其他资源有限,增长不可能永远保持指数速度。

比利时数学家 Pierre-François Verhulst 在 1838 年提出 Logistic 人口模型,并在 1845 年的论文中进一步发展、命名了这条曲线(见相关历史研究)。它在指数增长项上加入了“距离承载上限还有多少”的限制:

dNdt=rN(1−NK)\frac{dN}{dt}=rN\left(1-\frac{N}{K}\right)

NN 是当前数量,rr 是内在增长率,KK 是环境能够长期支持的承载上限。当 NN 很小时,括号接近 11,增长近似指数式;当 NN 接近 KK 时,增长率逐渐降为零。

这个方程的解经过平移和缩放后就是熟悉的 Sigmoid:

N(t)K=σ(r(t−t0))\frac{N(t)}{K}=\sigma\bigl(r(t-t_0)\bigr)

因此,“增长曲线”和“概率函数”不是两条碰巧相似的曲线,而是同一数学形式在不同坐标和问题中的使用。

A carrying capacity slows growth down
t 0.0
Logistic (bounded) 0.500 Exponential (unbounded) 0.120
0.0
The logistic curve starts out close to exponential and flattens as it approaches the carrying capacity. Counts are divided by K to show relative size N/K.

这段历史后来又连接到统计学。1944 年,Joseph Berkson 在一篇生物测定论文中将 Logistic 函数用于剂量—响应关系。此后,Logistic 函数逐渐成为二元结果建模的标准工具;20 世纪 80 年代反向传播的神经网络研究,又让它成为可训练神经元的常见激活函数。

从对数几率到概率

在二分类模型中,Sigmoid 的概率含义来自一个明确的定义:先把线性分数 zz 当成类别 11 相对类别 00 的对数几率(log-odds):

z=log⁡p1−pz=\log\frac{p}{1-p}

解出 pp,就得到 p=σ(z)p=\sigma(z)。所以 Sigmoid 不是“因为输出在 0 和 1 之间,所以它天然就是概率”,而是承担了“从对数几率还原概率”的工作。

几率也让数值更容易解释:z=0z=0 表示几率为 1:11:1,所以 p=0.5p=0.5;z=log⁡4≈1.386z=\log 4\approx1.386 表示类别 11 的几率是 4:14:1,所以 p=0.8p=0.8。拖动下面的输入,观察分数、概率与曲线上的位置如何一起变化。

From log-odds to probability
z 0.0 →0.500
0.0
z is the log-odds of class 1. Sigmoid returns 0.5 at z = 0 and preserves the ordering of the scores.

为什么它适合学习

线性模型先计算一个不受范围限制的分数:

z=wTx+bz=\boldsymbol{w}^{\mathsf T}\boldsymbol{x}+b

Sigmoid 再把这个分数转换为概率:

p=σ(z)p=\sigma(z)

这样,任意大小的分数都能进入二元交叉熵,形成逻辑回归的经典训练链路:

特征 → 线性分数 z → Sigmoid → 概率 p → 二元交叉熵 → 参数更新

它同时提供了平滑的非线性。导数可以写成:

σ′(z)=σ(z)(1−σ(z))=p(1−p)\sigma'(z)=\sigma(z)\bigl(1-\sigma(z)\bigr)=p(1-p)

这个形式和归一化 Logistic 增长方程中的 p(1−p)p(1-p) 完全相同:在中间状态,系统对输入最敏感;接近两端时,变化自然放慢。

The middle of the curve is the most sensitive
z 0.0 →0.250
0.0
The derivative σ′(z) = σ(z)(1 − σ(z)) peaks at 0.25 when z = 0. Once the curve saturates at either end, the local gradient approaches 0.

观察角度

  • 作为增长模型:描述一个过程从快速增长走向承载上限。
  • 作为概率接口:把对数几率转换为类别 11 的概率。
  • 作为激活函数:为神经元加入连续、可导的非线性。
  • 作为梯度通道:用导数决定输入变化能传到多大程度。

边界与取舍

Sigmoid 的优点和限制来自同一条曲线。输出容易解释,适合二分类输出端;但当 zz 的绝对值很大时,曲线进入饱和区,导数接近 00,前面的参数收到的更新信号会变弱。多层网络若在许多隐藏层连续使用它,梯度可能逐层缩小。2010 年 Glorot 与 Bengio 的分析明确指出,随机初始化下 Logistic Sigmoid 的非零均值和饱和会增加深层前馈网络训练的困难。

因此,现代网络通常把 Sigmoid 留给二分类、多标签任务或需要 (0,1)(0,1) 约束的输出位置;隐藏层更常见的是 ReLU、GELU 等函数。多类别互斥分类的输出通常使用 Softmax。训练时也常把未压缩的 logit 直接交给“Sigmoid + 二元交叉熵”的数值稳定实现,而不是先得到极接近 00 或 11 的概率再取对数。

还要把“可解释”与“可靠”分开:Sigmoid 给出概率模型的形式,却不会自动校准概率。数据分布、损失函数、过拟合和分布变化都会影响“0.8”是否真的意味着约八成样本属于类别 11。

连接

逻辑回归把 Sigmoid 放在线性分数之后,二元交叉熵评价它给出的概率。单个采用 Sigmoid 的神经元与逻辑回归拥有相同的前向计算;当这个单元被放进多层网络,它的输出还会继续参与后续表示变换。

未解问题

  • 为什么二元交叉熵与 Sigmoid 组合后,损失对 logit 的梯度会简化为 p−yp-y?
  • Sigmoid 与 Softmax 在二分类和多分类中是什么关系?
  • 怎样用可靠性图和校准误差检验模型输出的概率?

证据与来源

演化

  • 2026-09-08: 重写为“有限增长—概率接口—可训练激活”的历史主线,加入三组交互图和来源。
  • 2026-08-21: 初始 seed,在学习单个神经元与逻辑回归时建立。