交叉熵损失

 
 

交叉熵损失

先看公式吧

信息熵

信息熵是一种指标,用来衡量:
  • 不确定性
  • 信息量
  • 平均编码长度
 
为什么这么设计:
信息熵是用来衡量随机变量 的指标,核心思想来源于信息理论中的“信息量”和“概率”的关系。
  • : 表示随机事件 发生的概率。
  • : 表示事件 所携带的信息量,概率越小,信息量越大。
  • :表示事件 的信息熵贡献
    • 因为,取负号是为了让信息熵变成正数,这样更符合直觉。
 
  • : 对所有可能事件的“信息量”进行加权平均(按概率 p(x) 加权),也就是是对所有可能事件的信息量的期望值
 

交叉熵

交叉熵是用一个分布来近似真实分布 时所需要的平均编码长度:
 

Kullback-Leibler (KL) 散度

KL散度就是描述 真实分布的信息熵和用来模拟的时候的交叉熵的差值:
 

为什么是交叉熵被用于损失

单看三个公式的话,交叉熵衡量的是用模拟的时候,所需要的平均编码长度或者信息量,理论上应该KL散度才是真正的损失吧,损失等于(真实-模拟)
但实际应用上,只用交叉熵就可以了
 
所以核心是信息熵的定义,在这里我们回到香农的初始定义:
在信息论里面,熵是对不确定性的测量,不确定性越高,所携带的信息量越高
所以当我们讨论los为什么只用交叉熵公式的时候,记住这句话:
交叉熵的目标并不是简单地描述,而是为了衡量去近似真实分布 时所付出的代价(不确定性)
 
以上是咬文嚼字式的解释,不重要,因为即使我们用了KL散度,在实际代码优化过程中也会退化成交叉熵的,只需要记得以下几点即可:
  • 最小化和最小化在优化目标上是一致的。
  • KL 散度需要先计算,但 是固定的,可理解为常数项,在优化过程中不会影响梯度,直接消去即可
 

分步骤理解Loss公式

 
我们从单样本的交叉熵推广到多样本,然后结合实际应用
 

1. Multi-class Classification 单样本的交叉熵公式

对于单条样本,想象next token的预测过程,我们假设next token的one hot为:
[0,0,0,0,0,…,1,…,0,0,0]
: 分类的类别数。
. : 该条样本
  • 对于真实类别
  • 对于其他类别
  • 由于只有1、0,所以公式可以简化为:
 

2. Multi-class Classification 多样本的交叉熵公式

同样,多条样本,每条也都是one hot为:
[0,0,0,0,0,…,1,…,0,0,0]
这时候公式为:
  • : 样本总数。
  • : 分类的类别数。
由于也是one-hot,所以可以简化为:
 
 

3. Multi-label Classification 多样本的交叉熵公式

其实跟Multi-class Classification 多样本的交叉熵公式是一样的,只是无法简化了,因为的时候
 
 
 

4. Multi-class Classification +Softmax的loss计算

在多分类问题中,Softmax 输出层将模型的 logits 转化为概率分布
Loading...
目录
文章列表
个人站点-主NLP
欧洲史
开发工具
Linux
计算机软件
DL-训练
历史-欧洲史
历史-中国史
中国史
DL-公式推导
DL-算法原理
DL-工程化
计算机硬件
可解释性
LLM-基础
传统NLP
社会运转
训练框架
Benchmark
生活记录
技术报告
强化学习