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

5.0 信息论基础 ​

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

在线 Notebook

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


为什么需要理解信息论 ​

在 LLM 中:

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

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


信息熵 ​

信息的定义 ​

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

I(x)=−log2⁡P(x)

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

直观理解:

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

例子:

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

熵(Entropy) ​

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

H(X)=−∑xP(x)log⁡P(x)

或者对连续分布:

H(X)=−∫p(x)log⁡p(x)dx

单位:

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

熵的性质 ​

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

例子 ​

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

H(X)=−∑i=1N1Nlog⁡1N=log⁡N

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

H(X)=−plog⁡p−(1−p)log⁡(1−p)

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


条件熵和联合熵 ​

条件熵 ​

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

H(X|Y)=−∑yP(y)∑xP(x|y)log⁡P(x|y)

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

联合熵 ​

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

H(X,Y)=−∑x∑yP(x,y)log⁡P(x,y)

链式法则 ​

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

交叉熵 ​

定义 ​

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

H(P,Q)=−∑xP(x)log⁡Q(x)

与熵的关系 ​

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

其中 DKL(P∥Q) 是 KL 散度。

在 LLM 中的应用 ​

在语言模型中:

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

损失函数:

L=H(P,Q)=−∑iP(i)log⁡Q(i)

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

L=−log⁡Q(y)

其中 y 是真实的 token。


KL 散度 ​

定义 ​

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

DKL(P∥Q)=∑xP(x)log⁡P(x)Q(x)

性质 ​

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

直观理解 ​

  • DKL(P∥Q) 小:Q 是 P 的好近似
  • DKL(P∥Q) 大:Q 与 P 差异大

在 LLM 中的应用 ​

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

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

L=Lreward+βDKL(Pnew∥Poriginal)

互信息 ​

定义 ​

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

I(X;Y)=∑x∑yP(x,y)log⁡P(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
独立性当 X 和 Y 独立时,I(X;Y)=0

在深度学习中的应用 ​

信息瓶颈(Information Bottleneck):

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

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

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


困惑度 ​

定义 ​

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

Perplexity=2H(P,Q)=2−1N∑i=1Nlog2⁡Q(yi)

或者用自然对数:

Perplexity=e−1N∑i=1Nlog⁡Q(yi)

直观理解 ​

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

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

与交叉熵的关系 ​

Perplexity=eH(P,Q)

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


信息论中的不等式 ​

Jensen 不等式 ​

对于凸函数 f:

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

应用: 证明 KL 散度非负

DKL(P∥Q)=EP[log⁡P(x)Q(x)]≥log⁡EP[P(x)Q(x)]=0

Gibbs 不等式 ​

H(P,Q)≥H(P)

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


信息论在 LLM 中的应用 ​

1. 训练目标 ​

最小化交叉熵:

L=−1N∑i=1Nlog⁡Pθ(yi|xi)

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

2. 评估指标 ​

困惑度:

PPL=eL

困惑度越低,模型越好。

3. 微调中的正则化 ​

KL 散度正则化:

L=Ltask+βDKL(Pnew∥Poriginal)

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

4. 对比学习 ​

最大化互信息:

L=−log⁡exp⁡(s(x,x+)/τ)∑x−exp⁡(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 许可协议