【史上最易懂】变分推断:从【求分布】的推断问题,变成【缩小距离】的优化问题,用简单的分布 q 去近似复杂的分布 p

2023-12-20 17:59:33

变分推断:从求分布的推断问题,变成缩小距离的优化问题

?


频率学派与贝叶斯学派

学过概率论,应该了解过,概率分为 2 个学派:

  • 频率学派:数据是客观的(看到啥就是啥,隐变量z->观察变量/输入变量x),直接求统计指标即可(似然函数),代表之作像 CNN、RNN、transformer 这类判别模型(学习类别边界)

  • 贝叶斯学派:数据来自隐变量z(每个孩子都有一个妈, p ( z ∣ x ) = p ( x ∣ z ) p ( z ) p ( x ) p(\mathbf{z|x})=\frac{p(\mathbf{x|z})p(\mathbf{z})}{p(\mathbf{x})} p(z∣x)=p(x)p(x∣z)p(z)?),数据都有主观的先验的分布(知道先验,贝叶斯公式推导后验),代表之作像 VAE、GAN、扩散模型 这类概率生成模型(学习概率分布)

把贝叶斯学派的公式展开:

p ( z ∣ x ) = p ( x ∣ z ) p ( z ) p ( x ) = p ( x ∣ z ) p ( z ) ∫ p ( z ) p ( x ∣ z ) d z p(\mathbf{z}|\mathbf{x})=\frac{p(\mathbf{x}|\mathbf{z})p(\mathbf{z})}{p(\mathbf{x})}=\frac{p(\mathbf{x}|\mathbf{z})p(\mathbf{z})}{\int p(\mathbf{z})p(\mathbf{x}|\mathbf{z})d\mathbf{z}} p(zx)=p(x)p(xz)p(z)?=p(z)p(xz)dzp(xz)p(z)?

按照贝叶斯展开后,分母 ∫ p ( z ) p ( x ∣ z ) d z \int p(\mathbf{z})p(\mathbf{x}|\mathbf{z})d\mathbf{z} p(z)p(xz)dz 是一个不可积的多重积分,会让后验分布无解析解。

可以用 马尔科夫链-蒙特卡洛方法 来近似,但 马尔科夫链-蒙特卡洛方法 是基于 迭代 策略(一步步来的那种)。

  • 导致ta计算慢,不适合深度学习这种大规模数据的计算

变分推断

变分推断另一种解法,适合深度学习这种大规模数据的计算、适合并行计算。

按照贝叶斯学派的思想,估计下图的黄色分布,那设置一个先验(有点像高斯分布),用高斯分布去套这个黄色分布:

目的是,让高斯分布尽可能的重合黄色分布。

  • 用变分分布去逼近推断后的后验分布 p ( z ∣ x ) p(z|x) p(zx)
  • 最小化俩个分布的 KL 散度

min ? θ K L ( q ( z ; θ ) ∣ ∣ p ( z ∣ x ; ? ) ) \min_\theta KL(q(z;\theta)||p(z|x;\phi)) minθ?KL(q(z;θ)∣∣p(zx;?))

  • q ( z ; θ ) q(z;\theta) q(z;θ) 代表一个叫做q的概率分布, p ( z ∣ x ; ? ) p(z|x;\phi) p(zx;?) 代表一个叫做p的概率分布
  • x x x 是一个给定的数据
  • 我们要找到一个参数 θ θ θ,使得 q ( z ; θ ) q(z;\theta) q(z;θ) p ( z ∣ x ; ? ) p(z|x;\phi) p(zx;?) 之间的 KL 散度最小
  • KL 散度用于,衡量俩个分布之间的距离

公式的目标是找到一个概率分布 q ( z ; θ ) q(z;\theta) q(z;θ),使得它与给定数据 x x x 的真实概率分布 p ( z ∣ x ; ? ) p(z|x;\phi) p(zx;?) 之间的差距最小。

通过调整参数 θ θ θ 的值,我们可以调整 q q q 的形状,使得它与真实概率分布更加接近。

比如上图,调整参数 θ θ θ 得到俩个高斯分布(红色、绿色),哪个高斯分布和黄色分布的 KL 散度最小,就选哪个。

变分推断步骤:

  • 输入:数据x,模型 p ( z , x ) p(z, x) p(z,x)
  • 需要推断的是后验概率 p ( z ∣ x ) p(z | x) p(zx),但不能直接求
  • 构造后验概率 p ( z ∣ x ) p(z | x) p(zx) 的近似分布 q ( z ; v ) q(z; v) q(z;v)
  • 不断缩小 q 和 p 之间的距离,直至收敛

展开上面公式的 KL 散度(变成期望和log运算表示):

K L ( q ( z ; θ ) ∥ p ( z ∣ x ) ) ] = E q ( z ; θ ) [ log ? q ( z ; θ ) p ( z ∣ x ) ] \begin{gathered}KL(q(z;\theta)\|p(z|x))]\\=\quad E_{q(z;\theta)}[\log\frac{q(z;\theta)}{p(z|x)}]\end{gathered} KL(q(z;θ)p(zx))]=Eq(z;θ)?[logp(zx)q(z;θ)?]?

完整推导

K L ( q ( z ; θ ) ∥ p ( z ∣ x ) ) ] = E q [ log ? q ( z ) p ( z ∣ x ) ] = E q [ log ? q ( z ) ? log ? p ( z ∣ x ) ] = E q [ log ? q ( z ) ? log ? p ( x ∣ z ) p ( z ) p ( x ) ] = E q [ log ? q ( x ) ] ? E q [ log ? p ( x ∣ z ) ] ? E q [ log ? p ( z ) ] + E q [ log ? p ( x ) ] = ? E q [ log ? p ( x ∣ z ) ] + K L ( q ( z ) ∣ ∣ p ( z ) ) + E q [ log ? p ( x ) ] \begin{aligned} &\begin{aligned}KL(q(z;\theta)\|p(z|x))]\end{aligned} \\ &= \begin{aligned}E_q[\log\frac{q(z)}{p(z|x)}]\end{aligned} \\ &= \begin{aligned}E_q[\log q(z)-\log p(z|x)]\end{aligned} \\ &= E_q[\log q(z)-\log\frac{p(x|z)p(z)}{p(x)}] \\ &= E_q[\log q(x)]-E_q[\log p(x|z)]-E_q[\log p(z)]+E_q[\log p(x)] \\ &= \begin{aligned}-E_q[\log p(x|z)]+KL(q(z)||p(z))+E_q[\log p(x)]\end{aligned} \end{aligned} ?KL(q(z;θ)p(zx))]?=Eq?[logp(zx)q(z)?]?=Eq?[logq(z)?logp(zx)]?=Eq?[logq(z)?logp(x)p(xz)p(z)?]=Eq?[logq(x)]?Eq?[logp(xz)]?Eq?[logp(z)]+Eq?[logp(x)]=?Eq?[logp(xz)]+KL(q(z)∣∣p(z))+Eq?[logp(x)]??

第二行:将 KL 散度的定义展开为期望值的形式, E q E_q Eq? 表示在 q ( z ; θ ) q(z;\theta) q(z;θ) 的概率分布下对其进行期望值的计算

第三行:除法变成减法形式

第四行: p ( z ∣ x ) p(\mathbf{z}|\mathbf{x}) p(zx) 替换后验公式 p ( x ∣ z ) p ( z ) p ( x ) \frac{p(x|z)p(z)}{p(x)} p(x)p(xz)p(z)?

第五行:log运算展开后验公式,再把中括号外面的 E 放进来了

第六行:合并 log ? q ( x ) 、 log ? p ( z ) \log q(x)、\log p(z) logq(x)logp(z) 变成 KL 散度形式, log ? p ( x ) \log p(x) logp(x) 是一个常数

常数前面的 ? E q [ log ? p ( x ∣ z ) ] + K L ( q ( z ) ∣ ∣ p ( z ) ) -E_q[\log p(x|z)]+KL(q(z)||p(z)) ?Eq?[logp(xz)]+KL(q(z)∣∣p(z)) 是证据下界

  • 数据的似然度 ? E q [ log ? p ( x ∣ z ) ] -E_q[\log p(x|z)] ?Eq?[logp(xz)]
  • 潜在变量的先验分布 K L ( q ( z ) ∣ ∣ p ( z ) ) KL(q(z)||p(z)) KL(q(z)∣∣p(z))

最小化 -证据下界,等于最大化证据下界,因为前面有一个负号:

arg ? min ? K L ( q ( z ; θ ) ∣ ∣ p ( z ∣ x ) ) ] = arg ? max ? ? E q [ log ? p ( x ∣ z ) ] + K L ( q ( z ) ∣ ∣ p ( z ) ) = arg ? max ? E q [ log ? p ( x ∣ z ) ] ? K L ( q ( z ) ∣ ∣ p ( z ) ) \begin{array}{ll}&\arg\min KL(q(z;\theta)||p(z|x))]\\=&\arg\max -E_q[\log p(x|z)]+KL(q(z)||p(z))\\=&\arg\max E_q[\log p(x|z)]-KL(q(z)||p(z))\end{array} ==?argminKL(q(z;θ)∣∣p(zx))]argmax?Eq?[logp(xz)]+KL(q(z)∣∣p(z))argmaxEq?[logp(xz)]?KL(q(z)∣∣p(z))?

最终推断结果,告诉我们,可以通过最大化证据下界来近似地学习模型的参数。

通过优化证据下界,我们可以找到一个概率分布 q ( z ; θ ) q(z;\theta) q(z;θ),使得ta能最好地解释观测数据,并且与真实潜在变量的分布尽量接近。

文章来源:https://blog.csdn.net/qq_41739364/article/details/135109448
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。