Variational Inference
Variational Inference
近似推断
Reference
Bayes Inference and prediction
Inference意在求出参数在给定样本下的后验分布
prediction的目标是预测新样本$\hat x$在给定样本x下的后验分布
计算后验可以通过
- 精确推断,得到$p(\theta|x)$的解析解
- 近似推断
ELBO和变分推断
Variational Inference and ELBO
给定观测数据$x$和隐变量z
推断出隐变量的后验概率$p(z|x)$,写成
计算$p(x)$需要对全空间概率分布积分
一个思路是从分布簇Q中选择一个分布$q\in Q$,使得它和后验分布$p(z|x)$差异最小
用分布参数$\Theta$表示为
KL散度写成
目标变成最大化ELBO
从最大化$\log p(x)$的角度上看,由于
ELBO是观测数据的极大似然估计的下确界
进一步分解ELBO
观测数据观测数据观测数据,$p(z)$是latent variable的先验分布,最大化ELBO实际上分解为两个目标
- 解释解释解释解释解释解释释*)
- 最小化隐变量分布和变分先验分布距离
选择分布族Q
分布族Q的复杂程度会影响优化算法的复杂度,这里假设分布族是平均场变分分布族,不需要了解详细的定义,只需要直到这种分布下满足
每一个隐变量$z_j$都相互独立,由自身的参数$q_j$影响,这样多个隐变量的联合分布写成
求解最佳分布$q_{\theta_j}$(选择最佳参数$\theta^*$)
梯度上升最大化ELBO
我们采取Block Coordinate Descent的方法求解这个优化问题
Block Coordinate Descent,对于包含T个变量的损失函数
希望找到$\alpha_i^*$使得J最小,迭代优化每个变量
这里$z_i$相互独立,因此可以迭代优化各个变量的分布参数
利用分布的独立性拆分ELBO
中间除去$z_j$的积分写成
$z_j$视为固定参数,$\log p(x,z)$视为m-1个随机变量的函数,因此A写成
再拆分B
与特定latent variable有关的仅包含$\int_{z_j} q_j(z_j)\log q_j(z_j)$,这样ELBO中和$z_j$有关的项写成
KL散度最小,必然有
坐标上升变分推断
变分推断目标是找到一个近似概率q,使得它和后验分布$p(z|x)$尽量相似
样本记作
$z^i$是$x^i$对应的latent variable,假设$x^i$ iid
严格意义上ELBO写成(instance wise)
注意区分$z_i$和$z^i$,前者是latent variable的某个维度,后者代表一个instance对应的随机变量,基本假设$z_i$相互独立
最优解满足(迭代求解)
- 求解更新概率
- 带入最新概率求解下一个variable分布
这就是坐标上升,每一个latent variable的每一维度都需要通过如下推断
Problems of Classical Variational Inference
latent variable每一维独立性很难保证
例子:深度神经网络latent embedding不能保证独立
递推本身需要求m-1维期望(intractable)
随机梯度变分推断(解决latent variable不独立的情况)
$z\to x$(generative model,Decoder) $x\to z$(inference model,Encoder)
Intuition:使用随机梯度上升解决ELBO最大
假设
待求解分布$q(z)$参数化$q_\phi(z)$,目标是找到最好的分布参数
$\theta$是联合分布模型的参数
求梯度
这个期望可以通过蒙特卡洛获得,对于给定样本$x^1,x^2,\cdots,x^n$,采样对应的n个latent variable $z^1,z^2,\cdots,z^n$,得到期望估计是
容易导致梯度爆炸,这是因为容易采样到$z^i$使得$q_\phi(z^i)$非常小,导致期望估计不准(方差较大)
进行Variance Reduction(重参数化)
Reference
重参数化技巧
最初重参数化技巧用于解决蒙特卡洛从参数分布中采样无法进行梯度传播的问题,求解给定分布下某个随机变量函数的期望等于求解如下积分
解决方法是将从$p_\theta(z)$中采样改成从无参数分布$q(\epsilon)$中采样,随后通过变换$z = g_\theta(\epsilon)$生成z,这样生成的z携带参数
计算正态分布$N(\mu_\theta,\sigma_\theta^2)$下积分值,可以从$\mathcal N(0,1)$中采样$\epsilon_i$,计算
随后用
作为可以梯度传播的方差
离散情况直接用计算出的离散概率乘上函数值
但是这种做法在类别很多的情况不适用,Gumble Max在离散分布下采样实现梯度传播
Gumble Max
对于类别数为k的分布$p_1,p_2,\cdots,p_k$,从$U(0,1)$采样k个随机变量
采样
精确等价于按照$p_1,p_2,\cdots,p_k$p_k$**离散采样,将argmax
输出的结果视为0-1向量,用softmax光滑之
为了解决argmax不可导的问题,用连续函数近似one-hot将其转化为平滑分布Gumble_softmax
这个想法实际上可以写成