贝叶斯公式,在大学数学有接触过,我们用它来计算条件概率,如医学诊断的检测结果是阳性时真正患某病的可能性。但我们并没有意识到这个美妙公式背后蕴含的智慧,及其在机器学习领域越来越重要的地位。
P(A|B) = P(B|A)P(A)/P(B)
贝叶斯公式是贝叶斯思想的数学表达,贝叶斯思想区别于人类习惯性思维,提供了一种从不确定性(也叫概率性)去理解世界的新角度。它认为我们所看到的世间万物,只是各自真实数据分布的一个随机观测样本,如果用样本的经验分布去当作该事物的真实分布,就会像盲人摸象般得到片面的结论。举个栗子,
- 我们习惯从频率出发,用搜集到的所有身高样本得到一个经验分布,去描述整个观测群体的身高分布。当有新的样本进入,这个经验分布就立刻被丢弃,需要用所有样本重新计算。
- 然而因为采样的随机性,多份样本各自的经验分布也构成了一个分布,经验分布的分布不光能描述搜集到的样本,还能泛化到未曾观测的样本空间去预测和发现未知的数据分布。当有新的样本进入,只需要用新样本去更新之前已求得的经验分布,等于将经验分布变成先验置信持续进入系统调整后验分布。这种“分布之分布”超越了人类直观判断的能力,为我们在有限数据集下更迅速更准确地揭开真实分布的数据结构,提供了一种有效的方法。
所以将世界看成概率性的,利用有限样本经验分布(先验置信)的分布,去趋近数据整体的真实分布(后验置信),这个优化过程便是贝叶斯思想的核心。这套逻辑也奠定了机器学习的结构化概率模型基础,使得机器学习能够捕捉复杂的推理,发现未知,做到比我们人类懂得更多,对事物规律解释的更清晰。
接下来我们谈谈为什么机器学习模型可以利用贝叶斯思想,以及它是如何实现贝叶斯思想的。
世界是概率性的
不确定性来源的存在决定了随机变量及其概率分布才是世界的本质。
1、系统的内在随机性:除了被定义为真的数学声明,几乎所有活动都存在不确定性,对系统的建模很难完全考虑到这些随机性;
2、不完全观测:即使是确定的系统,当我们无法观测到所有变量时,该系统就会呈现随机性;
3、不完全建模:模型有时为了保证效率,会舍弃某些观测数据,舍弃的信息会导致模型预测出现不确定性。
包含不确定性的模型有时更简单更有效
简单而不确定的模型,有时候,要比复杂而确定的模型更为实用。比如“多数鸟儿都会飞”这个不确定模型,简单并且可以正确的解释、广泛的使用。而其对应的确定模型 -- “除了那些还没有学会飞翔的幼鸟,因为生病或是受伤而失去了飞翔能力的鸟,包括鸵鸟、无翼鸟等不会飞的鸟类…blablabla…以外,鸟儿会飞”,是不是很难应用、维护和沟通。可以看到,即使模型定义者经过这么多努力,这个确定的模型还是很脆弱且易于失效。贝叶斯思想使得机器学习可以从耗费精力在确定性模型构建这件事情中抽身出来,做到用简单而不确定的方式,去更合理地处理对系统的定义。
概率模型在机器学习中是个优化问题
包含不确定的模型在机器学习中叫“概率模型”,最典型的代表是生成模型(Generative Model)包括朴素贝叶斯、隐马尔科夫链、受限玻尔兹曼机等。这类概率生成模型,使用贝叶斯公式,将条件概率作为模型输出,该输出是一个分布的形态。这区别于机器学习中常见的判别模型(Discriminative Model),包括决策树、逻辑回归、支持向量机等,判别模型是用有业务意义的决策函数作为确定性模型的输出的。
为什么机器学习能够比我们懂得更多有了分布形态的模型输出,机器学习就可以把贝叶斯思想转化成一个优化问题,目标是通过输出分布之间近似度的考察,找到与真实分布最接近的经验分布的分布。概念图如下:绿色部分是系统真实的分布p,这其实是很简化的版本,机器学习研究的系统很多是结构丰富且高维的数据,分布的形式也更加复杂。p作为一个后验置信存在,我们知道它存在,但贝叶斯公式中的分母P(B)用多元积分很难计算得到。这促使我们考虑使用近似推断算法,寻求近似分布q来逼近p。蓝色部分代表在不同采样情况下经验分布的分布q,q作为一个动态的先验置信,随着新数据的加入可以不断更新它的分布形态。判断p和q近似程度的有EM期望最大化算法、稀疏编码的MAP算法和变分推断算法。变分推断(Variable Inference)由于不需要过多地人工选择模型,得到了很广泛的使用。它借助Kullback-Leibler Divergence散度指标评价p和q的近似程度,在两个分布“距离”最短时实现优化问题的求解。
为什么机器学习能够比我们懂得更多这一优化问题具体在神经网络中的实现,体现在权重生成、前向传播和反向学习上。首先,在权重生成上,如下图所示,左侧是确定性模型的三层神经网络简化图,最下层X和I是输入及偏差,中间行H1,H2,H3和I是Hidden层的神经元和偏差,最上层Y是网络输出,可以看到各层神经元之间的权重是确定性的标量;而右侧是概率模型对应的简化图,各层神经元之间的权重是用分布代表的。其次,在前向传播过程中,使用变分推断算法计算每层输出的近似分布p和KL(q/p)散度。最后,Y节点上输出的全网络累加的KL散度值作为指导,帮助反向传播完成权重的优化。
为什么机器学习能够比我们懂得更多机器/深度学习框架支持概率编程语言
概率编程语言(Probabilistic Programming Languages)提供了将概率理论与高级编程语言联系起来的思路,通过引入随机元素使程序成为概率模型,以高效的方式结合了数学的这两个重要分支,它使概率推理系统更容易构建,适用范围更广。下表罗列了部分已实现贝叶斯思想的概率性编程语言库。值得注意的是,从2017年开始,机器学习框架融合了贝叶斯、深度学习和概率编程,推出了基于TensorFlow的Edward系列库和基于PyTorch框架的Pyro库,作为用于快速实验和研究概率模型的测试平台,涵盖的模型范围从在小数据集上的经典层次模型,到在大数据集上的复杂深度概率模型,极大提升了贝叶斯思想在机器学习中实现的灵活性和计算效率。
为什么机器学习能够比我们懂得更多总结
很大程度上,人生最重要的问题就是概率问题,比如“选择比努力重要”。贝叶斯思想提供了一种描述及解决概率问题的方法论,机器学习通过将贝叶斯思想完美融合到模型优化和网络学习中,使得机器学习能够超越人类,捕捉复杂的推理,发现未知,做到比我们懂得更多。
网友评论