我们已知一枚硬币抛出正面和反面的概率都是 0.5,那么若我们抛硬币 10 次,要计算抛硬币结果是 7 次正面,3 次反面的概率是多少?这是一个很简单的概率计算: P = C 10 3 × 0. 5 7 × 0. 5 3 P = C_{10}^3 \times 0.5^7 \times 0.5^3 P=C103×0.57×0.53。
我们可以把硬币本身的属性(正面和反面概率都是 0.5)看作系统的固有属性 θ \theta θ,将抛硬币结果(7 正 3 反)看做发生的事件 X X X。那么只要我们知道硬币的固有属性 θ \theta θ,很容易就能计算出在给定 θ \theta θ 下事件 X X X 的概率,即 P ( X ∣ θ ) P(X|\theta) P(X∣θ)。比如:
P.S. 里 C 10 3 C_{10}^3 C103 表示抛硬币结果是没有顺序的,因此 10 次中任选 3 次结果为反面。
反过来,我们现在抛 10 次硬币,得到的结果 X X X 是 7 个正,3 个反,我们想从这个已经发生的事实 X X X(抛硬币结果)反推出硬币的固有属性 θ \theta θ(即正面和反面的概率分别是多少?)。但实际上我们根本无法得到一个确定的 θ \theta θ 值。因为硬币的固有属性不论是(正 0.5 反 0.5)还是(正 0.7 反 0.3)还是(正 0.1 反 0.9),都有可能抛出 7 正 3 反这个事实。
对于我们想要从已经发生的事实 X X X 反推出系统的固有属性 θ \theta θ 这个需求,统计学界存在两种不同的解决方案:
首先明确一个概念:
似然一般指似然函数,似然只是似然函数的简称,似然函数是一个多值函数,也就是说似然函数是一个概率分布;而最大似然值则是似然函数的最大值,它是一个确定的概率值。
回到正题:
设 X X X 为已知量, θ \theta θ 为变量,则似然函数 L X ( θ ) = L ( θ ∣ X ) = P ( X ∣ θ ) L_X(\theta) = L(\theta|X) = P(X|\theta) LX(θ)=L(θ∣X)=P(X∣θ) 表示 X X X 发生之后 θ \theta θ 的似然值(注意:似然函数的变量为 θ \theta θ)。其实 θ \theta θ 到底取什么值我们永远无法确定,因此人为规定当似然函数 L ( θ ∣ X ) L(\theta|X) L(θ∣X) 取得最大值时,此时的 θ ∗ \theta^* θ∗ 就是我们想要的 θ \theta θ,也就是最可能得到结果 X X X 的 θ \theta θ,我们就把 θ ∗ \theta^* θ∗ 认定为系统的固有属性,即:
θ ∗ = arg m a x θ L ( θ ∣ X ) = arg m a x θ P ( X ∣ θ ) = arg m a x θ ∏ x 1 x n P ( x i ∣ θ ) = arg m a x θ ∑ x 1 x n log P ( x i ∣ θ ) \begin{align} \nonumber \theta^* &= \arg\underset{\theta}{max} L(\theta|X) = \arg\underset{\theta}{max} P(X|\theta) \\ \nonumber &= \arg\underset{\theta}{max} \prod_{x_1}^{x_n} P(x_i|\theta) \\ \nonumber & = \arg\underset{\theta}{max} \sum_{x_1}^{x_n} \log P(x_i|\theta) \end{align} θ∗=argθmaxL(θ∣X)=argθmaxP(X∣θ)=argθmaxx1∏xnP(xi∣θ)=argθmaxx1∑xnlogP(xi∣θ)
P.S. 为了便于计算,通常会对似然函数取对数,形成对数似然函数,此操作不影响函数的单调性和极大值。
总结最大似然估计(MLE)的思想:对于给定的 X X X,我们希望从所有可能的 θ \theta θ 值中找出能最大概率生成 X X X 的 θ ∗ \theta^* θ∗ 作为估计结果。
回到开头的例子,根据最大似然估计法估计 θ \theta θ,已知 X = X = X=(7正,3反),设硬币朝上的概率是 p p p,则:
L ( θ ∣ X ) = P ( X ∣ θ ) = C 10 3 × p 7 × ( 1 − p ) 3 L(\theta|X) = P(X|\theta) = C_{10}^3 \times p^7 \times (1-p)^3 L(θ∣X)=P(X∣θ)=C103×p7×(1−p)3
为了找到 p 7 × ( 1 − p ) 3 p^7 \times (1-p)^3 p7×(1−p)3 的最大值,我们对其求导:
7 p 6 ( 1 − p ) 3 − 3 p 7 ( 1 − p ) 2 = 0 7p^6(1-p)^3 - 3p^7(1-p)^2 = 0 7p6(1−p)3−3p7(1−p)2=0
可解得 p = 0.7 p = 0.7 p=0.7,因此当 θ = \theta = θ= (正 0.7 反 0.3) 时 L ( θ ∣ X ) L(\theta|X) L(θ∣X) 取得最大值, θ = \theta = θ= (正 0.7 反 0.3) 就是根据最大似然估计得出的系统固有属性。为了求解方便,会对似然函数取对数,这样不会影响函数的单调性和极值,还可以简化计算。
对似然函数取对数:
ln ( p 7 × ( 1 − p ) 3 ) = 7 ln p + 3 ln ( 1 − p ) \ln (p^7 \times (1-p)^3) = 7 \ln p + 3 \ln (1-p) ln(p7×(1−p)3)=7lnp+3ln(1−p)
对取对数后的似然函数求导,并计算导数为 0 的点:
7 p − 3 1 − p = 0 \frac{7}{p} - \frac{3}{1-p} = 0 p7−1−p3=0
同样解得 p = 0.7 p = 0.7 p=0.7。
总结最大似然估计的一般步骤:
补充:
L ( θ ∣ X ) = P ( X ∣ θ ) L(\theta|X) = P(X|\theta) L(θ∣X)=P(X∣θ) 两者在数值上相等,但意义并不相同。个人理解 P ( X ∣ θ ) P(X|\theta) P(X∣θ) 既可以表示概率也可以用于计算似然 L ( θ ∣ X ) L(\theta|X) L(θ∣X):
- 似然性(likelihood) L ( θ ∣ X ) L(\theta|X) L(θ∣X) 是关于 θ \theta θ 的函数,它是从已经发生的事实 X X X 出发,推断分布为 θ \theta θ 的可能性大小;
- 概率(possibility) P ( X ∣ θ ) P(X|\theta) P(X∣θ) 是关于 X X X 的函数,它是在已知分布 θ \theta θ 条件下,推测发生事件 X X X 的可能性大小。
首先回顾一下贝叶斯公式:
P ( θ ∣ X ) = P ( X ∣ θ ) P ( X ) × P ( θ ) P(\theta|X) = \frac{P(X|\theta)}{P(X)} \times P(\theta) P(θ∣X)=P(X)P(X∣θ)×P(θ)
其中, P ( θ ∣ X ) P(\theta|X) P(θ∣X) 为后验概率, P ( θ ) P(\theta) P(θ) 为先验概率, P ( X ∣ θ ) P ( X ) \frac{P(X|\theta)}{P(X)} P(X)P(X∣θ) 就是前面提到的修正项。贝叶斯学派根据观察到的事实 X X X 对先验概率 P ( θ ) P(\theta) P(θ) 进行修正,得到修正后的后验概率 P ( θ ∣ X ) P(\theta|X) P(θ∣X)。
可以看出,后验概率 P ( θ ∣ X ) P(\theta|X) P(θ∣X) 是多少取决于修正项 P ( X ∣ θ ) P ( θ ) \frac{P(X|\theta)}{P(\theta)} P(θ)P(X∣θ)。在修正项中, P ( X ∣ θ ) = L ( θ ∣ X ) P(X|\theta) = L(\theta|X) P(X∣θ)=L(θ∣X) (似然函数),因此 P ( X ∣ θ ) P(X|\theta) P(X∣θ) 还可以叫做 似然度(likelihood)。 P ( X ) P(X) P(X) 是一种不考虑原因,只看结果的概率分布,可以叫做 evidence,它表达了 X X X 发生的概率,计算为各种 θ \theta θ 条件下发生 X X X 的概率的积分(离散情况就是求和)。
P ( X ) = ∫ p ( X ∣ θ ) p ( θ ) d θ P(X) = \int p(X|\theta)p(\theta) d \theta P(X)=∫p(X∣θ)p(θ)dθ
因此,贝叶斯公式可以描述为:
p o s t e r i o r = l i k e l i h o o d e v i d e n c e × p r i o r posterior = \frac{likelihood}{evidence} \times prior posterior=evidencelikelihood×prior
由于似然函数是关于 θ \theta θ 的函数,因此整个贝叶斯公式还可以看作是关于变量 θ \theta θ 的函数:
f X ( θ ) = P ( θ ∣ X ) = L ( θ ∣ X ) P ( X ) × P ( θ ) f_X(\theta) = P(\theta|X) = \frac{L(\theta|X)}{P(X)} \times P(\theta) fX(θ)=P(θ∣X)=P(X)L(θ∣X)×P(θ)
回到正题:
最大后验估计与最大似然估计的差别在于:对参数进行估计之前有没有先验。最大似然估计是在对被估计量没有任何先验知识的前提下求得的,当要估计的参数有了先验知识(满足某种分布),此时就是最大后验估计要考虑的问题。
根据贝叶斯学派,系统属性 θ \theta θ 不是一个固定的值,而是一个变量,它也服从某种概率分布。我们无法从 X X X 推出一个确定的 θ \theta θ,只能得到不同 θ \theta θ 的概率,也就是后验概率 P ( θ ∣ X ) P(\theta|X) P(θ∣X)。
- 这里要理解 “不同 θ \theta θ 的概率” 可能会很抽象,这样的解释其实仍属于频率派。
- 如果我们用贝叶斯的思想去解释,将 P ( θ ∣ X ) P(\theta|X) P(θ∣X) 理解为 “系统的可信度” 就容易多了。 P ( θ ) P(\theta) P(θ) 可以说是系统在未经修正之前的可信度,中间发生了一些事情之后( X X X),我们对系统的可信度变成了 P ( θ ∣ X ) P(\theta|X) P(θ∣X)。
- 最大后验估计实际上就是在已知系统先验 P ( θ ) P(\theta) P(θ) 的情况下,找到能够最大化系统可信度 P ( θ ∣ X ) P(\theta|X) P(θ∣X) 的那个参数 θ \theta θ。
现在我们要最大化后验概率 P ( θ ∣ X ) P(\theta|X) P(θ∣X),但其难以计算(不可能穷举出所有可能的 θ \theta θ),因此可以借助贝叶斯公式,通过最大化 f X ( θ ) f_X(\theta) fX(θ) 对参数 θ \theta θ 进行估计。 f X ( θ ) f_X(\theta) fX(θ) 是一个关于 θ \theta θ 的函数,而 P ( X ) P(X) P(X) 与 θ \theta θ 无关,可以看作一个常数。因此(后验概率 正比于 似然函数 × \times × 先验概率):
θ ∗ = arg max θ f X ( θ ) = arg max θ L ( θ ∣ X ) P ( θ ) = arg max θ ( ∏ x 1 x n P ( x i ∣ θ ) ) P ( θ ) = arg max θ ( ∑ x 1 x n log P ( x i ∣ θ ) + log P ( θ ) ) \begin{align} \nonumber \theta^* &= \arg\underset{\theta}{\max} f_X(\theta) = \arg\underset{\theta}{\max} L(\theta|X)P(\theta) \\ \nonumber & = \arg\underset{\theta}{\max} (\prod_{x_1}^{x_n} P(x_i|\theta))P(\theta) \\ \nonumber & = \arg\underset{\theta}{\max} ( \sum_{x_1}^{x_n} \log P(x_i|\theta) + \log P(\theta) ) \end{align} θ∗=argθmaxfX(θ)=argθmaxL(θ∣X)P(θ)=argθmax(x1∏xnP(xi∣θ))P(θ)=argθmax(x1∑xnlogP(xi∣θ)+logP(θ))
最后一步同样取了对数来方便计算。对比最大似然估计,最大后验估计实际上就是多了一项 P ( θ ) P(\theta) P(θ)。因为在最大似然估计法中,频率派认为 θ \theta θ 是一个固定值,不存在分布情况,因此 P ( θ ) = 1 P(\theta) = 1 P(θ)=1,而贝叶斯派认为 θ \theta θ 是一个随机变量,它也服从某种概率分布。如果将 P ( θ ) = 1 P(\theta) = 1 P(θ)=1 代入最大后验估计中,就得到了最大似然估计。
补充:
如何理解先验/后验概率?
先验概率 P ( θ ) P(\theta) P(θ) 是事件 X X X 没有发生之前 θ \theta θ 的概率,后验概率 P ( θ ∣ X ) P(\theta|X) P(θ∣X) 是事件 X X X 发生之后 θ \theta θ 的概率。”先后“ 指的就是 X X X 是否发生,没有发生就是先验,发生了就是后验。
先验概率 P ( θ ) P(\theta) P(θ) 是如何得到的?
按贝叶斯主义的理解,它可以是凭借直觉或以前的经验,甚至随便猜测而得到的一个概率。但先验概率并不是最终的结果,先验概率会被修正。当事件 X X X 发生了,先验概率就会被修正,修正结果就是后验概率。
为什么要最大化后验概率?
朴素贝叶斯法将样本分类到后验概率最大的类别中,这等价于期望风险最小化。
最大后验估计与最大似然估计的差别在于,它扩充了被优化的目标函数,其中融合了预估计量的先验分布信息,因此最大后验估计可以看作是添加了正则化的最大似然估计。
通过以上,可以知道:
最大后验估计和最大似然估计的差异就是多了先验概率 P ( θ ) P(\theta) P(θ)。
最大后验估计和最大似然估计哪个更好一些呢?
- 最大后验估计以先验概率为起点,对其进行修正得到后验概率,而最大似然估计没有起点,有起点和没起点其实有很大差别。在某些情况下,最大似然估计和最大后验估计不仅仅是性能上优和劣的区别,而是使用最大似然估计是会出错的,但选择最大后验估计则可以避免这个错误。
- 举一个比较直观的例子:假如抛硬币 10 次均为正面,那么根据最大似然估计得出的结论,这枚硬币正面的概率是 1。但根据我们的经验来看,即使抛出 10 次均为正面,也不太可能正面概率为 1。如果我们用最大后验估计,首先对硬币的正反概率有一个预期(先验概率)为正面 0.5 反面 0.5,那么即使我们抛出 10 次均为正面,反面存在的概率即使很小,但依然存在。
从概率角度理解损失函数,其本身就是一种概率分布。下面从贝叶斯角度看 L 1 L_1 L1 和 L 2 L_2 L2 正则化。
在神经网络训练中,根据最大似然估计,令: W = arg max W L ( W ∣ X , Y ) W = \arg\underset{W}{\max} L(W|X,Y) W=argWmaxL(W∣X,Y),其中 X , Y X,Y X,Y 表示训练数据, X X X 为数据, Y Y Y 为标签; W W W 表示神经网络的权重(这里忽略偏置 b b b); L L L 为似然函数。最大似然估计就是最大化似然函数 L ( W ∣ X , Y ) L(W|X,Y) L(W∣X,Y),此时的 W W W 就是我们希望获得的 W W W。
根据最大似然估计公式可得:
W = arg max W L ( W ∣ X , Y ) = arg max W P ( X , Y ∣ W ) = arg max W log P ( X , Y ∣ W ) \begin{align} \nonumber W &= \arg\max_W L(W|X,Y) \\ \nonumber &= \arg\max_W P(X,Y|W) \\ \nonumber & = \arg\max_W \log P(X,Y|W) \end{align} W=argWmaxL(W∣X,Y)=argWmaxP(X,Y∣W)=argWmaxlogP(X,Y∣W)
这里 log P ( X , Y ∣ W ) \log P(X,Y|W) logP(X,Y∣W) 就是损失函数。对损失函数我们一般习惯加上 log \log log,它不会影响最终取得最大值时 W W W 的值(虽然两个最大值并不相等)。
在神经网络训练中,根据最大后验估计,令: W = arg max W P ( W ∣ X , Y ) W = \arg\underset{W}{\max} P(W|X,Y) W=argWmaxP(W∣X,Y),最大化后验概率可得:
W = arg max W P ( W ∣ X , Y ) = arg max W f X , Y ( W ) = arg max W P ( X , Y ∣ W ) P ( W ) P ( X , Y ) \begin{align} \nonumber W &= \arg\max_W P(W|X,Y) \\ \nonumber &= \arg\max_W f_{X,Y}(W) \\ \nonumber &= \arg\max_W \frac{P(X,Y|W)P(W)}{P(X,Y)} \end{align} W=argWmaxP(W∣X,Y)=argWmaxfX,Y(W)=argWmaxP(X,Y)P(X,Y∣W)P(W)
其中, P ( X , Y ) P(X,Y) P(X,Y) 是和 W W W 无关的常数,因此可以忽略掉,得到:
W = arg max W P ( X , Y ∣ W ) P ( W ) = arg max W log P ( X , Y ∣ W ) P ( W ) = arg max W ( log P ( X , Y ∣ W ) + log P ( W ) ) \begin{align} \nonumber W &= \arg\max_W P(X,Y|W)P(W) \\ \nonumber &= \arg\max_W \log P(X,Y|W)P(W) \\ \nonumber &= \arg\max_W (\log P(X,Y|W) + \log P(W)) \end{align} W=argWmaxP(X,Y∣W)P(W)=argWmaxlogP(X,Y∣W)P(W)=argWmax(logP(X,Y∣W)+logP(W))
这里 log P ( X , Y ∣ W ) + log P ( W ) \log P(X,Y|W) + \log P(W) logP(X,Y∣W)+logP(W) 就是损失函数,可以看出,第一项是最大似然估计的损失函数。最大后验估计的损失函数就是在最大似然估计的损失函数基础上又增加了一项 log P ( W ) \log P(W) logP(W)。
P ( W ) P(W) P(W) 是先验概率,最大后验估计的损失函数最终形态就取决于 P ( W ) P(W) P(W),先验概率取不同的值会带来不同的结果,那么如何选择 W W W 的分布?理论上 W W W 的分布是任意的,甚至你可以猜一个。
总结: 最大后验估计和最大似然估计相差一个先验概率。从正则化角度看,他们相差的就是一个正则化项。本质上,先验概率对应的就是正则化项。最大后验估计允许我们把先验知识加入到估计模型中,在公式表达上就是多了一个 log p ( θ ) \log p(\theta) logp(θ) 项。
加入先验概率在样本很少的时候是很有用的(因此朴素贝叶斯在较少的样本下就能有很好的表现)。因为样本很少的时候我们的观测结果很可能出现偏差,此时先验知识会把估计的结果“拉”向先验,实际的估计结果将会在先验结果的两侧形成一个顶峰。通过调节先验分布的参数,比如 beta 分布的 α \alpha α 和 β \beta β,我们还可以调节把估计的结果“拉”向先验的幅度, α \alpha α 和 β \beta β 越大,这个顶峰越尖锐。这样的参数我们叫做预估模型的“超参数”。(P.S. 先验的选取也很重要,如果先验分布选取不当反而会适得其反)
统计学对概率的理解有两个角度:频率派和贝叶斯派
频率派将概率看作是某件事多次发生的频率,用频率派的观点去理解抛硬币是没有问题的,因为抛硬币这件事本身就是多次可重复的,但如果用频率派观点去理解神经网络,会变得很抽象。而用贝叶斯的观点就能比较容易地理解神经网络。
在神经网络里, W W W 是权重, P ( W ) P(W) P(W) 是先验概率。如果用频率派去解释 P ( W ) P(W) P(W),它是 W W W 的什么频率呢?很抽象。但如果用贝叶斯来看, 可以将先验概率 P ( W ) P(W) P(W) 解释为:在最开始没有任何经验的时候,我们随便给出一个 W W W,此时对该系统相信的程度为 P ( W ) P(W) P(W),即置信度。后验概率 P ( W ∣ X ) P(W|X) P(W∣X) 表示发生了某些修正之后,我们对该系统的相信程度达到了 P ( W ∣ X ) P(W|X) P(W∣X)。而网络权重的修正就依赖于训练数据 X X X。
注意,先验 P ( W ) P(W) P(W) 和 后验 P ( W ∣ X ) P(W|X) P(W∣X) 都对应一个概率分布,贝叶斯公式修正的是概率分布,而不是一个具体的概率值。我们希望找到的是概率最大时对应的 W W W 的值。