信息论入门:从“猜硬币”到交叉熵,直观理解KL散度与分类损失
2026/6/7 2:30:27 网站建设 项目流程

信息论入门:从“猜硬币”到交叉熵,直观理解KL散度与分类损失

想象你和朋友在咖啡馆玩一个游戏:桌上有一枚被做了手脚的硬币,正面朝上的概率是70%。每次抛掷后,你们需要预测结果并记录猜测的准确度。这个简单的游戏背后,隐藏着机器学习中交叉熵损失函数的精髓。

1. 从硬币游戏到信息量

当硬币正面朝上时,朋友A总是预测"正面",而朋友B则按60%概率猜正面。十轮下来,A的正确率看似更高——但这里存在一个关键问题:我们如何量化预测的"好坏"?

信息量衡量的是事件出人意料程度。公式简单却深刻:

def information(p): return -math.log(p)
  • 硬币正面实际概率P=0.7
  • A的预测完全确定(要么100%要么0%)
  • B的预测保留不确定性(60%/40%)

当出现反面时:

  • A的信息量 = -log(0) → 无穷大(完全预测错误)
  • B的信息量 = -log(0.4) ≈ 0.916

这就是为什么分类模型不能做绝对预测——需要保留合理的概率分布。

2. 信息熵:不确定性度量

连续玩100次硬币游戏,每次结果的信息量平均值就是信息熵

预测类型计算公式熵值(nats)
完美匹配-0.7ln(0.7)-0.3ln(0.3)≈0.61
朋友B的预测-0.7ln(0.6)-0.3ln(0.4)≈0.67
随机猜测(50%)-0.5ln(0.5)-0.5ln(0.5)≈0.69

熵值越低,预测系统的不确定性越小。在图像分类任务中,这意味着模型输出的概率分布越集中。

3. KL散度:预测与现实的差距

比较两种预测质量的差异,需要KL散度(相对熵):

def kl_divergence(p, q): return sum(p[i] * math.log(p[i]/q[i]) for i in range(len(p)))

以硬币游戏为例:

  • 真实分布 P = [0.7, 0.3]
  • 朋友A预测 Q1 = [1.0, 0.0]
  • 朋友B预测 Q2 = [0.6, 0.4]

计算结果:

KL(P||Q1) = 0.7*ln(0.7/1) + 0.3*ln(0.3/0) → 无限大 KL(P||Q2) ≈ 0.7*ln(0.7/0.6) + 0.3*ln(0.3/0.4) ≈ 0.042

这就是为什么机器学习中要避免"过于自信"的预测——KL散度会惩罚那些给真实情况分配零概率的预测。

4. 交叉熵:实战中的损失函数

在训练神经网络时,真实分布P固定(如标签[1,0,0]),信息熵恒定。此时最小化KL散度等价于最小化交叉熵:

交叉熵 H(P,Q) = 信息熵 H(P) + KL散度 D(P||Q)

以三分类问题为例:

样本真实分布P模型预测Q交叉熵计算
[1,0,0][0.7,0.2,0.1]-1ln(0.7)-0ln(0.2)-0*ln(0.1) ≈ 0.357
[0,1,0][0.3,0.4,0.3]-0ln(0.3)-1ln(0.4)-0*ln(0.3) ≈ 0.916

PyTorch中的实现极为简洁:

loss = nn.CrossEntropyLoss() output = loss(model_input, true_labels)

5. 分类任务中的实战技巧

二元分类(如垃圾邮件检测):

# 使用sigmoid激活配合BCELoss model = nn.Sequential( nn.Linear(1000, 1), nn.Sigmoid() ) loss_fn = nn.BCELoss()

多分类(如ImageNet):

# 最后一层无需softmax(已包含在CrossEntropyLoss中) model = nn.Sequential( nn.Linear(2048, 1000) ) loss_fn = nn.CrossEntropyLoss()

常见问题解决方案:

  1. 类别不平衡:在损失函数中添加类别权重
    weights = torch.tensor([1.0, 2.0, 1.5]) # 给少数类更高权重 loss_fn = nn.CrossEntropyLoss(weight=weights)
  2. 过拟合:配合标签平滑技术
    smoothed_labels = (1 - 0.1) * one_hot + 0.1 / num_classes

6. 可视化理解

通过二维平面展示不同预测与真实分布的差距:

红色区域表示预测与真实标签差距较大(高损失),蓝色区域表示匹配良好

在模型训练过程中,梯度下降算法实际上是在这个平面上寻找蓝色区域的过程。学习率决定了每一步的移动距离,而batch size则影响了我们估计梯度方向时的噪声大小。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询