信息论基础(熵、KL散度)
1. 熵(Entropy):不确定性的度量
1.1 定义与直观理解
熵是信息论中衡量随机变量不确定性的核心指标。对于离散随机变量,其熵定义为:
其中是的取值空间。熵的单位取决于对数底数(比特/nat)。
物理意义:表示编码该分布所需的最小平均比特数,或系统混乱程度。
1.2 微分熵(连续情形)
对于连续随机变量,定义微分熵:
注意:微分熵可负值,且不满足尺度不变性。
1.3 性质与重要定理
- 极值性:均匀分布时熵最大
- 链式法则:
- 信息不等式:(离散情形)
2. KL散度(Kullback-Leibler Divergence)
2.1 定义与性质
衡量两个概率分布和的差异:
关键性质:
- 非对称性:
- 非负性:(等号当且仅当)
- 不满足三角不等式
2.2 在扩散模型中的作用
- 训练目标:最小化真实分布与模型分布的KL散度
- 变分推断:作为证据下界(ELBO)的组成部分
- 分数匹配:KL散度与Fisher信息矩阵的关联
3. 交叉熵与互信息
3.1 交叉熵(Cross-Entropy)
在机器学习中常用作损失函数。
3.2 互信息(Mutual Information)
衡量两个随机变量的依赖程度:
4. 扩散模型中的典型应用
4.1 正向过程的熵变
正向扩散过程的熵变化分析:
其中为噪声方差。
4.2 逆向过程的KL目标
逆向去噪过程通过最小化:
5. 信息论视角的扩散过程
5.1 信息逐渐衰减
正向过程可看作逐步擦除原始数据信息(熵增过程)
5.2 率失真理论视角
扩散过程与信息压缩的率失真函数存在深刻联系
图表建议:
- 熵随分布变化的示意图(高斯分布 vs 均匀分布)
- KL散度的非对称性可视化
- 扩散过程中信息量变化的曲线图
代码示例(计算离散KL散度):
import numpy as np
def kl_divergence(p, q):
"""计算离散分布的KL散度"""
p = np.asarray(p, dtype=np.float)
q = np.asarray(q, dtype=np.float)
return np.sum(p * np.log(p / q))
# 示例
p = [0.4, 0.6]
q = [0.5, 0.5]
print(f"KL(p||q) = {kl_divergence(p, q):.4f}")
案例研究:
- 在图像生成中,分析不同噪声级别下的熵变化
- 使用KL散度作为损失函数的变分自动编码器(VAE)与扩散模型的对比
