Sigmoid vs Softmax
sigmoid 和 softmax 是深度学习中常用的两个激活函数,尤其是在分类任务的输出层。把网络的原始输出logits 转换为概率或者概率相关的数值。不过作用和适用场景不同。
sigmoid


输入为任意实数,输出映射到0和1之间,可以被看作概率值。
二分类问题(Binary Classification):输出一个神经元,表示正类的概率,负类概率则是 1−σ(x)。
多标签分类(Multi-label Classification):每个标签用独立的sigmoid输出,标签之间相互独立,可以多个标签同时为正。
在目标检测中,通常用sigmoid输出是否为目标(foreground)的概率。
softmax
Softmax函数将一组实数转换成一组概率分布。对输入向量 z=[z1,z2,...,zK],第 i 个元素经过softmax后的输出为:

- 输出是一组概率,所有元素之和为1。
 - 用于多分类问题,表达 mutually exclusive(互斥)的类别概率。
 - 输入的向量长度就是类别数。
 
多分类问题(Multi-class Classification):每个样本只能属于一个类别,用softmax输出类别概率分布。
经典分类网络最后一层常用softmax + 交叉熵损失函数。
sigmoid vs softmax
| 方面 | Sigmoid | Softmax | 
|---|---|---|
| 输出形式 | 单个概率(0~1) | 多类别概率分布,所有概率和为1 | 
| 适用任务 | 二分类、多标签分类 | 多分类,互斥类别 | 
| 是否类别互斥 | 不互斥 | 互斥 | 
| 输出数量 | 输出单个或每个类别一个独立概率 | 输出类别数个概率,总和为1 | 
| 损失函数匹配 | 通常搭配二元交叉熵(Binary Cross Entropy) | 通常搭配多分类交叉熵(Categorical Cross Entropy) | 
