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

10世界杯决赛

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

频率学派与贝叶斯学派隐空间和隐变量

变分推断完整推导

频率学派与贝叶斯学派

学过概率论,应该了解过,概率分为 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(z∣x)=p(x)p(x∣z)p(z)​=∫p(z)p(x∣z)dzp(x∣z)p(z)​

按照贝叶斯展开后,分母

p

(

z

)

p

(

x

z

)

d

z

\int p(\mathbf{z})p(\mathbf{x}|\mathbf{z})d\mathbf{z}

∫p(z)p(x∣z)dz 是一个不可积的多重积分,会让后验分布无解析解。

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

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

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

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

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

用变分分布去逼近推断后的后验分布

p

(

z

x

)

p(z|x)

p(z∣x)最小化俩个分布的 KL 散度

min

θ

K

L

(

q

(

z

;

θ

)

p

(

z

x

;

ϕ

)

)

\min_\theta KL(q(z;\theta)||p(z|x;\phi))

minθ​KL(q(z;θ)∣∣p(z∣x;ϕ))

q

(

z

;

θ

)

q(z;\theta)

q(z;θ) 代表一个叫做q的概率分布,

p

(

z

x

;

ϕ

)

p(z|x;\phi)

p(z∣x;ϕ) 代表一个叫做p的概率分布

x

x

x 是一个给定的数据我们要找到一个参数

θ

θ

θ,使得

q

(

z

;

θ

)

q(z;\theta)

q(z;θ) 和

p

(

z

x

;

ϕ

)

p(z|x;\phi)

p(z∣x;ϕ) 之间的 KL 散度最小KL 散度用于,衡量俩个分布之间的距离

公式的目标是找到一个概率分布

q

(

z

;

θ

)

q(z;\theta)

q(z;θ),使得它与给定数据

x

x

x 的真实概率分布

p

(

z

x

;

ϕ

)

p(z|x;\phi)

p(z∣x;ϕ) 之间的差距最小。

通过调整参数

θ

θ

θ 的值,我们可以调整

q

q

q 的形状,使得它与真实概率分布更加接近。

比如上图,调整参数

θ

θ

θ 得到俩个高斯分布(红色、绿色),哪个高斯分布和黄色分布的 KL 散度最小,就选哪个。

变分推断步骤:

输入:数据x,模型

p

(

z

,

x

)

p(z, x)

p(z,x)需要推断的是后验概率

p

(

z

x

)

p(z | x)

p(z∣x),但不能直接求构造后验概率

p

(

z

x

)

p(z | x)

p(z∣x) 的近似分布

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(z∣x))]=Eq(z;θ)​[logp(z∣x)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(z∣x))]​=Eq​[logp(z∣x)q(z)​]​=Eq​[logq(z)−logp(z∣x)]​=Eq​[logq(z)−logp(x)p(x∣z)p(z)​]=Eq​[logq(x)]−Eq​[logp(x∣z)]−Eq​[logp(z)]+Eq​[logp(x)]=−Eq​[logp(x∣z)]+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(z∣x) 替换后验公式

p

(

x

z

)

p

(

z

)

p

(

x

)

\frac{p(x|z)p(z)}{p(x)}

p(x)p(x∣z)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(x∣z)]+KL(q(z)∣∣p(z)) 是证据下界

数据的似然度

E

q

[

log

p

(

x

z

)

]

-E_q[\log p(x|z)]

−Eq​[logp(x∣z)]潜在变量的先验分布

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(z∣x))]argmax−Eq​[logp(x∣z)]+KL(q(z)∣∣p(z))argmaxEq​[logp(x∣z)]−KL(q(z)∣∣p(z))​

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

通过优化证据下界,我们可以找到一个概率分布

q

(

z

;

θ

)

q(z;\theta)

q(z;θ),使得ta能最好地解释观测数据,并且与真实潜在变量的分布尽量接近。