【深度学习】二分类情况下Softmax函数与Sigmoid函数的等价性 / Softmax函数:Sigmoid函数从二分类到多分类的推广
本文说明了二分类情况下Softmax函数与Sigmoid函数的等价性,或者说:Softmax函数可以认为是Sigmoid函数从二分类到多分类的推广。
·
Softmax函数:Sigmoid函数从二分类到多分类的推广
文章目录
- Softmax函数:Sigmoid函数从二分类到多分类的推广
- 1. Sigmoid与Softmax的关系
- 2. 二分类场景下的等价性
- 3. 核心差异对比
- 4. 多分类实现示例(Python)
- 5. 应用场景选择建议
1. Sigmoid与Softmax的关系
Softmax
函数可以看作是二分类函数Sigmoid
在多分类问题上的推广。当处理二分类问题时,两者在数学表达上是等价的。
Sigmoid函数表达式:
σ(z)=11+e−z \sigma(z) = \frac{1}{1+e^{-z}} σ(z)=1+e−z1
Softmax函数表达式(K分类场景):
Softmax(zi)=ezi∑j=1Kezj \text{Softmax}(z_i) = \frac{e^{z_i}}{\sum_{j=1}^K e^{z_j}} Softmax(zi)=∑j=1Kezjezi
2. 二分类场景下的等价性
当K=2时,Softmax
可以简化为Sigmoid
形式:
Softmax(z1)=ez1ez1+ez2=11+e−(z1−z2) \text{Softmax}(z_1) = \frac{e^{z_1}}{e^{z_1}+e^{z_2}} = \frac{1}{1+e^{-(z_1-z_2)}} Softmax(z1)=ez1+ez2ez1=1+e−(z1−z2)1
此时相当于对特征差值z1−z2z_1-z_2z1−z2应用Sigmoid
函数。
3. 核心差异对比
特性 | Sigmoid | Softmax |
---|---|---|
输出范围 | (0,1) | (0,1)且概率和为1 |
适用场景 | 二分类/多标签分类 | 互斥多分类 |
梯度特性 | 存在梯度消失风险 | 更稳定的梯度传播 |
输出独立性 | 各节点独立计算 | 输出值相互依赖 |
4. 多分类实现示例(Python)
import torch.nn as nn
# 定义三层神经网络
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc = nn.Sequential(
nn.Linear(784, 256),
nn.ReLU(),
nn.Linear(256, 10) # 输出层节点数=类别数
)
def forward(self, x):
return self.fc(x)
# 使用交叉熵损失函数(内置Softmax)
criterion = nn.CrossEntropyLoss()
5. 应用场景选择建议
✅ 使用Softmax
:手写数字识别(MNIST)、图像分类等互斥类别场景
✅ 使用Sigmoid
:多标签分类
⚠️ 二分类时优先使用Sigmoid
(计算更简单),但Softmax
同样有效
更多推荐
所有评论(0)