自学ML第9天:终于搞懂为什么逻辑回归的损失函数叫交叉熵了
没有「熵」的基础直接扑逻辑回归,是这次的坑。
下一篇
Python系列看到Part 2 →
作业有个证明题:最大化标签的似然 等价于 最小化逻辑回归那章的 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链接在我的主页。要不要我把整个自学路径按课程顺序理一份出来?