5 蒙特卡洛

164 阅读7分钟

蒙特卡洛

基本思想

构造一个采样方式,使得对某个统计量的估计恰好是要求的结果。

  • (ϵ,δ)(\epsilon, \delta)近似:对V的估计满足Pr[XVϵV]1δ\Pr[|X-V|\le \epsilon V]\ge 1 - \delta

针对上述定义,有一个很常用的结论:

x1,...,xmx_1, ..., x_m是独立同分布的示性随机变量,μ=E[Xi]\mu=E[X_i],若m(3ln(2/δ))/(ϵ2μ)m\ge (3\ln(2/\delta))/(\epsilon^2\mu),则Pr[1mi=1mXiμϵμ]δ\Pr[|\frac{1}{m}\sum_{i=1}^m X_i - \mu|\ge \epsilon \mu] \le \delta

这个方法最简单的例子是估计π\pi,但是通常情况下,naive的设计很难work,这是均匀采样命中的样本可能会很稀疏。接下来的例子可以说明此问题。

析取范式计数问题

析取范式是指子句和子句之间或连接,子句内部是且。这个问题不同于SAT问题,因为只要找到一个子句满足就可以了。但是,这个范式取反,就变成了主合取范式,这个判定很难是NPC的,所以确定一个析取范式不满足(取反的合取范式满足),即找到了一个赋值方法使其不满足。因此,必须确定满足析取范式的赋值方式(设为c(F)c(F))严格小于2n2^n。这个问题的难度和SAT是一样的。因此设计一个随机算法来解决有意义。

朴素方法是2n2^n种赋值方法中随机抽样,并判断每次抽的结果是否满足。假设抽样mm次,满足的有XX次,那么析取范式的计数可以估计为X/m2nX/m2^n

这个方法通常是无效的,因为E[Y]=E[X]2n/m=c(F)E[Y]=E[X]2^n/m=c(F),反解E[X]E[X]带入到前面定理可以得到m2n3ln(2/δ)ϵ2c(F)m \ge \frac{2^n3\ln(2/\delta)}{\epsilon^2c(F)}。发现m是随n的指数增长的。这样采样效率会很低。这个官方说法叫不够稠密。怎么样才叫稠密呢,那就是实现(ϵ,δ)(\epsilon,\delta)近似的采样次数是一个关于1/ϵ,lnδ11/\epsilon, \ln \delta^{-1}和输入x的多项式。这被称之为完全多项式随机化近似方案(Fully Polynomial Random Approximation Solution,FPRAS)。

如何实现采样空间的稠密,这很考验对问题本身的理解。对这个问题,我们令SiS_i表示满足第i个子句的赋值集合。很显然这个集合有2nli2^{n-l_i}个元素,因为满足子句i,只需要固定子句i包含的这lil_i个变量,其他的不用管。然后,我们把这些SiS_i合并成一个更大的集合。那很显然,这个集合的每一个元素都是可以满足析取范式的。因此c(F)=iSic(F)=|\cup_i S_i|

因为每个SiS_i的大小=2nli2^{n-l_i},所以如果SiS_i彼此不相交,很容易计算c(F)c(F)。但是,一个赋值是有可能同时满足多个子句的,所以这个并肯定会比SiS_i求和要更小。

如果能够估计出来,不重叠的程度,那就可以估计c(F)c(F)了。这个很简单,随机从SiS_i的所有元素中等概率抽样(可以分两步,第一步按照Si|S_i|的比例选择SiS_i,第二步从SiS_i中等可能抽样),然后判断这个抽样的结果是否不会和其他的重叠(这里用到一个技巧是只需要判断编号比i小的子句即可,这意味着取并集的时候我们是选择满足子句编号最小的那个赋值)。

设不重叠的数量为XX,那么估计值为X/mSiX/m \sum|S_i|

再一次使用前面的定理,这一次的m为3tϵ2ln2δ\frac{3t}{\epsilon^2}\ln\frac{2}{\delta}。他就是一个FPRAS

独立集计数问题

这个问题的估计方法也是利用了独立集的形成特点。

我们把所有的边指定一个顺序,然后GiG_i表示所有顶点保留,前i条边保留的情况下的子图,Ωi\Omega_i表示该自图独立集的数量。显然Ω0\Omega_02n2^n,因为一条边也没有,所有的顶点子集都是独立集。

接下来考虑一个递推的过程,如果添加了一条边,子图从G0G_0变成G1G_1,独立集数量如何变化?按照前面的定义,可以表示为Ω1\Omega_1,它和G0G_0的独立集数量关系显然可以写成Ω1=Ω1Ω0Ω0\Omega_1=\frac{\Omega_1}{\Omega_0}\Omega_0。因此我们逐步递推,最后独立集数量可以表示为

Ωm=ΩmΩm1...Ω1Ω0Ω0\Omega_m = \frac{\Omega_m}{\Omega_{m-1}}...\frac{\Omega_1}{\Omega_0}\Omega_0。只要能够估计处每一个比例系数ri=ΩiΩi1r_i=\frac{\Omega_i}{\Omega_{i-1}},就ok。

如何估计rir_i,一个简单的思路是从Gi1G_{i-1}等概率采样独立集m次,如果这个独立集同时也是GiG_i的独立集,那X+1, 最后X/m就是估计值。

现在自然提出三个问题:1 如何实现等概率采样独立集(求解独立集是NPC问题,想暴力全解出来不是一个好方法)2 这个方法是否有效(能否保证FPRAS)。3 假设解决了前两个,把rir_i估计准了,那最后总的计数值能有多准确

第1个问题现在解决不了,需要用到MCMC。下一节介绍。

但是我们先给出一个较为松弛的条件,那就是我不要求生成一个绝对均匀的采样,而是ϵ/6m\epsilon/6m均匀的采样。
即任意一个样本被采样的概率和均匀采样的差距不会超过ϵ/6m\epsilon/6m

第2个问题。我们可以保证FPRAS。

因为ri=ΩiΩi1=ΩiΩi+Ω(i1)i1/2r_i=\frac{\Omega_i}{\Omega_{i-1}}=\frac{\Omega_i}{\Omega_i + \Omega_{(i-1)|i}} \ge 1/2
也就是说,Gi1G_{i-1}这个图的独立集数量可以看作是GiG_i的独立集再加上由于去除第i条边而新增的独立集。因为新增的不会超过Ωi\Omega_i,所以比例大于等于1/21/2
现在基于第1个问题给出的假设,设XkX_k表示估计rir_i时采样的一个独立集能否使X增加。可以有Pr[Xk=1]ΩiΩi1ϵ/(6m)|\Pr[X_k=1]-\frac{\Omega_i}{\Omega_{i-1}}|\le \epsilon/(6m)
因为XkX_k是indicator,所以E[Xk]ΩiΩi1ϵ/(6m)|E[X_k]-\frac{\Omega_i}{\Omega_{i-1}}|\le \epsilon/(6m)
所以按照期望线性性E[kXkM]ΩiΩi1|E[\frac{\sum_k X_k}{M}]-\frac{\Omega_i}{\Omega_{i-1}}|,即
E[ri^]riϵ/(6m)|E[\hat{r_i}]-r_i|\le \epsilon/(6m),利用绝对值的一边,可以得到一个下界
E[ri^]riϵ/(6m)1/2ϵ/(6m)1/3E[\hat{r_i}]\ge r_i-\epsilon/(6m)\ge 1/2-\epsilon/(6m) \ge 1/3
再次运用一开始的定理,可得到M1296m2ϵ2ln(2m/δ)M\ge 1296m^2\epsilon^{-2}\ln(2m/\delta)。这是FPRAS

问题3,实现了对rir_i的有效近似,对最终结果R能否实现有效近似?

可以,如果对rir_i实现了(ϵ/(2m),δ/m)(\epsilon/(2m), \delta/m)近似,那就可以实现对R的(ϵ,δ)(\epsilon, \delta)近似。这是因为
Pr[ri^riϵ2mri]<δ/m\Pr[|\hat{r_i}-r_i|\le \frac{\epsilon}{2m}r_i]< \delta/m
所以1ϵ2mri^ri1+ϵ2m1-\frac{\epsilon}{2m}\le \frac{\hat{r_i}}{r_i} \le 1+\frac{\epsilon}{2m}成立的概率至少为1δ1-\delta。那么对所有rir_i连乘可以得到
1ϵ1ϵ2mmiri^ri(1+ϵ2m)m1+ϵ1-\epsilon\le |1-\frac{\epsilon}{2m}|^m\prod_i \frac{\hat{r_i}}{r_i}\le (1+\frac{\epsilon}{2m})^m\le 1+\epsilon

MCMC

现在来回答问题一,这里有一个通用的方法叫做Markov Chain Monte Carlo。它提供了一种在复杂采样环境下实现特定概率采样的方法。其思想是构造一个MC,使得最后的平稳分布恰好就是我们想要的采样分布。这样每次执行MC的状态转移直至收敛,即可实现特定概率的采样。

回到我们前面的问题,如何实现等概率采样独立集。我们可以构造如下Markov Chain。设状态是所有独立集(稍后会看到这并不要求把所有独立集都求解出来)。定义状态的联通关系就是独立集只相差一个顶点。转移概率定义如下:Pxy=1/M,0,1Nx/MP_{xy}=1/M, 0, 1-N_x/M分别对应x与y相邻,x与y不相邻以及x和y相等的情况。其中M是比所有状态度都大的整数

更直观的讲,我们在每个状态增加了一个自环,来调节图随机游走时每个状态的平稳概率和它的度相关的问题(第5章讲到了)。增加自环后,πxPxy=πyPyx\pi_x P_{xy}=\pi_y P_{yx},而P都是1/M,因此最后πx=1/Ω\pi_x=1/|\Omega|

上面的构造和分析说明,从一个状态出发,沿着上面的方式转移直到收敛,停留的状态可以看作是一个采样。算法如下:

初始状态为空集

递推采样:随机选取一个顶点,如果v在当前状态里,那么转移到把v拿掉的顶点集状态(相当于转移到比当前状态少一个顶点的状态里)。否则,如果加入新顶点保持独立集,则加入并设为新状态(相当于转移到比当前状态多一个顶点的状态)。其他情况下状态不变(对应自环和不是独立集状态不存在的情况)。

这个算法是如何保证和前面的MC行为一致的?首先状态0是空集显然是独立集,并且所有状态都可以到达空集因此是有限不可约MC。其次,转移的新状态要么比当前的点少,要么判定了属于独立集,所以转移的合法性是可以保证的。最后,等概率随机选点保证了转移到新状态的概率是一样的。

很明显,M并不是越大越好的,因为M太大,会导致状态转移很困难,拖慢收敛到平稳分布的速度。但是这个M也不是我们说了算的,因为算法里没法设置,这完全取决于图本身的性质。

Metropolis

如果采样的概率不是均匀的怎么搞。Metropolis给出解决方法。我们只需要给出希望的概率,然后可以构建如下MC

Pxy=1Mmin(1,πx/πy),0,1yxPxyP_{xy}=\frac{1}{M}\min(1,\pi_x/\pi_y), 0, 1-\sum_{y\ne x} P_{xy} 分别对应相邻、不存在和相等的情况。

如果不可约非周期,那么平稳分布由πx\pi_x给出