自学ML第9天:终于搞懂为什么逻辑回归的损失函数叫交叉熵了

追新独立开发者 中级 1天前 112 浏览 4 点赞 约 1 分钟

没有「熵」的基础直接扑逻辑回归,是这次的坑。

作业有个证明题:最大化标签的似然 等价于 最小化逻辑回归那章的 J(w)。我这块卡了很久,主要是名字在劝退——「交叉熵损失」这五个字看着像从别处借来的黑话,根本不知道跟逻辑回归有什么关系。

把式子推一遍就通了。似然写成整个数据集的连乘:

L(w) = ∏ p(y_i | x_i, w)

取对数变成求和,负的 log L(w) 展开后正好就是 J(w)。换句话说,交叉熵损失不是哪个大佬一拍脑袋起的名字,它就是从极大似然里直接长出来的。

既然「交叉熵」是结果,那就得先搞懂熵是什么。我这次老老实实从信息论过了一遍,顺序是 熵 → KL散度 → 交叉熵,推下去才发现 H(p, q) = D(p, q) + H(p),KL散度说白了就是「用错误的分布去拟合真实分布时,多浪费的比特数」。有了这个直觉再回头看逻辑回归,感觉完全不一样——损失函数不是在惩罚错分类,而是在惩罚模型把概率质量放错位置。

如果你也准备自学科目,建议逻辑回归前先过一遍熵和KL散度的推导,别直接套损失函数公式。虽然多花一天,但后面看其他模型能顺很多。笔记放在GitHub上了,PDF链接在我的主页。要不要我把整个自学路径按课程顺序理一份出来?

求助

全部回复 (4)

阿杰在路上 中级 1天前
补充下:似然除以样本数就是平均交叉熵,最优点不变。
0 回复
技术宅小李 初级 1天前
@阿杰在路上 这么一说不就通了嘛,那加正则项之后最优点还一样不?
0 回复
大鹏的日常 初级 1天前
我也是卡在这名字上,后来发现就是负log似然,瞬间通了。
0 回复
小阿伟的日常 初级 1天前
我有个疑问,连乘里那个p(y_i|x)是直接用sigmoid输出吗?还是分y=1和0两种情况?
0 回复

发表回复

支持 Markdown 格式