- 这是一个新的系列,会整理一下以前在ipad上写的笔记。
前言
- 把概率引进到机器学习当中是一件很自然的事情,许多机器学习当中问题的本质都可以从概率中的频率派(Frequentist)或贝叶斯派(Bayesian)的观点去看待,学习越成体系,对这点的感受就越多。
- 为了方便接下来的阐述,举个例子:我们现在用 X X X表示数据, θ \theta θ表示参数,假设我们有 N N N个样本,每个样本的维度是 P P P,即 X = ( x 1 , x 2 , ⋯ , x N ) N × P T = ( x 11 x 12 ⋯ x 1 P x 21 x 12 ⋯ x 1 P ⋮ ⋮ ⋮ ⋮ x 1 x 12 ⋯ x 1 P ) X = (x_1,x_2,\cdots,x_N)^T_{N × P} = \begin{pmatrix} x_{11}&x_{12}&\cdots&x_{1P}\\ x_{21}&x_{12}&\cdots&x_{1P}\\ \vdots&\vdots&\vdots&\vdots\\ x_{1}&x_{12}&\cdots&x_{1P}\\ \end{pmatrix} X=(x1,x2,⋯,xN)N×PT=⎝⎜⎜⎜⎛x11x21⋮x1x12x12⋮x12⋯⋯⋮⋯x1Px1P⋮x1P⎠⎟⎟⎟⎞
- 我们假设这是一个概率模型,即 x ∼ P ( x ∣ θ ) x \sim P(x|\theta) x∼P(x∣θ),接下来我们从这个例子看看频率派和贝叶斯派的观点。
频率派
- 频率派认为, P ( x ∣ θ ) P(x|\theta) P(x∣θ)中的 θ \theta θ是一个未知的常量,而数据 x x x则是一个随机变量(Random Variables),频率派要做的就是把这个未知的常量给估计出来。
- 举个例子:比如我们抛硬币,我们抛100次硬币,40次朝上,60次朝下。我们把40次朝上,60次朝下视作我们的数据 x x x,硬币朝上的概率视作我们的概率 P ( x = 向 上 ∣ θ ) P(x=向上|\theta) P(x=向上∣θ),频率派的观点是很自然的,他认为既然现在发生了40次朝上,60次朝下的情况,我们就相信这不是偶然的,这个已发生的事件肯定反映了硬币向上的真实概率。所以我们要做的就是让出现40次朝上,60次朝下这种事件的概率最大,把模型中的参数 θ \theta θ依据数据 x x x给估计出来,这样就可以还原真实世界对于抛硬币的情况了。调整模型参数来使得模型能够最大化数据样本出现的概率,对于频率派最常用的就是极大似然估计(Maximum Likelihood Estimate,MLE)。
最大似然估计(MLE)
- 我们把 P ( x ∣ θ ) P(x|\theta) P(x∣θ)称为似然函数,他的意义就是对于不同的参数 θ \theta θ,出现 x x x的概率是多少。而现在我们就是要最大化这个概率,自然是想求出极值点。
- 首先我们的数据 x x x是符合独立同分布的,所以 P ( x ∣ θ ) = ∏ i = 1 N ( x i ∣ θ ) P(x|\theta) = \prod ^ N _ {i = 1}(x_i|\theta) P(x∣θ)=i=1∏N(xi∣θ)
- 因为我们要求极值点,求导时连乘不好处理,而 g ( x ) g(x) g(x)和 l o g ( g ( x ) ) log(g(x)) log(g(x))单调性一致,所以我们把连乘变成连加: l o g P ( x ∣ θ ) = ∑ i = 1 N ( x i ∣ θ ) log P(x|\theta) = \sum ^ N _ {i = 1}(x_i|\theta) logP(x∣θ)=i=1∑N(xi∣θ)
- 所以对于模型的参数估计就转换为: θ M L E = arg max θ l o g ∑ i = 1 N ( x i ∣ θ ) \theta_{MLE} = \mathop{\arg\max}\limits_{\theta} log \sum ^ N _ {i = 1}(x_i|\theta) θMLE=θargmaxlogi=1∑N(xi∣θ)
- 频率派发展出来的方法就是统计机器学习,本质上就是优化问题。统计机器学习一般先有个模型,可以是概率模型,也可以是非概率模型;第二步设计损失函数,比如上面的 l o g P ( x ∣ θ ) log P(x|\theta) logP(x∣θ);第三步则是用梯度下降,牛顿法等方法优化我们的模型。
贝叶斯派
- 和频率派不同,贝叶斯派认为 P ( x ∣ θ ) P(x|\theta) P(x∣θ)中的 θ \theta θ则是一个随机变量(Random Variables),服从一个概率分布,即 θ ∼ P ( θ ) \theta \sim P(\theta) θ∼P(θ)。贝叶斯派认为参数空间中的每个值都有可能是真实模型使用的参数,只是概率不同,因此便引入了先验概率和后验概率。
- 举个例子:还是抛硬币这个例子,我们想通过抛硬币的结果来看看硬币朝上的概率是多少,不同的是,贝叶斯派并不会单纯从抛硬币的结果出发,不会认为这个结果一定反映了硬币向上的真实概率,他是先有一个先验概率( P ( θ ) P(\theta) P(θ)),即在抛硬币之前我们有一个主观判断认为硬币向上的概率就是0.5,在这个先验概率的基础上,根据我们实际观测到的结果( P ( x ∣ θ ) P(x|\theta) P(x∣θ)),比如实验后硬币朝上的概率为0.4,来不断调整我们模型的参数来让他向真实的结果靠拢。
- 熟悉贝叶斯公式的读者这时候应该就反应过来了,贝叶斯公式是:
P ( θ ∣ x ) = p ( x ∣ θ ) × p ( θ ) p ( x ) P(\theta|x) = \frac{p(x|\theta) × p(\theta)}{p(x)} P(θ∣x)=p(x)p(x∣θ)×p(θ) - 公式中的 P ( θ ∣ x ) P(\theta|x) P(θ∣x)就是我们要求的后验概率, p ( x ∣ θ ) p(x|\theta) p(x∣θ)是似然函数,代表了我们实际观测到的结果,而 p ( θ ) p(\theta) p(θ)则是我们对这件事的一个先验概率,贝叶斯公式巧妙地将先验概率,似然函数和后验概率结合在了一起来对模型参数分布进行有效的估计。和频率派类似,我们也要调整模型参数使得模型能够产生该数据样本的概率最大,所以就有了最大后验概率(MAP)。
最大后验概率(MAP)
- 在贝叶斯公式当中,分母是
p
(
x
)
p(x)
p(x),它是一个积分
∫
θ
p
(
x
∣
θ
)
p
(
θ
)
d
θ
\int_{\theta}p(x|\theta) p(\theta) d \theta
∫θp(x∣θ)p(θ)dθ,本质上就是一个跟
θ
\theta
θ无关的常数。而我们现在要最大化后验概率
P
(
θ
∣
x
)
P(\theta|x)
P(θ∣x),即
arg
max
θ
P
(
θ
∣
x
)
\mathop{\arg\max}\limits_{\theta} P(\theta|x)
θargmaxP(θ∣x),而分母跟
θ
\theta
θ无关,所以最大后验概率的公式为:
θ M A P = arg max θ P ( θ ∣ x ) ∝ arg max θ p ( x ∣ θ ) × p ( θ ) \theta_{MAP} = \mathop{\arg\max}\limits_{\theta} P(\theta|x)\propto \mathop{\arg\max}\limits_{\theta} p(x|\theta) × p(\theta) θMAP=θargmaxP(θ∣x)∝θargmaxp(x∣θ)×p(θ)
贝叶斯估计
- 当然这不是真正的贝叶斯估计,因为我们分母的积分部分被我们用正比于消除了,而求解这个值需要在整个的参数空间进行积分,这个求解的过程是十分复杂,一般我们会通过一些采样的方法比如蒙特卡洛的方法去近似这个积分来得到真正的贝叶斯估计。贝叶斯估计的公式为:
P ( θ ∣ x ) = p ( x ∣ θ ) × p ( θ ) ∫ θ p ( x ∣ θ ) p ( θ ) d θ P(\theta|x) = \frac{p(x|\theta) × p(\theta)}{\int_{\theta}p(x|\theta) p(\theta) d \theta} P(θ∣x)=∫θp(x∣θ)p(θ)dθp(x∣θ)×p(θ)
贝叶斯预测
- 那我们求贝叶斯估计有什么用呢?举个例子:我们已知的数据样本为
X
X
X,要对未知的数据
x
~
\widetilde{x}
x
进行预测,即要求
P
(
x
~
∣
X
)
P(\widetilde{x}|X)
P(x
∣X)。这时候我们就可以通过我们的贝叶斯估计出来的参数分布,给未知的数据和已知的数据样本之间搭建一个桥梁,即:
X
−
>
θ
−
>
x
~
X -> \theta -> \widetilde{x}
X−>θ−>x
,那我们就可以依据这个桥梁对
P
(
x
~
∣
X
)
P(\widetilde{x}|X)
P(x
∣X)求关于
θ
\theta
θ的边缘概率了:
P ( x ~ ∣ X ) = ∫ θ P ( x ~ , θ ∣ X ) d θ = ∫ θ P ( x ~ ∣ θ , X ) P ( θ ∣ X ) d θ P(\widetilde{x}|X) = \int_{\theta} P(\widetilde{x},\theta|X)d\theta = \int_{\theta}P(\widetilde{x}|\theta,X)P(\theta|X)d\theta P(x ∣X)=∫θP(x ,θ∣X)dθ=∫θP(x ∣θ,X)P(θ∣X)dθ - 因为数据符合独立同分布,所以:
P ( x ~ ∣ X ) = ∫ θ P ( x ~ ∣ θ ) P ( θ ∣ X ) d θ P(\widetilde{x}|X) = \int_{\theta}P(\widetilde{x}|\theta)P(\theta|X)d\theta P(x ∣X)=∫θP(x ∣θ)P(θ∣X)dθ - 这样我们就可以成功对新数据做出预测,其实贝叶斯预测也就是在求后验概率分布的期望了。
- 由贝叶斯派发展出了概率图模型中的马尔可夫随机场等的算法,在自然语言处理领域有着大量的应用。
总结
- 从大的方向来说,频率派和贝叶斯派看待世界的角度不同。
- 频率派认为世界是确定的,存在某个定值可以让我们描述出这个世界。他们直接对事件结果建模,也就是说事件在多次重复实验中趋于一个稳定的值p,那么这个值就是该事件的概率。他们认为模型参数是个定值,希望直接通过最大化事件发生概率来求出模型参数,这就是频率学派使用的参数估计方法,极大似然估计,这种方法在数据量大的情况下可以很好的还原模型的真实情况。
- 贝叶斯派则认为世界是不确定的,不同人因获取的信息不同而对这个世界会有不同的判断。人们对世界先有一个自己的认识,然后通过获取的信息来不断调整之前的认识,最终找到最能描述这个世界的概率分布。这就是贝叶斯派视角下用来估计参数的常用方法,最大后验概率估计,这种方法在先验假设比较靠谱的情况下效果显著,随着数据量的增加,先验假设对于模型参数的主导作用可能会逐渐减弱,而真实的数据会慢慢主导模型。