蒙特卡洛
基本思想
构造一个采样方式,使得对某个统计量的估计恰好是要求的结果。
-
(ϵ,δ)近似:对V的估计满足Pr[∣X−V∣≤ϵV]≥1−δ
针对上述定义,有一个很常用的结论:
设x1,...,xm是独立同分布的示性随机变量,μ=E[Xi],若m≥(3ln(2/δ))/(ϵ2μ),则Pr[∣m1∑i=1mXi−μ∣≥ϵμ]≤δ。
这个方法最简单的例子是估计π,但是通常情况下,naive的设计很难work,这是均匀采样命中的样本可能会很稀疏。接下来的例子可以说明此问题。
析取范式计数问题
析取范式是指子句和子句之间或连接,子句内部是且。这个问题不同于SAT问题,因为只要找到一个子句满足就可以了。但是,这个范式取反,就变成了主合取范式,这个判定很难是NPC的,所以确定一个析取范式不满足(取反的合取范式满足),即找到了一个赋值方法使其不满足。因此,必须确定满足析取范式的赋值方式(设为c(F))严格小于2n。这个问题的难度和SAT是一样的。因此设计一个随机算法来解决有意义。
朴素方法是2n种赋值方法中随机抽样,并判断每次抽的结果是否满足。假设抽样m次,满足的有X次,那么析取范式的计数可以估计为X/m2n。
这个方法通常是无效的,因为E[Y]=E[X]2n/m=c(F),反解E[X]带入到前面定理可以得到m≥ϵ2c(F)2n3ln(2/δ)。发现m是随n的指数增长的。这样采样效率会很低。这个官方说法叫不够稠密。怎么样才叫稠密呢,那就是实现(ϵ,δ)近似的采样次数是一个关于1/ϵ,lnδ−1和输入x的多项式。这被称之为完全多项式随机化近似方案(Fully Polynomial Random Approximation Solution,FPRAS)。
如何实现采样空间的稠密,这很考验对问题本身的理解。对这个问题,我们令Si表示满足第i个子句的赋值集合。很显然这个集合有2n−li个元素,因为满足子句i,只需要固定子句i包含的这li个变量,其他的不用管。然后,我们把这些Si合并成一个更大的集合。那很显然,这个集合的每一个元素都是可以满足析取范式的。因此c(F)=∣∪iSi∣。
因为每个Si的大小=2n−li,所以如果Si彼此不相交,很容易计算c(F)。但是,一个赋值是有可能同时满足多个子句的,所以这个并肯定会比Si求和要更小。
如果能够估计出来,不重叠的程度,那就可以估计c(F)了。这个很简单,随机从Si的所有元素中等概率抽样(可以分两步,第一步按照∣Si∣的比例选择Si,第二步从Si中等可能抽样),然后判断这个抽样的结果是否不会和其他的重叠(这里用到一个技巧是只需要判断编号比i小的子句即可,这意味着取并集的时候我们是选择满足子句编号最小的那个赋值)。
设不重叠的数量为X,那么估计值为X/m∑∣Si∣。
再一次使用前面的定理,这一次的m为ϵ23tlnδ2。他就是一个FPRAS
独立集计数问题
这个问题的估计方法也是利用了独立集的形成特点。
我们把所有的边指定一个顺序,然后Gi表示所有顶点保留,前i条边保留的情况下的子图,Ωi表示该自图独立集的数量。显然Ω0为2n,因为一条边也没有,所有的顶点子集都是独立集。
接下来考虑一个递推的过程,如果添加了一条边,子图从G0变成G1,独立集数量如何变化?按照前面的定义,可以表示为Ω1,它和G0的独立集数量关系显然可以写成Ω1=Ω0Ω1Ω0。因此我们逐步递推,最后独立集数量可以表示为
Ωm=Ωm−1Ωm...Ω0Ω1Ω0。只要能够估计处每一个比例系数ri=Ωi−1Ωi,就ok。
如何估计ri,一个简单的思路是从Gi−1等概率采样独立集m次,如果这个独立集同时也是Gi的独立集,那X+1, 最后X/m就是估计值。
现在自然提出三个问题:1 如何实现等概率采样独立集(求解独立集是NPC问题,想暴力全解出来不是一个好方法)2 这个方法是否有效(能否保证FPRAS)。3 假设解决了前两个,把ri估计准了,那最后总的计数值能有多准确
第1个问题现在解决不了,需要用到MCMC。下一节介绍。
但是我们先给出一个较为松弛的条件,那就是我不要求生成一个绝对均匀的采样,而是ϵ/6m均匀的采样。
即任意一个样本被采样的概率和均匀采样的差距不会超过ϵ/6m。
第2个问题。我们可以保证FPRAS。
因为ri=Ωi−1Ωi=Ωi+Ω(i−1)∣iΩi≥1/2。
也就是说,Gi−1这个图的独立集数量可以看作是Gi的独立集再加上由于去除第i条边而新增的独立集。因为新增的不会超过Ωi,所以比例大于等于1/2。
现在基于第1个问题给出的假设,设Xk表示估计ri时采样的一个独立集能否使X增加。可以有∣Pr[Xk=1]−Ωi−1Ωi∣≤ϵ/(6m)
因为Xk是indicator,所以∣E[Xk]−Ωi−1Ωi∣≤ϵ/(6m)
所以按照期望线性性∣E[M∑kXk]−Ωi−1Ωi∣,即
∣E[ri^]−ri∣≤ϵ/(6m),利用绝对值的一边,可以得到一个下界
E[ri^]≥ri−ϵ/(6m)≥1/2−ϵ/(6m)≥1/3
再次运用一开始的定理,可得到M≥1296m2ϵ−2ln(2m/δ)。这是FPRAS
问题3,实现了对ri的有效近似,对最终结果R能否实现有效近似?
可以,如果对ri实现了(ϵ/(2m),δ/m)近似,那就可以实现对R的(ϵ,δ)近似。这是因为
Pr[∣ri^−ri∣≤2mϵri]<δ/m
所以1−2mϵ≤riri^≤1+2mϵ成立的概率至少为1−δ。那么对所有ri连乘可以得到
1−ϵ≤∣1−2mϵ∣m∏iriri^≤(1+2mϵ)m≤1+ϵ
MCMC
现在来回答问题一,这里有一个通用的方法叫做Markov Chain Monte Carlo。它提供了一种在复杂采样环境下实现特定概率采样的方法。其思想是构造一个MC,使得最后的平稳分布恰好就是我们想要的采样分布。这样每次执行MC的状态转移直至收敛,即可实现特定概率的采样。
回到我们前面的问题,如何实现等概率采样独立集。我们可以构造如下Markov Chain。设状态是所有独立集(稍后会看到这并不要求把所有独立集都求解出来)。定义状态的联通关系就是独立集只相差一个顶点。转移概率定义如下:Pxy=1/M,0,1−Nx/M分别对应x与y相邻,x与y不相邻以及x和y相等的情况。其中M是比所有状态度都大的整数
更直观的讲,我们在每个状态增加了一个自环,来调节图随机游走时每个状态的平稳概率和它的度相关的问题(第5章讲到了)。增加自环后,πxPxy=πyPyx,而P都是1/M,因此最后πx=1/∣Ω∣。
上面的构造和分析说明,从一个状态出发,沿着上面的方式转移直到收敛,停留的状态可以看作是一个采样。算法如下:
初始状态为空集
递推采样:随机选取一个顶点,如果v在当前状态里,那么转移到把v拿掉的顶点集状态(相当于转移到比当前状态少一个顶点的状态里)。否则,如果加入新顶点保持独立集,则加入并设为新状态(相当于转移到比当前状态多一个顶点的状态)。其他情况下状态不变(对应自环和不是独立集状态不存在的情况)。
这个算法是如何保证和前面的MC行为一致的?首先状态0是空集显然是独立集,并且所有状态都可以到达空集因此是有限不可约MC。其次,转移的新状态要么比当前的点少,要么判定了属于独立集,所以转移的合法性是可以保证的。最后,等概率随机选点保证了转移到新状态的概率是一样的。
很明显,M并不是越大越好的,因为M太大,会导致状态转移很困难,拖慢收敛到平稳分布的速度。但是这个M也不是我们说了算的,因为算法里没法设置,这完全取决于图本身的性质。
Metropolis
如果采样的概率不是均匀的怎么搞。Metropolis给出解决方法。我们只需要给出希望的概率,然后可以构建如下MC
Pxy=M1min(1,πx/πy),0,1−∑y=xPxy 分别对应相邻、不存在和相等的情况。
如果不可约非周期,那么平稳分布由πx给出