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

张开发
2026/4/9 18:39:11 15 分钟阅读
【激活函数】Sigmoid 与 Softmax 的关系:从二分类到多分类的统一视角
一、背景两个函数一个问题​ 学习分类模型时大多数人都会分别接触两个函数Sigmoid用于二分类Softmax用于多分类​ 但教材往往只告诉你“什么时候用哪个”却很少回答一个更本质的问题它们为什么都能输出概率两者之间到底是什么关系​ 很多人直觉上认为它们“类似”但实际上Sigmoid 就是 Softmax 在二分类情况下的严格数学特例。不是类比也不是近似而是完全等价。理解这一点你会发现二分类与多分类本质上是同一个问题的不同维度表达。二、Softmax多分类的概率化机制​ 给定KKK个类别的 logitsz1,z2,…,zKz_1, z_2, \ldots, z_Kz1​,z2​,…,zK​输出层的原始值未经归一化可以取任意实数Softmax 把它们转换为概率分布P(yk)ezk∑j1Kezj P(y k) \frac{e^{z_k}}{\sum_{j1}^{K} e^{z_j}}P(yk)∑j1K​ezj​ezk​​​ Softmax 做了两件关键事情指数映射和全局归一化。这样做每个输出都在(0,1)(0, 1)(0,1)之间且所有输出之和为 1。2.1 指数映射Exponentiationezk0 e^{z_k} 0ezk​0​ 保证所有输出为正值可以解释为“强度”或“支持度”。2.2 全局归一化Normalization​ 除以总和∑kP(yk)1 \sum_k P(yk) 1k∑​P(yk)1​ 于是输出成为合法概率分布。​ 直觉上logit 越大指数越大 占总和比例越高 概率越大。三、当K2K2K2时Softmax 退化为 Sigmoid​ 现在考虑二分类设两个类别 logits类别0为z0z_0z0​类别1为z1z_1z1​。​ Softmax 给出类别 1 的概率P(y1)ez1ez0ez1 P(y1)\frac{e^{z_1}}{e^{z_0}e^{z_1}}P(y1)ez0​ez1​ez1​​​ 这是一个标准 Softmax没有任何特殊处理。​3.1 化简​ 分子分母同时除以ez1e^{z_1}ez1​P(y1)1ez0−z1111e−(z1−z0) P(y1) \frac{1}{e^{z_0 - z_1} 1} \frac{1}{1 e^{-(z_1 - z_0)}}P(y1)ez0​−z1​11​1e−(z1​−z0​)1​​ 令zz1−z0z z_1 - z_0zz1​−z0​得到P(y1)σ(z) P(y1)\sigma(z)P(y1)σ(z)​ 这就是Sigmoid函数。同理类别0的概率为P(y0)1−P(y1)1−σ(z) P(y0) 1-P(y1)1-\sigma(z)P(y0)1−P(y1)1−σ(z)因此二分类 Softmax 经过简单的代数变形就退化为对 logit 差值zz1−z0z z_1 - z_0zz1​−z0​做 Sigmoid。3.2 为什么二分类只需要一个输出神经元​ 原始 Softmax 形式需要两个神经元输出即z0z_0z0​和z1z_1z1​。但推导告诉我们模型真正关心的只有z1−z0z_1 - z_0z1​−z0​。也就是说绝对值不重要只有相对差值重要。​ 从模型结构的角度看在神经网络中logit 来自输出层的线性变换zkwkTxbk z_k w_k^T x b_kzk​wkT​xbk​​ 如果仍使用两个输出神经元我们实际上在计算z1−z0(w1Txb1)−(w0Txb0) z_1 - z_0 (w_1^T x b_1) - (w_0^T x b_0)z1​−z0​(w1T​xb1​)−(w0T​xb0​)​ 整理可得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​)​ 将同类参数可以合并成一组zz1−z0ww1−w0bb1−b0 z z_1 - z_0 \\ w w_1 - w_0 \\ b b_1 - b_0zz1​−z0​ww1​−w0​bb1​−b0​​ 就得到zwTxb z w^TxbzwTxb​ 这说明两个输出神经元在数学上等价于一个输出神经元。3.3 两种方式完全等价​ 两种方式数学上完全等价但 Sigmoid 方式只需一个输出神经元更简洁高效。实现上的简化。二分类不需要两个输出神经元分别输出z0z_0z0​和z1z_1z1​只需要一个神经元输出zz1−z0z z_1 - z_0zz1​−z0​再过 Sigmoid 就够了。少一个神经元意味着少一行权重计算更高效。概率的互补性。Sigmoid 输出σ(z)\sigma(z)σ(z)作为类别 1 的概率1−σ(z)1 - \sigma(z)1−σ(z)自动就是类别 0 的概率两者之和恒为 1。这不是巧合Softmax 本身就保证概率和为 1退化到两类时这个性质自然保留。损失函数的对应。多分类用交叉熵 Softmax二分类用二元交叉熵 Sigmoid这两者也是同一个框架的不同实例。PyTorch 中nn.CrossEntropyLoss内部包含了 Softmaxnn.BCEWithLogitsLoss内部包含了 Sigmoid底层逻辑是一致的。四、从 Sigmoid 反过来看 Softmax​ 反过来理解也有启发。Sigmoid 把一个标量映射到(0,1)(0, 1)(0,1)可以看作在回答一个是/否问题。Softmax 把一个向量映射到概率单纯形所有分量为正且和为 1可以看作在回答一个K 选 1问题。​ 当K 选 1的 K 等于 2 时就退化成了是/否那么一个标量就够了。五、总结二分类多分类激活函数SigmoidSoftmax输出神经元数1K输出含义P(y1)P(y1)P(y1)P(yk)P(yk)P(yk)for eachkkk损失函数二元交叉熵BCE交叉熵CE数学关系Softmax 在K2K2K2时的特例一般形式​ Sigmoid 不是和 Softmax 类似的函数它就是Softmax只不过只有两个类别时可以简化成更紧凑的形式。

更多文章