本小节阅读:
MLAPP:第三章
CS229:Naive bayes
贝叶斯概念学习
我们考虑一个小孩学习一个词的过程,比如“狗”。大概是小孩的父母指出了这个词的一些正例,比如说:“看那条可爱的狗”或者“记住那条小狗”等等。然而,他们是不太可能提供如“看那条不是狗的东西”的负例。当然,负例也可能在动态学习的过程中接触到,比如父母可能纠正小孩的错误:“那是一只猫,不是一条狗。” — 但是心理学研究者已经指出人类可以仅仅通过正例学习概念。
我们可以认为学习一个词的含义和概念学习是等价的,而概念学习反过来和二分类等价。如果x是一个概念C的样例则定义f(x)=1,否则f(x)=0,我们的目标就是学习这么一个指示函数f。为了允许f具有不确定性,我们可以效仿”fuzzy
set theory”,而不仅仅使用标准的概率计算。注意到标准的二分类需要正例和负例,作为对比我们将考虑一个仅仅使用正例的方法。
为了教学目的,我们考虑概念学习的一个非常简单的例子,叫“数字游戏”,基于Josh Tenenbaum的PhD论文。这个游戏这么进行:我选择一些简单的数学概念C,比如“素数”或者“1到10的一个数字”。然后我给你一些从C中随机挑选的正例D=x1,…,xN,然后问你新的测试样例x?是否属于C,其实也就是对x?进行分类。
假设,为了简单起见,所有的数字均为1-100的整数。现在我告诉你一个概念:16是一个正例,其他哪些数字你认为是正例呢?17?6?32?99?仅仅基于一个例子很难回答这个问题,你的回答可能非常含糊。可能一些和16在某种意义上相似的数字是有可能的,但怎样才算是相似呢?17就和16相似,因为接近;6也是相似的,因为有一个共同的数字;32是16的两倍因此也是相似的;99看起来就不怎么相似了。因此一些数字比其他的数字要更加又可能是答案。我们可以把这种性质用概率分布来表示p(x?|D)表示在给定数据D的情况下,x?属于C的概率,这个概率分布叫“后验预测分布”,我们可以看到在一个实验里人们预测的数字和16有一定的相似性。
假设现在我告诉你8,2,64也是正例,你现在可能会猜测隐含的概念是“2的幂”,这是一个“归纳”的例子。给定这个假设,对应的预测分布就很明确了,其质量将集中在2的幂。而如果我告诉你数据D={16,23,19,20},你会得到的另一种一般化的梯度。
我们如何解释这种行为并用机器进行模拟呢?一个归纳的经典做法是假设我们有一批概念组成的假设空间,设为H,如:偶数、基数、1-100的所有数字,2的幂,以j结尾的数字等等。与D一致的H的子集我们称为可见空间。随着我们看到更多的样例,可见空间逐渐变小,我们对要推测的概念更加确定。
然而,可见空间并不是全部的故事,在看到数据D={16}后,有很多一致的规则,你如何用他们的组合去预测x?是否属于C?还有,在看到数据D={16,8,2,64}后,为什么你选择规则“2的幂”,而不是“所有偶数”、“除32外2的幂”,这些也是与数据一致的?我们现在将为此提供一个贝叶斯的解释。
Likelihood
似然度就是指通过一定假设是我们观察到数据样本的概率,表示为下:
这里size(h)是指咱们假设空间的样本,例如咱们假设结尾为9的数字,根据假设空间的其他限定条件(1,100),那么这个假设空间只有10个数符合条件,9,19,29......99,那么根据概率的乘法原则,且假设N个样本中每个样本都是独立同分布的,那么就能得到上面的概率计算公式。
所以这里假设样本的分布为偶数的概率是,p(D|heven)
= 1/50,假设是2次方的概率是:p(D|htwo)
= 1/6 。可以带入计算得出2次方的概率是偶数的5000倍之多。
先验概率
先验概率往往是凭借直觉,这个假设可能性大,而那个不太可能,这也是贝叶斯分析方法中争议最大的地方。
后验
后验是指观察到数据之后,我们需要得到假设分布的概率,表示为:
上公式是根据贝叶斯原理,所以后验概率就是先验和似然度的结合体,如果大多数情况下h的发生概率一样,那么后验概率就直接取决于先验概率了。以下是当我们看到一个数据点为16时,对分布空间h的猜测:
我们可以看到在先验概率中,凭直觉,odd和even这两个假设的概率明显高于其他,因为他们是最简单的假设,但是当16这个数据点出现后,似然度就发生了明显的变化,原来遥遥领先的odd现在降为了零,再看后验概率,他就是先验后似然度的结合体。
所以,只要咱们有足够的数据支持,那么后验概率p(h|D)必将在某一个假设上的概率为1.这也叫做MAP(最大后验估计),也可以写成下式:
因为似然度这项依赖于N的指数级,但是先验概率始终不变,那么当数据量越来越大,N越来越大,后验概率就主要依赖于似然概率,所以最大后验估计就变为了咱们以前接触过的最大似然估计:
所以,通俗来讲,如果有足够的数据,那么数据终将战胜先验,所以咱们的bayes方法不就靠谱了嘛。下面就是例证,当数据量上升为{2,8,16,64}时,后验概率集中于2次方这个假设了。证明了随着数据量的增加,MAP最终收敛与MLE。
Posterior predictive distribution
要验证后验概率估计的准确与否,可以用它来估计新的样本,后验估计分布表示如下:
其中p(h|D)是咱们之前算的后验概率,而p(y=1|x,h)是指在这个假设h下观察到了样本x,这个x属于类别1的概率。前面的累加符号表示的是在所有的假设空间执行累加的计算,这就算出了y=1这个类别在所有假设空间中的概率总和,其实这个公式细看就是一个加权平均值,权值就是特定假设发生的概率,其实也就是后验概率。所以这个方法也叫做Bayes model averaging
。
下图明确的表示了这种方法:
假设空间中有多个符合条件的假设,每个的后验概率在上图的最右方,最终可以将他们的预测带入之间的公式得出预测的结果在最顶端。
但是当数据量积累到了一定量,即后验概率收敛于1个假设,那么公式就变成下面的了:
where:
就是其他的假设都变成0概率了,独留下我一个牛逼的假设为1,那么最终也就是我有话语权了。这个学名叫做plug-in approximation 。
在贝叶斯方法中,我们先是得到很广的假设空间,通过不断的观察新的信息,来缩窄假设空间,
The beta-binomial model
Likelihood
假设Xi∼
Ber(θ),Xi=1表示硬币头朝上,Xi=0,表示硬币头朝下,θ∈
[0,1] 表示的是头朝上的概率。如果咱们得到的数据是idd的。根据独立性,那么似然度为:
这里N1表示样本中头朝上的次数,N0表示样本中背部朝上的次数。
先验概率
为了方便计算,我们将先验概率假设为似然度函数的相似形式,引入了两个参数。
所以可以得到先验概率为:
当先验和后验相同的形式时,我们先验为相应似然的共轭先验。由于容易计算和解释,共轭先验被广泛使用。
后验概率
根据后验概率的公式,与先验和似然函数的乘积相关,这里设先验概率为beta分布,可以得到:
由指数的相加性得到:
p(θ|D)∝Beta(θ|N1+a,N0+b)
适合在线学习:
事实上,就是在超参加上统计量就得到后验了,因此超参也叫“伪计数”。先验的优点在于effective sample size,也就是伪计数a+b的和,这和数据的和(
N1+N0=N)相似。如果在一个弱的先验上,乘以一个很陡的似然,我们看到后验会更像似然;反过来呢,我们会看到后验在似然和先验两者中间。(下图)注意到序列化地更新后验(每来一个样例更新一次)和批量更新是等价的。这使得贝叶斯推断十分适合用于“在线学习”。
根据之间得到beta分布的一下性质:
得到:
当N》》a, b时,方差可以简化为:
均值和众数都是点估计,但是这对于我们是否应该相信结果的分析是很有帮助的,方差也是一种衡量的方法,书上这里分析了标准差,他是以1/N ̄ ̄√的速率下降的(这里可以从一定程度上说明数据越多,我们这个估计方法的误差越小)。另外,方差在θ? =0.5的时候最大,接近1或者0的时候最小,这说明硬币如果越不平衡结果越可靠。
Posterior predictive distribution
对于未来观察到的新的样本,咱们如何预测呢?假设后验概率服从beta分布。
过拟合和黑天鹅悖论
假如我们使用MLE的结果来预测,近似的结果将会非常糟糕,比如我们的数据是N=3个尾,MLE的上诉结果为0。这称为“0计数问题”或者“稀疏数据问题”,这在数据比较少的情况下经常出现。可能有人会觉得在大数据领域这种问题不会出现,但是注意一定我们把数据以一定标准进行切分,问题将会出现,比如在在网页中进行个性化推荐。因此贝叶斯方法在大数据背景下依旧十分有用。
0计数问题和哲学上一个叫“黑天鹅悖论”的问题是相似的,因为在古代西方的天鹅都是白的,黑天鹅意味着不可能存在的东西(黑天鹅17世纪在澳大利亚被发现)。这个悖论被用于解释归纳,即通过过去的一些观测去总结关于未来的一些通用的结论。
现在让我们推导一个这问题的简单的贝叶斯结论。我们使用一个平均分布作为先验,即a=b=1,在这个例子下,带入到后验的均值中,我们得到Laplace’s rule of succession
p(x? =1|D)=N1+1N1+N0+2
这个结果是按经验计数的结果加1,归一化然后带入,这是一种叫“加1平滑”的技术,后面专门讲下laplace平滑。
The Dirichlet-multinomial model
之前咱们模拟了一个两面色子的情况,现在如果有个K面色子,怎么办呢?
Likelihood
设有一个N面色子:D ={x1,...,xN},
andxi∈ {1,...,K}
,似然函数如下:
说白了就是没面发生了多少次,然后概率相乘。
先验概率
同样的,这里的先验是共轭先验,与似然函数有着类似样子,方便求后验的时候好操作。
后验概率
后验概率计算和之前一样。
但是咱们怎么做最大后验估计MAP呢?可以将其转换为一个优化问题。
constrain:
maxims:
分别求导,可以得出:
Posterior predictive
Naive Bayes classifiers
朴素贝叶斯这块儿MLAPP上写得过于复杂了,我就以CS229的讲义为主了:
朴素贝叶斯之所以朴素,是因为它假定了features之间是条件独立的:
这个模型有一些参数是需要通过训练数据求到的,我们先来分析是哪些参数,根据贝叶斯公式,我们要预测一个词向量属于y=1的概率为:
那么我们需要通过训练数据求:
第一个是求P(xi | y=1)的概率,第二项是求:P(xi | y=0)的概率,第3项是求y等于各个类别的概率,把它们带入上式就能求得最终y=1的概率了,所以这个模型非常简单。但是有一些问题需要注意。
Laplace smoothing
这里的主要问题是如果在咱们预测的词向量里出现了一个以前从未见过的词会对算法产生什么影响,以及怎么办呢?假设是第3500号词:
我们会发现上述概率会为零,如果将他们带入咱们的预测公式,那么会导致预测的概率为0:
咱们可以通过拉普拉斯平滑来解决,公式如下:
所以当咱们计算各个参数的时候,用这样的形式就可以了:
References
MLAPP
CS229
版权声明:本文为博主原创文章,未经博主允许不得转载。