生成模型概率基础相关学习杂记

最后更新于

2026/6/15归档:这是很早之前的论文阅读笔记了。关于变分推断、扩散模型等比较复杂的知识记到本子上了(当时还没搭博客)

玻尔兹曼分布#

有N个粒子,M种能级,每个粒子处于每个能级的概率均等。在总能量、总数目一定的情况下,能量分布直方图最可能处于的分布,就是玻尔兹曼分布,表现为能量越大粒子数目越少。证明方法是使用拉格朗日数乘法。

最终得到了概率分布 P(x)=1ZeβE(x)P(x) = \frac{1}{Z} e^{-\beta E(x)},也就是softmax函数的形式。

基于能量的模型#

让神经网络给每个输入进行能量评估(学习 E(x)E(x)),如果越可能出现,能量就越低。

如果要得到概率,最难的地方在于分母的归一化值。能量模型用近似技术实现。

目标是采样出概率密度更大的那些样本。采用“朗之万动力学”:和梯度下降差不多,求概率密度的梯度,迭代得到概率最大/最小的点。在已经知道是玻尔兹曼分布、知道 E(x)E(x) 的情况下,可以求概率密度对于x的导数,得到梯度,然后更新x,迭代。朗之万动力学还有噪声防止局部最优。

变分推断#

用某分布(由某种参数化得到的)近似某分布,目标是最小化两个分布的KL,一通化简。这个化简非常公式化。
参考:https://www.cnblogs.com/song-lei/p/16210740.html

MCMC#

已知复杂分布 ff,怎么得到采样(理解为采样1w个绘制直方图以接近 ff 的密度函数)
一些基础知识:用某分布的CDF对服从该分布的随机变量进行变换可以得到均匀分布

蒙特卡洛方法#

计算机算法可以得到均匀分布。均匀分布经过变换可以得到任意分布。目前已经有了从均匀分布得到常见分布的的变换方法,视为可以直接得到常见分布

  1. 使用某可以简单采样的分布G,作为建议分布,具有密度函数g。这个分布可以是最简单的均匀分布,也可以是其他分布,最好是和目标分布f接近的,因为这样采样效率高
  2. 要一个缩放系数c,保证 cg(x)>=f(x),xcg(x) >= f(x), \forall x。c太大了会导致几乎总是拒绝,要采样更多次
  3. 还要有一个均匀分布U(0,1)
  4. 从G中采样一个x,从U中采样一个值u,如果 u<f(x)cg(X)u<\frac{f(x)}{cg(X)} 则认为x是f的一个采样

马尔可夫方法#

大多数转移矩阵有平稳状态。所以如果知道某个分布的概率转移,则在其平稳分布上进行状态转移可以得到这个分布的采样。

具体做法是:先从某分布随便采样一个(或几个)点,然后每个点进行数次迭代,视为进入了平稳状态,后面的每次迭代就是对应分布的采样。

以上都对离散而言。连续的用kernel函数代替矩阵,但我不知道此时怎么求平稳状态。

马尔可夫方法的问题是已知平稳分布时,不能获取其转移概率。

所以有了MCMC#

已知转移概率矩阵 PP 和平稳分布 π\pi,关系是 πP=π\pi P = \pi。P可以有很多取法,得不到。

现在引入一个更强的条件——“细致平衡”:π(x)P(xx)=π(x)P(xx)\pi(x) P(x \to x') = \pi(x') P(x' \to x)

为什么说更强?满足这个条件的P的稳态分布一定是 π\pi,但平稳分布和转移概率不一定符合细致平衡,很好证明。

MCMC的核心就是在一个已知的可收敛的Q的转移矩阵上,构建满足细致平衡的 P=AQP = A \odot Q,此时细致平衡条件为:

π(x)A(xx)Q(xx)=π(x)A(xx)Q(xx)\pi(x) A(x \to x') Q(x \to x') = \pi(x') A(x' \to x) Q(x' \to x)

对称解为 A(xx)=π(x)Q(xx)A(x \to x') = \pi(x') Q(x' \to x) 也就是 π\pi 对应的马尔可夫状态转移矩阵 P(x,x)=π(x)Q(x,x)Q(x,x),xxP(x, x') = \pi(x') * Q(x', x) \odot Q(x, x'), x \neq x',行和一定小于1,缺的部分用对角线补。

但是其实并不能用此方法构造,因为:

  1. π\pi 求不出来,比如分母有配分函数
  2. 只能用于离散的情况(矩阵形式)
  3. 即使1和2都克服了,可能对角线的值很大,转移概率小,收敛会很慢

就问题1和3,应该用比值(换一种构造方式);就问题2,应该用接收概率而不是显式构造矩阵;