一、引言
在《人工智能基础概念1:模型、拟合、线性回归、sigmoid函数、逻辑回归》介绍了似然函数和最大似然估计的概念,但整体表述并不容易理解,本文将结合举例的形式来进一步介绍这2个概念。
关于本文部分符号的说明:
- 估计值和残差:以 a ^ \hat{a} a^ 表示随机变量a的估计值,类似的 y i ^ \hat{yi} yi^、 b ^ \hat{b} b^分布表示yi和b的估计值,因变量yi和 y i ^ \hat{yi} yi^的差表示的是观测值与模型预测值之间的误差或残差。这个差值 是基于模型参数的估计和自变量的值计算得到的,在统计建模和数据分析中非常重要,因为它提供了模型拟合度的信息
- a r g m a x a , b argmax_{a,b} argmaxa,b:表示在参数a和b的范围内,使得某个函数取得最大值的a和b的值。换句话说,它是指能够使得函数达到其最大可能值的参数a和b的集合。例如有一个函数f(a, b),想找到使得f(a, b)最大的a和b的值,就是寻找 a r g m a x a , b argmax_{a,b} argmaxa,b
- a r g m i n a , b argmin_{a,b} argmina,b: 表示在参数a和b的范围内,使得某个函数取得最小值的a和b的值,它是指能够使得函数达到其最小可能值的参数a和b的集合。如果想找到使得函数g(a, b)最小的a和b的值,就是寻找 a r g m i n a , b argmin_{a,b} argmina,b
在实际应用中,这些符号通常用于优化问题,比如在统计学中的最大似然估计问题,或者在机器学习中的损失函数最小化问题。通过找到使得目标函数达到极值的参数,可以确定最优的模型参数或者估计值。
二、似然函数
2.1、概念
似然函数是统计学中的一个重要概念,它描述了在给定一组参数下,观测到当前样本数据的概率。
在统计模型中,通常有一些未知参数,需要通过观测数据来估计这些参数的值。似然函数就是用来衡量不同参数值对观测数据拟合程度的一个工具。
具体来说,假设有一个概率模型,它由一组参数 θ 定义,并且有一组观察数据 X。似然函数 L(θ∣X) 表示在给定参数 θ 的条件下,观测到数据 X的概率。
2.2、似然函数计算方式
似然函数的计算依赖于所采用的概率分布模型,以及数据的类型(离散或连续)。对于离散型分布,似然函数是各个观测数据出现的概率的乘积;对于连续型分布,似然函数是概率密度函数在观测数据点处的取值的乘积。
2.2.1、离散分布似然函数计算方式
对于离散型分布,似然函数是各个观测数据出现的概率的乘积。
例如有一个简单的硬币投掷模型,硬币有正面和反面两种可能的结果。我们不知道硬币正面朝上的概率是多少,但可以通过对多次投掷的结果进行建模来估计这个概率。
假设投掷了 n 次硬币,观察到 k 次正面朝上,假设每次投掷是独立的,并且正面朝上的概率是 p,那么观测到 k 次正面的概率可以用二项分布来描述:
P
(
X
=
k
)
=
(
n
k
)
p
k
(
1
−
p
)
n
−
k
P(X = k) = \binom{n}{k} p^k (1-p)^{n-k}
P(X=k)=(kn)pk(1−p)n−k
其中,
(
n
k
)
\binom{n}{k}
(kn) 是 n选 k 的组合数,函数P(X = k)就是似然函数 L(p | k),即:
L
(
p
∣
n
,
k
)
=
P
(
X
=
k
)
=
(
n
k
)
p
k
(
1
−
p
)
n
−
k
L(p | n, k) = P(X = k) = \binom{n}{k} p^k (1-p)^{n-k}
L(p∣n,k)=P(X=k)=(kn)pk(1−p)n−k
这里的 似然函数L(p | n, k) 是关于参数 p 的函数,给定了在 n 次投掷中得到 k 次正面的概率,观察数据是 n 次投掷和 k 次正面朝上的事实,这些数据是我们用来估计参数 p 的依据。
2.2.2、连续分布似然函数计算方式
对于连续型分布,似然函数是概率密度函数(PDF)在观测数据点处的取值的乘积。例如,假设一个随机变量 X服从正态分布,其概率密度函数为:
f
(
x
∣
μ
,
σ
2
)
=
1
2
π
σ
2
e
−
(
x
−
μ
)
2
2
σ
2
f(x | \mu, \sigma^2) = \frac{1}{\sqrt{2\pi\sigma^2}} e^{-\frac{(x-\mu)^2}{2\sigma^2}}
f(x∣μ,σ2)=2πσ21e−2σ2(x−μ)2
那么,对于一组观测数据
x
1
,
x
2
,
.
.
.
,
x
n
,似然函数
L
(
μ
,
σ
2
∣
x
1
,
x
2
,
.
.
.
,
x
n
)
x_1, x_2, ..., x_n,似然函数 L(\mu, \sigma^2 | x_1, x_2, ..., x_n)
x1,x2,...,xn,似然函数L(μ,σ2∣x1,x2,...,xn) 就是这些概率密度函数值的乘积:
L
(
μ
,
σ
2
∣
x
1
,
x
2
,
.
.
.
,
x
n
)
=
∏
i
=
1
n
1
2
π
σ
2
e
−
(
x
i
−
μ
)
2
2
σ
2
L(\mu, \sigma^2 | x_1, x_2, ..., x_n) = \prod_{i=1}^{n} \frac{1}{\sqrt{2\pi\sigma^2}} e^{-\frac{(x_i-\mu)^2}{2\sigma^2}}
L(μ,σ2∣x1,x2,...,xn)=i=1∏n2πσ21e−2σ2(xi−μ)2
在实际应用中,为了简化计算,通常会取似然函数的对数(似然方程的对数形式),因为对数函数是单调递增的。
三、最大似然估计
3.1、概念
似然函数L(θ∣X) 表示在一组参数θ情况下观察数据X出现的概率,最大似然估计通过最大化似然函数 L(θ∣X) 来找到最佳的参数估计值θ,即最大似然估计的目标是找到一组参数值θ ,使得似然函数 L(θ∣X) 达到最大。这种方法的核心思想是选择参数值,使得在这些参数下观测到当前数据的概率(即似然函数)最大。
具体来说,假设有一组观测数据 X = ( x 1 , x 2 , . . . , x n ) X = (x_1, x_2, ..., x_n) X=(x1,x2,...,xn),这些数据是从某个概率分布中独立同分布(i.i.d.)抽取的,而这个概率分布是由参数 θ 决定的。我们的目标是找到一个参数θ 的估计值,使得数据 X出现的概率最大。
最大似然估计具有很多良好的统计性质,例如在某些条件下,它是无偏的、一致的,并且在所有无偏估计中具有最小的方差(即具有最高的效率)。
因此最大似然估计是一种寻找最佳参数估计值的方法,它通过最大化观测数据出现的概率(似然函数)来实现。这种方法在统计学和机器学习中非常常见,并且适用于各种不同的模型和数据类型。
3.2、最大似然估计的运算过程
为了进行最大似然估计,通常会取似然函数的对数(对数似然函数(Log-Likelihood)记为 ℓ(p∣n,k))来处理,因为对数函数是单调递增的,所以最大化对数似然函数与最大化似然函数是等价的。对数似然函数通常更容易处理,因为乘积会变成求和,这在数学上更易于优化。
3.3、最大似然估计案例1
以上面投掷硬币的似然函数为例:
L
(
p
∣
n
,
k
)
=
P
(
X
=
k
)
=
(
n
k
)
p
k
(
1
−
p
)
n
−
k
L(p | n, k) = P(X = k) = \binom{n}{k} p^k (1-p)^{n-k}
L(p∣n,k)=P(X=k)=(kn)pk(1−p)n−k
来进行最大似然估计,其计算过程如下:
ℓ
(
p
∣
n
,
k
)
=
log
L
(
p
∣
n
,
k
)
=
log
(
(
n
k
)
p
k
(
1
−
p
)
n
−
k
)
\ell(p | n, k) = \log L(p | n, k) = \log \left( \binom{n}{k} p^k (1-p)^{n-k} \right)
ℓ(p∣n,k)=logL(p∣n,k)=log((kn)pk(1−p)n−k)
ℓ
(
p
∣
n
,
k
)
=
log
(
n
k
)
+
k
log
p
+
(
n
−
k
)
log
(
1
−
p
)
\ell(p | n, k) = \log \binom{n}{k} + k \log p + (n-k) \log (1-p)
ℓ(p∣n,k)=log(kn)+klogp+(n−k)log(1−p)
接下来,我们对 ℓ(p∣n,k) 关于 p 求导,并令导数等于零来找到最大值:
d
ℓ
(
p
∣
n
,
k
)
d
p
=
k
p
−
n
−
k
1
−
p
=
0
\frac{d\ell(p | n, k)}{dp} = \frac{k}{p} - \frac{n-k}{1-p} = 0
dpdℓ(p∣n,k)=pk−1−pn−k=0
解这个方程,我们可以得到 p 的最大似然估计值:
p
=
k
n
p = \frac{k}{n}
p=nk
在这个硬币投掷的例子中,最大似然估计值 p 就是观察到的正面朝上的次数 k 除以总投掷次数 n。
这个结果表明,根据观测数据,正面朝上的概率估计为观测到的正面次数与总投掷次数的比值。
3.4、最大似然估计案例2
对于某个随机事件,其概率函数P(yi|a,b,xi,σ²)服从正态分布N(axi+b,σ²),且对于某组x的自变量值{x1,x2,…,xn}有因变量的值{y1,y2,…,yn},yi是相互独立的。
在这个随机事件对应的模型中,yi是因变量的观测值,xi是自变量的值,a 、b、σ² 是模型参数,似然函数 L 表示为所有观测值的联合概率。在这个情况下,似然函数是所有单个观测值概率的乘积。
3.4.1、对应的似然函数
L ( a , b , σ 2 ∣ y 1 , y 2 , . . . , y n ) = ∏ i = 1 n P ( y i ∣ a , b , x i , σ 2 ) L ( a , b , σ 2 ∣ y 1 , y 2 , . . . , y n ) = ∏ i = 1 n 1 2 π σ 2 exp ( − ( y i − a x i − b ) 2 2 σ 2 ) L(a, b, \sigma^2 | y_1, y_2, ..., y_n) = \prod_{i=1}^{n} P(y_i | a, b, x_i, \sigma^2) \\ L(a, b, \sigma^2 | y_1, y_2, ..., y_n) = \prod_{i=1}^{n} \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(y_i - a x_i - b)^2}{2\sigma^2}\right) L(a,b,σ2∣y1,y2,...,yn)=i=1∏nP(yi∣a,b,xi,σ2)L(a,b,σ2∣y1,y2,...,yn)=i=1∏n2πσ21exp(−2σ2(yi−axi−b)2)
3.4.2、通过损失函数的方法计算(a,b)的最大似然估计值
由于P(yi|a,b,xi,σ²)服从正态分布N(axi+b,σ²),而正态分布表达为N(μ ,σ²),μ 是分布的均值,表示分布的中心位置,σ 是分布的标准差,σ²是方差,表示分布的离散程度,也就是数据分布的宽度。由于axi+b对应正态分布的μ,同时xi是自变量,因此可以将参数a和b作为一个整体来看待,计算(a,b)的最大似然估计值 a r g m a x a , b P ( Y ∣ a , b , X , σ 2 ) argmax_{a,b}P(Y|a,b,X,σ²) argmaxa,bP(Y∣a,b,X,σ2)的过程如下:
- 对于每个观测点i,模型预测值是 y i ^ = a x i + b \hat{yi}=axi+b yi^=axi+b,观测值是yi,损失函数定义为观测值与预测值之间差异的平方:( y i − y i ^ yi-\hat{yi} yi−yi^)²;
- 最大似然估计其实就是使得 Σ i = 1 n ( y i − y i ^ ) 2 \mathop{Σ}\limits_{i=1}^{n}(yi-\hat{yi})² i=1Σn(yi−yi^)2值最小,即 a r g m a x a , b P ( Y ∣ a , b , X , σ 2 ) = a r g m i n a , b Σ i = 1 n ( y i − y i ^ ) 2 = a r g m i n a , b Σ i = 1 n ( y i − a x i − b ) 2 argmax_{a,b}P(Y|a,b,X,σ²)=argmin_{a,b}\mathop{Σ}\limits_{i=1}^{n}(yi-\hat{yi})²=argmin_{a,b}\mathop{Σ}\limits_{i=1}^{n}(yi-ax_i-b)^2 argmaxa,bP(Y∣a,b,X,σ2)=argmina,bi=1Σn(yi−yi^)2=argmina,bi=1Σn(yi−axi−b)2
这是因为在正态分布的情况下,最大化似然函数等价于最小化残差平方和。这个结果是由最大似然估计的性质和正态分布的特性共同决定的。
针对观察值的因变量和自变量,上述公式会对应一组方程组,对于这种方程组,在实际应用中,通常通过数值优化方法求解方程组来解决这个问题。
数值优化方法是用来解非线性方程组或优化问题的一系列算法,通常是指找到一组变量的值,使得方程组中的每个方程都近似成立,或者误差在可接受的范围内,这些方法在无法找到解析解或者解析解难以求得的情况下非常有用,包括梯度下降法、牛顿法、拟牛顿法、高斯-牛顿法等,在实际应用中,选择哪种数值优化方法取决于问题的具体性质,如问题的规模、非线性程度、是否存在约束等。这些方法通常需要一个好的初始猜测值,并且可能受到局部最小值和收敛速度的影响。因此,在实际应用中,可能需要尝试多种方法,或者结合问题的特定结构来选择最合适的算法,在此就不展开介绍了。
3.4.3、通过似然函数的方法计算(a,b)的最大似然估计值
3.4.3.1、 取似然函数的对数得到对数似然函数
ℓ
(
a
,
b
,
σ
2
∣
y
1
,
y
2
,
.
.
.
,
y
n
)
=
∑
i
=
1
n
(
−
1
2
log
(
2
π
σ
2
)
−
(
y
i
−
a
x
i
−
b
)
2
2
σ
2
)
\ell(a, b, \sigma^2 | y_1, y_2, ..., y_n) = \sum_{i=1}^{n} \left( -\frac{1}{2}\log(2\pi\sigma^2) - \frac{(y_i - a x_i - b)^2}{2\sigma^2} \right)
ℓ(a,b,σ2∣y1,y2,...,yn)=i=1∑n(−21log(2πσ2)−2σ2(yi−axi−b)2)
通过对数似然函数的展开,可以得到:
ln
P
(
Y
∣
a
,
b
,
X
,
σ
2
)
=
−
n
2
ln
(
2
π
σ
2
)
−
1
2
σ
2
∑
i
=
1
n
(
y
i
−
(
a
x
i
+
b
)
)
2
\ln P(Y | a, b, X, σ²) = -\frac{n}{2} \ln(2πσ²) - \frac{1}{2σ²} \sum_{i=1}^{n} (y_i - (ax_i + b))^2
lnP(Y∣a,b,X,σ2)=−2nln(2πσ2)−2σ21i=1∑n(yi−(axi+b))2
3.4.3.2、 针对对数似然函数求最大似然估计值
取ln P(Y | a, b, X, σ²) 函数的最大值就是取ln P(Y | a, b, X, σ²)负值 函数-ln P(Y | a, b, X, σ²) 的最小值,即:
a
r
g
m
a
x
a
,
b
P
(
Y
∣
a
,
b
,
X
,
σ
2
)
=
a
r
g
m
i
n
a
,
b
(
n
2
ln
(
2
π
σ
2
)
+
1
2
σ
2
∑
i
=
1
n
(
y
i
−
(
a
x
i
+
b
)
)
2
)
argmax_{a,b}P(Y|a,b,X,σ²)=argmin_{a,b}(\frac{n}{2} \ln(2πσ²) +\frac{1}{2σ²} \sum_{i=1}^{n} (y_i - (ax_i + b))^2)
argmaxa,bP(Y∣a,b,X,σ2)=argmina,b(2nln(2πσ2)+2σ21∑i=1n(yi−(axi+b))2)
由于上式右边的运算式中 n 2 ln ( 2 π σ 2 ) \frac{n}{2} \ln(2πσ²) 2nln(2πσ2)与 1 2 σ 2 \frac{1}{2σ²} 2σ21与是一个与a和b无关的常数项,对于a和b取何值函数获得最小值没有影响,因此与:
a r g m i n a , b ( ∑ i = 1 n ( y i − ( a x i + b ) ) 2 ) argmin_{a,b}(\sum\limits_{i=1}^{n} (y_i - (ax_i + b))^2) argmina,b(i=1∑n(yi−(axi+b))2)
等价,可以看出这个方法与用损失函数进行的最大似然估计得到的结果相同。
3.4.4、通过似然函数的方法计算σ²的最大似然估计值
针对上述案例的对数似然函数展开得到:
ln
P
(
Y
∣
a
,
b
,
X
,
σ
2
)
=
−
n
2
ln
(
2
π
σ
2
)
−
1
2
σ
2
∑
i
=
1
n
(
y
i
−
(
a
x
i
+
b
)
)
2
\ln P(Y | a, b, X, σ²) = -\frac{n}{2} \ln(2πσ²) - \frac{1}{2σ²} \sum_{i=1}^{n} (y_i - (ax_i + b))^2
lnP(Y∣a,b,X,σ2)=−2nln(2πσ2)−2σ21i=1∑n(yi−(axi+b))2
为了估计方差参数σ²,需要找到使对数似然函数最大化的σ²值。这可以通过对上式两边针对σ²求导并令导数等于零来实现:
∂
∂
σ
2
ln
L
(
a
,
b
,
σ
2
)
=
−
n
2
σ
2
+
1
2
(
σ
2
)
2
∑
i
=
1
n
(
y
i
−
(
a
x
i
+
b
)
)
2
=
0
\frac{\partial}{\partial \sigma^2}\ln L(a, b, \sigma^2) = -\frac{n}{2\sigma^2} + \frac{1}{2(\sigma^2)^2}\sum_{i=1}^{n}(y_i - (ax_i + b))^2 = 0
∂σ2∂lnL(a,b,σ2)=−2σ2n+2(σ2)21i=1∑n(yi−(axi+b))2=0
解这个方程,我们得到:
n
2
(
σ
2
)
2
=
1
2
∑
i
=
1
n
(
y
i
−
(
a
x
i
+
b
)
)
2
\frac{n}{2(\sigma^2)^2} = \frac{1}{2}\sum_{i=1}^{n}(y_i - (ax_i + b))^2
2(σ2)2n=21i=1∑n(yi−(axi+b))2
即:
σ
2
=
1
n
∑
i
=
1
n
(
y
i
−
(
a
x
i
+
b
)
)
2
\sigma^2 = \frac{1}{n}\sum_{i=1}^{n}(y_i - (ax_i + b))^2
σ2=n1i=1∑n(yi−(axi+b))2
由于n是样本数量,可以看到这个值是所有观察值和预估值方差的平均值,这个与统计计算的有偏方差结果是一样的。
这个结果与统计学对样本方差σ²的估计是存在差异的,因为这个估计量是有偏的,它没有考虑到样本均值的不确定性。为了得到无偏估计,在统计学中应该使用n-1而不是n来修正分母,即:
σ
2
=
1
n
−
1
∑
i
=
1
n
(
y
i
−
(
a
x
i
+
b
)
)
2
\sigma^2 = \frac{1}{n-1}\sum_{i=1}^{n}(y_i - (ax_i + b))^2
σ2=n−11i=1∑n(yi−(axi+b))2
五、小结
本文结合详细的案例介绍了似然函数和最大似然估计的概念,并通过典型案例说明了最大似然估计的计算过程,有助于大家理解似然函数和最大似然估计。
更多人工智能基础知识请参考专栏《人工智能基础知识》。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
关于老猿的付费专栏
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录 》
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。
前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。
对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。
如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。