机器学习:通俗理解极大似然估计和极大后验估计+实例分析

目录

  • 0 写在前面
  • 1 从一个例子出发
  • 2 极大似然估计
  • 3 极大后验估计
  • 4 Python实现

0 写在前面

机器学习强基计划聚焦深度和广度,加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理;“广”在分析多个机器学习模型:决策树、支持向量机、贝叶斯与马尔科夫决策、强化学习等。

详情:机器学习强基计划(附几十种经典模型源码合集)

1 从一个例子出发

某硬币有 θ \theta θ的概率正面朝上,为确定 θ \theta θ做如下实验:掷10次硬币得到一个正反序列——正正反反正反正正正正。请分别用极大似然法与极大后验法估计参数 θ \theta θ

历史上对估计参数 θ \theta θ的假设有两种观点,称为频率学派贝叶斯学派

机器学习:通俗理解极大似然估计和极大后验估计+实例分析_第1张图片

机器学习强基计划4-1:你真的分得清频率、概率、几率和似然吗?中提到:当环境参数 θ \theta θ未知时为似然问题:即给定样本观测数据,从而推测可能产生这个结果的环境参数。由于这个例子中 θ \theta θ未知——是需要估计的参数,所以是一个似然问题。所以接下来我们将采用似然问题的分析方法理解这个例子,同时将看到来自频率学派和贝叶斯学派的不同观点。

2 极大似然估计

似然问题往往只关注似然函数取最大值时,对应的模型参数,因为这个模型参数下最有可能出现样本的分布。由此引申出基于似然函数值极大的参数估计方法——极大似然法(Maximum Likelihood Estimates, MLE)

假设数据样本 ( x 1 , x 2 , ⋯   , x n ) \left( \boldsymbol{x}_1,\boldsymbol{x}_2,\cdots ,\boldsymbol{x}_n \right) (x1,x2,,xn)是满足独立同分布的一组抽样 X \boldsymbol{X} X,设模型参数为 θ \boldsymbol{\theta } θ,则

θ ^ M L E = a r g max ⁡ θ P ( X ; θ ) = a r g max ⁡ θ [ P ( x 1 ; θ ) P ( x 2 ; θ ) ⋯ P ( x n ; θ ) ] = a r g max ⁡ θ [ ∑ i = 1 n ln ⁡ P ( x i ; θ ) ] \begin{aligned}\widehat{\boldsymbol{\theta }}_{MLE}&=\mathrm{arg}\max _{\boldsymbol{\theta }}P\left( \boldsymbol{X};\boldsymbol{\theta } \right) \\&=\mathrm{arg}\max _{\boldsymbol{\theta }}\left[ P\left( \boldsymbol{x}_1;\boldsymbol{\theta } \right) P\left( \boldsymbol{x}_2;\boldsymbol{\theta } \right) \cdots P\left( \boldsymbol{x}_n;\boldsymbol{\theta } \right) \right] \\&=\mathrm{arg}\max _{\boldsymbol{\theta }}\left[ \sum_{i=1}^n{\ln P\left( \boldsymbol{x}_i;\boldsymbol{\theta } \right)} \right]\end{aligned} θ MLE=argθmaxP(X;θ)=argθmax[P(x1;θ)P(x2;θ)P(xn;θ)]=argθmax[i=1nlnP(xi;θ)]

其中对数化可以防止概率连乘数值下溢,是机器学习理论推导与工程应用的重要方法。

MLE可以看作采用了经验风险最小化(Experience Risk Minimization)策略,更侧重从样本数据中学习模型的潜在参数,将训练集损失降到最低。这在数据样本缺失的情况下容易管中窥豹,使模型发生过拟合。

回到这个例子,根据极大似然估计

θ ^ M L E = a r g max ⁡ θ [ ∑ i = 1 n ln ⁡ P ( x i ; θ ) ] = θ ⋅ θ ⋅ ( 1 − θ ) ⋅ ( 1 − θ ) ⋅ θ ⋅ ( 1 − θ ) ⋅ θ ⋅ θ ⋅ θ ⋅ θ = θ 7 ( 1 − θ ) 3 \begin{aligned} \widehat{\theta }_{MLE}&=\mathrm{arg}\max _{\theta}\left[ \sum_{i=1}^n{\ln P\left( x_i;\theta \right)} \right] \\&=\theta \cdot \theta \cdot \left( 1-\theta \right) \cdot \left( 1-\theta \right) \cdot \theta \cdot \left( 1-\theta \right) \cdot \theta \cdot \theta \cdot \theta \cdot \theta \\&=\theta ^7\left( 1-\theta \right) ^3\end{aligned} θ MLE=argθmax[i=1nlnP(xi;θ)]=θθ(1θ)(1θ)θ(1θ)θθθθ=θ7(1θ)3

L ( θ ) = θ 7 ( 1 − θ ) 3 L\left( \theta \right) =\theta ^7\left( 1-\theta \right) ^3 L(θ)=θ7(1θ)3,令 ∂ L ( θ ) / ∂ θ = 0 \partial {{L\left( \theta \right)}/{\partial \theta}}=0 L(θ)/θ=0可得 θ M L E = 0.7 \theta _{MLE}=0.7 θMLE=0.7

θ M L E = 0.7 \theta _{MLE}=0.7 θMLE=0.7 即硬币向上概率为70%时,最有可能出现实验样本的正反序列。当然 θ M L E = 0.7 \theta _{MLE}=0.7 θMLE=0.7并不符合直觉,因为实验样本数量太少存在偶然误差。所以我们可以在参数估计时设定一个大概的范围,这就是接下来要介绍的极大后验估计。

3 极大后验估计

极大后验估计(Maximum A Posteriori Estimation, MAP)顾名思义优化的是后验概率 P ( θ ∣ X ) P\left( \boldsymbol{\theta }|\boldsymbol{X} \right) P(θX),即根据采集的数据样本反过来修正参数——因此必然存在先验性的模型参数。

归结起来,MAP依然是根据已知样本,通过调整模型参数使得模型能够产生该数据样本的概率最大,这点与极大似然估计完全一致。只不过MAP相较MLE多了一个对于模型参数的先验分布假设,而不再一味地依赖数据样例,这使得此时的环境参数不再是固定的,而是一个随机变量。

所以

  • 极大似然估计是频率学派的观点
  • 极大后验估计是贝叶斯学派的观点

假设数据样本 ( x 1 , x 2 , ⋯   , x n ) \left( \boldsymbol{x}_1,\boldsymbol{x}_2,\cdots ,\boldsymbol{x}_n \right) (x1,x2,,xn)是满足独立同分布的一组抽样 X \boldsymbol{X} X,设模型参数为 θ \boldsymbol{\theta } θ,则

θ ^ M A P = a r g max ⁡ θ P ( θ ∣ X ) = a r g max ⁡ θ [ ln ⁡ P ( X ∣ θ ) + ln ⁡ P ( θ ) − ln ⁡ P ( X ) ]    = a r g max ⁡ θ [ ∑ i = 1 n ln ⁡ P ( x i ∣ θ ) + ln ⁡ P ( θ ) ] \begin{aligned}\widehat{\boldsymbol{\theta }}_{MAP}&=\mathrm{arg}\max _{\boldsymbol{\theta }}P\left( \boldsymbol{\theta }|\boldsymbol{X} \right) \\&=\mathrm{arg}\max _{\boldsymbol{\theta }}\left[ \ln P\left( \boldsymbol{X}|\boldsymbol{\theta } \right) +\ln P\left( \boldsymbol{\theta } \right) -\ln P\left( \boldsymbol{X} \right) \right] \,\, \\&=\mathrm{arg}\max _{\boldsymbol{\theta }}\left[ \sum_{i=1}^n{\ln P\left( \boldsymbol{x}_i|\boldsymbol{\theta } \right) +\ln P\left( \boldsymbol{\theta } \right)} \right]\end{aligned} θ MAP=argθmaxP(θX)=argθmax[lnP(Xθ)+lnP(θ)lnP(X)]=argθmax[i=1nlnP(xiθ)+lnP(θ)]

MAP可以看作采用了结构风险最小化(Structural Risk Minimization)策略,在经验风险最小化的基础上考虑参数的先验分布——类似于在损失函数上增加了正则项,防止模型出现过拟合状态。这样在数据样本不是很充分的情况下,仍可以通过模型参数先验假设,辅以数据样本,做到尽可能地还原真实模型分布

回到这个例子,根据极大后验估计先假设 θ \theta θ满足均值为0.5,方差为1的先验分布 θ   N ( 0.5 , 1 ) \theta ~N\left( 0.5,1 \right) θ N(0.5,1),即认为这是一枚质地均匀的硬币,则似然函数为:

L ( θ ) = θ 7 ( 1 − θ ) 3 1 2 π e − ( θ − 0.5 ) 2 2 L\left( \theta \right) =\theta ^7\left( 1-\theta \right) ^3\frac{1}{\sqrt{2\pi}}e^{-\frac{\left( \theta -0.5 \right) ^2}{2}} L(θ)=θ7(1θ)32π 1e2(θ0.5)2

同样求导可得 θ M A P ≈ 0.696 \theta _{MAP}\approx 0.696 θMAP0.696,与 θ M L E = 0.7 \theta _{MLE}=0.7 θMLE=0.7相比,MAP考虑了结构风险,有对过拟合进行修正的趋势。

4 Python实现

写个简单的程序可视化一下似然函数

import matplotlib.pyplot as plt
import numpy as np

theta = np.arange(0, 1, step=0.001)
MLE = theta**7 * (1 - theta)**3
MAP = theta**7 * (1 - theta)**3 * np.exp(-(theta - 0.5)**2 / 2) / np.sqrt(2 * pi)

plt.plot(theta, MLE, 'r-')
plt.plot(theta, MAP, 'b--')
plt.vlines(np.argmax(MLE) / len(theta), 0, max(MLE), linestyles ="dotted", colors ="r")
plt.vlines(np.argmax(MAP) / len(theta), 0, max(MAP), linestyles ="dotted", colors ="b")
plt.show()

机器学习:通俗理解极大似然估计和极大后验估计+实例分析_第2张图片

机器学习:通俗理解极大似然估计和极大后验估计+实例分析_第3张图片


更多精彩专栏

  • 《ROS从入门到精通》
  • 《机器人原理与技术》
  • 《机器学习强基计划》
  • 《计算机视觉教程》

源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系

你可能感兴趣的:(机器学习,人工智能,算法,python)