在人工智能AI如火如荼的大潮下,越来越多的工程师们意识到算法是AI的核心。而面对落地的应用,不懂算法的AI产品经理将是空谈,不仅无法与工程师沟通,更无法深刻理解应用的性能与方式。所以业界逐渐形成一种共识:
不懂算法的工程师做不了AI,不懂算法的产品经理将把AI带入泥潭。
而其实,AI算法没有想象的那么难,为此,机器人网整理了一整套AI算法知识,包括:
从最基本的数学基础,譬如线性代数、概率论、牛顿法等数值计算、蒙特卡洛方法与MCMC采样等;
到统计学,如:机器学习、向量、贝叶斯定理、决策树、梯度、模型评估、降维、聚类、边际、模型等等;
再到深度学习,如:前馈神经网络、反向传播算法、卷积升级网络、CNN图片分类、循环神经网络等等;
以及自然语言处理NLP等等;
还有AI算法中的各种工具和模型。
我们将把这些AI基础理论和算法以连载的形式在机器人网公众号和网站上发布,供AI爱好者免费学习。
本次连载将历时一月有余,通过这一个月的学习,AI初学者也将可能跃变成AI大神,进入未来二十年科技的金字塔尖。
当然,这需要你的坚持、专注,和努力。感兴趣的同学可以关注我们,并加微信(Aspencore6)入群分享交流。
蒙特卡洛方法与MCMC采样
作为一种随机采样方法,马尔科夫链蒙特卡罗(Markov Chain Monte Carlo,以下简称MCMC)在机器学习,深度学习以及自然语言处理等领域都有广泛的应用,是很多复杂算法求解的基础。比如分解机(Factorization Machines)推荐算法,还有受限玻尔兹曼机(RBM)原理总结,都用到了MCMC来做一些复杂运算的近似求解。
从名字我们可以看出,MCMC由两个MC组成,即蒙特卡罗方法(Monte Carlo Simulation,简称MC)和马尔科夫链(Markov Chain ,也简称MC)。要弄懂MCMC的原理我们首先得搞清楚蒙特卡罗方法和马尔科夫链的原理。
蒙特卡罗原来是一个赌场的名称,用它作为名字大概是因为蒙特卡罗方法是一种随机模拟的方法,这很像赌博场里面的扔骰子的过程。最早的蒙特卡罗方法都是为了求解一些不太好求解的求和或者积分问题。
蒙特卡罗方法的关键是得到的概率分布。如果求出了的概率分布,我们可以基于概率分布去采样基于这个概率分布的n个的样本集,带入蒙特卡罗求和的式子即可求解。但是还有一个关键的问题需要解决,即如何基于概率分布去采样基于这个概率分布的n个的样本集。
不过很多时候,我们的的概率分布不是常见的分布,这意味着我们没法方便的得到这些非常见的概率分布的样本集。那这个问题怎么解决呢?
对于概率分布不是常见的分布,一个可行的办法是采用接受-拒绝采样来得到该分布的样本。既然 太复杂在程序中没法直接采样,那么我设定一个程序可采样的分布 比如高斯分布,然后按照一定的方法拒绝某些样本,以达到接近 分布的目的,其中叫做 proposal distribution。
整个过程中,我们通过一系列的接受拒绝决策来达到用模拟概率分布的目的。
使用接受-拒绝采样,我们可以解决一些概率分布不是常见的分布的时候,得到其采样集并用蒙特卡罗方法求和的目的。但是接受-拒绝采样也只能部分满足我们的需求,在很多时候我们还是很难得到我们的概率分布的样本集。比如:
1)对于一些二维分布,有时候我们只能得到条件分布和和,却很难得到二维分布一般形式,这时我们无法用接受-拒绝采样得到其样本集。
2)对于一些高维的复杂非常见分布,我们要找到一个合适的和非常困难。
从上面可以看出,要想将蒙特卡罗方法作为一个通用的采样模拟求和的方法,必须解决如何方便得到各种复杂概率分布的对应的采样样本集的问题。而我们下一篇要讲到的马尔科夫链就是帮助找到这些复杂概率分布的对应的采样样本集的白衣骑士。下一篇我们将总结马尔科夫链的原理。
本文理论部分部分引用了刘建平Pinard的博客:https://www.cnblogs.com/pinard/p/6625739.html。
本文算法部分作者华校专,曾任阿里巴巴资深算法工程师、智易科技首席算法研究员,现任腾讯高级研究员,《Python 大战机器学习》的作者。这是作者多年以来学习总结的笔记,经整理之后开源于世。考虑到出版时间周期较长,而且书本购买成本高不利于技术广泛传播,因此作者采取开源的形式。 笔记内容仅供个人学习使用,非本人同意不得应用于商业领域。