多分类线性模型与 softmax 回归
一句话定义
softmax 回归为 K 类各配一组线性打分,用 softmax 函数把打分向量压成归一化概率分布 pk = esk∑j esj,并以多类交叉熵训练,是二分类逻辑回归的规范多类推广。
为什么重要
类别数大于 2 是常态(文档主题、商品品类、疾病分型)。softmax + 交叉熵是「输出一个概率分布」的标准范式:它天然保证各类概率和为 1、损失凸(对线性打分)、梯度形式简洁;深度网络的分类输出层就是它,这里的推导可原样迁移。
前置知识
逻辑回归与交叉熵损失 的 sigmoid、伯努利似然与交叉熵推导。
核心概念
- 打分向量:s = W^⊤ x,W ∈ ℝp × K,每类一组权重。
- softmax:pk = exp(sk)∑j=1K exp(sj),单调映射保序,类别间竞争(和为 1)。
- 多类交叉熵:L = -∑k yk log pk(y 为 one-hot)。
- OvR(One-vs-Rest):另一种多分类策略——训 K 个独立二分类器,预测取最大者;softmax 称为「多类」方案,两者边界形状不同。
- 决策区域:softmax 的边界 {k, l} 满足 (wk - wl)^⊤ x = 0,仍是线性超平面。
直观类比
K 个专家各给自己的类打分,softmax 是「按指数放大分差后按比例分蛋糕」:分差越大,胜者拿走越多概率份额;温度(缩放打分)控制蛋糕的分散程度——打分同乘小系数则接近均匀分布,乘大系数则接近 one-hot。这一温度旋钮在知识蒸馏与 LLM 采样中同样核心。
原理与机制
从多项分布似然推导:y 服从类别分布(多项分布单次试验),p(y = k | x) = pk。对数似然 ∑i ∑k yik log pik 的负平均即交叉熵。对打分求梯度得到经典简洁形式:
与二分类完全同构(预测分布减 one-hot)。数值上必须配合LogSumExp 稳定技巧:先减去最大打分 smax,log pk = sk - smax - log∑j esj - smax,避免上溢。
softmax vs OvR 的选择:类别互斥且完备 → softmax(概率有全局语义);类别可重叠(一个样本可同时属多类)→ 多个独立 sigmoid(多标签),此时不做 softmax。
公式与推导
其中 yik = 1[yi = k]。凸性:交叉熵是 softmax 打分的凸函数(log-sum-exp),仿射复合后仍凸,故可全局优化。
图示
特征空间被 K−1 个线性超平面切成 K 个区域
┌──────────────────────────────┐
│ ○○○○ 类1区 │
│ ○○○ ╲ │
│ ╲ △△△△ 类2区 │
│ ╲ △△△ ╲ │
│ ╲ ╲ □□□□ 类3区 │
└──────────────────────────────┘
相邻两类边界: (w_k − w_l)ᵀx = 0实例或案例
iris 三分类,直接比较 softmax 与 OvR 的决策:
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
X, y = load_iris(return_X_y=True)
soft = make_pipeline(StandardScaler(), LogisticRegression(max_iter=1000)) # 默认 multinomial
ovr = make_pipeline(StandardScaler(), LogisticRegression(max_iter=1000, multi_class="ovr"))
print("softmax CV:", cross_val_score(soft, X, y, cv=5).mean().round(3))
print("OvR CV:", cross_val_score(ovr, X, y, cv=5).mean().round(3))预测时 predict_proba 给出每类概率,配合业务阈值做拒识(最大概率过低则转人工)是常见工程用法。
常见误区
- 把多标签问题套 softmax:softmax 强制和为 1,会抑制「同时属于多类」的表达;应改用 K 个 sigmoid。
- 忽视类别不平衡:softmax 的概率竞争会让少数类几乎拿不到概率质量,需类权重(kp-026)。
- 以为概率高=校准好:softmax 分布的绝对数值依赖正则强度与训练充分性,跨模型比较概率要校准。
与其他知识点的关系
逻辑回归与交叉熵损失 是 K=2 特例(sigmoid 可由 softmax 推出);分类评估指标:混淆矩阵、Precision/Recall 与 ROC-AUC 的多分类指标(macro/micro 平均)消费这里的概率输出;端到端机器学习工作流与 Pipeline 展示把它嵌进端到端 Pipeline 的完整做法。
自测题
- softmax 与多个独立 sigmoid 的本质区别?
- 要点:softmax 类间竞争、概率归一(互斥多类);独立 sigmoid 各自为政(多标签/可重叠)。
- 推导多类交叉熵对打分的梯度并说明其含义。
- 要点:pik - yik,即预测概率与 one-hot 目标之差;误差按类分配,直指分类错误的方向。
- 打分同乘 T → 0 与 T → ∞ 时 softmax 行为?
- 要点:T → 0(放大)退化为 argmax 独热;T → ∞(压平)趋于均匀分布;T 即温度。
延伸阅读
Bishop《PRML》第 4.3.4 节;Goodfellow 等《Deep Learning》第 6.2 节(输出单元)。