1 背景
频率角度:
解一个优化问题,比如:
-
线性回归模型,数据拟合,用数据估计直线的W:f(W) = WᵀX:
-
策略(loss func): 最小化所有样本点的误差之和(最小二乘估计,无约束的优化问题): L(w) = Σᵢᴺ(wᵀxᵢ-yᵢ)²,Dataset: {(xᵢ,yᵢ)}ᵢᴺ,xᵢ∈ ℝᵖ,yᵢ∈ ℝ。 最优 w^ = argmin L(w)。
-
解法:
- 解析解:损失函数对 w 求导=0,则W^ = (XᵀX)⁻¹XᵀY, where X is train set
- 数值解:(随机)梯度下降,
-
-
SVM 模型,分类问题,估计符号函数:f(w) = sign(wᵀx+b);
-
策略(loss func): 类间大,类内小(有约束的凸优化问题): L(w) = min 1/2 wᵀw, s.t. yᵢ(wᵀxᵢ+b)≥1, i=1,…,N
-
解法:
- 调用 QP 套件
- 拉格朗日对偶
-
-
EM 模型,迭代优化模型参数θ,使似然值取得最大:θ^ = argmax log P(X|θ)
- 策略:迭代公式: $θ⁽ᵗ⁺¹⁾ = argmax_θ ∫_Z log P(X,Z|θ) P(Z|X,θ⁽ᵗ⁾) dZ$ (输入数据和隐变量的完全数据分布按照Z的后验分布求期望(加权和,求积分))
贝叶斯角度:
解一个积分问题
贝叶斯定理:P(θ|X) = P(X|θ) P(θ) / P(X),后验分布 = 似然值⋅先验分布/参数空间的积分∫P(X|θ)P(θ)dθ
贝叶斯推断Inference:依据贝叶斯定理求后验分布P(θ|X)。(然后可求分布的期望,方差)
贝叶斯决策Decision:借助后验分布P(θ|X),用已有样本 X 预测新样本 x^ 发生的概率: $P(\^x|X) = ∫ P(\^x,θ|X) dθ = ∫_θ P(\^x|θ,X) P(θ|X) dθ = E_{θ|X} [P(\^x|θ)]$,即对似然P(x^|θ)按照θ的后验分布求期望
如何求后验分布P(θ|X):
-
精确推断,问题简单(参数空间/隐变量的维度不高)可以直接计算出分母的积分
-
近似推断,参数空间维度高,无法直接求出分母积分
-
确定性近似
- 变分推断
-
随机近似
- MCMC 马尔科夫链蒙特卡洛方法
- MH, Metropolis-Hastings
- Gibbs, 吉布斯采样
-
2 公式推导
P2
Create on 2022-12-16
变分推断的目的:找到一个分布 q(Z) 去逼近无法得到解析解(intractable)的后验分布P(Z|X,θ)
- z: latent variable z + parameters θ,把参数也看作随机变量
- X: observed data 样本数据
- 大Z: 样本的隐变量
- (X,Z): Complete data
- P(X,Z) = P(Z|X)P(X),联合概率
- P(X) = P(X,Z)/P(Z|X),“似然” 省略了θ,重点不在θ
-
似然取对数,两概率相除变成相减(类似推导也出现在EM,不过下面省略了θ,因为包含在了Z中):
log P(X) = log P(X,Z) - log P(Z|X) -
引入 Z 的分布 q(Z):
log P(X) = log (P(X,Z)/q(Z)) - log (P(Z|X)/q(Z)) -
两边同时按照大 Z 的概率密度函数 q(Z) 求似然的期望:
$$ ∫_Z q(Z)⋅logP(X) dZ = \\ ∫_Z q(Z)⋅log (\frac{P(X,Z)}{q(Z)}) dZ \\ - ∫_Z q(Z)⋅log (\frac{P(Z|X)}{q(Z)}) dZ \\ log P(X) = ELBO + KL(q(Z)||P(Z|X)) $$
因为 logP(X) 与 Z 无关,所以等号左边没变,而等号右边变成了下界 ELBO + KL(Z的分布||Z的后验)。 ELBO 是 q(Z) 的函数,记为 L(q(Z)),是q(Z)的一个变分。
-
当X固定,logP(X) 是固定的,又因为 KL 散度≥0,所以 L(q(Z)) 最大为 logP(X)。 希望 KL 散度最小,让 q(Z) 与 P(Z|X) 最接近,也就是让 L(q(Z) 最大
数学表达: $\rm \^q(Z) = arg max_{q(Z)} L(q(Z)) = arg min KL(q(Z)||P(Z|X))$
求解:
z 包含隐变量和参数,所以 q(z) 是一个很大的联合概率,假设 q(z) 可以划分成 M 个相互独立的组(统计物理中的平均场理论): q(z) = ∏ᵢ₌₁ᴹ qᵢ(zᵢ)
每次只求 1 组 qⱼ,同时固定其余的组{1,2,…,j-1,j+1,…M},逐个求完后,把M组的 q 连乘起来就是整体的 q(z)
L(q(Z)) = ∫z q(Z)⋅log P(X,Z) dZ - ∫z q(Z)⋅log q(Z) dZ ,把 q(Z) 代入 L
= E1 + E2
对于E1: ∫z q(Z)⋅log P(X,Z) dZ = ∫z log P(X,Z)⋅∏ᵢ₌₁ᴹ qᵢ(Zᵢ) dz₁,z₂,…, zₘ
. . . .
3. 再回首
符号修正
. . . .
4. 随机梯度变分推断-SGVI-1
基于平均场理论的变分推断无法解决复杂隐变量 z 的情况,比如 z 是一个神经网络,平均场就失效了,z 可以是任意复杂度的。
基于平均场理论的变分推断(classical VI)也是一种坐标上升法Coordinate Ascend:一次迭代需要逐个更新 Z 的每个维度。 与此相对的,可以用(随机)梯度上升法解决最大化问题,做变分推断就叫做SGVI / SGVB
先看下关于 q(z) 的参数的梯度能否求出?
基于梯度的参数更新公式:θ⁽ᵗ⁺¹⁾ = θ⁽ᵗ⁾ + λ⁽ᵗ⁾⋅∇θ⁽ᵗ⁾。
变分推断以最小化两分布(Z 的假设分布与 Z 的后验分布)的KL散度,或者最大化下界ELBO( L(q(Z)) )为目标函数:
q^ = arg min_q KL( q(Z) || P(Z|X,θ) ) = arg max_q L(q),
要更新 q,就需要求出 L 对 q 的梯度:∂L/∂q。
q(z) 或 q(z|x) 是隐变量 z 的概率分布,x 是观测变量,可以简化掉。 假设 q(z) 是指数族分布,它就有一个参数形式,因此求 q(z) 就是求它的参数。 假设 z 的概率分布 q(z) 是以 ϕ 为参数,如果能求出最好的 ϕ,就相当于得到了 q(z),所以目标变为去求 ϕ:
-
L(ϕ) = ELBO = E_qᵩ(z) [ log (P(x⁽ⁱ⁾,z|θ) / qᵩ(z)) ]
= E_qᵩ(z) [ log P(x⁽ⁱ⁾,z|θ) - log qᵩ(z) ]
= ∫_z qᵩ(z) ⋅ (log P(x⁽ⁱ⁾,z|θ) dz - log qᵩ(z)) dz -
样本似然:log P(x⁽ⁱ⁾|θ) = L(ϕ) + KL(q||P) ≥ L(ϕ)
-
目标函数:ϕ^ = arg maxᵩ L(ϕ)
把期望写成对随机变量 z 的积分:
∇ᵩL(ϕ) = ∇ᵩ∫_z qᵩ(z) ⋅ (log P(x⁽ⁱ⁾,z|θ) dz - log qᵩ(z)) dz :求偏导 ∇ᵩ 与积分 ∫_z 可交换
= ∫_z [∇ᵩqᵩ(z) ⋅ (log P(x⁽ⁱ⁾,z|θ) - log qᵩ(z))]
+ [qᵩ(z) ⋅ ∇ᵩ(log P(x⁽ⁱ⁾,z|θ) - log qᵩ(z))] dz :对两项之积求导
= ∫_z ① dz + ∫_z ② dz :拆为两项分析
在第 ② 项中的 log P(x⁽ⁱ⁾,z|θ) 与 ϕ 无关,对它求导=0,所以 ② 对应的积分为:
∫z qᵩ(z) ⋅ ∇ᵩ(-log qᵩ(z)) dz
= -∫z qᵩ(z) ⋅ 1/qᵩ(z) ⋅ ∇ᵩqᵩ(z) dz
= -∫z ∇ᵩqᵩ(z) dz = -∇ᵩ∫z qᵩ(z) dz = - ∇ᵩ1 = 0
所以第2项就约去了,L对 ϕ 求梯度就等于第1项:
∇ᵩL(ϕ) = ∫z ∇ᵩqᵩ(z) ⋅ (log P(x⁽ⁱ⁾,z|θ) - log qᵩ(z)) dz
这个式子没办法直接写成期望的形式,如果可以的话,就可以利用蒙特卡罗采样,把未知分布的期望近似出来。
技巧:利用 ∇ᵩlog qᵩ(z) = 1/qᵩ(z)⋅∇ᵩqᵩ(z) 做等价变换:∇ᵩqᵩ(z) = qᵩ(z) ⋅ ∇ᵩlog qᵩ(z),然后就可以写成一个期望:
∇ᵩL(ϕ) = ∫z qᵩ(z) ⋅ ∇ᵩlog qᵩ(z) ⋅ (log P(x⁽ⁱ⁾,z|θ) - log qᵩ(z)) dz
= E_qᵩ(z) [ ∇ᵩlog qᵩ(z) ⋅ (log P(x⁽ⁱ⁾,z|θ) - log qᵩ(z)) ]
所以 L 对 ϕ 的梯度 ∇ᵩL(ϕ) 就等于那一坨关于随机变量 z 的函数按照 qᵩ(z) 求期望。可以用蒙特卡罗采样对其估计:
假定第 l 个样本 z⁽ˡ⁾~ qᵩ(z), l=1,2,..,L,从分布 qᵩ(z) 中采样 L 个样本, 则 L 个样本的平均值就是近似期望: ≈ 1/L ⋅ ∑ₗ₌₁ᴸ [ ∇ᵩlog qᵩ(z⁽ˡ⁾) ⋅ (log P(x⁽ⁱ⁾,z⁽ˡ⁾|θ) - log qᵩ(z⁽ˡ⁾)) ]
每一步计算这个期望就是梯度,然后可以用梯度上升法
5. 随机梯度变分推断-SGVI-2
Source video: P5
上面使用 MC 采样是有问题的:
先对 z 采样,算出 qᵩ(z),当 qᵩ(z) 很小时(靠近0),对应的 log 值(log qᵩ(z⁽ˡ⁾))变化剧烈,所以梯度 ∇ᵩlog qᵩ(z⁽ˡ⁾)就非常大,
造成整个统计量(所求期望的量:∇ᵩlog qᵩ(Z) ⋅ (log P(X⁽ⁱ⁾,Z|θ) - log qᵩ(Z)))的方差会非常大,
意味着需要更多的样本才能得到比较好的近似,或者如果方差非常大,可能就无法采样,这种直接用MC采样的方法就行不通。
而且即便用蒙特卡罗采样得到了近似的期望(方差较大,不够精确),它等于下界 L(ϕ) 的梯度,再用梯度上升求分布 qᵩ(Z) 的参数 ϕ^,这样一环扣一环,不精确的梯度再叠加上梯度上升时引入的误差,误差(方差)会越来越大,所以在实际中不可行。
如何降低统计量的方差?Variance Reduction
重参数化技巧 Reparameterization trick
最初,下界 L(ϕ) 的梯度 ∇ᵩL(ϕ) = ∇ᵩE_qᵩ(Z) [ log P(X⁽ⁱ⁾,Z|θ) - log qᵩ(Z) ], 在这个期望中,被统计量(似然-Z后验)和“权重”(Z的分布qᵩ(Z))都与 ϕ 有关,只能像上面那样先展开,比较复杂。
如果假定 Z 的分布(概率密度函数)qᵩ(Z) 是已经确定的分布 p(ε),与 ϕ 无关,然后梯度号就可以直接写到中括号里面,先对似然值求梯度,再按这个确定分布(常量)p(ε)求期望: E_p(ε) [ ∇ᵩ(log P(X⁽ⁱ⁾,Z|θ) - log qᵩ(Z)) ]
换句话说,z 是分布 qᵩ(Z|X) 中的采样 z~qᵩ(Z|X),z 是一个随机变量,考虑把 z 和 ϕ 之间的关系解耦,也就是把 z 的随机成分单拎出来。
重参数化技巧:假定 z 与 ε 和 x 之间有函数关系:z = gᵩ(ε,x⁽ⁱ⁾),而且 ε 服从一个给定的(简单的)分布 ε~P(ε)。 这样 z 是关于随机变量 ε 的函数,z 仍然是一个随机变量,但它的随机性转移到了 ε 上(当ε和x定了,z就定了):
Z~qᵩ(Z|X)
↓ “随机性通过函数关系 g 转移”
ε~p(ε)
因为 ∫z qᵩ(z|x⁽ⁱ⁾)⋅dz = 1,∫ p(ε)⋅dε =1,而且 z 是 ε 的一个(线性)变换, 因此“定性地”认为:|qᵩ(z|x⁽ⁱ⁾)⋅dz| = |p(ε)⋅dε|
把 ∇ᵩL(ϕ) 中的 z 代换为变换 gᵩ(ε,x⁽ⁱ⁾):
∇ᵩL(ϕ) = ∇ᵩE_qᵩ(z) [ log P(x⁽ⁱ⁾,z|θ) - log qᵩ(z) ] ,写成对Z积分的形式
= ∇ᵩ ∫z (log P(x⁽ⁱ⁾,z|θ) - log qᵩ(z)) ⋅ qᵩ(z|x⁽ⁱ⁾)⋅dz ,代换
= ∇ᵩ ∫z (log P(x⁽ⁱ⁾,z|θ) - log qᵩ(z)) ⋅ p(ε)⋅dε ,写成期望
= ∇ᵩ E_p(ε) [ log P(x⁽ⁱ⁾,z|θ) - log qᵩ(z) ] ,p(ε)与ϕ无关,∇ᵩ写里面
= E_p(ε) [∇ᵩ (log P(x⁽ⁱ⁾,z|θ) - log qᵩ(z)) ] ,先对z求∇,再对ϕ求∇
z 是 ϕ 的函数: z=gᵩ(ε,x⁽ⁱ⁾)
= E_p(ε) [∇_z (log P(x⁽ⁱ⁾,z|θ) - log qᵩ(z|x⁽ⁱ⁾)) ⋅∇ᵩz] ,链式法则
= E_p(ε) [∇_z (log P(x⁽ⁱ⁾,z|θ) - log qᵩ(z|x⁽ⁱ⁾)) ⋅ ∇ᵩgᵩ(ε,x⁽ⁱ⁾)]
其中 p(ε) 与 ϕ 无关,两个 log 是 z 的函数(θ是上一时刻的),z是ε的函数,然后是 g 对 ε 的梯度。 此时再用蒙特卡罗采样对 ε 采样:ε⁽ˡ⁾~p(ε), l=1,2,..,L,把 ε 带入 中括号里的那个函数算函数值,再求平均值就是近似的期望:
∇ᵩL(ϕ) ≈ 1/L ∑ₗ₌₁ᴸ ∇z (log P(x⁽ⁱ⁾,z|θ) - log qᵩ(z|x⁽ⁱ⁾)) ⋅ ∇ᵩgᵩ(ε⁽ˡ⁾,x⁽ⁱ⁾)], 其中 z=gᵩ(ε⁽ˡ⁾,x⁽ⁱ⁾)
然就可以把这个近似梯度带入梯度上升公式:ϕ⁽ᵗ⁺¹⁾ = ϕ⁽ᵗ⁾ + λ⁽ᵗ⁾⋅∇ᵩL(ϕ), 每一步求个近似期望,得到梯度,再做梯度上升