极大似然估计在机器学习中很多模型都会用到,理解了极大似然估计对后面学习机器学习有很大帮助。
极大似然估计听着很高冷,光看名字就让需要数学不好的同学望而却步。其实说了就是根据统计结果,反推什么情况下最可能发生这个结果。
再简单的说就是:根据统计结果反推事件发生的概率。
再简单了说就是现有方程:
f = a x + b y f = ax + by f=ax+by 已知f, x, y 的值已知,反推参数a,b的值。
没有办法再简单了。
举个例子吧,我们看到一对父子长得很像,我们可以说他们一定是亲生父子,有依据但是不科学。如果要从科学的 角度去判断他们是不是亲生父子,我们需要对他们进行多方面的考查,比如说肤色,眼睛,鼻子,酒窝,气质等等,然后考查得差不多了,就可以说他们有90%的概率存在父子关系(当然你也可以觍(tian)着脸挣钱拉着这两个陌生人去医院做亲子鉴定)
前面是我们盲目地去猜,后面就是有科学依据的,那这科学依据是什么呢?
就是这里我们所要说的极大似然估计
极大似然估计是求估计的一种方法,它最早由高斯提出,接下来费歇在1912年报文章中重新提出,并且证明了这个方法的一些性质。
由于极大似然估计的最优性,作为参数估计的一种常用方法,已经在众多的领域中广泛得到应用。例如系统辨识,语音处理,图像处理及模型识别等等等等。
它是建立在极大似然估计原理的基础上的一个统计方法,并且所得到的极大似然估计具有良好的性质。如相合性,有效性,不变性等。
从某种意义上来说没有比极大似然估计更好的参数估计了。
极大似然原理的直观想法是:一个随机试验如有若干个可能的结果A,B,C,。。。。,若在一次试验中,结果A出现了,那么可以认为实验条件对A的出现有利,也即出现的概率 P ( A ) P(A) P(A)较大。极大似然原理的直观想法我们用下面例子说明:设甲箱中有99个白球,1个黑球;乙箱中有1个白球,99个黑球
现随机取出一箱,再从抽取的一箱中随机取出一球,结果是黑球,这一黑球从乙箱抽取的概率比从甲箱抽取的概率大得多,这里我们自然更多地相信这个黑球是取自自乙箱的。一般来说,事件A发生的概率与某一未知参数 θ \theta θ有关, θ \theta θ取值不同,则事件A发生的概率 P ( A ∣ θ ) P(A|\theta) P(A∣θ)也不同,当我们在一次试验中事件A发生了,则认为此时的 θ \theta θ值应是t的一切可能取值中使 P ( A ∣ θ ) P(A|\theta) P(A∣θ)达到最大的那一个,极大似然估计就是要选取这样的t值作为参数t的估计值,使所选取的样本在被选的总体中出现的可能性为最大。
极大似然估计只是一种概率论在统计学的应用,它是参数估计的方法之一,说的是已知某个随机样本满足某种概率分布,但是其中具体的参数不清楚,参数估计就是通过若干次试验,观察其结果,利用结果推出参数的大概值。极大似然估计是建立在这样的思想上:已知某个参数能使这个样本出现的概率最大,我们当然不会再去选择其他小概率的样本,所以干脆就把这个参数作为估计的真实值。
当然极大似然估计只是一种粗略的数学期望,要知道它的误差大小还要做区间估计。
ok,说完了原理,来说下它在机器学习中的应用及推导。
例子还是举上面黑箱中白球和黑球的问题。现在有一黑箱,只知道里面有白球,黑球,红球,多少未知但是足够大,比例也未知。我们想知道黑箱里各种球的分类情况。我们一次从黑箱中取出10个球,记下三种球的个数,之后放回,重复100次。
OK,现在分析一下这个问题。
网上好多博客都是取黑箱统计球的问题来分析极大似然估计,之所以用这个例子因为很经典啊,它是现实中各种问题的抽象。
那么抽象的是什么呢?
抽象的是黑箱事件。黑箱,即我们只能从外面看这个箱子,箱子里面是有什么我们知道(白球,红球,黑球),但是有多少不知道。
现实中有很多这样的例子,比如说估计流水线上次品率的问题,估计池塘里鱼的分类的问题等等
独立同分布
通过抽取和放回确定这是独立同公布事件(每次抽取互不影响),并且是应用了统计学的方法
样本集
于是我们知道抽取的结果就是样本集,记为D,其中:
D = x 1 , x 2 , x 3 , ⋯   , x 100 ⎵ 100 D = {\begin{matrix} \underbrace{x_1, x_2, x_3, \cdots , x_{100} } \\100\end{matrix}} D= x1,x2,x3,⋯,x100100
x 1 x_1 x1~ x 100 x_{100} x100为100次抽样的结果
联合概率
因为我们是根据统计结果来估计概率的,参数 θ \theta θ和样本D互相影响,我们可以可以把它们看成两个互相影响的事件,于是似然函数可以看成联合概率。
于是联合概率 P ( D ∣ θ ) P(D|\theta) P(D∣θ)称为相对于样本空间 D = { x 1 , x 2 , x 3 , ⋯   , x n } D = \{x_1, x_2, x_3, \cdots, x_n\} D={x1,x2,x3,⋯,xn}关于的 θ \theta θ的似然函数:
l ( θ ) = P ( D ∣ θ ) = P ( x 1 , x 2 , x 3 , ⋯   , x 100 ∣ θ ) = ∏ i = 1 100 P ( x i ∣ θ ) \begin{aligned} l(\theta) &= P(D|\theta) \\ &= P(x_1, x_2, x_3, \cdots, x_{100}|\theta) \\ &= \prod_{i=1}^{100} P(x_i | \theta) \end{aligned} l(θ)=P(D∣θ)=P(x1,x2,x3,⋯,x100∣θ)=i=1∏100P(xi∣θ)
统计的次数越多,越接近真实情况。我们就用这个非常接近的统计结果,作为真实的情况。
所以如果 θ ^ \hat\theta θ^是参数空间中能使似然函数 l ( θ ) l(\theta) l(θ)最大的 θ \theta θ值,则 θ ^ \hat\theta θ^是最可能的参数值,那么 θ ^ \hat\theta θ^就是 θ \theta θ的极大似然估计值。它是样本集的函数,于是我们所要估计的参数向量 θ ^ \hat\theta θ^为:
θ ^ = d ( x 1 , x 2 , x 3 , ⋯   , x 100 ) = d ( D ) \begin{aligned} \hat\theta &= d(x_1, x_2, x_3, \cdots, x_{100}) \\ &= d(D) \end{aligned} θ^=d(x1,x2,x3,⋯,x100)=d(D)
θ ^ ( x 1 , x 2 , x 3 , ⋯   , x n ) \hat\theta(x_1, x_2, x_3, \cdots, x_n) θ^(x1,x2,x3,⋯,xn)就称为极大似然函数的估计值,即极大似然估计,记作:
θ ^ = a r g m a x θ l ( θ ) = a r g m a x θ ∏ i = 1 n P ( x i ∣ θ ) \begin{aligned} \hat\theta &= \mathop {argmax} \limits_{\theta} l(\theta) \\ &= \mathop {argmax} \limits_{\theta} \prod_{i=1}^{n} P(x_{i} | \theta) \end{aligned} θ^=θargmaxl(θ)=θargmaxi=1∏nP(xi∣θ)
注意:
θ \theta θ是一个向量, θ ⃗ = [ θ 1 , θ 2 , θ 3 , … , θ n ] \vec{\theta} = [\theta_1, \theta_2, \theta3, \ldots, \theta_n] θ=[θ1,θ2,θ3,…,θn]
求极大似然估计值,就需要求下似然函数的导数,导数的极值点就是似然函数的最大值。
由于求导数极值点的时候我们只关心x的取值,帮可以对似然函数取对数后再求导。
问:为什么极值点就是最大值点呢?
在概率统计的导数没有其他数学方程式那么复杂的曲线走位,一般是只有一个极值点的。就像中国人的身高都集中在170,牛的体重都集中在900公斤。。。。。啊?一般?怎么不是全部?不敢说那么绝对,敢情你举出一个例外的。
问:为什么要求导的时候要取对数?
似然函数是连乘的形式,求导的时候不好求。取对数后就变成了加了,而且还不改变它的单调性。
问:对一个函数取对数后它的单调性与原函数为什么是一样的?
对数函数是单调递增的。这就好像是"+1"(正1)前面加一个加号还是正1,"-1"前面加上一个正号还是负1
对似然函数取对数:
ln ∂ L ( θ ) ∂ θ = ∑ i = 1 n ln P ( x i ∣ θ ) \ln \frac{\partial L(\theta)}{\partial \theta} = \sum_{i=1}^{n} \ln P(x_{i} | \theta) ln∂θ∂L(θ)=i=1∑nlnP(xi∣θ)
令 h ( θ ) = ln ∂ L ( θ ) ∂ θ h(\theta) = \ln \frac{\partial L(\theta)}{\partial \theta} h(θ)=ln∂θ∂L(θ),于是有:
h ( θ ) = ∑ i = 1 n ln P ( x i ∣ θ ) h(\theta)= \sum_{i=1}^{n} \ln P(x_{i} | \theta) h(θ)=i=1∑nlnP(xi∣θ)
变成连加以后是不是好算多了?
好了现在我们只需要知道联合概率函数 P ( x i ∣ θ ) P(x_i | \theta) P(xi∣θ)是什么就可以了。
这个要看事件服从什么分布了,像上面的黑箱取球的问题肯定是服从线性分布啊,于是就有:
P ( x i ∣ θ ⃗ ) = θ 1 × x 1 + θ 2 × x 2 + θ 3 × x 3 P(x_i | \vec\theta) = \theta_1 \times x_1 + \theta_2 \times x_2 + \theta_3 \times x_3 P(xi∣θ)=θ1×x1+θ2×x2+θ3×x3
θ ⃗ = [ θ 1 , θ 2 , θ 3 , ⋯   , θ n ] \vec\theta = [\theta_1, \theta_2, \theta_3, \cdots, \theta_n] θ=[θ1,θ2,θ3,⋯,θn] 这里默认 θ \theta θ就是向量 θ ⃗ \vec\theta θ,好多地方懒省事儿都把 θ ⃗ \vec\theta θ写成 θ \theta θ了,不过如果是标量 θ \theta θ的话肯定会写成 θ i \theta_i θi的。
不过一般我们不研究呈线性分布的,自然界中,机器学习中绝大部分情况 P ( x i ∣ θ ) P(x_i | \theta) P(xi∣θ)都是呈正态分布的(也叫高斯分布),这里我们只讨论下正态分布的情况,当然 P ( x i ∣ θ ) P(x_i | \theta) P(xi∣θ)也有呈0-1分布,二项分布,几何分布,指数分布,泊松分布等,这里不做研究。
我们都知道样本服从正态分布时P的概率:
f ( x ) = 1 2 π σ ⋅ e − ( x − μ ) 2 2 σ 2 f(x) = \frac{1}{\sqrt{2\pi}\sigma} \cdot e^{-\frac{(x - \mu)^2}{2\sigma^2}} f(x)=2πσ1⋅e−2σ2(x−μ)2
其中
μ \mu μ为数学期望(平均值)
σ \sigma σ为方差
于是有
h ( θ ) = ln ∑ i = 1 n ln P ( x i ∣ θ ) = ( ∑ i = 1 n ln P ( x i ∣ θ ) ) ′ = ( ∑ i = 1 n ln 1 2 π σ ⋅ e − ( x − μ ) 2 2 σ 2 ) ′ = ∑ i = 1 n ln 1 2 π σ + ∑ i = 1 n − ( x − μ ) 2 2 σ 2 = − n 2 ln ( 2 π σ 2 ) − 1 2 σ 2 ∑ i = 1 n ( x − μ ) 2 \begin{aligned} h(\theta) &= \ln \sum_{i=1}^{n} \ln P(x_{i} | \theta) \\ &= (\sum_{i=1}^{n} \ln P(x_{i} | \theta))' \\ &= (\sum_{i=1}^{n} \ln \frac{1}{\sqrt{2\pi}\sigma} \cdot e^{-\frac{(x - \mu)^2}{2\sigma^2}})' \\ &= \sum_{i=1}^{n} \ln \frac{1}{\sqrt{2\pi}\sigma} + \sum_{i=1}^{n} {-\frac{(x - \mu)^2}{2\sigma^2}} \\ &= -\frac{n}{2}\ln(2\pi\sigma^2) - \frac{1}{2\sigma^2}\sum_{i=1}^{n} {(x - \mu)^2} \end{aligned} h(θ)=lni=1∑nlnP(xi∣θ)=(i=1∑nlnP(xi∣θ))′=(i=1∑nln2πσ1⋅e−2σ2(x−μ)2)′=i=1∑nln2πσ1+i=1∑n−2σ2(x−μ)2=−2nln(2πσ2)−2σ21i=1∑n(x−μ)2
要求似然函数 L ( X ) L(X) L(X)的最大值,只需要求 h ( θ ) h(\theta) h(θ)的极值即可。即令:
− n 2 ln ( 2 π σ 2 ) − 1 2 σ 2 ∑ i = 1 n ( x − μ ) 2 = 0 -\frac{n}{2}\ln(2\pi\sigma^2) - \frac{1}{2\sigma^2}\sum_{i=1}^{n} {(x - \mu)^2} = 0 −2nln(2πσ2)−2σ21i=1∑n(x−μ)2=0
根据前面黑箱取球的例子, n n n为样本数即前面我们取了100次球, x x x为样本,即10个球里有几个白球,几个红球,几个黑球。 n , x n, x n,x都是已知的,未知的只有 σ , μ \sigma, \mu σ,μ。故对 σ , μ \sigma, \mu σ,μ求偏导:
{ h ( x ) d μ = 0 + 1 σ 2 ∑ i = 1 n ( x i − μ ) = 0 h ( x ) d σ = n σ − 1 σ 3 ⋅ ∑ i = 1 n ( x i − μ ) 2 = 0 \begin{cases} \frac{h(x)}{d\mu} = 0 + \frac{1}{\sigma^2}\sum_{i=1}^{n} (x_i - \mu) = 0 \\ \\ \frac{h(x)}{d\sigma} = \frac{n}{\sigma} - \frac{1}{\sigma^3} \cdot \sum_{i=1}^{n}(x_i - \mu)^2 = 0 \end{cases} ⎩⎪⎨⎪⎧dμh(x)=0+σ21∑i=1n(xi−μ)=0dσh(x)=σn−σ31⋅∑i=1n(xi−μ)2=0
其中:
n 2 ln ( 2 π σ 2 ) \frac{n}{2}\ln(2\pi\sigma^2) 2nln(2πσ2)对 μ \mu μ求偏导的结果为 0 0 0
化简以后为:
{ 1 σ 2 ∑ i = 1 n ( x i − μ ) = 0 n − 1 σ 2 ⋅ ∑ i = 1 n ( x i − μ ) 2 = 0 \begin{cases} \frac{1}{\sigma^2}\sum_{i=1}^{n} (x_i - \mu) = 0 \\ \\ n - \frac{1}{\sigma^2} \cdot \sum_{i=1}^{n}(x_i - \mu)^2 = 0 \end{cases} ⎩⎪⎨⎪⎧σ21∑i=1n(xi−μ)=0n−σ21⋅∑i=1n(xi−μ)2=0
再化简:
{ ∑ i = 1 n ( x i ) − n μ = 0 1 σ 2 ⋅ ∑ i = 1 n ( x i − μ ) 2 = n \begin{cases} \sum_{i=1}^{n} (x_i )- n\mu = 0 \\ \\ \frac{1}{\sigma^2} \cdot \sum_{i=1}^{n}(x_i - \mu)^2 = n \end{cases} ⎩⎪⎨⎪⎧∑i=1n(xi)−nμ=0σ21⋅∑i=1n(xi−μ)2=n
最终有:
{ μ = 1 n ∑ i = 1 n ( x i ) σ 2 = 1 n ∑ i = 1 n ( x i − μ ) 2 \begin{cases} \mu = \frac{1}{n} \sum_{i=1}^{n} (x_i )\\ \\ \sigma^2 = \frac{1}{n} \sum_{i=1}^{n}(x_i - \mu)^2 \end{cases} ⎩⎪⎨⎪⎧μ=n1∑i=1n(xi)σ2=n1∑i=1n(xi−μ)2
有没有发现哪儿有不对的地方?
这个 μ , σ \mu, \sigma μ,σ怎么好像回到了数学期望 μ \mu μ和方差 σ \sigma σ定义的的地方了呢?
再次回到上面黑箱摸球的统计实验,在实验中
x i x_i xi为样本, n n n为样本数
推导结果里的 μ \mu μ并不是定义的数学期望的 μ \mu μ,而是极大似然估计的 μ \mu μ。 σ 2 \sigma^2 σ2也不是方差的定义,而是极大似然估计的 σ 2 \sigma^2 σ2
推导的最终结果的意思是:在统计样本里我们可以近似地认为:
样本的平均值 μ \mu μ就是实际的平均值
样本的方差 σ 2 \sigma^2 σ2就是实际的方差
OK,至此推导结束,总结一下
注意,如果假设的条件概率模型正确,则通常能获得较好的结果.但是如果假设模型出现偏差,将导致非常差的估计结果。
这样的话怎么办呢?
机器学习也是这方面的考虑,在对模型进行训练的时候会把统计结果留出一小部分来,用剩下的大部分的数据对模型进行训练,来验证我们所做的模型是否正确。如果效果不好的话那就换模型吧。