← 返回题目列表

逻辑回归为什么用交叉熵损失,而不用均方误差(MSE)?

高频 困难 第 13 / 25 题 更新于 2026/07/28
线性模型逻辑回归交叉熵损失函数

简化版

两个核心原因。一、凸性:MSE 套在 sigmoid 上得到的参数目标一般不再凸,梯度下降因而失去找到全局最优的保证;交叉熵配线性 logit 则是凸函数二、梯度:MSE 的梯度里带一个 σ'(z)=σ(1-σ) 因子,当预测严重错误却落在饱和区时这个因子趋于 0,更新会很慢;而交叉熵的梯度恰好把这个因子约掉,变成 梯度 ∝ (p - y)。此外交叉熵由伯努利最大似然估计自然推出,与标准逻辑回归的概率模型一致。

详细版

MSE 用在逻辑回归上的两个问题:

问题MSE + sigmoid交叉熵 + sigmoid
凸性非凸,多局部最优,全局最优
梯度(错很多时)∝ (p-y)·σ'(z),σ’ 趋 0 → 梯度消失∝ (p-y),错越多梯度越大
概率解释无自然由来伯努利最大似然的直接结果

梯度对比(关键):

  • MSE∂L/∂w ∝ (p - y)·σ'(z)·x,含 σ'(z)=p(1-p)。当 y=1 但 p≈0(错得离谱)时,σ’(z)≈0 → 梯度≈0,参数几乎不更新
  • 交叉熵∂L/∂w ∝ (p - y)·x没有 σ’ 因子。y=1、p≈0 时梯度≈ -x(很大),错得越狠更新越猛

结论: 交叉熵让优化又凸又快,还有概率解释;MSE 三者皆失。

完整版教学

一、问题的背景:损失函数不是随便挑的

逻辑回归输出 p = σ(wᵀx+b),是个 (0,1) 的概率。既然有了预测 p 和真实标签 y,为什么不像回归那样用最直观的均方误差 (p-y)²,非要用看起来复杂的交叉熵?这不是习惯,而是 MSE 在这里会带来两个实实在在的数学问题,交叉熵则完美避开。下面逐一拆。

二、问题一:MSE + sigmoid 是非凸的

凸函数只有一个全局最低点,梯度下降从任何起点都能滑到全局最优;非凸函数有很多「坑」(局部最优),梯度下降可能卡在某个坑里出不来。

把 MSE 损失 L = (σ(wᵀx+b) - y)² 展开对 w 分析,由于 sigmoid 是非线性的 S 形,平方之后关于 w 不是凸函数——它有多个局部极小。这意味着:

  • 训练结果依赖初始化,不同起点收敛到不同的解。
  • 不保证拿到全局最优。

交叉熵损失关于 w 是凸的(可以证明其 Hessian 半正定),梯度下降保证收敛到全局最优。光这一条,交叉熵就完胜。

三、问题二(更致命):MSE 会梯度消失

这是更实际、更常被追问的原因。我们对比两种损失对参数的梯度。记 z = wᵀx+bp = σ(z),用到 sigmoid 的导数 σ'(z) = σ(z)(1-σ(z)) = p(1-p)

MSE 的梯度:

L = (p - y)²
∂L/∂w = 2(p - y) · σ'(z) · x = 2(p - y) · p(1-p) · x

                  致命的 σ'(z) 因子

交叉熵的梯度:

L = -[y log p + (1-y) log(1-p)]
∂L/∂w = (p - y) · x          ← σ'(z) 被约掉了!

关键就在那个 σ'(z) = p(1-p) 因子。看它什么时候趋于 0:当 p 接近 0 或 1(即 sigmoid 进入饱和区、z 很大或很小)时,p(1-p) ≈ 0

现在设想一个严重预测错误的样本:真实 y=1,但模型预测 p≈0(错得离谱,本该重罚猛更新):

  • MSE梯度 ∝ (0-1)·(0·1) = 0——梯度几乎为 0,参数基本不动!错得越离谱、p 越贴近 0,σ’ 越小,越学不动。这完全违背直觉:错得越狠应该改得越猛,MSE 却让它躺平。
  • 交叉熵梯度 ∝ (0 - 1) = -1(乘上 x)——梯度是满的,错得狠就更新得狠,快速把 p 从 0 拉向 1。

记忆锚点:MSE 的梯度被 sigmoid 的饱和「掐死」了,交叉熵的梯度正比于「预测误差 (p−y)」,误差越大学得越快。这就是收敛速度天差地别的原因。

四、问题三:交叉熵有天然的概率来源(最大似然)

逻辑回归本质是给每个样本估计「正类概率 p」,这是个伯努利分布问题。用最大似然估计:单样本似然 p^y (1-p)^(1-y),整个数据集取对数似然、取负、平均:

-log-likelihood = -(1/m) Σ [ y log p + (1-y) log(1-p) ]

这正好就是交叉熵损失。 也就是说,交叉熵不是硬凑的,而是「在伯努利假设下做最大似然估计」的自然结果——它和逻辑回归的概率本质是一体的。反观 MSE,对应的是「高斯噪声」假设,那是回归的场景,用在分类的概率输出上本就不匹配。

五、把三点串起来

角度MSE交叉熵
优化难度非凸,可能卡局部最优凸,全局最优
收敛速度饱和区梯度消失,错得越狠越学不动梯度 ∝ (p−y),错越多学越快
概率解释对应高斯假设,不匹配分类伯努利最大似然的直接产物

三个角度全部指向交叉熵。所以逻辑回归(以及用 sigmoid/softmax 的神经网络分类层)一律用交叉熵

六、常见追问

  • 那 MSE 就完全不能用于分类吗? 理论上能算,但因上述缺陷(非凸、梯度消失)几乎没人用,效果和收敛都差。
  • 交叉熵和对数损失(log loss)是一回事吗? 二分类下是同一个东西,只是叫法不同。
  • 多分类呢? 用 softmax + 多类交叉熵,同样的凸性和梯度优势依然成立。
  • 梯度 (p−y)x 这么简洁是巧合吗? 不是。sigmoid/softmax 与交叉熵是「共轭搭配」,交叉熵对 logit 的导数天然把 sigmoid 导数约掉,得到干净的 (预测−真实) 形式——这是设计上的美妙之处。

七、用算例与工程边界复核

正样本 y=1 时,预测 p=0.9 的交叉熵为 -ln(0.9)≈0.105,预测 p=0.01 时为 -ln(0.01)≈4.605,自信但错误会受到强惩罚。其对 logit z 的梯度简化为 p-y,避免额外乘上饱和区很小的 p(1-p)

对象/方案核心机制选择或风险
交叉熵+sigmoid伯努利负对数似然对参数是凸目标
MSE+sigmoid与伯努利分布不匹配一般非凸且饱和区梯度更弱
0-1 loss直接计分类错误不可导且不利用置信度

把推导和选择压缩成执行路径:

Bernoulli likelihood
 -> take negative log
 -> cross-entropy
 -> gradient wrt z = p - y

“MSE 永远不能做分类”过于绝对;它可以计算,但对标准逻辑回归既缺少正确似然解释,优化性质也更差。

八、常见误区与追问

  • 误区:交叉熵是因为分类标签只有 0 和 1 才人为规定的。 它直接来自伯努利最大似然,具有明确概率来源。
  • 误区:交叉熵为 0 表示 Accuracy 一定为 100%。 有限 logit 下概率通常不恰为 0/1;交叉熵还衡量概率置信度。
  • 追问:为什么数值实现用 logits 版本? 把 sigmoid 与 log 合并可用 log-sum-exp 技巧,避免上溢、下溢和 log(0)。
  • 追问:类别不平衡怎么办? 可使用加权交叉熵、重采样或阈值调整,并在真实分布上评估。
  • 追问:多分类对应什么损失? 互斥 K 类通常使用 softmax 交叉熵,对应类别分布负对数似然。

九、加强记忆

记忆时抓住这条主线:标准逻辑回归选择交叉熵有三层原因:① 凸性——MSE+sigmoid 的参数目标一般非凸,交叉熵+线性 logit ② 梯度——MSE 梯度多出 σ'(z)=p(1−p),严重误判落在饱和区时更新仍可能很小,交叉熵则简化为 Xᵀ(p−y)③ 概率来源——交叉熵正是伯努利负对数似然。这里比较的是标准逻辑回归的训练目标,并不意味着 MSE/Brier score 在所有分类模型或概率评估中都没有用途。