贝叶斯方法的思想基础

进军概率深度学习的第一步,首先要弄清楚什么是贝叶斯深度学习。
而贝叶斯深度学习的基础是要搞明白贝叶斯的思想到底是个什么思想。

首先给出老生常谈的贝叶斯公式:
在这里插入图片描述
各种生动形象的例子就不自己想了,这里引用知乎一个高赞回答:

贝叶斯的想法很奇特,他想“反过来”推断概率。什么意思?就是“正常”的概率问题一般是这样的:已知一枚硬币每次扔出正面的概率是50%,求该硬币连扔10次,全部都是正面的概率是多少?这样的问题,大家都早已司空见惯,对吧?但贝叶斯突发奇想:凭什么就非要默认硬币“每次扔出正面的概率”一定是50%呢?实际上,我们并不知道硬币是什么样子,我们应该假定它“扔出正面的概率”是一个未知数!至于这个未知数究竟是多少,可以从观察到的现象出发,通过概率的方式把它“倒推”出来。就这样,贝叶斯在历史上第一次研究了所谓的“逆概率”(inverse
probability)问题。“硬币每次以50%概率扔出正面”的可能性是多少?这里牵涉到的,是一个复杂而有趣的主题,也就是“概率的概率”!为了通俗地说明贝叶斯和其他人对于概率的不同理解,我们举一个金庸小说《鹿鼎记》里的例子。柳州城中,韦小宝手下的七个御前侍卫去赌场赌钱,结果庄家一连开了13记“大”。但是这些侍卫偏不信邪,他们认定:第14次非得开出“小”来不可,结果想不到居然还是“大”,最后全部被抓住当作人质,就不再多说了。在这里,御前侍卫犯了一个人们常见的认识错误,他们以为随机就是互相“抵消”。所以如果之前开的“大”多了,接下来就一定会更多地开出“小”。而对于一般的概率论学者来说,他们显然意识到以上想法是不对的。只要各次掷骰都互相独立,那么扔出“大”的概率就不会改变。哪怕已经连续扔了13记“大”,下一次也还是全新的开始,扔出“大”的可能性依然和第一次一样。实际上,既然概率是一种“客观”的属性,那不管扔多少次,它都不会改变。但是,贝叶斯对此有着完全不同的想法。他认为,赌场开出“大”的可能性,并不是一个常数,而是随着我们的观察不断变化的!至少,如果我是御前侍卫,我不会理所当然地认为,没事没事,连开13记大只是运气不好,自认倒霉算了。相反,我会产生一个合理的怀疑:这里面有没有人在搞鬼?是不是有一些高手以我不知道的方式在背后操纵?或者这里的骰子是不是灌了铅?一开始,我的这种怀疑还只是隐隐约约,但随着赌场每开出一记“大”,我的怀疑就加深一分。连续开出13记“大”之后,我觉得,非常可能,这个赌场里的骰子确实有鬼,它投出“大”的概率要远远高于一半。在这种情况下,如果一定要下注,我宁愿跟风押“大”,除非之后的投掷结果渐趋正常,最终打消我的这种怀疑。关键在于,贝叶斯证明,这种“怀疑”是可以量化计算的。他的想法后来被大数学家拉普拉斯继承和吸收,并总结出一个可以普遍应用的公式,这就是大名鼎鼎的“贝叶斯公式”。无意之中,贝叶斯第一次触碰到了“概率”与“信息”之间的内在联系。在他看来,“骰子的概率”本身也是一个不确定的东西,它需要通过不断的观察去逐步推算。每观察一次投掷骰子的结果,我们就得到一点“信息”,从而“刷新”一次对该骰子的认识。事实上,贝叶斯本人假定“骰子公平”假设的先验概率p在【0,1】之间均匀分布。那么,如果出现了“连扔13次大”的情况,我们就可以通过贝叶斯公式准确地计算出,p落在区间【1/2,1】里面的后验概率等于1-1/2^14≈99.994%。也就是我们有99.994%的信心认为该骰子有偏好,它掷出“大”的机率要高于一半。因为具体计算过程涉及积分,我在这里就不详细写了,对数学有兴趣的读者不难自己得到同样的答案。

也就是说,贝叶斯的思想基础是:给出一个先验分布P(θ),这是我们通过先前的经验,或者在没有经验的情况下随意指定的,然后我们开始观察数据D,随着我们观察得越来越多,逐渐修正我们的P(θ),最终得到后验分布P(θ|D)。这一个过程就通过我们的贝叶斯理论完成。

回到我们的基础公式,我将它赋予新的含义:
在这里插入图片描述
其中,后验分布P(θ|D)为我们经过考虑一些观察数据以后得到的优化后的网络权重,P(D|θ)为可能性(likelihood,具体是什么以后再说),P(θ)为先验分布,相当于在观察数据之前赋予权重的分布。P(D)为数据的概率(较难理解)。

P(D|θ)

这里先解释什么是P(D|θ)。
我们称它为:可能性。
什么是可能性?好比小明在马路上减了一百块钱,告诉了他的朋友小红,小红说:“不可能吧!你点这么背!”
“不可能吧!”就是在阐述一个你点很背情况下的可能性。再如这里的转向的例子:https://www.zhihu.com/question/19725590
在十字路口打右转向等的可能性为P(D|θ)。

回到我们的模型,我们给出一组网络的权重,输入一定的x,通过权重的计算能给出一定的y是具有一定的可能性的。这里我以掷骰子为例:
一个骰子有2个面被蒙住了(被蒙住的概率是1/3),但是你事先不知道有2个面被蒙住,你想通过实验确定到底有几个面被蒙住。现在我投掷了10次骰子,有3次出现了蒙面朝上。
怎么分析呢?
首先假设,骰子有一个面被蒙住(概率为1/6),得到这个事实(投掷10次,3次蒙面朝上)能够发生的概率用二项分布算,为:
在这里插入图片描述
结果为0.62。这个就叫做“可能性”。也就是,事件已经发生(3次蒙面朝上),那么如果我的蒙面情况是这样的话,出现这种事实的概率到底是多少,这个概率也就是这种蒙面情况的可能性。
如果我将六种情况(蒙面数目0-6)均计算一遍,代码及结果如下:

import numpy as np
p = np.array([0,1/6, 2/6, 3/6, 4/6, 5/6, 1])
c = 10*9*8/3*2*1
likelihood = np.zeros((7,))
for i in range(7):
    likelihood[i] = c * (p[i] ** 3) * (1-p[i]) ** 7
import matplotlib.pyplot as plt
plt.stem(likelihood)

结果为:
array([0.00000000e+00, 6.20181438e-01, 1.04049179e+00, 4.68750000e-01,
6.50307372e-02, 9.92290301e-04, 0.00000000e+00])
在这里插入图片描述
你会发现,2的可能性最大,也就是说最有可能的情况是2个面被蒙住了。好,这也是最大似然的基本原理。但我们这里不讲最大似然估计。我们关注的是可能性的概念。
经过以上分析你会发现,可能性不是概率,因为array([0.00000000e+00, 6.20181438e-01, 1.04049179e+00, 4.68750000e-01, 6.50307372e-02, 9.92290301e-04, 0.00000000e+00])加起来并不等于1。
但是它确实表示了某种“概率”,是假设参数是这样的话,发生这种事实的情况的概率
那么为了让他强行表示概率,我们将其归一化处理:

possibility = likelihood / np.sum(likelihood)

得到归一化结果(概率)
array([0.00000000e+00, 2.82485365e-01, 4.73931799e-01, 2.13510122e-01, 2.96207374e-02, 4.51976584e-04, 0.00000000e+00])

回到贝叶斯公式中的P(D|θ):也就是假设参数为θ,由这些x产生这些y的概率(其中x,y为已知数据的pairs)(假设参数是这样的话,发生这种事实的情况的概率)。当然,这种概率我们把它称为可能性,也就是θ是这种设置的可能性。
所以有时候会写成:P(θ|D) = C * P(D|θ),左侧理解为可能性,右侧理解为概率。当然,有时候二者统一叫做可能性。其中C是归一化系数,也就是分母所除以的数字。
如果是线性回归,它又是什么呢?
在这里插入图片描述
就是以回归出来的直线上的点为均值,假设某个常数为方差,获得的数据点的概率,就是这个P(D|θ),这里的θ决定了这条直线的斜率和截距。
一定要记得,贝叶斯公式计算时运用在这里的值是归一化前的,也就是贝叶斯公式中采用的是likelihood可能性。

P(D)

P(D)是比较难理解和比较难计算的了。
回到十字路口的例子:
https://www.zhihu.com/question/19725590
在这里插入图片描述
P(B)也就是这里的P(D)。也就是在故事的整个背景下,发生现象D的概率。那么对于掷骰子来说,投掷10次,出现3次蒙面,这种情况在整个事件背景中的概率如何得知呢?
首先要知道公式p(D) = p(D|θ1) + p(D|θ2) + p(D|θ3) +…
直到考虑完所有的θ。那掷骰子问题就很好解决了:p(D) 无非是将所有条件概率加起来,也就是上

np.sum(likelihood)

array([0.00000000e+00, 6.20181438e-01, 1.04049179e+00, 4.68750000e-01,
6.50307372e-02, 9.92290301e-04, 0.00000000e+00])
也就是将他们所有都加起来。

对于掷骰子问题还稍微好想一些,因为毕竟θ有限,但是一旦θ在一个较大范围内部连续并且θ不仅代表一个参数,代表很多参数的时候,就不太好计算P(D)了甚至无法计算。

但是你要知道的是,贝叶斯方程左边是个概率分布,积分之后为1,因此右边也应该积分为1,但是对于分子,两个分布相乘以后不能满足积分为1,因此需要归一化,这个归一化便是由P(D)完成的,也就是说,P(D)是所有分子的情况的加和,对于每一个θ,可能有限个,可能无穷个,它要考虑所有的情况以使得此式子归一化。
在这里插入图片描述
有时候的确不好计算,但是我们知道它是一个固定值,是由数据D和客观世界θ的存在唯一决定的。因此只需要知道他是个常数以后,我们通过贝叶斯公式会得到:
在这里插入图片描述
这个叫做:贝叶斯准则

P(θ)

P(θ)我们称之为先验分布。在什么都不知道的情况下可以给θ一个分布(如线性回归中可以是将斜率设置为标准正态分布,等等)
当然也可以将其设置为均匀分布:P(θ)=const。
如果是这样的话,那么贝叶斯公式变成了:
在这里插入图片描述
这时候,左侧的后验分布和右侧的P(D|θ)也就是likelihood成正比。即:
在这里插入图片描述

贝叶斯方法的CPD怎么求呢?

贝叶斯方法通过先验信息的结合我们可以求出后验分布P(θ|D),我们的目的是要通过这个后验分布获得数据的预测分布,也就是关于y的CPD。

公式如下(省略推导):
在这里插入图片描述
其中,P(y|x,θ)为给定θ下的y的关于x的概率分布
上式离散化,如下图:(图片请勿转载)
在这里插入图片描述
各个图就是P(y|x,θ),图前面的系数就是贝叶斯方法求出来的P(θ|D)。如果θ的先验分布为均匀分布的话,可以认为P(θ|D)就是可能性likelihood(因为上面说过他们成正比)。θ被设定为均匀分布证明每个图的地位在你主关看来是一样的。假设先验分布不是均匀分布而是标准正态分布,那么a=0,b=0这种情况的概率就高一些,

结果是好的,因为在远离数据点的位置不确定性增加了。

到现在基本就讲解明白了,但是还是会有一个很业余的疑问:

贝叶斯方法的后验估计是P(θ|D),是一种数据D条件下θ的分布,为什么不直接用P(θ|D) = C * P(D|θ) 进行可能性和概率的互换公式呢?

那么这里是有一个偷换概念。我们要求的P(θ|D)相当于经过修正的θ的分布,而P(D|θ)是产生这个数据的时候参数为θ的概率,也就是参数θ时产生数据的可能性。回想我们骰子的例子:
在这里插入图片描述
这个图就是likelihood : P(D|θ)。
这里显然是θ离散的情况。如果θ是连续的,那么类似图一:
在这里插入图片描述
P(D|θ)也就因此而连续。当然这里的图表示的是未归一化后的“可能性”。同样的,p(θ)也会是连续的,如图二:
在这里插入图片描述
可以观察到上面两张图的横坐标均为θ。那么二者相乘,是分布的乘法,得到新的分布,这个分布也是关于θ的分布,就是后验的概率。P(θ|D) = C * P(D|θ)只是用于计算第一张图中的纵坐标的。代表的是将图一的纵坐标的值转换为概率的说法而已,只是在这个横坐标、这个选定的θ下的产生这样数据的概率。而现在我们需要求得等式左边的含义是:

P(θ|D):考虑到观察数据D了以后,我们的θ的分布会变成什么样子,本质上是一种P(θ),因此不是表示:给出观测数据D,参数是θ的概率。

11.30来补充:
上面所说的可能性和概率的关系可能有误,应该是:发生的事件才有“可能性”的说法。因此应解释为:假设参数是这样的(被蒙了几个面),发生这个事实(三次蒙面朝上)的可能性是多少。那么准换概率应为:发生了这样的事实,那么被蒙了如三个面的概率是多少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值