MCMC算法大统一: Involutive MCMC

标准采样方法

先从最基本的方法说起,可能很多人都知道只要可以对分布函数 F ( x ) \displaystyle F( x) F(x)求逆,并从均匀分布中采样u,并将u代进逆函数中就能得到x的样本,即 x = F − 1 ( u ) , u ∼ U ( 0 , 1 ) \displaystyle x=F^{-1}( u) ,u\sim U( 0,1) x=F1(u),uU(0,1)。他的原理是什么?其实他的出发点是找到一个从均匀分布到目标分布的可逆变换 g \displaystyle g g

x = g ( u ) p ( x ) = p ( u ) ∣ d u d x ∣ = p u ( g − 1 ( x ) ) ∣ d g − 1 ( x ) d x ∣ x=g( u)\\ p( x) =p( u)\left| \frac{du}{dx}\right| =p_{u}\left( g^{-1}( x)\right)\left| \frac{dg^{-1}( x)}{dx}\right| x=g(u)p(x)=p(u)dxdu=pu(g1(x))dxdg1(x)

因为我们要保证x是我们的目标分布,那么他一定要满足 ∫ − ∞ x p ( x ) d x = F ( x ) \displaystyle \int ^{x}_{-\infty } p( x) dx=F( x) xp(x)dx=F(x),因为 p u ( f − 1 ( x ) ) \displaystyle p_{u}\left( f^{-1}( x)\right) pu(f1(x))是0到1的均匀分布所以他等于1,于是必须有 ∫ − ∞ x ∣ d g − 1 ( x ) d x ∣ d x = F ( x ) ⟹ g − 1 ( x ) = F ( x ) ⟹ g ( x ) = F − 1 ( x ) \displaystyle \int ^{x}_{-\infty }\left| \frac{dg^{-1}( x)}{dx}\right| dx=F( x) \Longrightarrow g^{-1}( x) =F( x) \Longrightarrow g( x) =F^{-1}( x) xdxdg1(x)dx=F(x)g1(x)=F(x)g(x)=F1(x)
然而该方法的问题在于,并不是每个概率分布的都可以写出来并且可以求逆的。对于那些特别复杂的分布这样方法就无能为力了。

拒绝采样

现在我们的目标是要采样 p ( x ) \displaystyle p( x) p(x)的分布。为了采样这个分布,实际上,我们只需要知道 p ~ ( x ) \displaystyle \tilde{p}( x) p~(x)就足够了, p ~ ( x ) \displaystyle \tilde{p}( x) p~(x)是没有标准化的 p ( x ) = p ~ ( x ) / Z \displaystyle p( x) =\tilde{p}( x) /Z p(x)=p~(x)/Z, 其中 Z = ∫ p ~ ( x ) d x \displaystyle Z=\int \tilde{p}( x) dx Z=p~(x)dx 是不需要知道的。那么拒绝采样的流程是这样的,首先随便找一个proposal distribution q ( x ) \displaystyle q( x) q(x) 使得 M q ( x ) ⩾ p ~ ( x ) \displaystyle Mq( x) \geqslant \tilde{p}( x) Mq(x)p~(x),然后从q中随机一个样本 x ∼ q ( x ) \displaystyle x\sim q( x) xq(x),再从均匀分布中随机一个样本 u ∼ U ( 0 , 1 ) \displaystyle u\sim U( 0,1) uU(0,1),如果 u ⩾ p ~ ( x ) M q ( x ) \displaystyle u\geqslant \frac{\tilde{p}( x)}{Mq( x)} uMq(x)p~(x)则拒绝,否则接受。为什么这样就能从p中采样?

MCMC算法大统一: Involutive MCMC_第1张图片

订正:图中的 p \displaystyle p p应该是 p ~ \displaystyle \tilde{p} p~

首先,因为u是0,1区间,所以一定有 0 ⩽ u M q ( x ) ⩽ M q ( x ) \displaystyle 0\leqslant uMq( x) \leqslant Mq( x) 0uMq(x)Mq(x),那么u的作用其实就是选择0到 M q ( x ) \displaystyle Mq( x) Mq(x)之间的值,如果 p ~ ( x ) ⩽ u M q ( x ) \displaystyle \tilde{p}( x) \leqslant uMq( x) p~(x)uMq(x),那么就拒绝掉样本,也就是上图白色部分,否则 p ~ ( x ) ⩾ u M q ( x ) \displaystyle \tilde{p}( x) \geqslant uMq( x) p~(x)uMq(x)就是落在黑色区域,则接受。显然,对于x轴上的任意一个点 x ′ \displaystyle x' x,其对应接受的概率就是 p ~ ( x ′ ) M q ( x ′ ) \displaystyle \frac{\tilde{p}( x')}{Mq( x')} Mq(x)p~(x)。不过每个点,因为q,抽到的概率都不一样,所以我们要把q抽中的概率也算上去。

那么用这个方法我们可以得到一个序列的样本 ( x 1 , a c c e p t 1 , . . . , x i , a c c e p t i ) \displaystyle ( x_{1} ,accept_{1} ,...,x_{i} ,accept_{i}) (x1,accept1,...,xi,accepti),其中 x i ∼ q ( x ) \displaystyle x_{i} \sim q( x) xiq(x)是由 q \displaystyle q q产生的,而且每个pair ( x i , a c c e p t i ) \displaystyle ( x_{i} ,accept_{i}) (xi,accepti)都是相互独立的,那么我们可以证明, p ( x ∣ a c c e p t ) \displaystyle p( x|accept) p(xaccept)就等于我们想要的分布 p ( x ) \displaystyle p( x) p(x):

p ( x ∣ a c c e p t ) = p ( a c c e p t ∣ x ) q ( x ) p ( a c c p e t ) = p ~ ( x ) M q ( x ) q ( x ) ∫ p ~ ( x ) M q ( x ) q ( x ) d x = p ~ ( x ) ∫ p ~ ( x ) d x = p ( x ) / Z ∫ p ( x ) / Z d x = p ( x ) \begin{aligned} p( x|accept) & =\frac{p( accept|x) q( x)}{p( accpet)}\\ & =\frac{\frac{\tilde{p}( x)}{Mq( x)} q( x)}{\int \frac{\tilde{p}( x)}{Mq( x)} q( x) dx}\\ & =\frac{\tilde{p}( x)}{\int \tilde{p}( x) dx}\\ & =\frac{p( x) /Z}{\int p( x) /Zdx}\\ & =p( x) \end{aligned} p(xaccept)=p(accpet)p(acceptx)q(x)=Mq(x)p~(x)q(x)dxMq(x)p~(x)q(x)=p~(x)dxp~(x)=p(x)/Zdxp(x)/Z=p(x)

通过拒绝采样,我们可以知道,对于任意的分布,我们可以设计一种接受-拒绝的概率,从而使得所有接受的点都是该分布的样本。然而他的问题在于,他对propose distribution q的要求很高,试想下,如果q与真实p的差距过大,那么几乎每个样本都会被拒绝掉,效率很低。那如何设计更好的 q \displaystyle q q呢?一个办法是设计一个 t ( x ′ ∣ x ) \displaystyle t( x'|x) t(xx),他从上一次接受的样本作为条件,然后经过转换propose一个新的样本,如果我们能够约束这个转换不会改变目标分布的,那么我们就能快速的找到 p ( x ) \displaystyle p( x) p(x)的样本。这也正是MCMC的思想。

IMCMC

然而MCMC的方法少说也有成百上千种,如何统一起来呢?我们从另一个角度来考虑MCMC。首先MCMC最基本可以从离散马尔科夫链说起,A是一个转移矩阵, π \displaystyle \pi π是一个向量,如果满足下述公式

π A = π \pi A=\pi πA=π

则称 A \displaystyle A A的平稳分布是 π \displaystyle \pi π。类似的在连续的情况下:

∫ t ( x ′ ∣ x ) p ( x ) d x = p ( x ′ ) \int t( x'|x) p( x) dx=p( x') t(xx)p(x)dx=p(x)

我们希望找到一个转换概率分布 t ( x ′ ∣ x ) \displaystyle t( x'|x) t(xx),且该转换不会改变来自 p ( x ) \displaystyle p( x) p(x)的样本的分布。事实上这个t不一定是随机的,当他是确定的映射时,我们有 t ( x ′ ∣ x ) = δ ( x ′ − f ( x ) ) \displaystyle t( x'|x) =\delta ( x'-f( x)) t(xx)=δ(xf(x)),相当于 x ′ = f ( x ) \displaystyle x'=f( x) x=f(x)于是
∫ δ ( x ′ − f ( x ) ) p ( x ) d x = p ( x ′ ) \int \delta ( x'-f( x)) p( x) dx=p( x') δ(xf(x))p(x)dx=p(x)

这意味着我们要找到一个映射函数,使得 x ′ = f ( x ) \displaystyle x'=f( x) x=f(x)并且他们的分布一样,又因为根据分布变换公式

p x ( x ) = p x ′ ( x ′ ) p x ( x ) = p x ′ ( f ( x ) ) ∣ d f ( x ) d x ∣ = p x ( f ( x ) ) ∣ d f ( x ) d x ∣ = p x ′ ( x ′ ) = p x ( f − 1 ( x ) ) ∣ d f − 1 ( x ) d x ∣ p_{x}( x) =p_{x'}( x')\\ p_{x}( x) =p_{x'}( f( x))\left| \frac{df( x)}{dx}\right| =p_{x}( f( x))\left| \frac{df( x)}{dx}\right| \\ =p_{x'}( x') =p_{x}\left( f^{-1}( x)\right)\left| \frac{df^{-1}( x)}{dx}\right| px(x)=px(x)px(x)=px(f(x))dxdf(x)=px(f(x))dxdf(x)=px(x)=px(f1(x))dxdf1(x)
(其实从上述公式中我们就能大致的能看出, f ( x ) = f − 1 ( x ) f(x)=f^{-1}(x) f(x)=f1(x)这个条件的成立,这就是所谓的Involutive function,IMCMC就是围绕如何设计这个f函数来做的)
不过这样的f不好找,所以一般我们可以用以下这个:

t ( x ′ ∣ x ) = δ ( x ′ − f ( x ) ) min ⁡ { 1 , p ( f ( x ) ) p ( x ) ∣ ∂ f ∂ x ∣ } ⏟ P accept + + δ ( x ′ − x ) ( 1 − min ⁡ { 1 , p ( f ( x ) ) p ( x ) ∣ ∂ f ∂ x ∣ } ) ⏟ P reject , \begin{aligned} t(x'|x)=\delta (x'-f(x))\underbrace{\min\biggl\{1,\frac{p(f(x))}{p(x)}\biggl|\frac{\partial f}{\partial x}\biggl|\biggr\}}_{P_{\text{accept}}} +\\ +\delta (x'-x)\underbrace{\biggl( 1-\min\biggl\{1,\frac{p(f(x))}{p(x)}\biggl|\frac{\partial f}{\partial x}\biggl|\biggr\}\biggr)}_{P_{\text{reject}}} , \end{aligned} t(xx)=δ(xf(x))Paccept min{ 1,p(x)p(f(x))xf}++δ(xx)Preject (1min{ 1,p(x)p(f(x))xf}),

我们一般可以通过拒绝采样的方式来近似这个转换概率(这部分我不是很理解他跟拒绝采样的关系,没看懂)。这意味着,当 x ′ = f ( x ) \displaystyle x'=f( x) x=f(x)时, t ( x ′ ∣ x ) = min ⁡ { 1 , p ( f ( x ) ) p ( x ) ∣ ∂ f ∂ x ∣ } \displaystyle t(x'|x)=\min\biggl\{1,\frac{p(f(x))}{p(x)}\biggl|\frac{\partial f}{\partial x}\biggl|\biggr\} t(xx)=min{ 1,p(x)p(f(x))xf},而当 x ′ = x \displaystyle x'=x x=x时, t ( x ′ ∣ x ) = ( 1 − min ⁡ { 1 , p ( f ( x ) ) p ( x ) ∣ ∂ f ∂ x ∣ } ) \displaystyle t(x'|x)=\biggl( 1-\min\biggl\{1,\frac{p(f(x))}{p(x)}\biggl|\frac{\partial f}{\partial x}\biggl|\biggr\}\biggr) t(xx)=(1min{ 1,p(x)p(f(x))xf}),显然,如果 x ∼ p ( x ) \displaystyle x\sim p( x) xp(x),且 x ′ = f ( x ) \displaystyle x'=f( x) x=f(x),我们写的稍微简单一点,那么 p x ′ ( x ′ ) = t ( x ′ ∣ x ) p ( x ) = p ( f ( x ) ) ∣ ∂ f ∂ x ∣ = p x ( f − 1 ( x ) ) ∣ d f − 1 ( x ) d x ∣ \displaystyle p_{x'}( x') =t( x'|x) p( x) =p(f(x))\biggl|\frac{\partial f}{\partial x}\biggl| =p_{x}\left( f^{-1}( x)\right)\left| \frac{df^{-1}( x)}{dx}\right| px(x)=t(xx)p(x)=p(f(x))xf=px(f1(x))dxdf1(x)。事实上,这等价于认为, f \displaystyle f f满足 f ( x ) = f − 1 ( x ) \displaystyle f( x) =f^{-1}( x) f(x)=f1(x),这样的函数称为involutive function。然而,这个分布只是在两个点之间反复横跳,我们可以引入一个辅助变量 v \displaystyle v v,我们随便抽取 v \displaystyle v v的样本,从而得到不同的 x ′ \displaystyle x' x,这样就不会反复横跳了。可以证明,引入一个辅助变量后,只要满足 f ( x , v ) = f − 1 ( x , u ) \displaystyle f( x,v) =f^{-1}( x,u) f(x,v)=f1(x,u),那么x的平稳分布仍然是目标分布。

t ( x ′ , v ′ ∣ x , v ) p ( x , v ) = t ( x , v ∣ x ′ , v ′ ) p ( x ′ , v ′ ) . t(x',v'|x,v)p(x,v)=t(x,v|x',v')p(x',v'). t(x,vx,v)p(x,v)=t(x,vx,v)p(x,v).

可以证明,t的边缘分布仍然服从detailed balance
t ^ ( x ′ ∣ x ) = ∫ d v d v ′ t ( x ′ , v ′ ∣ x , v ) p ( v ∣ x ) t ^ ( x ′ ∣ x ) p ( x ) = t ^ ( x ∣ x ′ ) p ( x ′ ) . \begin{aligned} \hat{t} (x'|x)=\int dvdv't(x',v'|x,v)p(v|x) \end{aligned} \begin{aligned} \hat{t} (x'|x)p(x)=\hat{t} (x|x')p(x'). \end{aligned} t^(xx)=dvdvt(x,vx,v)p(vx)t^(xx)p(x)=t^(xx)p(x).

通过引入辅助变量,我们可以设计出iMCMC的算法,只需保证f是involutive function。

MCMC算法大统一: Involutive MCMC_第2张图片

MH

MCMC算法大统一: Involutive MCMC_第3张图片

一个特例是 f ( x , v ) = v , x \displaystyle f( x,v) =v,x f(x,v)=v,x,他将 x , v \displaystyle x,v x,v的位置交换了一下,这时候iMCMC等价于MH算法。显然他的接收概率为

P = min ⁡ { 1 , p ( f ( x , v ) ) p ( x ) q ( v ∣ x ) } = min ⁡ { 1 , p ( v ) q ( x ∣ v ) p ( x ) q ( v ∣ x ) } P=\operatorname{min} \{1,\frac{p(f(x,v))}{p(x)q(v|x)} \}=\operatorname{min} \{1,\frac{p(v)q(x|v)}{p(x)q(v|x)} \} P=min{ 1,p(x)q(vx)p(f(x,v))}=min{ 1,p(x)q(vx)p(v)q(xv)}

HMC

另外一个经典的例子是HMC算法,他通过构造一个复杂的函数 f \displaystyle f f,从而使得接受率非常高,几乎不会拒绝(实际做的时候就直接接受,不判断拒不拒绝),但是 q \displaystyle q q又很简单,实际上启发了很多基于神经网络的MCMC就是在搞这个 f \displaystyle f f

MCMC算法大统一: Involutive MCMC_第4张图片

HMC依赖于用leap-frog算子 L \displaystyle L L来求解Hamiltonian dynamics的数值积分。对于 L : [ x ( t ) , v ( t ) ] → [ x ( t + ε ) , v ( t + ε ) ] L:[x(t),v(t)]\rightarrow [x(t+\varepsilon ),v(t+\varepsilon )] L:[x(t),v(t)][x(t+ε),v(t+ε)]

v ( t + ε / 2 ) = v ( t ) − ε 2 ∇ x ( − log ⁡ p ( x ( t ) ) ) x ( t + ε ) = x ( t ) + ε ∇ v ( − log ⁡ p ( v ( t + ε / 2 ) ) ) v ( t + ε ) = v ( t + ε / 2 ) − ε 2 ∇ x ( − log ⁡ p ( x ( t + ε ) ) ) \left. \begin{array}{ l } v(t+\varepsilon /2)=v(t)-\frac{\varepsilon }{2} \nabla _{x} (-\operatorname{log} p(x(t)))\\ x(t+\varepsilon )=x(t)+\varepsilon \nabla _{v} (-\operatorname{log} p(v(t+\varepsilon /2)))\\ v(t+\varepsilon )=v(t+\varepsilon /2)-\frac{\varepsilon }{2} \nabla _{x} (-\operatorname{log} p(x(t+\varepsilon ))) \end{array}\right. v(t+ε/2)=v(t)2εx(logp(x(t)))x(t+ε)=x(t)+εv(logp(v(t+ε/2)))v(t+ε)=v(t+ε/2)2εx(logp(x(t+ε)))

F \displaystyle F F则是一个简单的将辅助变量取负号的函数 F : [ x , v ] = [ x , − v ] \displaystyle F:[ x,v] =[ x,-v] F:[x,v]=[x,v],可以论文中给出了证明 F L k = ( F L k ) − 1 \displaystyle FL^{k} =\left( FL^{k}\right)^{-1} FLk=(FLk)1,而且他的jacobian矩阵的行列式也是为1。里面还有很多算法,这里就不写了,有兴趣自己去看。

参考资料

Neklyudov, Kirill, et al. “Involutive MCMC: a Unifying Framework.” arXiv preprint arXiv:2006.16653 (2020).

How does the proof of Rejection Sampling make sense?

(ML 17.13) Proof of rejection sampling (part 1)

Murphy, Kevin P. Machine learning: a probabilistic perspective. MIT press, 2012.

Bishop, Christopher M. Pattern recognition and machine learning. springer, 2006.

你可能感兴趣的:(人工智能,机器学习,人工智能)