Alias Method——高效的离散分布采样算法

本文探讨了离散分布采样的几种方法,包括轮盘赌算法、链式法、最优轮盘赌法和AliasMethod。重点介绍了AliasMethod的原理、初始化及采样时间复杂度,以及如何通过调整概率分布来提高采样效率。

一、采样方法

采样的本质是随机现象的模型,根据给定的概率分布,来模拟产生一些随机时间。另一方面,采样得到的样本集也可以看作是是一种非参数模型。即用较少量的样本点(经验分布)来近似总体分布,并刻画总体分布中的不确定性。从这个角度来说,采样其实也是一种信息降维,可以起到简化问题的作用。

对当前的数据集进行重采样,可以充分利用已有的数据集,挖掘更多信息,如Bootstrap法和jackknife法,通过对严格不能多次重采样来估计统计量的偏差、方差等。另外,利用重采样,可以在保持特定的信息下(目标信息不丢失),有意识地改变样本的分布,以更适应后续的模型训练和学习,例如利用重采样类处理分类模型的训练样本不均衡。

此外,许多模型由于结构复杂、含有隐变量等原因,导致对应的求解公式比较复杂,没有显式解析解,难以进行精确求解或推理。在这种情况下,可以利用采样方法进行随机模拟,从而对这些复杂模型进行近似求解或推理。一般会转化为某些在特定分布下的积分或期望,或者是求某些随机变量或者参数在给定数据下的后验分布等。

在一些基于随机游走的算法中,随机采样方法无论从功能上还是效率上都扮演了不可或缺的角色。首先对于node2vec图表示学习方法自身就是基于随机游走的算法,随机游走的每一步都是一个对于多项(Multinoulli)分布的采样,采样的次数是 O ( Nml ) O(\text{Nml}) O(Nml),其中N是图中的节点数,l是随机游走路径的长度,m是随机游走算法迭代的次数。对于本课题中使用的数据接地节点数约10000,游走序列的长度和迭代次数分别为80和10,对于这样的参数设置,共需要运行8000000次离散分布采样算法,因此该算法的效率至关重要。另外在node2vec训练语料生成的过程中需要降采样算法提升模型效果,在训练过程中需要负采样算法优化训练速度。

对于离散分布的采样问题,并不是很难的问题,但是在本课题中由于大量的执行了离散采样操作,因此要考虑其运行效率。实验证明,使用Alias Method对于基于图嵌入的用户表示学习的效率提升显著。

采样算法分为连续分布采样算法和离散分布采样算法。连续分布采样算法中最常见的均匀分布采样算法是所有的采样算法——包括连续分布采样算法和离散分布采样算法——的基础。而对于均匀分布的采样也非常简单,通常建立在一个良好的硬件的随机数种子发生器之上,然后并使用该种子初始化一块指定位数的内存即可,由于浮点数机器的精度问题,不可能真正的模拟连续分布,但是通常在数值计算的实践中,该问题可以忽略不计。另外最常见的分布是高斯分布和截断离散分布,高斯分布可以使用较为通用的拒绝采样法或者逆变换采样,出于效率问题,在真正的实现中通常使用Box-Muller方法生成符合标准高斯分布的随机变量,然后再根据参数进行和平移变换。对于截断高斯分布其实就是对于同参数的高斯分布进行拒绝采样,简单的抛弃在截断边界之外的随机值并重新生成。除此之外的其他分布通常可以基于均匀分布和高斯分布的随机变量构建而成。另外,不规则的分布可以使用拒绝采样及其高效的变种,重要性采样通常用于计算期望或者逼近积分。在机器学习中,尤其是生成式模型中,以马尔科夫链蒙特卡洛采样算法为代表的一系列蒙特卡洛方法可以使用重复采样的方法逼近一些复杂或难以计算的参数并为其提供一个合理的近似值。

二、轮盘赌算法

在这里插入图片描述

而离散分布的采样算法较为简单,大致的接口如上图所示,通常可以抽象地认为Multinoulli分布是一个具有多面的有偏骰子模型。通常离散分布的采样算法需要两个阶段来完成,第一个阶段是根据指定分布的参数——通常是分布列——来进行准备步骤或初始化步骤,比如建立查询表,同一个分布只需要一次准备步骤。第二个阶段是正式的采样阶段,该步骤通常需要进行一次或者多次符合离散均匀分布的随机变量——通常是正整数或自然数。传统的对于任意离散分布的采样算法使用查表法或者轮盘赌算法(Roulette Wheel Selection Algorithm)。前者单次的生成时间复杂度为 O ( 1 ) O(1) O(1),因为只需要一次均匀离散分布的生成与一次查表。但是准备时间较长,因为需要建立查询表。在最好情况下,准备步骤的时间复杂度是 O ( n ) O(n) O(n)。但是在最坏情况下,准备步骤的时间复杂度是 O ( ∏ i = 0 n d i ) O(\prod_{i= 0}^{n}d_{i}) O(i=0ndi),其中 d i d_i di是离散分布中各个取值的分数表示的概率的分母。需要说明的是,这种最坏情况是指d两两互质的情况。虽然这种情况在实际情况下难以发生,但是通常来说,准备步骤的时间复杂度仍然远大于 O ( n ) O(n) O(n),比如分布列为 [ 1 15 1 10 5 6 ] [\frac{1}{15}\frac{1}{10}\frac{5}{6}] [1511016

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值