最近自己会把自己个人博客中的文章陆陆续续的复制到CSDN上来,欢迎大家关注我的 个人博客,以及我的github。
番外篇的内容主要是讲解一些在机器学习中经常会用到但是比较边缘化的知识,或者是某几个知识之间的一些联系和思考。番外篇的第一篇文章就来说一下“极大似然估计”,以及它与最小二乘法、负的对数似然之间的联系。
一、极大似然估计
极大似然估计(Maximum Likelihood Estimate,MLE)是一种在“模型已定,参数未知”的情况下来根据已有的观测值来确定最有可能的模型的参数的参数估计方法。其中“似然”二字是文言文,可以翻译成“可能这样”、“似乎这样”的意思,用现在的话说,就是“概率”的意思。
极大似然估计的步骤如下:
(1). 写出似然函数
(2). 对似然函数取对数,并化简整理
(3). 对数似然函数对参数 θ \theta θ求导,并令导数为0
(4). 求得参数 θ \theta θ,得到最终的模型
下面来看一下极大似然估计可行的原因以及其详细步骤。
假设我们已经知道样本满足的模型(概率分布)为 p ( x ; θ ) p(x;\theta) p(x;θ),其中 θ \theta θ是未知参数, p ( x ; θ ) p(x;\theta) p(x;θ)表示在参数为 θ \theta θ时出现观测数据的概率。
现在已知多个样本的观测值(具体的数值):
x
1
,
x
2
,
.
.
.
,
x
n
x_1,x_2,...,x_n
x1,x2,...,xn,可以假设这些样本的观测值是独立同分布的。那么这些样本观测值同时出现的概率就是它们的联合概率密度:
L
(
x
;
θ
)
=
p
(
x
1
,
x
2
,
.
.
.
,
x
n
;
θ
)
=
p
(
x
1
;
θ
)
⋅
(
x
2
;
θ
)
⋅
.
.
.
⋅
(
x
n
;
θ
)
L(x;\theta)=p(x_1,x_2,...,x_n;\theta)=p(x_1;\theta)\cdotp(x_2;\theta)\cdot...\cdotp(x_n;\theta)
L(x;θ)=p(x1,x2,...,xn;θ)=p(x1;θ)⋅(x2;θ)⋅...⋅(xn;θ)
上述等式成立的条件是样本观测值之间独立。现在我们想去求使得以上概率最大时的参数是多少,通常的想法是一个函数只有在导数为0的时候才可能取极值,所以应该对以上概率函数求导,并令导数为0,求得参数
θ
\theta
θ。若有多个极值点,则还需要比较每个极值点的函数值大小。
但是因为上述概率函数是乘积的形式,不易求导,所以可以对其取对数,让它变为累加的形式,同时概率函数的单调性也不会发生变化。得以下公式:
l
n
[
L
(
x
;
θ
)
]
=
l
n
[
p
(
x
1
;
θ
)
⋅
(
x
2
;
θ
)
⋅
.
.
.
⋅
(
x
n
;
θ
)
]
=
l
n
[
p
(
x
1
;
θ
)
]
+
l
n
[
p
(
x
2
;
θ
)
]
+
.
.
.
+
l
n
[
p
(
x
n
;
θ
)
]
ln[L(x;\theta)]=ln[p(x_1;\theta)\cdotp(x_2;\theta)\cdot...\cdotp(x_n;\theta)]=ln[p(x_1;\theta)]+ln[p(x_2;\theta)]+...+ln[p(x_n;\theta)]
ln[L(x;θ)]=ln[p(x1;θ)⋅(x2;θ)⋅...⋅(xn;θ)]=ln[p(x1;θ)]+ln[p(x2;θ)]+...+ln[p(xn;θ)]
再对其求导,并令导数为0:
∂
l
n
[
L
(
x
;
θ
)
]
∂
θ
=
0
\frac{\partial ln[L(x;\theta)]}{\partial \theta}=0
∂θ∂ln[L(x;θ)]=0
求得参数
θ
\theta
θ后就得到了完整的模型
p
(
x
;
θ
)
p(x;\theta)
p(x;θ)。
二、极大似然估计和最小二乘法
最小二乘法在机器学习的第0篇已经提到过,它的基本思想是:把使得测量值和真实值之间误差的平方和最小的测量值y当作真实值。可以用公式表示为:
min
y
(
∑
(
y
−
y
^
)
2
)
⇒
真
值
y
\min_y(\sum{(y-\hat y)^2})\Rightarrow 真值y
ymin(∑(y−y^)2)⇒真值y
下面我们就来看一下极大似然估计和最小二乘法之间的关系,或者说从极大似然估计的角度解释最小二乘法。
假设在样本的真实值
y
y
y和预测值
y
^
\hat{y}
y^之间存在以下关系:
y
i
(
x
i
)
=
y
i
^
(
x
i
;
θ
)
+
ε
i
y_i(x_i)=\hat{y_i}(x_i;\theta)+\varepsilon_i
yi(xi)=yi^(xi;θ)+εi
其中
x
x
x是样本,
θ
\theta
θ是预测模型的参数,
ε
\varepsilon
ε是预测值与真实值之间的误差。
假设样本相互独立,并且误差
ε
\varepsilon
ε是由大量因素所造成的,则由中心极限定理可知,大量随机变量的和近似服从于正态分布
n
(
μ
,
σ
2
)
n(\mu,\sigma^2)
n(μ,σ2)。而通过等比例的调整模型的参数
θ
\theta
θ总是可以使得误差满足均值为0的正态分布,即
ε
∼
N
(
0
,
σ
2
)
\varepsilon \sim N(0,\sigma^2)
ε∼N(0,σ2)。
p
(
ε
i
)
=
1
2
π
σ
exp
(
−
ε
i
2
2
σ
2
)
p(\varepsilon_i)=\frac{1}{\sqrt{2\pi}\sigma}\exp{(-\frac{\varepsilon_i^2}{2\sigma^2})}
p(εi)=2πσ1exp(−2σ2εi2)
又因为
ε
i
=
y
i
(
x
i
)
−
y
i
^
(
x
i
;
θ
)
\varepsilon_i=y_i(x_i)-\hat{y_i}(x_i;\theta)
εi=yi(xi)−yi^(xi;θ)
所以
p
(
y
i
∣
x
i
;
θ
)
=
p
(
ε
i
)
=
1
2
π
σ
exp
[
−
(
y
i
−
y
i
^
)
2
2
σ
2
]
p(y_i|x_i;\theta)=p(\varepsilon_i)=\frac{1}{\sqrt{2\pi}\sigma}\exp{[-\frac{(y_i-\hat{y_i})^2}{2\sigma^2}]}
p(yi∣xi;θ)=p(εi)=2πσ1exp[−2σ2(yi−yi^)2]
极大似然函数为:
L
(
θ
)
=
∏
i
=
1
n
p
(
y
i
∣
x
i
;
θ
)
L(\theta)=\prod_{i=1}^np(y_i|x_i;\theta)
L(θ)=i=1∏np(yi∣xi;θ)
对数似然函数为:
l
n
L
(
θ
)
=
l
n
∏
i
=
1
n
p
(
y
i
∣
x
i
;
θ
)
=
∑
i
=
1
n
l
n
1
2
π
σ
exp
[
−
(
y
i
−
y
i
^
)
2
2
σ
2
]
lnL(\theta)=ln\prod_{i=1}^np(y_i|x_i;\theta)=\sum_{i=1}^nln\frac{1}{\sqrt{2\pi}\sigma}\exp{[-\frac{(y_i-\hat{y_i})^2}{2\sigma^2}]}
lnL(θ)=lni=1∏np(yi∣xi;θ)=i=1∑nln2πσ1exp[−2σ2(yi−yi^)2]
= n ⋅ l n 1 2 π σ − 1 2 σ 2 ∑ i = 1 n ( y i − y i ^ ) 2 =n\cdot ln\frac{1}{\sqrt{2\pi}\sigma}-\frac{1}{2\sigma^2}\sum_{i=1}^n(y_i-\hat{y_i})^2 =n⋅ln2πσ1−2σ21i=1∑n(yi−yi^)2
下一步就是通过求导求得使得对数似然函数取最大值时 θ \theta θ的取值。由于 n ⋅ l n 1 2 π σ n\cdot ln\frac{1}{\sqrt{2\pi}\sigma} n⋅ln2πσ1是个定值,所以只需要求 1 2 ∑ i = 1 n ( y i − y i ^ ) 2 \frac{1}{2}\sum_{i=1}^n(y_i-\hat{y_i})^2 21∑i=1n(yi−yi^)2什么时候取最小值即可。
而这正好是最小二乘法要做的事情,即求 J ( θ ) = 1 2 ∑ i = 1 n ( y i − y i ^ ) 2 J(\theta)=\frac{1}{2}\sum_{i=1}^n(y_i-\hat{y_i})^2 J(θ)=21∑i=1n(yi−yi^)2最小时的 θ \theta θ值。
所以在机器学习中,经常会用平方误差函数作为模型的损失函数,平方误差函数的本质其实就是上面推导出来的负对数似然函数。