机器学习系列之极大似然估计(MLE)
绪论在统计学中,极大似然估计(Maximum Likelihood Estimation)是用来估计模型参数的一种方法,就是利用已知样本的结果信息,反推出最有可能导致这样结果的模型参数值。一般情况下,我们用 θ\thetaθ 来表示模型的参数,所以解决问题的本质就是求θ\thetaθ。举例1现在假设有一枚不均匀的硬币,然后我们做了100次实验,一共60次正面,40次反面;我们设 θ\thet...
核心
在统计学中,极大似然估计(Maximum Likelihood Estimation)是用来估计模型参数的一种方法,就是利用已知样本的结果信息,反推出最有可能导致这样结果的模型参数值。一般情况下,我们用 θ\thetaθ 来表示模型的参数,所以解决问题的本质就是求θ\thetaθ。
举例1
现在假设有一枚不均匀的硬币,然后我们做了100次实验,一共60次正面,40次反面;我们设 θ\thetaθ 为硬币朝上的概率。
现在假设 θ=0.5\theta = 0.5θ=0.5 ,则导致该结果的概率为:P(X=60)=C100600.560(1−0.5)40≈0.0108P(X=60)=C_{100}^{60}0.5^{60}(1-0.5)^{40} \approx 0.0108P(X=60)=C100600.560(1−0.5)40≈0.0108
现在假设 θ=0.6\theta = 0.6θ=0.6 ,则导致该结果的概率为:P(X=60)=C100600.660(1−0.6)40≈0.0812P(X=60)=C_{100}^{60}0.6^{60}(1-0.6)^{40} \approx 0.0812P(X=60)=C100600.660(1−0.6)40≈0.0812
注意开头写的,我们需要得出最有可能导致这样结果的模型参数值,从上面的计算可以看出 θ=0.6\theta = 0.6θ=0.6 时产生这种结果的概率要比 θ=0.5\theta = 0.5θ=0.5 时高得多。
上面只是对比了 θ\thetaθ 为不同值时,产生该结果概率的差异。为了求出 θ\thetaθ 的具体值,我们应先写出似然函数:L(θ)=C10060θ60(1−θ)40L(\theta) = C_{100}^{60}{\theta}^{60}(1 - {\theta})^{40}L(θ)=C10060θ60(1−θ)40
也就是我们需要求出一个 θ\thetaθ 使得L(θ)L(\theta)L(θ)值最大,即最大化这个似然函数:
θMLE=argmaxL(θ)\theta_{MLE} = arg\max L(\theta)θMLE=argmaxL(θ)这个式子正常求解就好。这个例子主要是为了方便大家理解什么是最大似然估计。
举例2
现在我们把上面的例子稍微扩展一下。假设我们做了三组实验,每组实验做了100次,其中,正面朝上的次数分别是50、60、70。这时,因为实验室独立的,我们可以写出似然函数:L(θ)=f(50∣θ)∗f(60∣θ)∗f(70∣θ)L(\theta) = f(50|\theta)*f(60|\theta)*f(70|\theta)L(θ)=f(50∣θ)∗f(60∣θ)∗f(70∣θ)在这个式子中:f(x∣θ)=P(X=x)=C100xθx(1−θ)100−xf(x|\theta) = P(X=x) = C_{100}^{x}{\theta}^{x}(1-{\theta})^{100-x}f(x∣θ)=P(X=x)=C100xθx(1−θ)100−x一般化的,假如我们做了很多组实验,实验结果用分别用x1x_1x1,x2x_2x2,x3x_3x3…,xnx_nxn表示,则似然函数为:L(θ)=f(x1∣θ)f(x2∣θ)⋯f(xn∣θ)L(\theta) = f(x_1|{\theta})f(x_2|\theta)\cdots f(x_n|{\theta})L(θ)=f(x1∣θ)f(x2∣θ)⋯f(xn∣θ)然后来最大似然函数:θMLE=argmaxL(θ)=argmax(f(x1∣θ)f(x2∣θ)⋯f(xn∣θ))\theta_{MLE} = arg\max L(\theta) = arg\max (f(x_1|{\theta})f(x_2|\theta)\cdots f(x_n|{\theta}))θMLE=argmaxL(θ)=argmax(f(x1∣θ)f(x2∣θ)⋯f(xn∣θ))解这个式子的时候一般先取个对数,将连乘变为连加。这个例子主要想说明最大似然可以从很多组样本中来反推出合适的模型参数,下面我们看一个更经典的例子。
正态分布的极大似然估计
现给定一组样本x1x_1x1,x2x_2x2,x3x_3x3…,xnx_nxn,已知它们来自于高斯分布N(μ∣σ)N(\mu|\sigma)N(μ∣σ),也就是我们已知观察结果和模型,不知道参数μ\muμ和σ\sigmaσ,现在需要估算μ\muμ和σ\sigmaσ,首先我们写出高斯分布的概率密度函数:
f(x)=12πσe(x−μ)22σ2f(x)=\frac{1}{\sqrt{2\pi}\sigma}e^\frac{(x-\mu)^2}{2\sigma^2}f(x)=2πσ1e2σ2(x−μ)2
同样的,我们写出似然函数(为了方便运算,我直接取了对数):
L(x)=log∏i=1n12πσe(xi−μ)22σ2=∑i=1nlog12πσe(xi−μ)22σ2=∑i=1nlog12πσ+∑i=1n−(xi−μ)22σ2=−n2log2πσ2−12σ2∑i=1n(xi−μ)2\begin{aligned} L(x) &= \log \prod\limits_{i = 1}^n {\frac{1}{{\sqrt {2\pi } \sigma }}{e^{\frac{{{{({x_i} - \mu )}^2}}}{{2{\sigma ^2}}}}}} \\\\ &= \sum\limits_{i = 1}^n l og\frac{1}{{\sqrt {2\pi } \sigma }}{e^{\frac{{{{({x_i} - \mu )}^2}}}{{2{\sigma ^2}}}}}\\\\ &= \sum_{i=1}^{n}{\log{\frac{1}{\sqrt{2\pi}\sigma}}} + \sum_{i=1}^{n}-{\frac{(x_i - \mu)^2}{2{\sigma}^2}}\\ \\ &= -\frac{n}{2}\log{2\pi {\sigma}^2} - \frac{1}{2{\sigma}^2}{\sum_{i=1}^{n}(x_i - \mu)^2} \end{aligned} L(x)=logi=1∏n2πσ1e2σ2(xi−μ)2=i=1∑nlog2πσ1e2σ2(xi−μ)2=i=1∑nlog2πσ1+i=1∑n−2σ2(xi−μ)2=−2nlog2πσ2−2σ21i=1∑n(xi−μ)2
然后将目标函数对参数 μ\muμ,σ\sigmaσ 求偏导,具体过程就不写了,很容易得到:
μ=1n∑i=1nxi\mu = \frac{1}{n}\sum_{i=1}^n x_iμ=n1i=1∑nxi
σ2=1n∑i=1n(xi−μ)2{\sigma}^2 = \frac{1}{n}{\sum_{i=1}^n({x_i - \mu})^2}σ2=n1i=1∑n(xi−μ)2
我们从式子中其实可以看出,所求得的均值 μ\muμ 和方差 σ\sigmaσ 也是符合我们的预想的,可以看出样本的均值也就是高斯分布的均值,样本的伪方差也是高斯分布的方差。敲了这么多公式来推正态分布的极大似然估计,是因为它很重要,后面别的博客还会用到它。
总结
总结起来就是:已知模型和观测数据X,对模型参数 θ\thetaθ 做估计:
θMLE=argmaxP(X∣θ)\theta_{MLE} = arg\max P(X|\theta)θMLE=argmaxP(X∣θ)
更专业的说法是,最大似然是为了减少模型的概率分布 Q(x;θ)Q(x; \theta)Q(x;θ) 与真实分布 P(x)P(x)P(x) 之间的差异:
θMLE=argmax∏i=1mQ(xi;θ)=argmax∑i=1mlogQ(xi;θ)≈argmaxEx∼P(x)[logQ(x;θ)] \begin{aligned} \theta_{MLE} &= arg\max \prod_{i=1}^m Q(x^i; \theta) \\\\ &= arg \max \sum_{i=1}^m \log Q(x^i; \theta) \\\\ &\approx arg\max E_{x \sim P(x)}[\log Q(x;\theta)] \end{aligned} θMLE=argmaxi=1∏mQ(xi;θ)=argmaxi=1∑mlogQ(xi;θ)≈argmaxEx∼P(x)[logQ(x;θ)]
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)