极大似然小结

摸鱼高手
• 阅读 1998

在机器学习中,我们经常要利用极大似然法近似数据整体的分布,本篇文章通过介绍极大似然法及其一些性质,旨在深入浅出地解释清楚极大似然法。

0. 贝叶斯概率

首先看一下经典的贝叶斯公式:

$$ p(Y|X)=\frac{p(X|Y)p(Y)}{p(X)} $$

其中,$p(Y)$称为先验概率($prior$),即根据先验知识得出的关于变量$Y$的分布,$p(X|Y)$称为似然函数($likelihood$),$p(X)$为变量$X$的概率,$p(Y|X)$称之为条件概率(给定变量$X$的情况下$Y$的概率,$posterior$,后验概率)。

1. 似然函数

似然,即可能性;顾名思义,则似然函数就是关于可能性的函数了。在统计学中,它表示了模型参数的似然性,即作为统计模型中参数的函数。一般形式如下:

$$ L(\omega)=p(D | \omega) = p(x_1, x_2, \cdots ,x_n| \omega) $$

其中,$D$表示样本集$\{x_1,x_2,\cdots, x_n\}$,  $\omega$表示参数向量。

似然函数表示了在不同的参数向量$\omega$下,观测数据出现的可能性的大小,它是参数向量$\omega$的函数。在某种意义上,我们可以认为其是条件概率的逆反$^{[1]}$。

在这里利用Wikipedia$^{[1]}$中的例子简要说明一下似然函数,同时也引出极大似然估计。

考虑优质一枚硬币的实验,通常来说,我们的硬币都是“公平”(质地均匀)的,即正面向上(Head)的概率$p_H=0.5$,由此概率我们可以知道投掷若干次后各种结果出现的可能性(概率,或然性)。

例如,投掷硬币两次,两次都为上的概率为0.25,利用条件概率表示,即:

$$ P(HH|p_h=0.5)=0.5^2=0.25 $$

如果一个硬币并非质地均匀,那么它可能是一枚“非公平”的。在统计学中,我们关注的是已知一系列投掷的结果时,关于硬币投掷时正面朝上的可能性的信息。我们可以建立一个统计模型:假设硬币投出时会有$p_H$的概率正面朝上,则有$1-p_H$的概率反面朝上。这时通过观察已发生的两次投掷,条件概率可以改写成似然函数:

$$ L(p_H)=P(HH|p_H=0.5)=0.25 $$

也就是说,对于取定的似然函数,在观测到两次投掷都是正面朝上时,$p_H$的似然性是0.25。注意,反之并不成立,即当似然函数为0.25时,不能推论出$p_H=0.25$

如果考虑$p_H=0.6$,那似然函数也会改变:

$$ L(p_H)=P(HH|p_H=0.6)=0.36 $$

如图所示,注意到似然函数的值变大了。这说明,如果参数$p_H$取值变成0.6的话,结果观测到连续两次正面朝上的概率比假设$p_H=0.5$时更大,也就是说,参数$p_H$取0.6要比取成0.5更有说服力,更为"合理"。

<img src="LikelihoodFunctionAfterHH.png" alt="img" style="zoom:50%;" />

总之,似然函数的重要性不是它的具体取值,而是当参数变化时,函数到底变小还是变大

对同一个似然函数,其所代表的模型中,某项参数值具有多种可能,但如果存在一个参数值,使得它的函数值最爱的话,那么这个值就是这项参数最为“合理”的参数值。

在这个例子中,$p_H$取1时,似然函数达到最大值。也即是,当连续观测到两次正面朝上时,假设硬币投掷时正面朝上的概率为1是最合理的。

在上述引用中,我们看到了一个极端的结论,即未来所有的投掷都会是正面向上,这是频率派观点下使用广泛的一种方法,即极大似然法。在上面的观点中(频率派),$\omega$被认为是一个固定的参数,它的值通过估计来确定。但是在贝叶斯派观点中,只有一个数据集$D$(即实际观测到的数据集),参数的不确定性通过$\omega$的概率分布来表达。贝叶斯的观点是对先验概率的包含是很自然的事情,包含先验概率的贝叶斯方法将不会得到上述的极端结论。

另外还有两点需要注意,第一,似然函数不是$\omega$的概率分布,关于$\omega$的积分并不一定等于1;第二,似然$\ne$概率,概率(或然性)用于在已知一些参数的情况下预测接下来的结果,似然性则是在已知某些结果时,对有关参数进行估值。关于第二点,举个例子,如果我有一枚硬币,如果是质地均匀的(已知参数),那么它出现正面朝上的概率为0.5(结果);同样地,如果一枚硬币,我抛了100次,正面朝上52次(结果),那么我认为硬币十有八九是质地均匀的(估计参数)。

2. 极大似然估计(maximum likelihood estimation, MLE)

了解了似然函数,那么极大似然估计是什么就很好理解了,它是一种用来估计一个概率模型参数的方法。根据公式(2),我们一旦获得一个数据集$D$,那我们就能求得一个关于$\omega$的估计,极大似然估计会寻找一个最可能的值(此处的可能是最可能的$\omega$,这个$\omega$可以使出现采样$D$的可能性最大化)。

从数学上来讲,我们可以在$\omega$的所有取值中,寻找一个值使得似然函数达到最大值,这种估计方法称之为极大似然估计。极大似然估计是样本不变时,关于$\omega$的函数。极大似然估计不一定存在,也不一定唯一。

在第1节中预测硬币的质地$\omega$,是关于极大似然估计的一个经典例子。其他例子可以查看参考文献$^{[2]}$。

现在我们看一下极大似然估计在正态分布中的应用:

现在假定我们有一个观测的数据集$\mathbf{x}=(x_1,\cdots,x_N)^T$,表示标量变量$x$的N次观测。我们假定各次观测是独立地从高斯分布中抽取,分布的均值$\mu$和方差$\sigma^2$未知,我们想根据数据集来确定这些参数。两个独立事件的联合概率可以由各个事件的边缘概率的乘积得到。我们的数据集$\mathbf{x}$是独立同分布的,因此给定$\mu$和$\sigma^2$,我们可以给出高斯分布的似然函数:

$$ p(\mathbf{x}|\mu,\sigma^2)=\prod_{n=1}^{N}\mathcal{N}(x_n|\mu,\sigma^2) $$

为了简化分析和有助于数值运算,我们取似然函数的对数(最大化对数似然等价于最大化似然函数,很容易证明):

$$ ln(\mathbf x|\mu,\sigma^2)=-\frac {1} {2\sigma^2} \sum_{n=1}^{N}(x_n-\mu)^2-\frac {N}{2}ln\sigma^2-\frac{N}{2}ln(2\pi) $$

关于$\mu$,最大化对数似然函数,得到$\mu$的最大似然解:

$$ \mu_{ML}=\frac {1}{N} \sum_{n=1}^{N}x_n $$

可看到解为样本均值。同理,方差$\sigma^2$的最大似然解为:

$$ \sigma_{ML}^2=\frac {1}{N} \sum_{n=1}^{N}(x_n-\mu_{ML})^2 $$

由此完成了正态分布的极大似然估计。

3. 极大似然的有偏性

极大似然估计方法求解参数有一定局限性$^{[3]}$,极大似然法除了会得出第1节中关于硬币的极端情况外,还会出现一种情况,有偏估计,就是期望$\ne$理想值。最大似然方法会系统化地低估分布的方差。下面进行证明:

均值的估计$\mu_{ML}$的期望$E[\mu_{ML}]$为:

$$ E(\mu_{ML})=E(\frac{1}{N} \sum_{n=1}^{N}x_n)=\frac {1}{N}E({\sum_{n=1}^{N}x_n})=\frac{1}{N}\sum_{n=1}^{N}E(x_n)=\mu $$

方差的估计$\sigma^2$的期望$E[\sigma_{ML}^2]$为:

$$ E[\sigma_{ML}^2]=E(\frac {1}{N} \sum_{n=1}^{N}(x_n-\mu_{ML})^2)=E(\frac{1}{N}\sum_{n=1}^{N}x_n^2-\mu_{ML}^2)=\frac {1}{N}\sum_{n=1}^{N}E(x_n^2)-E(\mu_{ML}^2) $$

然后求其后两项,正态分布的二阶矩为

$$ E(x_n^2)=\mu^2+\sigma^2 $$

$$ E(\mu_{ML}^2)=E((\frac{x_1+x_2+x_3+\cdots+x_n}{n})^2)=\frac{1}{n^2}(n^2\mu^2+n\sigma^2) $$

故:

$$ E[\sigma_{ML}^2]=\frac{n-1}{n}\sigma^2 $$

由此证明了极大似然的有偏性。其中公式(12)和公式(13)的证明可自行参考正态分布的基础知识。

在这里,PRML$^{[3]}$给出了更直观地解释,如下图:

1570894486589

其中,绿色曲线表示真实高斯分布,数据点是根据此概率分布生成,三条红色分别拟合了三个高斯概率分布,每个数据集包含了两个蓝色数据点,对三个数据集求平均,很明显方差被低估了。因为它是相对样本均值进行测量的,而不是相对真实的均值进行测量

4. 后记

极大似然作为机器学习中的一种最常用方法,深刻理解其含义是非常必要且有用的,应该像这对于理解概率论和一些常见的模型有着很大的帮助。当然,极大似然法还有一些性质,如泛函不变性渐行线行为,限于时间精力和个人水平,没有给出证明,读者可自行参考维基百科$^{[2]}$。文章中大部分内容为总结和摘抄,共勉。

参考文献:

  1. https://zh.wikipedia.org/wiki...
  2. https://zh.wikipedia.org/wiki/%E6%9C%80%E5%A4%A7%E4%BC%BC%E7%84%B6%E4%BC%B0%E8%AE%A1
  3. Pattern Recognition and Machine Learning 》(即PRML)
  4. 《Theory of Point Estimation》
  5. https://www.zhihu.com/questio...
本文由博客一文多发平台 OpenWrite 发布!
点赞
收藏
评论区
推荐文章
Java:输出1~20000内的所有素数,按每行5个打印出来
publicclassSupublicstaticvoidmain(Stringargs)intx,y;intk0;for(x2;x<1000;x)//11000的素数从2开始booleanflagtrue;for(y2;y<x;y)if(x%y0)flagfalse;
Wesley13 Wesley13
3年前
C语言函数:用位运算交换的方法交换两个变量值
void inplace_swap(int x, int y){    y  x ^ y; //Step 1    x  x ^ y; //Step 2    y  x ^ y; //Step 3 }int main(){  
Stella981 Stella981
3年前
Python OpenCV实例:图像灰度拉伸
coding:utf8'''灰度拉伸定义:灰度拉伸,也称对比度拉伸,是一种简单的线性点运算。作用:扩展图像的直方图,使其充满整个灰度等级范围内公式:g(x,y)255/(BA)f(x,y)A,其中,Aminf(x,y),最小
Stella981 Stella981
3年前
Android OpenCV(十八):均值滤波
均值滤波均值滤波也称为线性滤波,其采用的主要方法为邻域平均法。线性滤波的基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点(x,y),选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度g(x,y),即g(x,y)∑f(x,y)/mm为该模板中
Stella981 Stella981
3年前
Julia
算术运算符算术运算符适用于所有的基本数值类型x,一元加法,就是x本身\x,一元减法,x的相反数xy,二元加法,做加法运算xy,二元减法,做减法运算x\y,乘法,做乘法运算x/y,除法,做除法运算x^y,乘方,x的y次幂x%y,取余,x除以y然后取余数,等价于
Wesley13 Wesley13
3年前
AI金融知识自学偏量化方向
前提:统计学习(统计分析)和机器学习之间的区别金融公司采用机器学习技术及招募相关人才要求第一个问题:  机器学习和统计学都是数据科学的一部分。机器学习中的学习一词表示算法依赖于一些数据(被用作训练集),来调整模型或算法的参数。这包含了许多的技术,比如回归、朴素贝叶斯或监督聚类。但不是所有的技术都适合机器学习。例如有一种统计和数
Stella981 Stella981
3年前
CGAffineTransformMake(a,b,c,d,tx,ty) 矩阵运算原理
CGAffineTransformMake(a,b,c,d,tx,ty)ad缩放, bc旋转, tx ty位移(x,y)(x',y')的公式  x'axcytx  y'bxdyty矩阵的基本知识:structCGAffineTransform
Wesley13 Wesley13
3年前
MySQL中的数值函数
常用数值函数函  数功  能ABS(x)返回数值x的绝对值CEIL(x)返回大于或等于x的最小整数值FLOOR(x)返回小于或等于x的最大整数值MOD(x,y)返回x除以y的余数RAND()返回0~1内的随机数ROUND(x,y)返回x四舍五入后有y位小数的数值TRUNCATE(
Wesley13 Wesley13
3年前
PHP字符串函数
<?php$x10;$x$x;echo$x;//输出10$c10;$c$c;echo$c;//输出10$y10;$y$y;echo$y;//输出10$z10;$z
小万哥 小万哥
1年前
Java 数学运算与条件语句全解析
JavaMathJava的Math类拥有许多方法,允许您在数字上执行数学任务。常用方法:Math.max(x,y):找到x和y的最大值Math.min(x,y):找到x和y的最小值Math.sqrt(x):返回x的平方根Math.abs(x):返回x的绝对
小万哥 小万哥
1年前
NumPy 二项分布生成与 Seaborn 可视化技巧
二项分布是描述固定次数独立试验中成功次数的概率分布,常用于分析二元结果的事件,如抛硬币。分布由参数n(试验次数)、p(单次成功概率)和k(成功次数)定义。概率质量函数P(k)C(n,k)p^k(1p)^(nk)。NumPy的random.binomial()可生成二项分布数据,Seaborn可用于可视化。当n大且p接近0.5时,二项分布近似正态分布。练习包括模拟不同条件下的二项分布和应用到考试场景。