【激活函数】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,只不过只有两个类别时可以简化成更紧凑的形式。

相关推荐
AI_小站2 小时前
6个GitHub爆火的免费大模型教程,助你快速进阶AI编程
人工智能·langchain·github·知识图谱·agent·llama·rag
xindoo2 小时前
GitHub Trending霸榜!深度解析AI Coding辅助神器 Superpowers
人工智能·github
时间之里2 小时前
【深度学习】:RF-DETR与yolo对比
人工智能·深度学习·yolo
北京阿法龙科技有限公司2 小时前
数智化升级:AR 智能眼镜驱动工业运维效能革新
人工智能
风落无尘2 小时前
《智能重生:从垃圾堆到AI工程师》——第二章 概率与生存
大数据·人工智能
j_xxx404_2 小时前
Linux:静态链接与动态链接深度解析
linux·运维·服务器·c++·人工智能
收获不止数据库2 小时前
达梦9发布会归来:AI 时代,我们需要一款什么样的数据库?
数据库·人工智能·ai·语言模型·数据分析
hhb_6182 小时前
AI全栈编程生存指南
人工智能
AI-Frontiers2 小时前
transformer进阶之路:#2 工作原理详解
人工智能·深度学习·transformer
科研前沿3 小时前
2026 数字孪生前沿科技:全景迭代报告 —— 镜像视界生成式孪生(Generative DT)技术白皮书
大数据·人工智能·科技·算法·音视频·空间计算