⚠️ Alpha内测版本警告:此为早期内部构建版本,尚不完整且可能存在错误,欢迎大家提Issue反馈问题或建议。
Skip to content

5.0 信息论基础

核心问题: 什么是信息?如何衡量信息的不确定性?

在线 Notebook

对应的交互式版本可在 Google Colab 打开,统一使用方式见 第0章说明


为什么需要理解信息论

在 LLM 中:

  • 交叉熵损失是训练的核心目标函数
  • KL 散度用于衡量两个概率分布的差异
  • 互信息用于理解特征之间的依赖关系
  • 困惑度用于评估模型性能

理解信息论可以帮助我们理解 LLM 的训练目标和评估指标。


信息熵

信息的定义

信息量衡量一个事件发生时带来的"惊讶程度":

I(x)=log2P(x)

其中 P(x) 是事件 x 的概率。

直观理解:

  • 概率高的事件(容易发生):信息量小
  • 概率低的事件(难以发生):信息量大

例子:

  • "明天太阳升起":P=0.9999,信息量 ≈ 0
  • "明天下雨":P=0.3,信息量 ≈ 1.74 bits

熵(Entropy)

定义: 熵是信息量的期望值,衡量一个概率分布的不确定性

H(X)=xP(x)logP(x)

或者对连续分布:

H(X)=p(x)logp(x)dx

单位:

  • 以 2 为底:bits
  • e 为底:nats
  • 以 10 为底:dits

熵的性质

性质说明
非负性H(X)0
最大值当分布均匀时最大,Hmax=logN
最小值当分布确定时为 0

例子

均匀分布: P(x)=1/N 对所有 x

H(X)=i=1N1Nlog1N=logN

二元分布: P(x=1)=pP(x=0)=1p

H(X)=plogp(1p)log(1p)

最大值在 p=0.5 时达到,Hmax=1 bit。


条件熵和联合熵

条件熵

定义: 给定 Y 的条件下,X 的熵:

H(X|Y)=yP(y)xP(x|y)logP(x|y)

直观理解: 如果我们已经知道 YX 还剩多少不确定性。

联合熵

定义: 两个随机变量的联合分布的熵:

H(X,Y)=xyP(x,y)logP(x,y)

链式法则

H(X,Y)=H(X)+H(Y|X)=H(Y)+H(X|Y)

交叉熵

定义

交叉熵衡量用一个分布 Q 来编码另一个分布 P 的期望编码长度:

H(P,Q)=xP(x)logQ(x)

与熵的关系

H(P,Q)=H(P)+DKL(PQ)

其中 DKL(PQ) 是 KL 散度。

在 LLM 中的应用

在语言模型中:

  • P:真实的下一个 token 的分布(one-hot 编码)
  • Q:模型预测的下一个 token 的分布

损失函数:

L=H(P,Q)=iP(i)logQ(i)

对于 one-hot 编码,这简化为:

L=logQ(y)

其中 y 是真实的 token。


KL 散度

定义

Kullback-Leibler 散度衡量两个概率分布的差异:

DKL(PQ)=xP(x)logP(x)Q(x)

性质

性质说明
非负性DKL(P|Q)0
非对称性DKL(P|Q)DKL(Q|P)
零点P=Q 时,DKL(P|Q)=0

直观理解

  • DKL(PQ) 小:QP 的好近似
  • DKL(PQ) 大:QP 差异大

在 LLM 中的应用

微调(Fine-tuning)中的 KL 散度:

在强化学习微调中,使用 KL 散度来防止模型偏离原始预训练分布太远:

L=Lreward+βDKL(PnewPoriginal)

互信息

定义

互信息衡量两个随机变量之间的依赖程度

I(X;Y)=xyP(x,y)logP(x,y)P(x)P(y)

与熵的关系

I(X;Y)=H(X)H(X|Y)=H(Y)H(Y|X)

直观理解: 互信息是知道 Y 后,X 的不确定性减少的量。

性质

性质说明
对称性I(X;Y)=I(Y;X)
非负性I(X;Y)0
独立性XY 独立时,I(X;Y)=0

在深度学习中的应用

信息瓶颈(Information Bottleneck):

在神经网络中,中间层应该:

  1. 最大化与输出的互信息:I(Z;Y)
  2. 最小化与输入的互信息:I(Z;X)

这样可以学到压缩但有用的表示。


困惑度

定义

困惑度是衡量语言模型性能的常用指标:

Perplexity=2H(P,Q)=21Ni=1Nlog2Q(yi)

或者用自然对数:

Perplexity=e1Ni=1NlogQ(yi)

直观理解

困惑度可以理解为模型在预测下一个 token 时的"平均分支因子":

  • 困惑度 = 2:模型平均在 2 个候选中选择
  • 困惑度 = 100:模型平均在 100 个候选中选择

与交叉熵的关系

Perplexity=eH(P,Q)

所以最小化交叉熵等价于最小化困惑度。


信息论中的不等式

Jensen 不等式

对于凸函数 f

f(E[X])E[f(X)]

应用: 证明 KL 散度非负

DKL(PQ)=EP[logP(x)Q(x)]logEP[P(x)Q(x)]=0

Gibbs 不等式

H(P,Q)H(P)

直观理解: 用错误的分布编码总是比用正确的分布编码更长。


信息论在 LLM 中的应用

1. 训练目标

最小化交叉熵:

L=1Ni=1NlogPθ(yi|xi)

这等价于最大化模型对真实数据的似然。

2. 评估指标

困惑度:

PPL=eL

困惑度越低,模型越好。

3. 微调中的正则化

KL 散度正则化:

L=Ltask+βDKL(PnewPoriginal)

防止模型过度改变原始分布。

4. 对比学习

最大化互信息:

L=logexp(s(x,x+)/τ)xexp(s(x,x)/τ)

其中 s 是相似度函数,τ 是温度参数。


实践建议

监控训练

在训练 LLM 时,应该监控:

  • [ ] 交叉熵损失:应该单调下降
  • [ ] 困惑度:应该单调下降
  • [ ] 验证集困惑度:检查过拟合

常见问题

问题可能原因解决方案
损失不下降学习率太小或数据有问题增加学习率,检查数据
损失 NaN数值不稳定或学习率太大降低学习率,使用梯度裁剪
困惑度很高模型容量不足或训练不足增加模型大小或训练时间
过拟合模型过大或训练时间太长使用正则化或早停

信息论的直觉

记住这些关键概念:

  1. :不确定性的度量
  2. 交叉熵:编码成本
  3. KL 散度:分布之间的距离
  4. 互信息:变量之间的依赖
  5. 困惑度:模型的平均分支因子

与后续章节的连接

  • 5.1-5.4:LLM 训练中的信息论应用
  • 第6-8章:微调、对齐、多模态学习中的信息论
  • 扩展:信息瓶颈、对比学习、互信息最大化

进一步阅读

经典教材:

  • Cover & Thomas, "Elements of Information Theory"
  • MacKay, "Information Theory, Inference, and Learning Algorithms"

论文:

  • Tishby & Schwartz-Ziv, "Opening the Black Box of Deep Neural Networks via Information"
  • Alemi et al., "Deep Variational Information Bottleneck"

关键要点:

  1. 熵衡量不确定性,是信息论的基础
  2. 交叉熵是 LLM 的损失函数,最小化它等价于最大化似然
  3. KL 散度衡量分布差异,用于微调中的正则化
  4. 互信息衡量依赖关系,用于对比学习
  5. 困惑度是评估指标,反映模型的预测能力

本教程采用 CC BY-NC-SA 4.0 许可协议