问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

机器学习之交叉熵

创作时间:
作者:
@小白创作中心

机器学习之交叉熵

引用
CSDN
1.
https://m.blog.csdn.net/dundunmm/article/details/144466980

交叉熵是机器学习中用于衡量预测分布与真实分布之间差异的一种损失函数,特别是在分类任务中非常常见。它源于信息论,反映了两个概率分布之间的距离。

交叉熵的数学定义

对于分类任务,假设我们有:

  • 一个真实的分布 y,用独热编码表示,例如 y=[0,1,0] 表示属于第二类。
  • 一个预测的概率分布\hat{y},例如 \hat{y} = [0.1, 0.7, 0.2],表示模型预测属于各类的概率。

交叉熵的公式为:

其中:

  • yi是真实分布中第 i 类的值(独热编码下只有一个为 1,其余为 0)。
  • \hat{y}_i 是模型预测的第 i 类的概率。

由于 y 是独热编码,交叉熵可以简化为:

其中 c 是真实类别的索引。

交叉熵的直观理解

  1. 信息论解释
  • 交叉熵可以理解为用预测分布\hat{y} 去编码真实分布 y 的代价。
  • 如果预测越接近真实分布(即预测概率\hat{y}_c 越接近 1),交叉熵越小,模型表现越好。
  1. 惩罚机制
  • 如果模型的预测概率 \hat{y}_c 很低(接近 0),交叉熵会给出很大的惩罚。
  • 这促使模型更自信地预测正确类别。

交叉熵的应用场景

  1. 二分类问题: 对于二分类任务,真实标签 y∈{0,1},模型预测 \hat{y} \in [0, 1]。交叉熵损失为:

  2. 多分类问题: 对于 K 类分类任务,交叉熵损失为:

其中 y_k 表示第 k 类的真实标签,\hat{y}_k 表示模型对第 k 类的预测概率。

  1. 目标检测和语义分割: 交叉熵通常与其他损失(如 IoU、Dice Loss)结合使用,以处理多任务学习。

交叉熵的优点

  1. 数学性质优良:损失函数连续且可微,适合梯度下降优化。
  2. 自然适用于概率分布:直接用概率度量模型的预测质量。
  3. 对错误预测的敏感性:能有效惩罚错误分类,提高模型对分类任务的优化效果。

交叉熵的缺点

  1. 对预测不平衡的敏感性
  • 如果某些类别的样本数很少,模型可能忽视这些类别。
  • 解决方法:可以结合加权交叉熵(Weighted Cross-Entropy)。
  1. 对异常值的敏感性:当预测概率非常接近 0 时,交叉熵的惩罚会非常大,可能导致数值不稳定。

交叉熵与其它损失的关系

  1. 与均方误差(MSE)
  • MSE 更适合回归任务,而交叉熵适合分类任务。
  • 对于分类任务,MSE 可能导致梯度消失,影响优化效果。
  1. 与 KL 散度:交叉熵是 KL 散度的一部分,衡量预测分布与真实分布的差异。

实现示例

二分类问题的交叉熵损失(Python + PyTorch)

import torch
import torch.nn as nn

# 假设真实标签和预测概率
y_true = torch.tensor([1, 0, 1], dtype=torch.float32)  # 真实标签
y_pred = torch.tensor([0.8, 0.2, 0.6], dtype=torch.float32)  # 预测概率

# 定义二分类交叉熵损失
loss_fn = nn.BCELoss()
loss = loss_fn(y_pred, y_true)
print(f"Binary Cross-Entropy Loss: {loss.item():.4f}")

多分类问题的交叉熵损失

# 假设真实标签和预测概率
y_true = torch.tensor([1, 0, 2])  # 真实标签(类别索引)
y_pred = torch.tensor([[0.3, 0.6, 0.1],
                       [0.1, 0.2, 0.7],
                       [0.8, 0.1, 0.1]])  # 预测概率

# 定义多分类交叉熵损失
loss_fn = nn.CrossEntropyLoss()
loss = loss_fn(y_pred, y_true)
print(f"Multi-class Cross-Entropy Loss: {loss.item():.4f}")

交叉熵是分类任务中的核心损失函数之一,其优异的性质和强大的优化能力使其在机器学习的各个领域得到了广泛应用。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号