别再死记硬背逻辑回归公式了,建议先花一天搞懂交叉熵的推导逻辑

追新独立开发者 中级 2026/8/3 138 浏览 4 点赞 约 2 分钟

很多自学机器学习的同学在接触逻辑回归(Logistic Regression)时,最容易被卡住的地方不是代码实现,而是那个名为 $J(w)$ 的损失函数。大多数教程会直接告诉你:逻辑回归使用交叉熵(Cross-Entropy)作为损失函数,然后甩出一个求和公式让你去背。但如果你没有信息论的基础,这个名字听起来就像是强行塞进来的一段“黑话”,完全无法建立直觉。

其实,交叉熵损失并不是某个数学家随手起的名字,它在逻辑回归中有着极强的必然性,本质上就是从极大似然估计(MLE)中推导出来的结果。

很多初学者在做证明题时会发现,要求证明“最大化标签的似然函数等价于最小化逻辑回归的损失函数 $J(w)$”。这个证明过程其实是揭开迷雾的关键。首先,我们要写出整个数据集的似然函数 $L(w)$,它其实就是所有样本概率的连乘积:$L(w) = \prod p(y_i | x_i, w)$。因为连乘在求导时极其麻烦,且容易出现数值下溢(Underflow),所以我们习惯性地对其取自然对数 $\ln$。一旦取完对数,原本的连乘就变成了求和 $\sum$。此时,如果你给这个对数似然函数加上一个负号,你会惊奇地发现,展开后的式子竟然和逻辑回归的损失函数 $J(w)$ 完全一致。

这意味着,当你最小化交叉熵损失时,你本质上就是在寻找一组参数 $w$,使得模型预测出的概率分布与真实标签的分布最接近,也就是在最大化似然概率。

但如果想在直觉上真正理解,建议按照“熵 → KL 散度 → 交叉熵”这个顺序重新梳理一遍。在信息论中,熵 $H(p)$ 衡量的是一个分布的不确定性。而 KL 散度(Kullback-Leibler Divergence)则定义为 $D_{KL}(p || q) = \sum p(x) \log \frac{p(x)}{q(x)}$。简单来说,KL 散度衡量的是“用错误的分布 $q$ 去拟合真实分布 $p$ 时,多浪费了多少比特数”。

这里有一个核心等式:$H(p, q) = D_{KL}(p || q) + H(p)$。其中 $H(p, q)$ 就是交叉熵。因为在机器学习的监督学习中,真实标签的分布 $p$ 是固定不变的,其熵 $H(p)$ 是一个常数。所以,最小化交叉熵 $H(p, q)$,在数学上等同于最小化 KL 散度 $D_{KL}(p || q)$。

有了这个认知,你再回头看逻辑回归的损失函数,感觉会完全不一样。你会发现,损失函数其实并不是在简单地“惩罚”一个分类错误,而是在惩罚模型将“概率质量”放错了位置。如果真实标签是 1,而模型预测的概率是 0.1,那么在这个点上,模型浪费了大量的信息比特,KL 散度激增,损失函数随之剧增。

对于准备自学 ML 的同学,我建议在进入逻辑回归章节之前,不要直接套用损失函数公式,而是花时间把这套推导理一遍。虽然这可能会让你在进度表上多花一天时间,但它能为你后续学习 softmax 回归、神经网络以及各种概率模型打下坚实的基础。当你意识到所有的损失函数背后其实都在处理“分布的距离”时,学习曲线会变得平缓很多。

求助

全部回复 (4)

阿杰在路上 中级 2026/8/3

直接看似然除以样本数就明白了,最优点其实根本没变。

0 回复
技术宅小李 初级 2026/8/3

逻辑终于顺过来了,但加上 L2 正则项之后最优点会不会偏移?

0 回复
大鹏的日常 初级 2026/8/3

把交叉熵直接看成负 log 似然的一瞬间,感觉脑子里的死结突然开了

0 回复
小阿伟的日常 初级 2026/8/3

这里是用 sigmoid 直接出结果,还是得分 0 和 1 两种情况写?

0 回复

发表回复

支持 Markdown 格式