背景
传统的机器学习 (ML) 模型和人工智能技术通常存在一个严重缺陷:缺乏不确定性的量化。
- 这些模型通常提供点估计,而不考虑其预测的不确定性。
- 这种限制削弱了评估模型输出可靠性的能力。
- 传统的机器学习模型需要大量数据,并且通常需要正确标记的数据,因此往往会遇到数据有限的问题。
- 这些模型缺乏将专家领域知识或先验信念纳入模型的系统框架。
- 无法利用特定领域的见解,该模型可能会忽略数据中的关键细微差别,并且往往无法发挥其潜力。
概率编程:应对这些挑战的解决方案
概率编程提供了一个解决这些挑战的建模框架。其核心是贝叶斯统计,它背离了统计的频率论解释。
贝叶斯统计
在频率统计中:
- 概率被解释为事件的长期相对频率。
- 数据被认为是随机的,是从固定定义的分布中采样的结果。
- 因此,测量中的噪声与采样变化相关。
频率论方法不会将概率分布分配给参数,它们对不确定性的解释植根于估计量的长期频率特性,而不是关于参数值的明确概率陈述。
在贝叶斯统计中:
- 概率被解释为特定信念的不确定性度量。
- 数据被认为是固定的
- 系统的未知参数被视为随机变量并使用概率分布进行建模。
概率机器学习
在频率机器学习中,模型参数被视为固定的,并通过最大似然估计 (MLE) 进行估计,其中似然函数量化了给定统计模型观察数据的概率。 MLE 寻求参数的点估计以最大化该概率。实施 MLE:
- 假设一个模型和底层模型参数。
- 根据假设的模型推导似然函数。
- 优化似然函数以获得参数的点估计。
相反,贝叶斯方法对未知参数及其与概率分布的关系进行建模,并在我们获得新数据时使用贝叶斯定理来计算和更新这些概率。
贝叶斯定理: “贝叶斯规则告诉我们如何从联合joint中导出条件概率,条件告诉我们如何合理地更新我们的信念,而更新信念就是学习和推理的全部内容”
后验P(B|A) = 可能性P(A|B) * 先验P(B) / 边际似然P(A) |
简单但强大的方程式。
- 先验Prior: 表示对未知参数的初始信念
- 可能性Likelihood:表示基于假设模型的数据的概率
- 边际似然Marginal Likelihood: 是模型证据,是一个归一化系数。
- 后验分布Posterior distribution:代表了我们对参数的更新信念,结合了先验知识和观察到的证据。
在贝叶斯机器学习中,推理是基本工具:利用 后验分布所代表的参数分布进行推理,提供对不确定性的更全面的理解。
如何对后验分布建模
大多数情况下看似简单的后验分布很难计算。
特别是,分母(即边际似然积分)往往是可交互的,尤其是在使用更高维度的参数空间时。
在大多数情况下,没有封闭式解决方案,数值积分方法的计算量也很大。
为了应对这一挑战,我们依靠一类特殊的算法(称为马尔可夫链蒙特卡罗模拟)来对后验分布进行建模。
这里的想法是从后验分布中采样,而不是对其进行显式建模并使用这些样本来表示模型参数的分布。
马尔可夫链蒙特卡罗 (MCMC)
MCMC 方法包含一类从概率分布中进行采样的算法。通过构造一个将所需分布作为其平衡分布的马尔可夫链,人们可以通过记录链中的状态来获得所需分布的样本”。
一些常用的 MCMC 采样器是:
- 大都会-黑斯廷斯Metropolis-Hastings
- 吉布斯采样器
- 哈密顿蒙特卡罗 (HMC)
- 禁止掉头采样器 (NUTS)
- 顺序蒙特卡罗 (SMC)
概率编程
概率编程(Probabilistic Programming)是贝叶斯统计的一个编程框架,即开发用于表示条件推理问题的语言的语法和语义,并为这些推理问题开发 "求解器"。从本质上讲,概率编程对于贝叶斯建模的意义就如同自动区分工具对于经典机器学习和深度学习模型的意义。
概率编程语言的生态系统多种多样,每种语言都有自己的语法、语义和功能。
概率编程语言有一个共同的工作流程,概述如下:
- 模型定义:模型定义:定义数据生成过程、潜在参数及其相互关系。这一步需要仔细考虑底层系统及其行为假设。
- 先验分布规范:定义模型中未知参数的先验分布。 这些先验值包含了实践者在观察任何数据之前对参数的信念、领域或先验知识。
- 似然规范:描述似然函数,表示以未知参数为条件的观测数据的概率分布。似然函数量化了模型预测与观测数据之间的一致性。
- 后验分布推断:根据观测数据,使用采样算法近似计算模型参数的后验分布。这通常包括运行马尔可夫链蒙特卡罗(MCMC)或变量推理(VI)算法,从后验分布中生成样本。