前言
在研究SoftMax交叉熵损失函数(Cross Entropy Loss Function)的时候,一种方法是从概率的角度来解释softmax cross entropy loss function的物理意义[1]。
我们再来回顾下分类器输出的Probability Map
,如下:
P ( y i ∣ x i ; W ) = e f y i ∑ j e f j P(y_i \mid x_i; W) = \frac{e^{f_{y_i}}}{\sum_j e^{f_j} } P(yi∣xi;W)=∑jefjefyi
这个公式可以解释为对于给定的
x
i
x_i
xi和
W
W
W, 将
x
i
x_i
xi分类为真实标签
y
i
y_i
yi的概率为
P
P
P, 因此从**最大似然估计(Maximum Likelihood Estimation)**的角度来讲,交叉熵损失函数的公式如下:
L
i
=
−
log
(
e
f
y
i
∑
j
e
f
j
)
or equivalently
L
i
=
−
f
y
i
+
log
∑
j
e
f
j
L_i = -\log\left(\frac{e^{f_{y_i}}}{ \sum_j e^{f_j} }\right) \hspace{0.5in} \text{or equivalently} \hspace{0.5in} L_i = -f_{y_i} + \log\sum_j e^{f_j}
Li=−log(∑jefjefyi)or equivalentlyLi=−fyi+logj∑efj
不就是最大似然估计的公式吗?
而且有个有意思的地方在于,使用概率的角度考虑交叉熵损失的意义,如果给分类器的权重增加一个正则项,如 R ( W ) R(W) R(W),我们还可以使用最大后验估计(Maximmu a Posteriori)的方法去解释它。
那么问题就在于最大似然估计和最大后验概率估计这样两种方法的区别和联系是什么? 查资料的时候发现有个博客[2]写的很好,并且我觉得如果让我写的话也许还不如他写的有条理,因此这里选择直接翻译原文,以下的【方法】一节是我翻译的原文。
方法
最大似然估计(Maximum Likelihood Estimation, MLE, 后文一直用MLE表示
)和最大后验概率估计(Maximum A Posteriori Estimation, MAP, 后文一直用MAP表示
)都是用于在概率分布或图形模型的设置中估计一些变量的方法。它们类似,因为它们计算单个估计值,而不是完整分布(这句话很别扭,原文:They are similar, as they compute a single estimate, instead of a full distribution.
)。
学过Mechine Learning的同学应该都知道MLE的方法。有时候我们甚至都不知道自己使用了MLE的方法,比如,当我们想将一个数据集拟合为高斯分布时,我们会直接计算样本的均值和方差,用来当做拟合的高斯概率密度函数的参数。这就是MLE,因为如果我们使用高斯的概率密度函数对均值和方差求导,并且最大化它(比如设置导数为零),我们得到的就将会是求解样本的均值和样本的方差。另一个例子,在机器学习和深度学习中,大多数的优化问题都可以解释为MLE的问题(这里就是我们在前言中讲过的softmax cross entropy loss function的解释了
)。
讲的更抽象一点,假设我们现在有一个似然函数方程
P
(
x
∣
θ
)
P(x|\theta)
P(x∣θ),那么我们想使用MLE方法估计的参数
θ
\theta
θ可以表示成如下的公式:
θ
M
L
E
=
a
r
g
m
a
x
θ
P
(
X
∣
θ
)
=
a
r
g
m
a
x
θ
∏
i
P
(
x
i
∣
θ
)
\begin{aligned} \theta_{MLE} &= \mathop{\rm arg\,max}\limits_{\theta} P(X \vert \theta) \\[10pt] &= \mathop{\rm arg\,max}\limits_{\theta} \prod_i P(x_i \vert \theta) \end{aligned}
θMLE=θargmaxP(X∣θ)=θargmaxi∏P(xi∣θ)
在实际计算过程中,由于将很多小于1的数相乘会使最终的结果趋近于0,导致数据的下溢出。因此我们将乘法转化为log空间中的加法,由于log函数是单调递增的,因此最大化上面的方程就等价于最大化下面的这个方程:
θ
M
L
E
=
a
r
g
m
a
x
θ
log
P
(
X
∣
θ
)
=
a
r
g
m
a
x
θ
log
∏
i
P
(
x
i
∣
θ
)
=
a
r
g
m
a
x
θ
∑
i
log
P
(
x
i
∣
θ
)
\begin{aligned} \theta_{MLE} &= \mathop{\rm arg\,max}\limits_{\theta} \log P(X \vert \theta) \\[10pt] &= \mathop{\rm arg\,max}\limits_{\theta} \log \prod_i P(x_i \vert \theta) \\[10pt] &= \mathop{\rm arg\,max}\limits_{\theta} \sum_i \log P(x_i \vert \theta) \end{aligned}
θMLE=θargmaxlogP(X∣θ)=θargmaxlogi∏P(xi∣θ)=θargmaxi∑logP(xi∣θ)
如果使用这个框架,我们只需要计算模型的log形式的似然函数,然后最大化这个似然函数求得参数
θ
\theta
θ即可,可以使用我们最喜欢的优化函数如梯度下降法。
到此为止,我们已经理解了MLE是如何操作的,从现在起,我们又要开启故事的另一条主线了。
MAP通常出现在Bayesian的环景中,因为,正如其名字显示,MAP利用了后验概率的分布,而不仅仅是似然函数。
回忆一下贝叶斯准则,我们可以通过先验概率和似然函数的乘积得到后验概率如下:
P
(
θ
∣
X
)
=
P
(
X
∣
θ
)
P
(
θ
)
P
(
X
)
∝
P
(
X
∣
θ
)
P
(
θ
)
\begin{aligned} P(\theta \vert X) &= \frac{P(X \vert \theta) P(\theta)}{P(X)} \\[10pt] &\propto P(X \vert \theta) P(\theta) \end{aligned}
P(θ∣X)=P(X)P(X∣θ)P(θ)∝P(X∣θ)P(θ)
一般情况下我们都会忽略掉归一化因子,因为我们严格地说这里是优化,因此只要比例就够了。
如果我们把之前的MLE估计中的似然函数去掉,换成后验概率,那么目标函数变成如下形式:
θ
M
A
P
=
a
r
g
m
a
x
θ
P
(
X
∣
θ
)
P
(
θ
)
=
a
r
g
m
a
x
θ
log
P
(
X
∣
θ
)
P
(
θ
)
=
a
r
g
m
a
x
θ
log
∏
i
P
(
x
i
∣
θ
)
P
(
θ
)
=
a
r
g
m
a
x
θ
∑
i
log
P
(
x
i
∣
θ
)
P
(
θ
)
\begin{aligned} \theta_{MAP}& = \mathop{\rm arg\,max}\limits_{\theta} P(X \vert \theta) P(\theta) \\[10pt] &= \mathop{\rm arg\,max}\limits_{\theta} \log P(X \vert \theta) P(\theta) \\[10pt] &= \mathop{\rm arg\,max}\limits_{\theta} \log \prod_i P(x_i \vert \theta) P(\theta) \\[10pt] &= \mathop{\rm arg\,max}\limits_{\theta} \sum_i \log P(x_i \vert \theta) P(\theta) \end{aligned}
θMAP=θargmaxP(X∣θ)P(θ)=θargmaxlogP(X∣θ)P(θ)=θargmaxlogi∏P(xi∣θ)P(θ)=θargmaxi∑logP(xi∣θ)P(θ)
对比下MLE和MAP的公式,两者唯一的区别在于MAP估计中增加了一个先验概率
P
(
θ
)
P(\theta)
P(θ),否则,二者完全相同。这就意味着,似然函数现在增加了一个权重,并且这些权重来源于先验概率。
我们假设下如果我们在MAP模型中使用最简单的先验概率,比如均匀分布。这也就意味着,我们在 θ \theta θ的所有可能出现的值上增加了一个相同的权重。也就是说,先验概率上乘了一个常数。因为它是个常数,因此不会对优化结果产生影响,故我们可以把这个常数从目标函数中去掉。
更具体一点,假设
θ
\theta
θ的可能取值有6个。那么我们就让
p
(
θ
)
p(\theta)
p(θ)的值都为
1
6
\frac{1}{6}
61,此时,我们就可以在MAP模型中将常数部分去掉,如下:
θ
M
A
P
=
a
r
g
m
a
x
θ
∑
i
log
P
(
x
i
∣
θ
)
P
(
θ
)
=
a
r
g
m
a
x
θ
∑
i
log
P
(
x
i
∣
θ
)
c
o
n
s
t
=
a
r
g
m
a
x
θ
∑
i
log
P
(
x
i
∣
θ
)
=
θ
M
L
E
\begin{aligned} \theta_{MAP} &= \mathop{\rm arg\,max}\limits_{\theta} \sum_i \log P(x_i \vert \theta) P(\theta) \\[10pt] &= \mathop{\rm arg\,max}\limits_{\theta} \sum_i \log P(x_i \vert \theta) \, const \\[10pt] &= \mathop{\rm arg\,max}\limits_{\theta} \sum_i \log P(x_i \vert \theta) \\[10pt] &= \theta_{MLE} \end{aligned}
θMAP=θargmaxi∑logP(xi∣θ)P(θ)=θargmaxi∑logP(xi∣θ)const=θargmaxi∑logP(xi∣θ)=θMLE
我们又回到了MLE!
如果我们使用了不同的先验概率,比如高斯分布函数,那么其先验概率就不再是处处相同,由于取决于分布的区域,概率或高或低,不总是相同了。
至此我们可以得出结论,MLE是MAP的一个特殊情况,也就是当先验概率为均匀分布时,二者相同。
总结
至此文章翻译完了,并且得出了一个结论:
MLE是MAP的一个特殊情况,也就是当先验概率为均匀分布时,二者相同。
第一次做翻译工作,感觉真的很别扭,明明英文读着很流畅,可就是不知道怎么用汉语表述,尴尬至极。
以后尽量还是不翻译了,整合下各种资料就好了 😃
参考
[1]. https://cs231n.github.io/linear-classify/
[2]. https://wiseodd.github.io/techblog/2017/01/01/mle-vs-map/