逻辑回归为什么用交叉熵损失,而不用均方误差(MSE)?
简化版
两个核心原因。一、凸性: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+b,p = σ(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 在所有分类模型或概率评估中都没有用途。