hulu机器学习问题与解答系列|十四:如何对高斯分布进行采样

peizhe123 peizhe123     2022-10-21     455

关键词:

欢迎回到“采样”系列~

 

今天的内容是

【如何对高斯分布进行采样】

 

场景描述

高斯分布,又称正态分布,是一个在数学、物理及工程领域都非常重要的概率分布。在实际应用中,我们经常需要对高斯分布进行采样。虽然在很多编程语言中,直接调用一个函数就可以生成高斯分布随机数,但了解其中的具体算法能够加深我们对相关概率统计知识的理解;此外,高斯分布的采样方法有多种,通过展示不同的采样方法在高斯分布上的具体操作以及性能对比,我们会对这些采样方法有更直观的印象。

 

问题描述

如果让你来实现一个高斯分布随机数生成器,你会怎么做?

 

背景知识:概率统计

 

解答与分析

首先,假设随机变量z服从标准正态分布N(0,1),令

x = σ·z + μ

x服从均值为μ、方差为σ2的高斯分布N(μσ2)。因此,任意高斯分布都可以由标准正态分布通过拉伸和平移得到,所以这里我们只考虑标准正态分布的采样。另外,几乎所有的采样方法都是以均匀分布随机数作为基本操作,因此这里假设我们已经有均匀分布随机数生成器了。均匀分布随机数一般用线性同余法来生成(伪随机数),具体参见文献[1]。

常见的采样方法有逆变换法 (Inverse Transform Method)、拒绝采样法 (Rejection Sampling)、重要性采样及其重采样 (Importance Sampling, Sampling-Importance-Resampling)、马尔科夫蒙特卡洛采样法 (Markov Chain Monte Carlo) 等。具体到高斯分布,我们需要如何采样呢? 

 

如果直接用逆变换法,基本操作如下:

技术分享图片

 

上述逆变换法需要求解erf(x)的逆函数,这并不是一个初等函数,没有显式解,计算起来比较麻烦。为了避免这种非初等函数的求逆操作,Box-Muller算法采用如下解决方案:既然单个高斯分布的累计分布函数不好求逆,那么两个独立的高斯分布的联合分布呢?假设x, y是两个服从标准正态分布的独立随机变量,它们的联合概率密度为:

技术分享图片

考虑(x, y)在圆盘(xy) | x2 + y2 ≤ R2上的概率:

技术分享图片

通过极坐标变换将(x, y)转化为(r, θ),可以很容易求得上述二重积分:

技术分享图片

这里F(R)可以看成是极坐标中r的累积分布函数。由于F(R)的计算公式比较简单,逆函数也很容易求得,所以可以利用逆变换法来对r进行采样;对于θ,在[0, 2π]上进行均匀采样即可。这样就得到了(r,θ),经过坐标变化即可得到符合标准正态分布的(x, y)。具体采样过程如下:

技术分享图片

 

Box–Muller算法由于需要计算三角函数,相对来说还是比较耗时,而Marsaglia polar method则避开了三角函数的计算,因而更快,其具体采样操作如下:

技术分享图片

 

除了逆变化法,我们还可以利用拒绝采样法,选择一个比较好计算累积分布逆函数的参考分布来覆盖当前正态分布(可以乘以一个常数倍),进而转化为对参考分布的采样以及对样本点的拒绝/接收操作。考虑到高斯分布的特性,这里可以用指数分布来作为参考分布。指数分布的累积分布及其逆函数都比较容易求解。由于指数分布的样本空间为x≥0,而标准正态分布的样本空间为(-∞, +∞),因此还需要利用正态分布的对称性来在半坐标轴和全坐标轴之间转化。具体来说,取λ=1的指数分布作为参考分布,

技术分享图片

实际应用时,M需要尽可能小,这样每次的接受概率大,采样效率更高。因此,可以取

技术分享图片

因此,具体的采样过程如下:

技术分享图片

 

拒绝采样法的效率取决于接受概率的大小:参考分布与目标分布越接近,则采样效率越高。有没有更高效的拒绝采样算法呢?这就是Ziggurat算法,该算法本质也是拒绝采样,但采用多个阶梯矩形来逼近目标分布(如图1所示)。Ziggurat算法虽然看起来稍微繁琐,但实现起来并不复杂,操作也非常高效,其具体采样步骤可以参考文献[2]。

技术分享图片

图1  Ziggurat算法

(图片来源于Numerical Computing with MATLAB第九章Random Numbers)

 

总结与扩展

高斯分布的采样方法还有很多,我们只列举了几种最常见的。具体面试时,候选人不需要回答所有的方法,知道其中一两种即可,面试官可以针对这一两种方法深入提问,如理论证明、优缺点、性能等。如果候选人没有思路,面试官可以引导其回忆那些通用的采样方法,如何将那些策略用到高斯分布这个具体案例上。另外,本题还可以适当扩展,把一般的高斯分布换成截尾高斯分布 (Truncated Gaussian Distribution) ,如何采样?如果是高维随机变量,拒绝采样法会存在什么问题?怎么解决呢?

 

参考文献:

[1] Linear congruential generator,

https://en.wikipedia.org/wiki/Linear_congruential_generator

[2] Ziggurat algorithm,

https://en.wikipedia.org/wiki/Ziggurat_algorithm

 


 

下一题预告

【多层感知机与布尔函数

 

场景描述

神经网络概念的诞生很大程度上受到了神经科学的启发。生物学研究表明,大脑皮层的感知与计算功能是通过分多层实现的,例如视觉图像,首先光信号进入大脑皮层的V1区,即初级视皮层,之后依次通过V2层,V4层,即纹外皮层,进入下颞叶参与物体识别。深度神经网络,除了其模拟人脑功能的多层结构,最大的优势在于能够以紧凑简洁的方式来表达比浅层网络更复杂的函数集合(这里的“简洁”可定义为隐层单元的数目与输入单元的数目呈多项式关系)我们的问题将从一个简单的例子引出,已知神经网络中每个节点都可以进行“逻辑与/或/非”的运算,如何构造一个多层感知机 (Multi-Layer Perceptron, MLP) 网络实现n个输入比特的奇偶校验码(任意布尔函数)?

 

问题描述

  1. 如何用多层感知机实现一个异或逻辑(仅考虑二元输入)?

  2. 如果只使用一个隐层,需要多少隐节点能够实现包含n元输入的任意布尔函数?

  3. 上面的问题中,由单隐层变为多隐层,需要多少节点?

  4. 合理配置后所需的最少网络层数是多少?

hulu机器学习问题与解答系列|十八:svm–核函数与松弛变量

嗨,又见面了~你可以进入公众号,点击菜单栏的“机器学习”回顾本系列的全部内容,并留言与作者交流。 今天的内容是【SVM–核函数与松弛变量】 场景描述当我们在SVM中处理线性不可分的数据时,核函数可以对数据... 查看详情

hulu机器学习问题与解答系列|第四弹:不均衡样本集的处理

Hulu机器学习系列按时来报到~快搬好小板凳,一起来学习吧 今天的主题是【采样】 引言古人有云:“知秋一叶,尝鼎一脔”,其中蕴含的就是采样思想。采样,就是根据特定的概率分布产生对应的样本点。对于一些简... 查看详情

hulu机器学习问题与解答系列|第一弹:模型评估

...这是科学家门捷列夫的名言。在计算机科学中,特别是在机器学习的领域,对模型的测量和评估同样至关重要。只有选择与问题相匹配的评估方法,我们才能够快速的发现在模型选择和训练过程中可能出现的问题,迭代地对模型... 查看详情

hulu机器学习问题与解答系列|十二:注意力机制

几天不见想死你们啦~今儿的课题很好玩,跟上队伍一起来读! 今天的内容是【注意力机制】 场景描述作为生物体,我们的视觉和听觉会不断地获得带有序列的声音和图像信号,并交由大脑理解;同时我们在说话、打字... 查看详情

hulu机器学习问题与解答系列|第七弹:非监督学习算法与评估

听说,Hulu机器学习与冬日的周末更配噢~ 你可以点击菜单栏的“机器学习”,回顾本系列前几期的全部内容,并留言发表你的感悟与想法。同时,为使大家更好地了解Hulu,菜单“关于Hulu”也做了相应调整,好奇宝宝们,牌... 查看详情

hulu机器学习问题与解答系列|十五:多层感知机与布尔函数

今天没有别的话,好好学习,多多转发!  本期内容是【多层感知机与布尔函数】 场景描述神经网络概念的诞生很大程度上受到了神经科学的启发。生物学研究表明,大脑皮层的感知与计算功能是通过分多层实现的,... 查看详情

hulu机器学习问题与解答系列|第六弹:pca算法

好久不见,Hulu机器学习问题与解答系列又又又更新啦! 你可以点击菜单栏的“机器学习”,回顾本系列前几期的全部内容,并留言发表你的感悟与想法,说不定会在接下来的文章中看到你的感言噢~  今天的主题是... 查看详情

hulu机器学习问题与解答系列|第九弹:循环神经网络

...NN问题的解答。记得多多思考和转发,公式供应充足的Hulu机器学习系列,怎么能只自己知(shou)道(nue)  ~  今天的内容是【循环神经网络】 场景描述循环神经网络(RecurrentNeuralNetwork)是一种主流的深度学习模型... 查看详情

hulu机器学习问题与解答系列|十九:主题模型

今天的内容是【主题模型】 场景描述基于Bag-Of-Words(或N-gram)的文本表示模型有一个明显的缺陷,就是无法识别出不同的词(或词组)具有相同主题的情况。我们需要一种技术能够将具有相同主题的词(或词组)映射到同一... 查看详情

hulu机器学习问题与解答系列|第八弹:强化学习

...的要素,例如环境:游戏本身的状态,动作:用户操作,机器人:程序,回馈:得分、输赢等。通过输入原始像素来玩视频游戏,是人工智能成熟的标志之一。雅达利(Atari)是20世纪七八十年代红极一时的电脑游戏,类似于国... 查看详情

hulu机器学习问题与解答系列|十七:随机梯度下降算法之经典变种

这是本周第二篇机器学习,也是Hulu面试题系列的第十七篇了~之前的所有内容都可以在菜单栏的“机器学习”中找到,愿你温故,知新。 今天的内容是【随机梯度下降算法之经典变种】 场景描述提到DeepLearning中的优化方... 查看详情

hulu机器学习问题与解答系列|二十三:神经网络训练中的批量归一化

来看看批量归一化的有关问题吧!记得进入公号菜单“机器学习”,复习之前的系列文章噢。 今天的内容是【神经网络训练中的批量归一化】 场景描述深度神经网络的训练中涉及诸多手调参数,如学习率,权重衰减系数... 查看详情

hulu机器学习问题与解答系列|二十一:分类排序回归模型的评估

本期问题的解答结合了具体的Hulu业务案例,可以说是很有趣又好懂了。快快学起来吧!  今天的内容是【分类、排序、回归模型的评估】 场景描述在模型评估过程中,分类问题、排序问题、回归问题往往需要使用不... 查看详情

hulu机器学习问题与解答系列|十六:经典优化算法

HappyNewYear! 新年伊始,我们都会在祝福他人之余,为自己暗暗定下几个小目标。那就从现在开始努力吧,跑得更快一点,才会让时间显得慢一些~ 今天的内容是【经典优化算法】 场景描述针对我们遇到的各类优化问题... 查看详情

hulu机器学习问题与解答系列|二十二:特征工程—结构化数据

...问题寻找有效的特征并进行处理成适合模型的输入形式。机器学习中有句经典的话叫做“Garbagein,garbageout”,意思是如果输入的数据是垃圾,那么得到的结果 查看详情

hulu机器学习问题与解答系列|十一:seq2seq

你可以点击菜单栏的“机器学习”,回顾本系列前几期的全部内容,并留言发表你的感悟与想法。 今天的内容是【Seq2Seq】 场景描述作为生物体,我们的视觉和听觉会不断地获得带有序列的声音和图像信号,并交由大脑... 查看详情

sigai机器学习第二十四集高斯混合模型与em算法

讲授聚类算法的基本概念,算法的分类,层次聚类,K均值算法,EM算法,DBSCAN算法,OPTICS算法,meanshift算法,谱聚类算法,实际应用。大纲:聚类问题简介聚类算法的分类层次聚类算法的基本思想簇之间距离的定义k均值算法的... 查看详情

机器学习问题与解答系列(17-24)

老朋友了,还用多说什么吗?点击下面的链接复习咯: 17. 随机梯度下降算法之经典变种18. SVM—核函数与松弛变量19. 主题模型20. PCA最小平方误差理论21. 分类、排序、回归模型的评估22. 特征工程—结构... 查看详情