一句话定义:Sigmoid 是一个把任意实数压到 0 到 1 之间的函数,在分类模型里常被放在输出层,为每一个标签单独算一次“成立的概率”——这正是多标签分类(multi-label classification)的标准做法。
原理:四个独立门卫,不是一个裁判
打个比方。一篇稿子要判断是否属于“科技”“财经”“体育”“娱乐”四个栏目。用 Sigmoid,相当于门口站了四个互不通信的门卫,每人手里只有一张考卷:这篇像不像我这一类?他们各自打分,谁也不参考别人的结论。于是可能得到“科技 0.9、财经 0.7、体育 0.05、娱乐 0.02”——同一篇文章既是科技又是财经,完全合理。
数学上 σ(z) = 1 / (1 + e^(−z)),把每个标签的原始分数单独压成概率,标签之间互不影响。训练时每个标签各算一份二元交叉熵(binary cross-entropy),再把损失相加或平均。
和相邻概念的区别:AI 词典:Softmax">Softmax 是分蛋糕
Softmax 处理的是另一件事:把一组互斥选项的分数归一化成总和为 1 的分布,输出的是“相对概率”。它像一个只能选出一个冠军的裁判,多给科技一点,就必须少给财经一点。
| Sigmoid(多标签) | Softmax(互斥多分类) | |
|---|---|---|
| 输出含义 | 每个标签各自的概率 | 互斥选项的相对概率,总和为 1 |
| 标签关系 | 互不影响,可同时成立 | 此消彼长,只能选一个 |
| 损失函数 | 每标签一份二元交叉熵 | 一份多类交叉熵 |
| 决策方式 | 自己定阈值 | 取最大项 |
| 典型场景 | 一张图里既有猫又有沙发 | 这张图是猫、狗还是鸟 |
用错就是指标注水
最常见的坑是把互斥任务按 Sigmoid 训练:模型会给好几个类别都输出接近 1 的分数,然后有人把“每个类别都预测得挺准”写进汇报——其实模型没学会区分,只学会了“全都举手”。反过来,多标签任务误用 Softmax,会强迫模型在“猫”和“狗”之间二选一,召回率被系统性压低,还很难查出原因。
还有个细节:Sigmoid 输出的几个概率加起来不等于 1,别把它当概率分布去算期望或做“互斥解释”。
实际意义
动手前先问一句:一个样本能不能同时属于多个类?能,用 Sigmoid;不能,用 Softmax。用 Sigmoid 就得自己定阈值,而阈值该按业务成本调——漏检贵还是误报贵,在验证集上定,别在测试集上反复试。评估也别只看 accuracy,用每个标签的 precision / recall / F1(或 mAP)更实在;正负样本悬殊时给正样本加权。不同框架的默认实现细节以官方页面为准。
