二分类交叉熵损失函数怎么推导?
逻辑回归中损失函数的数学表达式与设计动机
原题:请写出逻辑回归中使用的二分类交叉熵损失函数的数学表达式,并解释其设计动机和优势。
模型训练 · OPPO真题
回答与解析
数学表达式
对于二分类问题,设真实标签 $y \in {0, 1}$,模型输出概率 $\hat{y} = \sigma(z) = \frac{1}{1+e^{-z}}$,其中 $z = w^Tx + b$。
交叉熵损失: $\mathcal{L} = -\left[ y\log(\hat{y}) + (1-y)\log(1-\hat{y}) \right]$
或等价写成: $\mathcal{L} = -\log P(y|x) = \begin{cases} -\log(\hat{y}) & y=1 \ -\log(1-\hat{y}) & y=0 \end{cases}$
设计动机:极大似然估计
- 逻辑回归假设 $P(y=1|x) = \hat{y}$,服从伯努利分布
- 对单个样本,似然函数:$P(y|x) = \hat{y}^y (1-\hat{y})^{1-y}$
- 取负对数即得交叉熵损失,最小化损失等价于最大化似然
核心优势
| 特性 | 说明 |
|---|---|
| 凸函数 | 对参数 $w$ 是凸的,保证全局最优,梯度下降收敛稳定 |
| 梯度非饱和 | $\frac{\partial \mathcal{L}}{\partial z} = \hat{y} - y$,误差大时梯度大,学习信号强 |
| 概率解释 | 输出天然是概率,与sigmoid配合形成完整概率框架 |
对比MSE
MSE在 $\hat{y}$ 接近0或1时梯度极小(sigmoid饱和),导致学习停滞;交叉熵通过对数放大误差,避免了这一问题。
口语版讲法(约4分钟)
- 一句话定位:损失函数本质是让模型输出概率尽量贴近真实,设计动机来自极大似然估计
- 数学表达式与直观理解:分情况写,y=1时希望预测概率大,y=0时希望小
- 对比MSE:sigmoid饱和导致梯度消失,交叉熵梯度非饱和,学习信号强
- 业务落地:比如客服退款场景,误判成本不对称,需要调权重
- 延伸可延伸点:多分类时的扩展,以及样本不平衡的处理
这道题问的是二分类交叉熵损失函数,其实核心就一句话:它让模型输出的概率分布尽量贴近真实标签的分布,设计动机来自极大似然估计。说白了,就是假设标签服从伯努利分布,然后最大化看到当前数据这个参数的可能性。
具体写一下公式。对于单个样本,真实标签y是0或1,模型输出概率是ŷ,那损失就是负的y乘以logŷ加上1-y乘以log(1-ŷ)。你可以这么理解:当y等于1的时候,损失就是负的logŷ,我们希望ŷ尽量接近1,这样logŷ接近0,损失就小;当y等于0的时候,损失是负的log(1-ŷ),希望ŷ接近0。这个形式天然地把错误预测的代价放大了,尤其当预测概率接近0或1但方向反了的时候,损失会变得非常大。
那为什么不用更直观的均方误差呢?这里有个关键区别。逻辑回归最后接的是sigmoid,这个函数在两端非常平缓,梯度几乎为0。如果用MSE,当模型预测错得离谱时,梯度反而很小,学习就停滞了。而交叉熵的梯度是ŷ减y,误差越大梯度越大,学习信号很强。所以交叉熵不仅数学上跟极大似然等价,工程上也更友好,收敛更稳。
再说到业务落地。我举一个客服退款场景。模型要判断用户投诉是否应该退款,标签是退或不退。如果模型预测退款概率是0.9,但实际不该退,那损失就是负的log0.1,大概2.3;反过来预测0.1但实际该退,损失也是2.3。但业务上这两种错误的成本可能完全不同,不该退的退了,直接损失钱;该退的没退,只是用户体验差一点。所以实际中我会调正负样本的权重,或者修改损失函数,比如给假阳性更大的惩罚。这里有个前提:业务方必须能给出误判成本的比例,否则调权就是拍脑袋。常见的失败场景是,样本严重不平衡但直接套标准交叉熵,模型会全预测成多数类,准确率虚高但召回率为0。上线我会特别关注坏样本的召回率,而不是整体准确率。
另外,二分类交叉熵可以自然地扩展到多分类,变成softmax加交叉熵,公式形式类似,但分母是所有类别的指数和。面试官如果深挖,可能会问多分类时如果类别数特别多,计算量怎么优化,或者样本不平衡时怎么调整损失。
所以我会把交叉熵看成逻辑回归的默认选择,它跟sigmoid天然配对,梯度特性好,又有概率解释。但在真实业务里,我会根据误判成本、样本分布做调整,不会无脑套公式。
关键一句:二分类交叉熵可扩展为多分类的softmax交叉熵,但类别数多时计算量大,且样本不平衡需要调整损失权重。
面试官还可能这样问
- 问法 1 · 场景切入
假设你在做一个电商的订单风控模型,用逻辑回归判断交易是否欺诈。正样本(欺诈)很少,模型输出一个0到1的概率。你怎么设计损失函数,让模型能更关注那些罕见的欺诈样本?
- 问法 2 · 层层追问
逻辑回归里我们通常用交叉熵损失,你知道它的公式吗?……为什么用交叉熵而不用均方误差?……如果真实标签是0或1,预测值接近0或1时,梯度会怎样?
- 问法 3 · 直球架构
请写出逻辑回归二分类交叉熵损失的数学表达式,并解释它的设计动机和相比MSE的优势。注意要包含真实标签y和预测概率ŷ的关系。