极大似然估计 MLE 与最大后验概率估计 MAP
statistic
本文字数:2.2k 字 | 阅读时长 ≈ 9 min

极大似然估计 MLE 与最大后验概率估计 MAP

statistic
本文字数:2.2k 字 | 阅读时长 ≈ 9 min

1. 具体定义

从其他的文章中我们可以了解到极大似然估计和最大后验概率估计的公式,这里不做介绍直接给出

其中极大似然估计的公式很好理解,这里的$\theta$表示我们模型的参数估计,$D$表示数据

最大后验概率估计的公式怎么理解呢?其实这里的思想是加入了先验,首先我们来看贝叶斯公式
$$
P(\theta|D) = \frac{P(D|\theta) P(\theta)}{P(D)}
$$
其中$P(\theta)$是我们的先验概率,$P(\theta|D)$是后验概率,右边分子中的$P(D|\theta)$是MLE,而整个分子就是MAP,有的人会说为什么不算分子呢,因为分子是我们的实验数据$P(D)$是已知的,所以加不加都不影响。也就是说MAP:$P(D|\theta) P(\theta)$,这里与MLE不同的就是乘上了先验$P(\theta)$

2. 详细理解

这里我们假设抛硬币的例子(因为网上大多数教程都在抛硬币…),假设抛了十次:七个正面,三个反面,如果你不是贝叶斯学派,通过MLE计算你能得到$\theta = 0.7$。但是如果你是贝叶斯学派,通过MAP有人告诉你先验说这个概率就应该为0.5并且绝不会出错,所以你犹豫了,你觉得概率可能分布在0.5-0.7之间,但是具体多少呢?要根据样本数来确定,如果你没听懂这个没有关系,下面会给出详细的证明

2.1 MLE

MLE就是想让我们根据结果来找到一个最合适的模型,使得出现结果(也就是我们的数据$D$,七个正面,三个反面)的可能性最大,假设正面的概率为$P(\theta)$,反面的概率为$1-P(\theta)$,那么我们的目标为
$$
MLE: \hat\theta = \underset {\theta}{\operatorname {arg,max}}~P(\theta){7}(1-P(\theta)){3}
$$
下面我们来看这个函数的图像,从图中看出,当$P(\theta) = 0.7$是MLE最大,也就是说虽然我们的常识是硬币出现正反的概率为$0.5$,但是频率学派不这么认为,他们认为正面出现的概率为$0.7$

这里我们给出上述公式的图像

2.2 MAP

MAP是贝叶斯学派,他们的观点是要引入先验,这里的先验就是第三部分要说的正则,首先我们来看公式
$$
MAP: \hat\theta = \underset {\theta}{\operatorname {arg,max}}~P(D|\theta)P(\theta)
$$
我们假设硬币是从一个神秘商人那边买来的,买来的时候他说这是一枚神奇的硬币,用特殊的材料打造,质地非常均匀,古人在重大场合都用他来进行选择,所以正反概率都为0.5,但是由于时间比较久远了,硬币难免会出现一些变化,但是你对商人的话深信不疑,因此这里我们假设$P(\theta)$服从$\mu = 0.5, \sigma=0.1$的高斯分布,也就是说正面出现的概率为0.5,出现其他概率的情况很低

10次实验

然后我们进行了之前的实验,抛了十次硬币: 七个正面,三个反面

你的第一反应是这个商人是个骗子!这个几率根本不是0.5!但是别急,你是一个贝叶斯学派的人,通过商人给你的先验以及你用了MAP进行计算,你绘制了MAP的图像,如下所示

仔细观察发现,概率并不是完全的0.5了!但是也接近0.5,所以你并没有觉得商人骗你,于是你继续做了100次的实验,抛了一百次硬币:七十个正面,三十个反面,然后你继续用MAP理论绘制了如下的图像

100次实验

注意此时的函数公式为
$$
P(D|\theta)P(\theta) = \theta{70}(1-\theta){30}\times \frac{1}{\sqrt{2\pi}0.1}e{-\frac{(\theta-0.5){2}}{20.1^{2}}}
$$

这时你发现概率已经远远偏离了0.5,这时你已经开始紧张了,商人卖给你了假币!但是这时你还保持冷静不断的安慰自己,不然钱都打水漂了,一定是样本还不够多导致的,于是你进行了第三次实验

1000次实验

抛了一千次硬币:七百个正面,三百个反面,然后你继续用MAP理论绘制了如下的图像

这时你彻底坐不住了,这一定是假币,你被骗了,你很愤怒回去找商人投诉去了,即使是贝叶斯也就救不了他了

以上图像代码

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 1, 1000)
# y = np.power(x, 7) * np.power(1-x, 3)
# y = np.exp(-np.power(x-0.5, 2) / (2*np.power(0.1, 2))) / (np.sqrt(2*np.pi)*0.1)
# y = (np.exp(-np.power(x-0.5, 2) / (2*np.power(0.1, 2))) / (np.sqrt(2*np.pi)*0.1)) * np.power(x, 7) * np.power(1-x, 3)
# y = (np.exp(-np.power(x-0.5, 2) / (2*np.power(0.1, 2))) / (np.sqrt(2*np.pi)*0.1)) * np.power(x, 70) * np.power(1-x, 30)
y = (np.exp(-np.power(x-0.5, 2) / (2*np.power(0.1, 2))) / (np.sqrt(2*np.pi)*0.1)) * np.power(x, 700) * np.power(1-x, 300)

plt.plot(x, y, ls="-", lw=2, label="plot figure")
plt.legend()
plt.show()

到这里可以发现,当样本足够多的时候,MAP会不断接近MLE,也就是说MAP几乎完全就是MLE了

为什么呢?我们在第三部分的最后讲解

3. 为什么MAP的正则与范数有关

3.1 L2正则

MLE是最大化$\underset {\theta}{\operatorname {arg,max}}~P(D|\theta)$,这里我们进行了$n$次实验,$\theta$用$w,b$来描述
$$
MLE: P(D|w,b) = \underset {w}{\operatorname {arg,max}} \prod {i=1}^{n}P(y{i}|x_{i},w,b)
$$
假设分布为高斯分布,下面求解为什么MAP乘上的先验就是正则,为了方便参数只取$w$
$$
\begin{aligned}
P(D|w) & = \underset {w}{\operatorname {arg,max}} \prod {i=1}^{n}P(y{i}|x_{i},w) \times P(w)\
& = \underset {w}{\operatorname {arg,max}} \sum_{i=1}^{n} logP(y_{i}|x_{i},w) + logP(w)
\end{aligned}
$$
其中加号前一部分就是MLE,这里的$logP(w)$就是正则,我们单独把$logP(w)$拿出来进行讨论,假设$P(w)$服从高斯分布$P(w)~N(0, \sigma^{2})$,带入
$$
\begin{aligned}
logP(w) & = log(\frac{1}{\sqrt{2\pi}\sigma}e{-\frac{w{2}}{2\sigma^{2}}}) \
& = log(\frac{1}{\sqrt{2\pi}\sigma})+log(e{-\frac{w{2}}{2\sigma^{2}}}) \
& = -log(\sqrt{2\pi}*\sigma) - \frac{w{2}}{2*\sigma{2}} \
& = const-\lambda w^{2}
\end{aligned}
$$

注意

当我们在把$logP(w)$带回原来的式子时
$$
\begin{aligned}
P(D|w) & = \underset {w}{\operatorname {arg,max}} \sum_{i=1}^{n} logP(y_{i}|x_{i},w) - \lambda w^{2} + const \
& \rightarrow \underset {w}{\operatorname {arg,max}} \sum_{i=1}^{n} logP(y_{i}|x_{i},w) - \lambda w^{2} \
& = \underset {w}{\operatorname {arg,max}} \sum_{i=1}^{n} logP(y_{i}|x_{i},w) - \lambda ||w||_{2}^{2}
\end{aligned}
$$
这就出现了$L2$正则,这就是为什么先验就是正则的原因

3.2 L1正则

上面我们假设了分布是高斯分布,所以是$L2$正则,这里我们假设分布为拉普拉斯分布,结果就是$L1$正则

拉普拉斯分布:
$$
f(x) = \frac{1}{2b} e^{-\frac{|x-\mu|}{b}}
$$

前面的证明和高斯分布是相同的

$$
\begin{aligned}
P(D|w) & = \underset {w}{\operatorname {arg,max}} \prod {i=1}^{n}P(y{i}|x_{i},w) \times P(w)\
& = \underset {w}{\operatorname {arg,max}} \sum_{i=1}^{n} logP(y_{i}|x_{i},w) + logP(w)
\end{aligned}
$$
把$logP(w)$拿出来进行讨论,这里依然假设$\mu = 0$
$$
\begin{aligned}
logP(w) & = log\frac{1}{2b} e^{-\frac{|w|}{b}} \
& = log\frac{1}{2b} + loge^{-\frac{|w|}{b}} \
& = log\frac{1}{2b} - \frac{|w|}{b} \
& = const - \lambda |w| \
& = const - \lambda||w||_{1}
\end{aligned}
$$

3.3 MAP什么时候等于MLE

其实从公式来看,MAP永远不等于MLE,因为
$$
\begin{aligned}
MLE & : \underset {\theta}{\operatorname {arg,max}} \sum_{i=1}^{n} logP(y_{i}|x_{i},\theta) \
MAP & : \underset {\theta}{\operatorname {arg,max}} \sum_{i=1}^{n} logP(y_{i}|x_{i},\theta) + logP(\theta)
\end{aligned}
$$
但是看到前面的求和了吗,当我们的$n$也就是样本不断增加的时候,第二项先验的作用会被不断的削弱,所以就会出现上面的抛一千次硬币之后$MAP \approx MLE$的情况了

4月 06, 2025
3月 10, 2025
12月 31, 2024