机器学习系列手记(八):采样之常见的采样方法

采样

常见的采样方法

      对于一个随机变量,通常用概率密度函数来刻画该变量的概率分布特性。具体来说,给定随机变量的一个取值,可以根据该密度函数来计算该值对应的概率(密度)。反过来,也可以根据概率密度函数提供的概率分布信息来生成随机变量的一个取值,这就是采样。因此,从某种意义上来说,采样是概率密度函数的逆向应用。与根据概率密度函数计算样本点对应的概率值不同,采样过程往往没那么直接,通常需要根据待采样分布的具体特点来选择合适的采样策略。
      几乎所有的采样方法都是以均匀分布随机数作为基本操作。首先假设已经可以生成[0,1]上的均匀分布随机数,比如邮箱离散分布可以用轮盘赌算法来采样。然而,很多分布一般不好直接进行采样,可以考虑函数变换法。一般地,如果随机变量 x x x u u u 存在变换关系 u = ϕ ( x ) u=\phi(x) u=ϕ(x) ,则他们的概率密度函数有如下关系:
在这里插入图片描述
      因此,如果从目标分布 p ( x ) p(x) p(x) 中不好采样 x x x,可以构造一个变换 u = ϕ ( x ) u=\phi(x) u=ϕ(x) ,使得从变换后的分布 p ( u ) p(u) p(u) 中采样 u u u 比较容易,这样可以通过先对 u u u 进行采样然后通过反函数 x = ϕ − 1 ( u ) x=\phi^{-1}(u) x=ϕ1(u) 来间接得到 x x x。如果是高维空间的随机向量,则 ϕ ′ ( x ) \phi^{'}(x) ϕ(x) 对Jacobian行列式。
      特别地,在函数变换法中,如果变换关系 ϕ ( ⋅ ) \phi(\cdot) ϕ() x x x 的累积分布函数的话,则得到所谓的逆变换采样。假设待采样的目标分布的概率密度函数为 p ( x ) p(x) p(x) ,它的累积分布函数为
在这里插入图片描述
则逆变换采样法按如下过程进行采样:
      (1)从均匀分布U(0,1)产生一个随机数 u i u_i ui
      (2)计算 x i = Φ − 1 ( u i ) x_i=\Phi^{-1}(u_i) xi=Φ1(ui),其中 Φ − 1 ( ⋅ ) \Phi^{-1}(\cdot) Φ1() 是累积分布函数的逆函数。
      根据以上两式,上述采样过程得到的 x i x_i xi 服从 p ( x ) p(x) p(x) 分布。下图是逆变换采样法的示意图。
机器学习系列手记(八):采样之常见的采样方法_第1张图片
      如果待采样的目标分布的累积分布函数的你函数无法求解或不容易计算,则不适用于逆变换采样法。此时可以构造一个容易采样的参考分布,先对参考分布进行采样,然后对得到的样本进行一定的后处理操作,使得最终的样本服从目标分布。常见的拒绝采样、重要性采样,就属于这类采样算法,下面分别简单介绍它们的采样过程。
      拒绝采样,又叫接受/拒绝采样。对于目标分布 p ( x ) p(x) p(x),选取一个容易采样的参考分布 q ( x ) q(x) q(x) ,使得对任意 x x x 都有 p ( x ) ≤ M ⋅ q ( x ) p(x)≤M\cdot q(x) p(x)Mq(x) ,则可以按如下过程进行采样:
      (1)从参考分布 q ( x ) q(x) q(x) 中随机抽取一个样本 x i x_i xi
      (2)从均匀分布U(0,1)产生一个随机数 u i u_i ui
      (3)如果 u i < p ( x i ) M q ( x i ) u_i<\frac{p(x_i)}{Mq(x_i)} ui<Mq(xi)p(xi),则接受样本 x i x_i xi;否则拒绝,重新进行步骤(1)~(3),直到新产生的样本 x i x_i xi 被接受。
      由上述推导可以指导最终得到 x i x_i xi 服从目标分布 p ( x ) p(x) p(x)。如下图(a)所示,拒绝采样的关键是为目标分布 p ( x ) p(x) p(x) 选取一个合适的包络函数 M q ( x i ) Mq(x_i) Mq(xi):包络函数越紧,每次采样时样本被接受的概率越大,采样效率越高。在实际应用中,为了维持采样效率,有时很难寻找一个解析形式的 q ( x ) q(x) q(x),因此延伸出了自适应拒绝采样,在目标分布是凹函数时,用分段线性函数来覆盖目标分布的对数 l n p ( x ) lnp(x) lnp(x),见下图(b)。
机器学习系列手记(八):采样之常见的采样方法_第2张图片
      很多时候,采样的最终目的并不是为了得到样本,而是为了进行一些后续任务,如预测变量取值,这通常表现为一个求函数期望的形式。重要性采样就是用于计算函数 f ( x ) f(x) f(x) 在目标分布 p ( x ) p(x) p(x) 上的积分(函数期望),即
在这里插入图片描述
      首先,找一个比较容易抽取的参考分布 q ( x ) q(x) q(x),并令 w ( x ) = p ( x ) q ( c ) w(x)=\frac{p(x)}{q(c)} w(x)=q(c)p(x),则有
在这里插入图片描述
      这里 w ( x ) w(x) w(x) 可以看成是样本 x x x 的重要性权重。由此,可以先从参考分布 q ( x ) q(x) q(x) 中抽取N个样本 { x i x_i xi},然后利用如下公式来估计 E [ f ] E[f] E[f]
在这里插入图片描述
      下图是重要性采样的示意图。如果不需要计算函数积分,只想从目标分布 p ( x ) p(x) p(x) 中采样出若干样本,则可以用重要性采样,先从参考分布 q ( x ) q(x) q(x) 中抽取N个样本 { x i x_i xi},然后按照它们对应的重要性权重 { w ( x i ) w(x_i) w(xi)}对这些样本进行重采样(这是一个简单的针对有限离散分布的采样),最终得到的样本服从目标分布 p ( x ) p(x) p(x)
机器学习系列手记(八):采样之常见的采样方法_第3张图片
      实际应用中,如果是高维空间的随机向量,拒绝采样和重要性重采样经常难以寻找合适的参考分布,采样效率低下(样本的接受概率小或重要性权重低),此时可以采用马尔可夫蒙特卡洛采样法,常见的有Metropolis-Hastings采样法和吉布斯采样法。

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