什么是Boltzmann分布(玻尔兹曼分布)?
什么是Boltzmann分布
Boltzmann分布(玻尔兹曼分布)是统计力学和概率论中一个重要的概念,用于描述系统中粒子或状态在不同能量水平上的分布情况。它以奥地利物理学家路德维希·玻尔兹曼(Ludwig Boltzmann)的名字命名,广泛应用于物理、化学、机器学习等领域,特别是在能量基础模型(Energy-Based Models, EBMs)中,用于定义数据的概率分布。
Boltzmann分布的定义
Boltzmann分布描述了一个系统在热平衡状态下,处于某个特定能量状态的概率。假设一个系统中的状态 ( xxx ) 具有能量 ( E(x)E(x)E(x) ),则该状态的概率 ( p(x)p(x)p(x) ) 由以下公式给出:
p(x)=1Zexp(−E(x)kT) p(x) = \frac{1}{Z} \exp\left(-\frac{E(x)}{kT}\right) p(x)=Z1exp(−kTE(x))
其中:
- ( E(x)E(x)E(x) ):状态 ( xxx ) 的能量,通常由一个标量值函数定义。
- ( kkk ):玻尔兹曼常数,在物理系统中用于连接能量和温度(在机器学习中,常用 ( k=1k = 1k=1 ) 来简化公式)。
- ( TTT ):系统的绝对温度,控制分布的“平滑”程度。
- ( ZZZ ):归一化常数,也称为配分函数(partition function),用于确保概率总和为 1,定义为:
Z=∑xexp(−E(x)kT)(离散情况) Z = \sum_{x} \exp\left(-\frac{E(x)}{kT}\right) \quad \text{(离散情况)} Z=x∑exp(−kTE(x))(离散情况)
或
Z=∫exp(−E(x)kT)dx(连续情况) Z = \int \exp\left(-\frac{E(x)}{kT}\right) dx \quad \text{(连续情况)} Z=∫exp(−kTE(x))dx(连续情况)
在机器学习中,Boltzmann分布通常简化为:
p(x)∝exp(−E(x)) p(x) \propto \exp(-E(x)) p(x)∝exp(−E(x))
这里的 ( E(x)E(x)E(x) ) 是一个能量函数,( p(x)p(x)p(x) ) 表示数据的未归一化概率密度,归一化常数 ( ZZZ ) 可能难以直接计算,但在某些采样方法(如朗之万动力学)中并不需要显式计算 ( ZZZ )。
Boltzmann分布的意义
Boltzmann分布的核心思想是将概率与能量联系起来:能量越低的状态,出现的概率越高。这在能量基础模型(EBMs)中尤其重要,因为 EBMs 通过学习一个能量函数 ( E(x)E(x)E(x) ),将高数据密度的区域分配较低的能量,从而逼近数据的真实分布。
例如,在机器学习中,EBMs 使用 Boltzmann 分布来:
- 生成数据:通过朗之万采样(Langevin sampling)等方法,从分布 ( p(x)p(x)p(x) ) 中生成样本。
- 条件生成:通过在能量函数中加入额外的先验项,解决逆问题或生成特定条件下的数据。
- 分析数据复杂性:通过检查能量函数的局部曲率,计算数据的局部内在维度(Local Intrinsic Dimension, LID)。
举例说明
假设我们有一个简单的系统,包含三个状态 ( x1,x2,x3x_1, x_2, x_3x1,x2,x3 ),它们的能量分别为 ( E(x1)=0,E(x2)=1,E(x3)=2E(x_1) = 0, E(x_2) = 1, E(x_3) = 2E(x1)=0,E(x2)=1,E(x3)=2 ),温度 ( kT=1kT = 1kT=1 )。我们可以计算每个状态的未归一化概率:
exp(−E(x1))=exp(0)=1
\exp(-E(x_1)) = \exp(0) = 1
exp(−E(x1))=exp(0)=1
exp(−E(x2))=exp(−1)≈0.367
\exp(-E(x_2)) = \exp(-1) \approx 0.367
exp(−E(x2))=exp(−1)≈0.367
exp(−E(x3))=exp(−2)≈0.135
\exp(-E(x_3)) = \exp(-2) \approx 0.135
exp(−E(x3))=exp(−2)≈0.135
配分函数 ( ZZZ) 为:
Z=1+0.367+0.135≈1.502 Z = 1 + 0.367 + 0.135 \approx 1.502 Z=1+0.367+0.135≈1.502
因此,各个状态的概率为:
p(x1)=11.502≈0.666,p(x2)=0.3671.502≈0.244,p(x3)=0.1351.502≈0.090 p(x_1) = \frac{1}{1.502} \approx 0.666, \quad p(x_2) = \frac{0.367}{1.502} \approx 0.244, \quad p(x_3) = \frac{0.135}{1.502} \approx 0.090 p(x1)=1.5021≈0.666,p(x2)=1.5020.367≈0.244,p(x3)=1.5020.135≈0.090
可以看到,能量最低的状态 ( x1x_1x1 ) 具有最高的概率。
总结
Boltzmann分布提供了一种优雅的方式,将能量与概率分布联系起来,广泛应用于物理系统建模和机器学习中的概率建模。其数学公式简单而强大,核心在于通过能量函数 ( E(x)E(x)E(x) ) 定义概率密度 ( p(x)∝exp(−E(x))p(x) \propto \exp(-E(x))p(x)∝exp(−E(x)) )。在能量基础模型中,Boltzmann分布不仅用于数据生成,还为条件生成和数据复杂性分析提供了重要工具。
后记
2025年4月17日于上海,在grok 3大模型辅助下完成。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)