机器学习笔记之近似推断(二)推断的核心思想
机器学习笔记之近似推断——推断的核心思想
- 引言
-
- 回顾:推断的目的与困难
-
- 推断的目的
- 推断的困难
- 推断的核心思想——优化
引言
上一节介绍了从深度学习的角度介绍了推断,并介绍了推断的目的和困难。本节将继续介绍推断的核心思想。
回顾:推断的目的与困难
推断的目的
推断不仅局限于深度生成模型。实际上,所有基于概率图结构的模型,特别是基于隐变量的概率图模型,都需要推断任务。推断的目的主要包含两种情况:
- 推断自身就是推断的目的。也就是说,推断本身就是处理相关任务的一个结果。例如以隐马尔可夫模型为核心的动态模型(Dynamic Model\\text{Dynamic Model}Dynamic Model)。
基于齐次马尔可夫假设与观测独立性假设下的动态模型,其模型内部的随机变量结点存在严格限制:
在这种确定结构下的推断任务多种多样。如解码任务(Decoding\\text{Decoding}Decoding)——维特比算法(Viterbi\\text{Viterbi}Viterbi),求值问题——前向算法(Forward Algorithm\\text{Forward Algorithm}Forward Algorithm)等等,这些任务本身就是推断任务的目标。 - 模型学习任务中需要推断。例如EM\\text{EM}EM算法(Expectation Maximization,EM\\text{Expectation Maximization,EM}Expectation Maximization,EM)在参数迭代的过程中,要对隐变量的后验概率P(Z∣X)\\mathcal P(\\mathcal Z \\mid \\mathcal X)P(Z∣X)进行计算/近似计算:
下面公式中分别描述'狭义EM算法'与‘广义EM算法’中E步的表示。
{logP(X;θ)=ELBO⇔Q(Z)=P(Z∣X)Q^(t+1)(Z)=argmaxQ(Z)ELBO⇔Q(Z)≈P(Z∣X)\\begin{cases} \\log \\mathcal P(\\mathcal X;\\theta) = \\text{ELBO} \\Leftrightarrow \\mathcal Q(\\mathcal Z) = \\mathcal P(\\mathcal Z \\mid \\mathcal X) \\\\ \\quad \\\\ \\hat {\\mathcal Q}^{(t+1)}(\\mathcal Z) = \\mathop{\\arg\\max}\\limits_{\\mathcal Q(\\mathcal Z)} \\text{ELBO} \\Leftrightarrow \\mathcal Q(\\mathcal Z) \\approx \\mathcal P(\\mathcal Z \\mid \\mathcal X) \\end{cases}⎩⎨⎧logP(X;θ)=ELBO⇔Q(Z)=P(Z∣X)Q^(t+1)(Z)=Q(Z)argmaxELBO⇔Q(Z)≈P(Z∣X)
并不是一上来就可以针对陌生的变量进行推断,必须要在模型给定,并且当前模型参数已知的情况下,才能够执行推断。
这个说法和‘模型学习任务中需要推断’并不冲突。除非是结构简单的模型,否则很难通过一次步骤直接得到参数的精确解。因此,通常是基于随机初始化的模型参数,通过若干次迭代得到参数最优解的近似解。
例如广义EM算法的
坐标上升法(Coordinate Ascent\\text{Coordinate Ascent}Coordinate Ascent),再比如‘随机梯度变分推断’
(Stochastic Gradient Variational Inference,SGVI\\text{Stochastic Gradient Variational Inference,SGVI}Stochastic Gradient Variational Inference,SGVI)中的
梯度上升法(Gradient Ascent,GA\\text{Gradient Ascent,GA}Gradient Ascent,GA)等等。
推断的困难
推断困难的原因主要有两个:
-
随机变量的概率能够表示,但计算代价太大。依然以隐马尔可夫模型中的解码问题为例,它的目标可表示为如下形式:
I^=argmaxIP(I∣O;λ)\\hat {\\mathcal I} = \\mathop{\\arg\\max}\\limits_{\\mathcal I} \\mathcal P(\\mathcal I \\mid \\mathcal O;\\lambda)I^=IargmaxP(I∣O;λ)
其中I\\mathcal II表示基于时间/序列的随机变量集合:I={i1,i2,⋯,iT}\\mathcal I = \\{i_1,i_2,\\cdots,i_T\\}I={i1,i2,⋯,iT},假设每一个随机变量it(t=1,2,⋯,T)i_t(t=1,2,\\cdots,T)it(t=1,2,⋯,T)均属于离散型随机变量:
it=qk(qk∈Q={q1,q2,⋯,qK})i_t = q_k(q_k\\in \\mathcal Q = \\{q_1,q_2,\\cdots,q_{\\mathcal K}\\})it=qk(qk∈Q={q1,q2,⋯,qK})
那么随机变量集合I\\mathcal II可以得到 KT{\\mathcal K}^TKT种不重复的状态序列组合。而最终目标仅需要一个最优组合:
I^={i^1,i^2,⋯,i^T}\\hat {\\mathcal I} = \\{\\hat {i}_1,\\hat i_2,\\cdots,\\hat i_{T}\\}I^={i^1,i^2,⋯,i^T}
如果将所有序列组合全部求解出来去比较,这个计算代价极大。因而可采用维特比算法这种基于贪心策略的方法进行求解。 -
由于随机变量之间关系过于复杂,导致随机变量的概率根本无法表示。玻尔兹曼机(Boltzmann Machine\\text{Boltzmann Machine}Boltzmann Machine)就是一个典型的例子。玻尔兹曼机中观测变量、隐变量内部可能存在关联关系,这种结构导致后验概率P(Z∣X)\\mathcal P(\\mathcal Z \\mid \\mathcal X)P(Z∣X)没有办法精准地梳理开。
当然,
Hinton\\text{Hinton}Hinton老爷子也给出了一种基于
MCMC\\text{MCMC}MCMC的求解方式。
假设观测变量集合V\\mathcal VV与隐变量集合H\\mathcal HH 分别表示如下:
{H={h1,h2,⋯,hm}V={v1,v2,⋯,vn}\\begin{cases} \\mathcal H = \\{h_1,h_2,\\cdots,h_m\\} \\\\ \\mathcal V = \\{v_1,v_2,\\cdots,v_n\\} \\end{cases}{H={h1,h2,⋯,hm}V={v1,v2,⋯,vn}
那么某一隐变量hj(j∈{1,2,⋯,m})h_j(j \\in \\{1,2,\\cdots,m\\})hj(j∈{1,2,⋯,m})的后验概率分布可表示为:
推导过程详见
玻尔兹曼机——MCMC\\text{MCMC}MCMC求解后验概率,就是因为
hjh_jhj和
h−jh_{-j}h−j存在关联关系,才导致
P(hj∣V)≈P(hj∣V,h−j)\\mathcal P(h_j \\mid \\mathcal V) \\approx \\mathcal P(h_j \\mid \\mathcal V,h_{-j})P(hj∣V)≈P(hj∣V,h−j)的近似操作。
P(hj∣V,h−j)=P(hj,V,h−j)P(h−j,V)=P(H,V)∑hjP(H,V)h−j=(h1,⋯,hj−1,hj+1,⋯,hm)\\begin{aligned} \\mathcal P(h_j \\mid \\mathcal V,h_{-j}) & = \\frac{\\mathcal P(h_j,\\mathcal V,h_{-j})}{\\mathcal P(h_{-j},\\mathcal V)} \\\\ & = \\frac{\\mathcal P(\\mathcal H,\\mathcal V)}{\\sum_{h_j}\\mathcal P(\\mathcal H,\\mathcal V)} \\quad h_{-j} = (h_1,\\cdots,h_{j-1},h_{j+1},\\cdots,h_m) \\end{aligned}P(hj∣V,h−j)=P(h−j,V)P(hj,V,h−j)=∑hjP(H,V)P(H,V)h−j=(h1,⋯,hj−1,hj+1,⋯,hm)
推断的核心思想——优化
推断的推导过程在EM\\text{EM}EM算法、变分推断过程中已经详细地介绍过。其底层逻辑就是:将隐变量的后验概率求解问题 转化成优化问题,即基于极大似然估计,将观测变量(样本)的对数似然函数(log-likelihood\\text{log-likelihood}log-likelihood) logP(V)\\log \\mathcal P(\\mathcal V)logP(V)转化成证据下界ELBO\\text{ELBO}ELBO + KL\\text{KL}KL散度,并最大化ELBO\\text{ELBO}ELBO的问题:
-
已知样本集合V\\mathcal VV包含NNN个样本,并包含nnn个随机变量:
V={v(i)}i=1Nv(i)=(v1(i),v2(i),⋯,vn(i))T\\mathcal V = \\{v^{(i)}\\}_{i=1}^N \\quad v^{(i)} = (v_1^{(i)},v_2^{(i)},\\cdots,v_n^{(i)})^TV={v(i)}i=1Nv(i)=(v1(i),v2(i),⋯,vn(i))T -
关于观测变量集合V\\mathcal VV的对数似然函数logP(V)\\log \\mathcal P(\\mathcal V)logP(V)可表示为如下形式:
样本之间‘独立同分布’。
在
配分函数——对数似然梯度中提到,可以在最前面乘以一个常数项
1N\\frac{1}{N}N1,即
1N∑i=1NlogP(v(i))\\frac{1}{N}\\sum_{i=1}^N \\log \\mathcal P(v^{(i)})N1∑i=1NlogP(v(i))。
该常数项本身恒正,在极大似然估计求解过程中并不会产生影响。但从
蒙特卡洛方法(Monte Carlo Method\\text{Monte Carlo Method}Monte Carlo Method)逆向推导的思路中可以观察到,它明显是一个期望:
1N∑i=1NlogP(v(i))≈Ev(i)∼Pdata[logP(v(i))]\\frac{1}{N} \\sum_{i=1}^N \\log \\mathcal P(v^{(i)}) \\approx \\mathbb E_{v^{(i)} \\sim \\mathcal P_{data}} \\left[\\log \\mathcal P(v^{(i)})\\right]N1∑i=1NlogP(v(i))≈Ev(i)∼Pdata[logP(v(i))],其中
Pdata\\mathcal P_{data}Pdata表示真实样本分布。
logP(V)=log[∏i=1NP(v(i))]=∑i=1NlogP(v(i))\\begin{aligned} \\log \\mathcal P(\\mathcal V) & = \\log \\left[\\prod_{i=1}^N \\mathcal P(v^{(i)})\\right] \\\\ & = \\sum_{i=1}^N \\log \\mathcal P(v^{(i)}) \\end{aligned}logP(V)=log[i=1∏NP(v(i))]=i=1∑NlogP(v(i))
-
继续观察关于某个样本v(i)v^{(i)}v(i)的对数似然函数logP(v(i))\\log \\mathcal P(v^{(i)})logP(v(i))是如何分解的。
基于贝叶斯定理,引入观测变量v(i)v^{(i)}v(i)对应模型的隐变量h(i)h^{(i)}h(i),可将logP(v(i))\\log \\mathcal P(v^{(i)})logP(v(i))表示成如下形式:
logP(v(i))=log[P(v(i),h(i))P(h(i)∣v(i))]\\log \\mathcal P(v^{(i)}) = \\log \\left[\\frac{\\mathcal P(v^{(i)},h^{(i)})}{\\mathcal P(h^{(i)} \\mid v^{(i)})}\\right]logP(v(i))=log[P(h(i)∣v(i))P(v(i),h(i))]
引入一个人为设定的分布Q(h(i)∣v(i))\\mathcal Q(h^{(i)} \\mid v^{(i)})Q(h(i)∣v(i)),并将其转化为如下形式:需要注意的是,这个分布
Q(h(i)∣v(i))\\mathcal Q(h^{(i)} \\mid v^{(i)})Q(h(i)∣v(i))是一个以
v(i)v^{(i)}v(i)为条件的后验概率分布。
将
logP(v(i))\\log \\mathcal P(v^{(i)})logP(v(i))使用
I\\mathcal II进行替代。
I=log[P(v(i),h(i))Q(h(i)∣v(i))⋅Q(h(i)∣v(i))P(h(i)∣v(i))]=log[P(v(i),h(i))Q(h(i)∣v(i))]+log[Q(h(i)∣v(i))P(h(i)∣v(i))]\\begin{aligned} \\mathcal I & = \\log \\left[\\frac{\\mathcal P(v^{(i)},h^{(i)})}{\\mathcal Q(h^{(i)} \\mid v^{(i)})} \\cdot \\frac{\\mathcal Q(h^{(i)} \\mid v^{(i)})}{\\mathcal P(h^{(i)} \\mid v^{(i)})}\\right] \\\\ & = \\log \\left[\\frac{\\mathcal P(v^{(i)},h^{(i)})}{\\mathcal Q(h^{(i)} \\mid v^{(i)})}\\right] + \\log \\left[\\frac{\\mathcal Q(h^{(i)} \\mid v^{(i)})}{\\mathcal P(h^{(i)} \\mid v^{(i)})}\\right] \\end{aligned}I=log[Q(h(i)∣v(i))P(v(i),h(i))⋅P(h(i)∣v(i))Q(h(i)∣v(i))]=log[Q(h(i)∣v(i))P(v(i),h(i))]+log[P(h(i)∣v(i))Q(h(i)∣v(i))]
观察第一项log[P(v(i),h(i))Q(h(i)∣v(i))]\\log \\left[\\frac{\\mathcal P(v^{(i)},h^{(i)})}{\\mathcal Q(h^{(i)} \\mid v^{(i)})}\\right]log[Q(h(i)∣v(i))P(v(i),h(i))]和logP(v(i))=log[P(v(i),h(i))P(h(i)∣v(i))]\\log \\mathcal P(v^{(i)}) =\\log \\left[\\frac{\\mathcal P(v^{(i)},h^{(i)})}{\\mathcal P(h^{(i)} \\mid v^{(i)})}\\right]logP(v(i))=log[P(h(i)∣v(i))P(v(i),h(i))]之间,可以将其理解成:人为设定分布Q(h(i)∣v(i))\\mathcal Q(h^{(i)} \\mid v^{(i)})Q(h(i)∣v(i))替代了P(h(i)∣v(i))\\mathcal P(h^{(i)} \\mid v^{(i)})P(h(i)∣v(i))分布的位置;而log[Q(h(i)∣v(i))P(h(i)∣v(i))]\\log \\left[\\frac{\\mathcal Q(h^{(i)} \\mid v^{(i)})}{\\mathcal P(h^{(i)} \\mid v^{(i)})}\\right]log[P(h(i)∣v(i))Q(h(i)∣v(i))]可理解为:分布Q(h(i)∣v(i))\\mathcal Q(h^{(i)} \\mid v^{(i)})Q(h(i)∣v(i))与分布P(h(i)∣v(i))\\mathcal P(h^{(i)} \\mid v^{(i)})P(h(i)∣v(i))之间存在的某种关联关系。
分别对等式两端基于Q(h(i)∣v(i))\\mathcal Q(h^{(i)} \\mid v^{(i)})Q(h(i)∣v(i))求解积分:
其中
I\\mathcal II中不包含
h(i)h^{(i)}h(i),因而有
∫h(i)I⋅Q(h(i)∣v(i))dh(i)=I∫h(i)Q(h(i)∣v(i))dh(i)=I⋅1=I\\int_{h^{(i)}} \\mathcal I \\cdot \\mathcal Q(h^{(i)} \\mid v^{(i)}) dh^{(i)} = \\mathcal I \\int_{h^{(i)}} \\mathcal Q(h^{(i)} \\mid v^{(i)}) dh^{(i)} = \\mathcal I \\cdot 1 = \\mathcal I∫h(i)I⋅Q(h(i)∣v(i))dh(i)=I∫h(i)Q(h(i)∣v(i))dh(i)=I⋅1=I(概率密度积分),因而关注点在等式右侧的积分过程。
I=∫h(i)Q(h(i)∣v(i))log[P(v(i),h(i))Q(h(i)∣v(i))]dh(i)+∫h(i)Q(h(i)∣v(i))log[Q(h(i)∣v(i))P(h(i)∣v(i))]dh(i)=EQ(h(i)∣v(i)){log[P(v(i),h(i))Q(h(i)∣v(i))]}⏟Evidence of Lower Bound,ELBO+KL[Q(h(i)∣v(i))∣∣P(h(i)∣v(i))]⏟KL Divergence\\begin{aligned} \\mathcal I & = \\int_{h^{(i)}} \\mathcal Q(h^{(i)} \\mid v^{(i)}) \\log \\left[\\frac{\\mathcal P(v^{(i)},h^{(i)})}{\\mathcal Q(h^{(i)} \\mid v^{(i)})}\\right] d h^{(i)} + \\int_{h^{(i)}} \\mathcal Q(h^{(i)} \\mid v^{(i)}) \\log \\left[\\frac{\\mathcal Q(h^{(i)} \\mid v^{(i)})}{\\mathcal P(h^{(i)} \\mid v^{(i)})}\\right] dh^{(i)} \\\\ & = \\underbrace{\\mathbb E_{\\mathcal Q(h^{(i)} \\mid v^{(i)})} \\left\\{\\log \\left[\\frac{\\mathcal P(v^{(i)},h^{(i)})}{\\mathcal Q(h^{(i)} \\mid v^{(i)})}\\right]\\right\\}}_{\\text{Evidence of Lower Bound,ELBO}} + \\underbrace{\\text{KL} \\left[\\mathcal Q(h^{(i)} \\mid v^{(i)}) || \\mathcal P(h^{(i)} \\mid v^{(i)})\\right]}_{\\text{KL Divergence}} \\end{aligned}I=∫h(i)Q(h(i)∣v(i))log[Q(h(i)∣v(i))P(v(i),h(i))]dh(i)+∫h(i)Q(h(i)∣v(i))log[P(h(i)∣v(i))Q(h(i)∣v(i))]dh(i)=Evidence of Lower Bound,ELBOEQ(h(i)∣v(i)){log[Q(h(i)∣v(i))P(v(i),h(i))]}+KL DivergenceKL[Q(h(i)∣v(i))∣∣P(h(i)∣v(i))]
可以将ELBO\\text{ELBO}ELBO继续向下分解,得到如下形式:
I=EQ(h(i)∣v(i))[logP(v(i),h(i))−logQ(h(i)∣v(i))]+KL[Q(h(i)∣v(i))∣∣P(h(i)∣v(i))]=EQ(h(i)∣v(i))[logP(v(i),h(i))]−EQ(h(i)∣v(i))[Q(h(i)∣v(i))]⏟H[Q(h(i)∣v(i))];Entropy+KL[Q(h(i)∣v(i))∣∣P(h(i)∣v(i))]\\begin{aligned} \\mathcal I & = \\mathbb E_{\\mathcal Q(h^{(i)} \\mid v^{(i)})} \\left[\\log \\mathcal P(v^{(i)},h^{(i)}) - \\log \\mathcal Q(h^{(i)} \\mid v^{(i)})\\right] + \\text{KL} \\left[\\mathcal Q(h^{(i)} \\mid v^{(i)}) || \\mathcal P(h^{(i)} \\mid v^{(i)})\\right] \\\\ & = \\mathbb E_{\\mathcal Q(h^{(i)} \\mid v^{(i)})} \\left[\\log \\mathcal P(v^{(i)},h^{(i)})\\right] \\underbrace{- \\mathbb E_{\\mathcal Q(h^{(i)} \\mid v^{(i)})} \\left[\\mathcal Q(h^{(i)} \\mid v^{(i)})\\right]}_{\\mathcal H[\\mathcal Q(h^{(i)} \\mid v^{(i)})];\\text{Entropy}} + \\text{KL} \\left[\\mathcal Q(h^{(i)} \\mid v^{(i)}) || \\mathcal P(h^{(i)} \\mid v^{(i)})\\right] \\end{aligned}I=EQ(h(i)∣v(i))[logP(v(i),h(i))−logQ(h(i)∣v(i))]+KL[Q(h(i)∣v(i))∣∣P(h(i)∣v(i))]=EQ(h(i)∣v(i))[logP(v(i),h(i))]H[Q(h(i)∣v(i))];Entropy−EQ(h(i)∣v(i))[Q(h(i)∣v(i))]+KL[Q(h(i)∣v(i))∣∣P(h(i)∣v(i))] -
最终,对数似然函数logP(V)\\log \\mathcal P(\\mathcal V)logP(V)可表示为:
logP(V)=∑i=1NI=∑i=1N{EQ(h(i)∣v(i))[logP(v(i),h(i))]−EQ(h(i)∣v(i))[Q(h(i)∣v(i))]⏟H[Q(h(i)∣v(i))];Entropy+KL[Q(h(i)∣v(i))∣∣P(h(i)∣v(i))]}\\begin{aligned} \\log \\mathcal P(\\mathcal V) & = \\sum_{i=1}^N \\mathcal I \\\\ & = \\sum_{i=1}^N \\left\\{\\mathbb E_{\\mathcal Q(h^{(i)} \\mid v^{(i)})} \\left[\\log \\mathcal P(v^{(i)},h^{(i)})\\right] \\underbrace{- \\mathbb E_{\\mathcal Q(h^{(i)} \\mid v^{(i)})} \\left[\\mathcal Q(h^{(i)} \\mid v^{(i)})\\right]}_{\\mathcal H[\\mathcal Q(h^{(i)} \\mid v^{(i)})];\\text{Entropy}} + \\text{KL} \\left[\\mathcal Q(h^{(i)} \\mid v^{(i)}) || \\mathcal P(h^{(i)} \\mid v^{(i)})\\right]\\right\\} \\end{aligned}logP(V)=i=1∑NI=i=1∑N⎩⎨⎧EQ(h(i)∣v(i))[logP(v(i),h(i))]H[Q(h(i)∣v(i))];Entropy−EQ(h(i)∣v(i))[Q(h(i)∣v(i))]+KL[Q(h(i)∣v(i))∣∣P(h(i)∣v(i))]⎭⎬⎫
根据极大似然估计,将推断任务:求解P(h(i)∣v(i))\\mathcal P(h^{(i)} \\mid v^{(i)})P(h(i)∣v(i))转换为了:- 使用Q(h(i)∣v(i))\\mathcal Q(h^{(i)} \\mid v^{(i)})Q(h(i)∣v(i))替代了P(h(i)∣v(i))\\mathcal P(h^{(i)} \\mid v^{(i)})P(h(i)∣v(i));
- 选择合适的Q(h(i)∣v(i))\\mathcal Q(h^{(i)} \\mid v^{(i)})Q(h(i)∣v(i))来优化目标函数,使得目标函数ELBO=L[v(i),h(i),Q(h(i)∣v(i))]\\text{ELBO} = \\mathcal L \\left[v^{(i)},h^{(i)},\\mathcal Q(h^{(i)} \\mid v^{(i)})\\right]ELBO=L[v(i),h(i),Q(h(i)∣v(i))]达到最大:
argmaxQ(h(i)∣v(i))L[v(i),h(i),Q(h(i)∣v(i))]\\mathop{\\arg\\max}\\limits_{\\mathcal Q(h^{(i)} \\mid v^{(i)})} \\mathcal L \\left[v^{(i)},h^{(i)},\\mathcal Q(h^{(i)} \\mid v^{(i)})\\right]Q(h(i)∣v(i))argmaxL[v(i),h(i),Q(h(i)∣v(i))]
相关参考:
(系列二十五)近似推断2-推断即优化