“分类不是问‘多少’,而是问‘哪一个’。”
在机器学习的世界里,线性回归教会我们如何预测连续值——房价、温度、胜场数。但现实中的许多问题本质上是离散选择:这封邮件是垃圾邮件吗?这张图是猫还是狗?用户会点击这个广告吗?
这就是分类任务的舞台,而 Softmax 回归,正是处理多类别分类问题最基础、也最优雅的工具之一。然而,Softmax 不只是一个数学技巧;它的背后,深植于信息论与概率建模的坚实土壤。本文将带你从直觉出发,一步步揭开 Softmax 与交叉熵损失的神秘面纱。
一、为什么不能直接用线性输出做分类?
假设我们有一个图像分类任务,类别为 {猫, 鸡, 狗}。我们可以构建一个线性模型,对每个类别输出一个“得分”(logit):
o1=w1⊤x+b1(猫)o2=w2⊤x+b2(鸡)o3=w3⊤x+b3(狗)
\\begin{aligned}
o_1 &= \\mathbf{w}_1^\\top \\mathbf{x} + b_1 \\quad (\\text{猫}) \\\\
o_2 &= \\mathbf{w}_2^\\top \\mathbf{x} + b_2 \\quad (\\text{鸡}) \\\\
o_3 &= \\mathbf{w}_3^\\top \\mathbf{x} + b_3 \\quad (\\text{狗})
\\end{aligned}
o1o2o3=w1⊤x+b1(猫)=w2⊤x+b2(鸡)=w3⊤x+b3(狗)
但这些 ojo_joj 是未规范化的实数——可能为负,总和也不为 1。它们不能直接解释为概率,因为违反了概率的基本公理。
我们需要一个函数,能把任意实数向量 o\\mathbf{o}o 转换为一个合法的概率分布 y^\\hat{\\mathbf{y}}y^,即:
- 每个 y^j≥0\\hat{y}_j \\geq 0y^j≥0
- ∑jy^j=1\\sum_j \\hat{y}_j = 1∑jy^j=1
Softmax 函数 正是为此而生:
y^j=exp(oj)∑kexp(ok)
\\hat{y}_j = \\frac{\\exp(o_j)}{\\sum_k \\exp(o_k)}
y^j=∑kexp(ok)exp(oj)
它通过指数化确保非负,再通过归一化确保和为 1。更重要的是,它保持可导性,使得梯度下降成为可能。
💡 有趣事实:Softmax 的思想可追溯至社会科学家邓肯·卢斯(Duncan Luce)1959 年提出的选择公理——人们在多个选项中做选择的概率,正比于各选项“吸引力”的指数。这与 softmax 完美契合!
二、如何训练模型?最大似然估计登场
有了概率输出 y^=P(y∣x)\\hat{\\mathbf{y}} = P(y \\mid \\mathbf{x})y^=P(y∣x),我们自然希望:模型对真实标签的预测概率越高越好。
假设我们有 nnn 个独立样本,真实标签用独热编码表示(如“鸡” → [0,1,0][0,1,0][0,1,0])。那么,整个数据集被观测到的联合概率(即似然)为:
P(Y∣X)=∏i=1nP(y(i)∣x(i))
P(\\mathbf{Y} \\mid \\mathbf{X}) = \\prod_{i=1}^n P(\\mathbf{y}^{(i)} \\mid \\mathbf{x}^{(i)})
P(Y∣X)=i=1∏nP(y(i)∣x(i))
为什么要相乘?
因为样本独立!独立事件同时发生的概率等于各自概率的乘积。这是统计建模的基石。
为了便于优化,我们取负对数,得到负对数似然(Negative Log-Likelihood):
−logP(Y∣X)=∑i=1n−logP(y(i)∣x(i))
-\\log P(\\mathbf{Y} \\mid \\mathbf{X}) = \\sum_{i=1}^n -\\log P(\\mathbf{y}^{(i)} \\mid \\mathbf{x}^{(i)})
−logP(Y∣X)=i=1∑n−logP(y(i)∣x(i))
由于 y(i)\\mathbf{y}^{(i)}y(i) 是 one-hot 向量,上式简化为:
l(y,y^)=−∑jyjlogy^j=−logy^true class
l(\\mathbf{y}, \\hat{\\mathbf{y}}) = -\\sum_j y_j \\log \\hat{y}_j = -\\log \\hat{y}_{\\text{true class}}
l(y,y^)=−j∑yjlogy^j=−logy^true class
这就是著名的 交叉熵损失(Cross-Entropy Loss)。
三、交叉熵 = 预期“惊异”?信息论视角
这里,信息论为我们提供了深刻的洞见。
克劳德·香农提出:一个事件的信息量(惊异程度)与其发生概率成反比:
I(x)=−logP(x)
I(x) = -\\log P(x)
I(x)=−logP(x)
- 太阳升起?概率 ≈1 → 信息量 ≈0(不意外)
- 彩票中奖?概率 ≈0 → 信息量很大(很意外)
那么,平均每次观察带来的“惊异”是多少?这就是熵(Entropy):
H(P)=Ex∼P[−logP(x)]=−∑jP(j)logP(j)
H(P) = \\mathbb{E}_{x \\sim P}[-\\log P(x)] = -\\sum_j P(j) \\log P(j)
H(P)=Ex∼P[−logP(x)]=−j∑P(j)logP(j)
熵是当你的概率模型完全匹配真实世界时的平均信息量,也是无损压缩的理论极限。
现在,如果我们用一个错误的模型 QQQ 去描述真实分布 PPP,平均“惊异”就变成了:
H(P,Q)=Ex∼P[−logQ(x)]=−∑jP(j)logQ(j)
H(P, Q) = \\mathbb{E}_{x \\sim P}[-\\log Q(x)] = -\\sum_j P(j) \\log Q(j)
H(P,Q)=Ex∼P[−logQ(x)]=−j∑P(j)logQ(j)
这正是交叉熵!
- 当 Q=PQ = PQ=P 时,H(P,Q)=H(P)H(P, Q) = H(P)H(P,Q)=H(P)(最小可能值)
- 当 Q≠PQ \\neq PQ=P 时,交叉熵更大
因此,最小化交叉熵损失,本质上是在让模型的预测分布 QQQ 尽可能接近真实分布 PPP,从而减少“惊异”,提高预测准确性。
✅ 压缩与预测的统一:
如果你能准确预测下一个符号(即 Q≈PQ \\approx PQ≈P),你就能用接近 H(P)H(P)H(P) 比特/符号来压缩数据。
反之,分类模型越准,其交叉熵越低,说明它对世界的“不确定性”越小。
四、Softmax 回归的优雅性质
尽管 Softmax 是非线性的,但整个模型仍是线性模型——因为最终决策边界由 Wx+b\\mathbf{W}\\mathbf{x} + \\mathbf{b}Wx+b 决定。
更妙的是,交叉熵损失对 logits 的梯度极其简洁:
∂l∂oj=y^j−yj
\\frac{\\partial l}{\\partial o_j} = \\hat{y}_j – y_j
∂oj∂l=y^j−yj
即:预测概率与真实标签的差。这与线性回归中 (y^−y)(\\hat{y} – y)(y^−y) 的形式惊人地相似,体现了指数族分布模型的统一性。
总结:Softmax 回归的三重身份
| 工程视角 | 将线性输出转为概率,支持多分类 |
| 统计视角 | 最大似然估计下的最优分类器 |
| 信息论视角 | 最小化模型对真实世界的“预期惊异”(交叉熵) |
Softmax 回归远不止是一个公式。它是预测、压缩与信息三大概念交汇的典范。理解它,就是理解现代机器学习如何用概率语言描述世界。
延伸思考:
如果你对“熵”和“压缩”的关系感兴趣,不妨思考:为什么 ZIP 文件对文本压缩效果好,但对已经压缩过的 JPG 图像几乎无效?答案就在数据的可预测性与熵之中。
参考:本文内容主要基于《动手学深度学习》(Dive into Deep Learning)第 3.4 节及附录信息论章节,并融合了香农信息论的核心思想。
希望这篇博客能帮助读者不仅“会用” Softmax,更能“理解”它为何如此设计。欢迎在评论区讨论!
网硕互联帮助中心





评论前必须登录!
注册