你知道贝叶斯法则。机器学习与它有何相关?它可能很难掌握如何把拼图块放在一起——我们了解它花了一段时间。
贝叶斯和频率论者
在本质上,贝叶斯意味着概率。这个具体的术语存在是因为有两个概率方法。贝叶斯认为这是一个衡量的信念,因此,概率是主观的,并且指向未来。
频率论者有不同看法:他们用概率描述过去发生的事件——这种方式是客观的并且不取决于一个人的信念。这个名字来源于一个方法——例如:我们掷硬币100次,它出现头53次,所以频率/概率为0.53。
先验概率,更新和后验概率
我们从一种信念开始,叫做先验。然后,我们获得了一些数据,并且用它来更新我们的信念。这个结果被称为后验概率。如果我们获得更多的数据,旧的后验成为一个新的先验并且循环重复。
这个过程采用贝叶斯规则:
P(A | B)读作 给定B事件的A的概率,表示一个条件概率:如果B发生了A有多少可能发生。
从数据中推断模型参数
在贝叶斯机器学习中,我们利用贝叶斯规则从数据(D)来推断模型参数(θ):
这个所有组成部分都是概率分布。
P(data)是我们通常无法计算的东西,但是因为它只是一个标准化的常数,它并没有那么重要。当我们比较模型,我们主要对含有θ的表达感兴趣,因为P(data)对每个模型都保持着相同的值。
P(theta)是先验概率,或我们信仰模型参数的可能。我们在这件事情上大多数的观点是相当模糊的,如果我们有足够的数据,我们根本就不那么在意。推测需要收敛到可能的θ,只要它不是在先验概率中为零。一个指定的先验概率以一个参数化分布。
P(theta | D)称为给定的模型参数数据的可能性。相似的公式是模型的特异性。人们经常使用的可能性评估模型:一个提供更高的可能性给更好的数据的模型。最后,P(theta | D)一个后验概率。是我们所追求的。这是一个概率模型参数,包括最有可能的评估,这些评估从先验概率信念和数据中获得。
注意选择一个模型可以看做是从模型(超)参数中出来的。然而,在实际中,他们通常是一起执行的,例如,通过验证。
方法谱
有两种主要方式的贝叶斯。让我们称之为第一统计模型和二次概率机器学习。后者包含所谓的非参数方法。
统计模型
贝叶斯模型适用于数据是稀缺的,珍贵的,很难获得的,例如在社会科学和其他设置,很难进行大规模的控制实验。想象一个精心构建和调整的模型,利用所谓他所拥有的小数据。在这个设置中,你不遗余力地更好地使用可用的输入。
此外,小数据对于要量化的不确定性是非常重要的,这正是贝叶斯方法擅长的地方。
最后,我们将看到,贝叶斯方法通常是计算昂贵的。这又伴随着小数据。
要获得一个口味,考虑使用回归分析和多层/层次模型的数据分析的例子。这是一本关于线性模型的整本书。他们从一个爆炸开始:一个没有预测的线性模型,然后通过一些线性模型与一个预测因子,两个因子,六个预测因子,直到11个。
针对当前的趋势,这种劳动密集型的模式,机器学习使用数据以供计算机自动学习。
概率机器学习
让我们试着用”概率”替换”贝叶斯”。从这个角度看,它与其他方法不同。尽可能的分类,大多数分类是能够输出的概率预测。即使是支持一个对立的贝叶斯分类的向量机。
通过这种方式,这些概率是一个分类信念的陈述。他们是否符合实际的概率是另一个问题,它被成为校准。
还有另外一件事是置信区间(错误栏)。你可以在回归中观察到。大多数的”正常”的方法只提供估计。贝叶斯方法,如贝叶斯版本的线性回归,或高斯过程,也提供不确定性估计。
不幸的是,这并不是故事的结尾。即使是复杂的如GP的方法通常假设方差齐性,即操作,均匀噪声水平。在现实中,噪声可能是异方差。看到下面的图像。
LDA
Latent Dirichlet Allocation是另一个方法的例子,允许把数据它整理出来。它类似于矩阵分解模型,特别是非负的MF。你开始使用一个其中行是文档,列是单词的矩阵,每个元素都是一个给定的文档中给定单词的计数。LDA”factorizes”这个矩阵大小为nxd为两个矩阵,文件/主题(N×K)和主题/词(K x D)。
不同是,你不能把这两者相乘得到原始,但由于适当的行/列总和为一,你可以尝试一个文件。对于第一个单词,一个样本,一个主题,然后从这个主题的一个字(第二矩阵)。重复你想要的单词的数量。注意,这是一个词的包的表示,而不是一个适当的序列。
这是一个生成模型的例子,意味着一个从该模型中可以示例,或生成实例。通常的分类判别:他们的模型P(Y | X),直接歧视基于X的生成模型类之间的关注与x和y的联合分布,P(Y,X)。估计它的分布是比较困难的,但它允许采样可以得到P(Y | x)P(Y,X)。
贝叶斯非参数
虽然没有确切的定义,但这个名字意味着在一个模型中的参数的数目可以随着数据的增加而增加。这是类似于支持向量机,例如,在那里的算法选择支持向量的训练点。例子是非参数高斯和LDA分层Dirichlet过程的版本,其中的一些话题选择自动。
高斯过程
高斯过程有点类似SVM使用核和有类似的可扩展性(通过这些年用近似的值已大大提高)。一种自然的配方让高斯过程成为一个回归,伴随着一种事后的分类。对于支持向量机来说,这是其他的方式。另一个区别是,高斯过程是概率从地面向上(提供错误的栏),而支持向量机不是。
大多数高斯过程的研究似乎发生在欧洲。英国人做了一些有趣的工作,使高斯过程更容易使用。其中一个项目是由zoubin Ghahramani团队设计的。自动统计
高斯过程比较流行的应用是超参数优化机器学习算法。数据是很小的,不仅是在维度-通常只有几个参数调整,也在一些数量的例子。每个例子代表一个目标算法的运行,这可能需要数小时或数天。因此,我们希望尽可能少的例子来获得好的东西。
模型与推理
推理是指你如何学习参数的模型。模型与你是如何训练它是分离的,特别是在贝叶斯世界。
考虑到深度学习:你可以使用亚当的网络训练,rmsprop或其他一些优化。然而,他们往往是相当相似的,所有的随机梯度下降的变种。相比之下,贝叶斯推理的方法不同于更深刻地彼此。
最重要的方法是蒙特卡罗抽样和变分推理。采样是金标准,但速度慢。从主算法摘录有更多MCMC。
变分推理是一种设计的方法,明确地以贸易的速度的一些精度。它的缺点是它的模型是特定的,但有光在隧道尽头-看到下面的软件部分。
软件
最明显的一天可能是斯坦贝叶斯软件。斯坦是一个概率的编程语言,它允许你指定你想要的东西和火车的贝叶斯模型。它运行在Python中,R和其他语言。斯坦有一个现代化的采样器叫坚果:
大部分的计算在斯坦通过用Hamiltonian Monte Carlo。HMC需要一些调整,所以MattHoffman,写了一个新的算法,坚果(“no-u-turn采样器”)HMC自适应优化。在许多设置,坚果实际上是比最优静态HMC更有效计算!
变分推理是一种近似贝叶斯推理的可伸缩技术。派生变分推理算法需要繁琐的模型特定的计算,这使得它难以自动化。我们提出了一个自动变分推理算法,自动微分变分推理(建议)。用户只提供了一个贝叶斯模型和数据集,没有其他。
这种技术方法应用至少为中型数据小风格造型。
在Python中,最受欢迎的包是PYMC通讯。这是不发达或抛光的(开发者似乎与斯坦的追赶),但还是不错的。这里的坚果和咨询PYMC通讯有一个minibatch咨询实例笔记本。该软件采用西雅娜作为后台,所以它比纯Python更快。
infer.net是微软文库的概率规划。它主要应用在如C和F # #语言,但显然也被称为从IronPython的NET。使用默认infer.net期望传播。
此外,还有无数的包实践各种口味的贝叶斯计算,从其他编程语言实现专业的LDA概率。一个有趣的例子是crosscat:
crosscat是一个主要的域,高维数据分析表的贝叶斯方法。Crosscat估值共同分布在表中的变量数据,通过在一个分层的近似推理,非参数贝叶斯模型,并为每一个条件分布提供了有效的采样。crosscat结合非参数混合模型和贝叶斯网络结构学习的优势:它可以模拟任何的定位的潜变量的联合分布给出足够的数据,但也发现观测变量之间的独立性。
原文:http://www.36dsj.com/archives/46499