机器学习 [白板推导](九)[变分推断]
12. 变分推断(Variational Inference)
12.1. 背景回顾
12.1.1. 两种思路,两种问题
概率派:建立概率模型,定义目标函数/损失函数,将问题视为优化问题,得到解析解/数值解(无法得到解析解时,使用梯度下降等方法求得数值解),例如:线性回归、SVM、EM等算法。
贝叶斯派:建立概率图模型,求出后验概率 p(Θ∣X)p(\Theta|X)p(Θ∣X),并根据后验概率进行决策 p(x~∣X)=∫Θp(x~∣Θ)p(Θ∣X)dΘp(\tilde{x}|X)=\int_{\Theta} p(\tilde{x}|\Theta)p(\Theta|X)d\Thetap(x~∣X)=∫Θp(x~∣Θ)p(Θ∣X)dΘ,将问题视为积分问题,后验概率有时可以精确推断,有时只能进行近似推断,而近似推断的确定性推断即为变分推断,近似推断还有一种随机推断则是MCMC方法。
12.1.2. 推断与生成
在概率派思想中,遇到无法观测的隐变量时,模型参数无法通过极大似然估计等方法求出解析解,此时通常使用EM等迭代逼近的方法求出数值解。
在贝叶斯派思想中,模型参数 θ\thetaθ 遵循某种概率分布(先验),与隐变量 ZZZ,观测变量 XXX 共同构成概率图模型,相互之间存在相关性和条件独立性,而这个模型中有两种问题:推断与生成:
- 推断:由观测变量的样本集合估计隐变量的概率分布,与EM算法的思路相同,通过最大化 logP(X)\log P(X)logP(X) 来得到 ZZZ 的分布,即求解 P(Z∣X)P(Z|X)P(Z∣X)。
- 生成:估计隐变量与观测变量之间的联系,并利用大量随机的隐变量生成新的观测变量(VAE),即求解 P(X∣Z)P(X|Z)P(X∣Z)。
12.2. 公式推导
根据贝叶斯派思想,模型参数 θ\thetaθ 也满足某种概率分布,而变分推断是要对参数和隐变量都进行近似推断,因此设 XXX 为观测数据样本,ZZZ 为待推断变量,包含隐变量与模型参数(与EM略有不同)。
同EM中的推导(这里再写一遍, logP(X)=logP(X,Z)−logP(Z∣X)=logP(X,Z)q(Z)−logP(Z∣X)q(Z)\log P(X)=\log P(X,Z)-\log P(Z|X)=\log\frac{P(X,Z)}{q(Z)}-\log \frac{P(Z|X)}{q(Z)}logP(X)=logP(X,Z)−logP(Z∣X)=logq(Z)P(X,Z)−logq(Z)P(Z∣X),左右对 ZZZ 求积分得),ELBO即为变分下界,ELBO=∫Zq(Z)logP(X,Z)dZ−∫Zq(Z)logq(Z)dZ=J(q)+H(Z)\text{ELBO}=\int_Zq(Z)\log P(X,Z) dZ-\int_Z q(Z) \log q(Z)dZ=J(q)+H(Z)ELBO=∫Zq(Z)logP(X,Z)dZ−∫Zq(Z)logq(Z)dZ=J(q)+H(Z)。
引入平均场理论(mean field theory),设 ZZZ 中存在M个部分,每两个部分两两独立,则有 q(Z)=∏i=1Mq(i)(Z(i))q(Z)=\prod_{i=1}^M q^{(i)}(Z^{(i)})q(Z)=∏i=1Mq(i)(Z(i)),则 J(Z)=∫Z∏i=1Mq(i)(Z(i))logP(X,Z) dZ(1)dZ(2)⋯dZ(M)J(Z)=\int_Z \prod_{i=1}^M q^{(i)}(Z^{(i)})\log P(X,Z)\ dZ^{(1)}dZ^{(2)}\cdots dZ^{(M)}J(Z)=∫Z∏i=1Mq(i)(Z(i))logP(X,Z) dZ(1)dZ(2)⋯dZ(M),此时单独求解某个部分的分布 qj(Zj)q_j(Z_j)qj(Zj),则可以固定其他部分,即
J(Z)=∫Z(j)q(j)(Z(j))⋅[∫Z(i≠j)∏i≠jMq(i)(Z(i))logP(X,Z) dZ(1)dZ(2)⋯dZ(M)]dZ(j)=∫Z(j)q(j)(Z(j))⋅E∏i≠jMq(j)(Z(j))[logP(X,Z)]dZ(j).(12.1)
\begin{aligned}
J(Z)&=\int_{Z^{(j)}} q^{(j)}(Z^{(j)}) \cdot \left [ \int_{Z^{(i\neq j)}}\prod_{i\neq j}^M q^{(i)}(Z^{(i)})\log P(X,Z)\ dZ^{(1)}dZ^{(2)}\cdots dZ^{(M)} \right ] dZ^{(j)}\\ &=\int_{Z^{(j)}} q^{(j)}(Z^{(j)}) \cdot E_{\prod_{i\neq j}^Mq^{(j)}(Z^{(j)})}\left [ \log P(X,Z) \right ] dZ^{(j)}. \tag{12.1}
\end{aligned}
J(Z)=∫Z(j)q(j)(Z(j))⋅∫Z(i=j)i=j∏Mq(i)(Z(i))logP(X,Z) dZ(1)dZ(2)⋯dZ(M)dZ(j)=∫Z(j)q(j)(Z(j))⋅E∏i=jMq(j)(Z(j))[logP(X,Z)]dZ(j).(12.1)
同时有:
H(Z)=−∫Zq(Z)logq(Z)dZ=−∫Z(1)⋅Z(2)⋯Z(M)∏i=1Mq(i)(Z(i))⋅[∑i=1Mlogq(i)(Z(i))] dZ(1)dZ(2)⋯dZ(M)=∑k=1M[−∫Z(1)⋅Z(2)⋯Z(M)∏i=1Mq(i)(Z(i))⋅logq(k)(Z(k)) dZ(1)dZ(2)⋯dZ(M)]=∑k=1M{−∫Z(k)q(k)(Z(k))⋅logq(k)(Z(k)) dZ(k)[∏i≠kM∫Z(i)q(i)(Z(i))dZ(i)]}=−∑k=1M∫Z(k)q(k)(Z(k))⋅logq(k)(Z(k)) dZ(k),(12.2)
\begin{aligned} H(Z)&=-\int_Zq(Z)\log q(Z) dZ=-\int_{Z^{(1)}\cdot Z^{(2)}\cdots Z^{(M)}}\prod _{i=1}^M q^{(i)}(Z^{(i)})\cdot \left [\sum_{i=1}^M \log q^{(i)}(Z^{(i)}) \right ] \ dZ^{(1)}dZ^{(2)}\cdots dZ^{(M)} \\ &=\sum_{k=1}^M\left [-\int_{Z^{(1)}\cdot Z^{(2)}\cdots Z^{(M)}}\prod _{i=1}^M q^{(i)}(Z^{(i)})\cdot \log q^{(k)}(Z^{(k)})\ dZ^{(1)}dZ^{(2)}\cdots dZ^{(M)} \right ]\\ &=\sum_{k=1}^M\left \{-\int_{Z^{(k)}}q^{(k)}(Z^{(k)})\cdot \log q^{(k)}(Z^{(k)})\ dZ^{(k)}\left [\prod _{i\neq k}^M\int_{Z^{(i)}} q^{(i)}(Z^{(i)})dZ^{(i)} \right ] \right \}\\ &=-\sum_{k=1}^M\int_{Z^{(k)}}q^{(k)}(Z^{(k)})\cdot \log q^{(k)}(Z^{(k)})\ dZ^{(k)},\tag{12.2} \end{aligned}
H(Z)=−∫Zq(Z)logq(Z)dZ=−∫Z(1)⋅Z(2)⋯Z(M)i=1∏Mq(i)(Z(i))⋅[i=1∑Mlogq(i)(Z(i))] dZ(1)dZ(2)⋯dZ(M)=k=1∑M[−∫Z(1)⋅Z(2)⋯Z(M)i=1∏Mq(i)(Z(i))⋅logq(k)(Z(k)) dZ(1)dZ(2)⋯dZ(M)]=k=1∑M⎩⎨⎧−∫Z(k)q(k)(Z(k))⋅logq(k)(Z(k)) dZ(k)i=k∏M∫Z(i)q(i)(Z(i))dZ(i)⎭⎬⎫=−k=1∑M∫Z(k)q(k)(Z(k))⋅logq(k)(Z(k)) dZ(k),(12.2)
当其他部分固定,单独求解 q(j)(Z(j))q^{(j)}(Z^{(j)})q(j)(Z(j)) 时,KaTeX parse error: Expected 'EOF', got '&' at position 5: H(Z)&̲=-\int_{Z^{(j)}…。
因为积分 E∏i≠jMq(i)(Z(i))[logP(X,Z)]E_{\prod_{i\neq j}^Mq^{(i)}(Z^{(i)})}\left [ \log P(X,Z) \right ]E∏i=jMq(i)(Z(i))[logP(X,Z)] 的结果是一个关于 (X,Zj)(X,Z_j)(X,Zj) 的对数概率密度函数,因此可以设 logP^(X,Z(j))=E∏i≠jMq(i)(Z(i))[logP(X,Z)]\log \hat{P}(X,Z^{(j)})= E_{\prod_{i\neq j}^Mq^{(i)}(Z^{(i)})}\left [ \log P(X,Z) \right ]logP^(X,Z(j))=E∏i=jMq(i)(Z(i))[logP(X,Z)],则变分下界为
ELBO=L(Z)+H(Z)=∫Z(j)q(j)(Z(j))logP^(X,Z(j))dZ(j)−∫Z(j)q(j)(Z(j))logq(j)(Z(j))dZ(j)+C=∫Z(j)q(j)(Z(j))logP^(X,Z(j))q(j)(Z(j))dZ(j)+C=−KL[q(j) ∣∣ P^(X,Z(j))]+C,(12.3)
\begin{aligned}
\text{ELBO}&=L(Z)+H(Z)\\
&=\int_{Z^{(j)}}q^{(j)}(Z^{(j)}) \log \hat{P}(X,Z^{(j)})dZ^{(j)}-\int_{Z^{(j)}}q^{(j)}(Z^{(j)}) \log q^{(j)}(Z^{(j)}) dZ^{(j)} +C\\
&=\int_{Z^{(j)}}q^{(j)}(Z^{(j)})\frac{\log \hat{P}(X,Z^{(j)})}{q^{(j)}(Z^{(j)})} dZ^{(j)}+C\\
&=-KL\left [ q^{(j)}\ ||\ \hat{P}(X,Z^{(j)}) \right ]+C,\tag{12.3}
\end{aligned}
ELBO=L(Z)+H(Z)=∫Z(j)q(j)(Z(j))logP^(X,Z(j))dZ(j)−∫Z(j)q(j)(Z(j))logq(j)(Z(j))dZ(j)+C=∫Z(j)q(j)(Z(j))q(j)(Z(j))logP^(X,Z(j))dZ(j)+C=−KL[q(j) ∣∣ P^(X,Z(j))]+C,(12.3)
当且仅当 qj==P^(X,Z(j))q_j == \hat{P}(X,Z^{(j)})qj==P^(X,Z(j)) 时,ELBO\text{ELBO}ELBO 达到最大。如此反复迭代求解,以坐标上升法求出所有参数和隐变量。
12.3. 随机梯度上升变分推断SGVI
12.3.1. 公式推导
用另一种思路求解变分推断的隐变量,设 θ\thetaθ 是模型参数,隐变量 ZZZ 遵从某种确定的分布,例如指数族分布,则求解 ZZZ 即为求解分布中的参数 ϕ\phiϕ,即 ϕ^=argmaxϕ ELBO\hat{\phi}=\underset{\phi}{\arg\max}\ \text{ELBO}ϕ^=ϕargmax ELBO。
目标函数无解析解,只能使用迭代逼近的方法求数值解,梯度上升法是一个合适的算法,对目标函数求梯度(积分和求导符号可以互换位置):
▽ϕELBO=▽ϕ Eqϕ[logPθ(X,Z)−logqϕ]=▽ϕ ∫qϕ[logPθ(X,Z)−logqϕ]dZ=∫ ▽ϕ{qϕ[logPθ(X,Z)−logqϕ]}dZ=∫ ▽ϕqϕ⋅[logPθ(X,Z)−logqϕ]dZ+∫ qϕ⋅▽ϕ[logPθ(X,Z)−logqϕ]dZ,(12.4)
\begin{aligned}
\bigtriangledown_{\phi} \text{ELBO}&=\bigtriangledown_{\phi}\ E_{q_{\phi}}\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ] \\ &=\bigtriangledown_{\phi}\ \int q_{\phi}\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ]dZ \\ &=\int\ \bigtriangledown_{\phi}\left\{ q_{\phi}\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ] \right \} dZ \\ &=\int\ \bigtriangledown_{\phi} q_{\phi}\cdot\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ] dZ+\int\ q_{\phi} \cdot \bigtriangledown_{\phi}\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ] dZ ,\tag{12.4}
\end{aligned}
▽ϕELBO=▽ϕ Eqϕ[logPθ(X,Z)−logqϕ]=▽ϕ ∫qϕ[logPθ(X,Z)−logqϕ]dZ=∫ ▽ϕ{qϕ[logPθ(X,Z)−logqϕ]}dZ=∫ ▽ϕqϕ⋅[logPθ(X,Z)−logqϕ]dZ+∫ qϕ⋅▽ϕ[logPθ(X,Z)−logqϕ]dZ,(12.4)
右边第二项中 logPθ(X,Z)\log P_{\theta}(X,Z)logPθ(X,Z) 与 ϕ\phiϕ 无关,梯度为0,因此:
∫ qϕ⋅▽ϕ[logPθ(X,Z)−logqϕ]dZ=∫ qϕ⋅▽ϕ[−logqϕ]dZ=−∫ ▽ϕqϕdZ=−▽ϕ∫ qϕdZ=−▽ϕ 1=0,(12.5)
\begin{aligned} &\int\ q_{\phi} \cdot \bigtriangledown_{\phi}\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ] dZ \\&= \int\ q_{\phi} \cdot \bigtriangledown_{\phi}\left[-\log q_{\phi} \right ] dZ \\ &=- \int\ \bigtriangledown_{\phi}q_{\phi} dZ\\ &= -\bigtriangledown_{\phi}\int\ q_{\phi} dZ\\ &= -\bigtriangledown_{\phi}\ 1=0,\tag{12.5} \end{aligned}
∫ qϕ⋅▽ϕ[logPθ(X,Z)−logqϕ]dZ=∫ qϕ⋅▽ϕ[−logqϕ]dZ=−∫ ▽ϕqϕdZ=−▽ϕ∫ qϕdZ=−▽ϕ 1=0,(12.5)
因此,
▽ϕELBO=∫ ▽ϕqϕ⋅[logPθ(X,Z)−logqϕ]dZ=∫ qϕ⋅▽ϕlogqϕ⋅[logPθ(X,Z)−logqϕ]dZ=Eqϕ{▽ϕlogqϕ⋅[logPθ(X,Z)−logqϕ]},(12.6)
\begin{aligned}
\bigtriangledown_{\phi} \text{ELBO}&=\int\ \bigtriangledown_{\phi} q_{\phi}\cdot\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ] dZ \\ &=\int\ q_{\phi} \cdot \bigtriangledown_{\phi} \log q_{\phi} \cdot\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ] dZ \\ &=E_{q_{\phi}} \left \{\bigtriangledown_{\phi} \log q_{\phi} \cdot\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ] \right \},\tag{12.6}
\end{aligned}
▽ϕELBO=∫ ▽ϕqϕ⋅[logPθ(X,Z)−logqϕ]dZ=∫ qϕ⋅▽ϕlogqϕ⋅[logPθ(X,Z)−logqϕ]dZ=Eqϕ{▽ϕlogqϕ⋅[logPθ(X,Z)−logqϕ]},(12.6)
(其中 qϕ⋅▽ϕlogqϕ=▽ϕqϕq_{\phi} \cdot \bigtriangledown_{\phi}\log q_{\phi} =\bigtriangledown_{\phi}q_{\phi}qϕ⋅▽ϕlogqϕ=▽ϕqϕ 由上一段推出),由此将目标函数梯度的求解变为一个求期望问题,所以可以通过蒙特卡洛方法求出期望的近似解,从而进行梯度上升迭代计算。
12.3.2. SGVI简化
对于SGVI中的梯度求解,常常用到蒙特卡洛方法求期望,但采样过程中有一定概率得到一个接近0的 qϕq_{\phi}qϕ 值,则其中的 logqϕ\log q_{\phi}logqϕ 会变成一个很小很小的负数,导致采样结果的方差很大,本身梯度上升法就是一种迭代计算的数值解,过程中存在一定偏差,如果采样过程的误差过大则会使得整个算法收敛缓慢,甚至无法得到最优解。
为了解决上述问题,也为了简化求梯度的过程,引入一个重参数化机制:
- 原本模型中 XXX 是观测变量,ZZZ 是隐变量,ZZZ 的分布有参数 ϕ\phiϕ,与 XXX 无关。
- 重新定义 ZZZ,设一个新的随机变量 ε\varepsilonε,遵循某种已知分布 p(ε)p(\varepsilon )p(ε),则 z=gϕ(ε,X)z=g_{\phi}(\varepsilon ,X)z=gϕ(ε,X),此时 qϕ(Z∣X)dZ=p(ε)dεq_{\phi}(Z|X)dZ=p(\varepsilon )d\varepsilonqϕ(Z∣X)dZ=p(ε)dε,Eqϕ(∗)=Epε(∗)E_{q_{\phi}}(*)=E_{p_{\varepsilon }}(*)Eqϕ(∗)=Epε(∗)。
则重新推导梯度式:
▽ϕELBO=▽ϕ Eqϕ[logPθ(X,Z)−logqϕ]=▽ϕ Epε[logPθ(X,Z)−logqϕ]=Epε{▽ϕ[logPθ(X,Z)−logqϕ]}=Epε{▽Z[logPθ(X,Z)−logqϕ]⋅▽ϕZ}=Epε{▽Z[logPθ(X,Z)−logqϕ]⋅▽ϕgϕ(ε,X)},(12.7)
\begin{aligned}
\bigtriangledown_{\phi} \text{ELBO}&=\bigtriangledown_{\phi}\ E_{q_{\phi}}\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ] \\ &=\bigtriangledown_{\phi}\ E_{p_{\varepsilon }}\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ] \\ &=E_{p_{\varepsilon }}\left\{\bigtriangledown_{\phi}\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ]\right\}\\ &=E_{p_{\varepsilon }}\left\{\bigtriangledown_{Z}\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ]\cdot \bigtriangledown_{\phi}Z \right\}\\ &=E_{p_{\varepsilon }}\left\{\bigtriangledown_{Z}\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ]\cdot \bigtriangledown_{\phi}g_{\phi}(\varepsilon ,X) \right\},\tag{12.7}
\end{aligned}
▽ϕELBO=▽ϕ Eqϕ[logPθ(X,Z)−logqϕ]=▽ϕ Epε[logPθ(X,Z)−logqϕ]=Epε{▽ϕ[logPθ(X,Z)−logqϕ]}=Epε{▽Z[logPθ(X,Z)−logqϕ]⋅▽ϕZ}=Epε{▽Z[logPθ(X,Z)−logqϕ]⋅▽ϕgϕ(ε,X)},(12.7)
此时再采用蒙特卡洛方法则不会出现误差。