【激活函数】Sigmoid 与 Softmax 的关系:从二分类到多分类的统一视角

一、背景:两个函数,一个问题

​ 学习分类模型时,大多数人都会分别接触两个函数:

  • Sigmoid :用于二分类
  • Softmax:用于多分类

​ 但教材往往只告诉你"什么时候用哪个",却很少回答一个更本质的问题:它们为什么都能输出概率?两者之间到底是什么关系?

​ 很多人直觉上认为它们"类似",但实际上Sigmoid 就是 Softmax 在二分类情况下的严格数学特例。不是类比,也不是近似,而是完全等价。理解这一点,你会发现,二分类与多分类,本质上是同一个问题的不同维度表达。

二、Softmax:多分类的概率化机制

​ 给定 KKK 个类别的 logits z1,z2,...,zKz_1, z_2, \ldots, z_Kz1,z2,...,zK(输出层的原始值,未经归一化,可以取任意实数),Softmax 把它们转换为概率分布:
P(y=k)=ezk∑j=1Kezj P(y = k) = \frac{e^{z_k}}{\sum_{j=1}^{K} e^{z_j}} P(y=k)=∑j=1Kezjezk

​ Softmax 做了两件关键事情:指数映射和全局归一化。这样做,每个输出都在 (0,1)(0, 1)(0,1) 之间,且所有输出之和为 1。

2.1 指数映射(Exponentiation)

ezk>0 e^{z_k} > 0 ezk>0

​ 保证所有输出为正值,可以解释为"强度"或"支持度"。

2.2 全局归一化(Normalization)

​ 除以总和:
∑kP(y=k)=1 \sum_k P(y=k) = 1 k∑P(y=k)=1

​ 于是输出成为合法概率分布。

​ 直觉上,logit 越大,指数越大 ,占总和比例越高 ,概率越大。

三、当K=2K=2K=2 时,Softmax 退化为 Sigmoid

​ 现在考虑二分类,设两个类别 logits:类别0为z0z_0z0,类别1为z1z_1z1。

​ Softmax 给出类别 1 的概率:
P(y=1)=ez1ez0+ez1 P(y=1)=\frac{e^{z_1}}{e^{z_0}+e^{z_1}} P(y=1)=ez0+ez1ez1

​ 这是一个标准 Softmax,没有任何特殊处理。

3.1 化简

​ 分子分母同时除以 ez1e^{z_1}ez1:
P(y=1)=1ez0−z1+1=11+e−(z1−z0) P(y=1) = \frac{1}{e^{z_0 - z_1} + 1} = \frac{1}{1 + e^{-(z_1 - z_0)}} P(y=1)=ez0−z1+11=1+e−(z1−z0)1

​ 令z=z1−z0z = z_1 - z_0z=z1−z0,得到:
P(y=1)=σ(z) P(y=1)=\sigma(z) P(y=1)=σ(z)

​ 这就是Sigmoid函数。

  • 同理类别0的概率为:
    P(y=0)=1−P(y=1)=1−σ(z) P(y=0) = 1-P(y=1)=1-\sigma(z) P(y=0)=1−P(y=1)=1−σ(z)

  • 因此,二分类 Softmax 经过简单的代数变形,就退化为对 logit 差值 z=z1−z0z = z_1 - z_0z=z1−z0 做 Sigmoid。

3.2 为什么二分类只需要一个输出神经元?

​ 原始 Softmax 形式需要两个神经元输出,即z0z_0z0和z1z_1z1。但推导告诉我们,模型真正关心的只有:z1−z0z_1 - z_0z1−z0。也就是说:绝对值不重要,只有相对差值重要。

​ 从模型结构的角度看,在神经网络中,logit 来自输出层的线性变换:
zk=wkTx+bk z_k = w_k^T x + b_k zk=wkTx+bk

​ 如果仍使用两个输出神经元,我们实际上在计算:
z1−z0=(w1Tx+b1)−(w0Tx+b0) z_1 - z_0 = (w_1^T x + b_1) - (w_0^T x + b_0) z1−z0=(w1Tx+b1)−(w0Tx+b0)

​ 整理可得:
z1−z0=(w1−w0)Tx+(b1−b0) z_1 - z_0 = (w_1 - w_0)^T x + (b_1 - b_0) z1−z0=(w1−w0)Tx+(b1−b0)

​ 将同类参数可以合并成一组:
z=z1−z0w=w1−w0b=b1−b0 z = z_1 - z_0 \\ w = w_1 - w_0 \\ b = b_1 - b_0 z=z1−z0w=w1−w0b=b1−b0

​ 就得到:
z=wTx+b z = w^Tx+b z=wTx+b

​ 这说明,两个输出神经元在数学上等价于一个输出神经元。

3.3 两种方式完全等价

​ 两种方式数学上完全等价,但 Sigmoid 方式只需一个输出神经元,更简洁高效。

  • 实现上的简化。 二分类不需要两个输出神经元分别输出 z0z_0z0 和 z1z_1z1,只需要一个神经元输出 z=z1−z0z = z_1 - z_0z=z1−z0,再过 Sigmoid 就够了。少一个神经元意味着少一行权重,计算更高效。

  • 概率的互补性。 Sigmoid 输出 σ(z)\sigma(z)σ(z) 作为类别 1 的概率,1−σ(z)1 - \sigma(z)1−σ(z) 自动就是类别 0 的概率,两者之和恒为 1。这不是巧合,Softmax 本身就保证概率和为 1,退化到两类时这个性质自然保留。

  • 损失函数的对应。 多分类用交叉熵 + Softmax,二分类用二元交叉熵 + Sigmoid,这两者也是同一个框架的不同实例。PyTorch 中 nn.CrossEntropyLoss 内部包含了 Softmax,nn.BCEWithLogitsLoss 内部包含了 Sigmoid,底层逻辑是一致的。

四、从 Sigmoid 反过来看 Softmax

​ 反过来理解也有启发。Sigmoid 把一个标量映射到 (0,1)(0, 1)(0,1),可以看作在回答一个"是/否"问题。Softmax 把一个向量映射到概率单纯形(所有分量为正且和为 1),可以看作在回答一个"K 选 1"问题。

​ 当"K 选 1"的 K 等于 2 时,就退化成了"是/否",那么一个标量就够了。

五、总结

二分类 多分类
激活函数 Sigmoid Softmax
输出神经元数 1 K
输出含义 P(y=1)P(y=1)P(y=1) P(y=k)P(y=k)P(y=k) for each kkk
损失函数 二元交叉熵(BCE) 交叉熵(CE)
数学关系 Softmax 在 K=2K=2K=2 时的特例 一般形式

​ Sigmoid 不是和 Softmax "类似"的函数,它就 Softmax,只不过只有两个类别时可以简化成更紧凑的形式。

相关推荐
LDG_AGI3 小时前
【搜索引擎】Elasticsearch(一):索引创建、数据插入、请求示例
人工智能·深度学习·算法·elasticsearch·机器学习·搜索引擎·推荐算法
童话名剑3 小时前
YOLOv9 (学习笔记)
人工智能·深度学习
爱分享的阿Q3 小时前
从AI IDE到Agent统一工作区:开发环境的范式跃迁
ide·人工智能
互联网科技看点3 小时前
当AI+遇上产业:掌动智能如何打造智能化时代的“新基建”
人工智能·百度
世优科技虚拟人3 小时前
数字人“闯”进景区:从IP复活到VR沉浸体验,文旅玩法正被重塑
人工智能·vr·数字人·智慧文旅·ai数字人·大屏数字人
学技术的大胜嗷3 小时前
YOLO 训练报错排查:解决 ultralytics 同名包冲突(本地源码 与 环境中的包)
人工智能·深度学习·机器学习
2301_764441333 小时前
计算机视觉:城市公共空间多主体行为计算
人工智能·计算机视觉·目标跟踪
老刘干货3 小时前
Prompt工程全解·第三篇:注入灵魂——少样本提示与思维链的深度博弈
人工智能·技术人
老刘干货3 小时前
Prompt工程全解·第五篇:实战终章——打造“即插即用”的超级提示词模板
人工智能·技术人