机器学习强基计划聚焦深度和广度,加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理;“广”在分析多个机器学习模型:决策树、支持向量机、贝叶斯与马尔科夫决策、强化学习等。
详情:机器学习强基计划(附几十种经典模型源码合集)
某硬币有 θ \theta θ的概率正面朝上,为确定 θ \theta θ做如下实验:掷10次硬币得到一个正反序列——
正正反反正反正正正正
。请分别用极大似然法与极大后验法估计参数 θ \theta θ
历史上对估计参数 θ \theta θ的假设有两种观点,称为频率学派和贝叶斯学派
机器学习强基计划4-1:你真的分得清频率、概率、几率和似然吗?中提到:当环境参数 θ \theta θ未知时为似然问题:即给定样本观测数据,从而推测可能产生这个结果的环境参数。由于这个例子中 θ \theta θ未知——是需要估计的参数,所以是一个似然问题。所以接下来我们将采用似然问题的分析方法理解这个例子,同时将看到来自频率学派和贝叶斯学派的不同观点。
似然问题往往只关注似然函数取最大值时,对应的模型参数,因为这个模型参数下最有可能出现样本的分布。由此引申出基于似然函数值极大的参数估计方法——极大似然法(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=1∑nlnP(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=1∑nlnP(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并不符合直觉,因为实验样本数量太少存在偶然误差。所以我们可以在参数估计时设定一个大概的范围,这就是接下来要介绍的极大后验估计。
极大后验估计(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=1∑nlnP(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π1e−2(θ−0.5)2
同样求导可得 θ M A P ≈ 0.696 \theta _{MAP}\approx 0.696 θMAP≈0.696,与 θ M L E = 0.7 \theta _{MLE}=0.7 θMLE=0.7相比,MAP考虑了结构风险,有对过拟合进行修正的趋势。
写个简单的程序可视化一下似然函数
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()
更多精彩专栏: