[学习笔记] [机器学习] 11. EM算法(极大似然估计、EM算法实例、极大似然估计取对数的原因)

news2025/2/13 14:50:51
  1. 视频链接
  2. 数据集下载地址:无需下载

学习目标:

  • 了解什么是 EM 算法
  • 知道极大似然估计
  • 知道 EM 算法实现流程

讲 EM 算法主要是为了后面的 HMM 做准备。

1. 初始 EM 算法

EM 算法(Expectation-Maximization algorithm,期望最大化算法)是一种迭代算法,用于在概率模型中寻找最大似然估计或最大后验估计,特别适用于模型中存在隐变量的情况。

EM 算法是一个基础算法,是很多机器学习领域算法的基础,比如隐式马尔科夫算法(HMM)等。EM 算法是一种迭代优化策略,由于它的计算方法中每一次迭代都分两步,所以算法被称为EM 算法:

  • 一个为期望步(E 步)
  • 另一个为极大步(M步)

EM 算法受到缺失思想影响,最初是为了解决数据缺失情况下的参数估计问题,其算法基础和收敛有效性等问题在 Dempster、Laird 和 Rubin 三人于 1977 年所做的文章《Maximum Likelihood from Incomplete Data via the EM Algorithm》中给出了详细的阐述。其基本思想是:

  • 首先根据己经给出的观测数据,估计出模型参数的值
  • 然后再依据上一步估计出的参数值估计缺失数据的值,再根据估计出的缺失数据加上之前己经观测到的数据重新再对参数值进行估计
  • 然后反复迭代,直至最后收敛,迭代结束。

EM 算法计算流程

在这里插入图片描述

2. EM 算法介绍

学习目标:

  • 知道什么是极大似然估计
  • 知道 EM 算法实现流程

想清晰的了解 EM 算法,我们需要知道一个基础知识:“极大似然估计”。

2.1 极大似然估计(Maximum Likelihood Estimation,MLE)

极大似然估计(Maximum Likelihood Estimation,MLE),通俗理解来说,就是利用已知的样本结果信息,反推最具有可能(最大概率)导致这些样本结果出现的模型参数值!换句话说,极大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。

2.1.1 问题描述

假如我们需要调查学校的男生和女生的身高分布,我们抽取 100 个男生和 100 个女生,将他们按照性别划分为两组。然后,统计抽样得到 100 个男生的身高数据和 100 个女生的身高数据。

如果我们知道他们的身高服从正态分布,但是这个分布的均值 μ \mu μ 和方差 σ 2 \sigma^2 σ2 是不知道,这两个参数就是我们需要估计的

问题:我们知道样本所服从的概率分布模型和一些样本,我们需要求解该模型的参数。

在这里插入图片描述

我们已知的条件有两个:

  • 样本服从的分布模型
  • 随机抽取的样本

我们需要求解模型的参数。即,根据已知条件,通过极大似然估计,求出未知参数。

总的来说,极大似然估计就是用来估计模型参数的统计学方法

2.1.2 用数学知识解决现实问题

问题数学化:

  • 样本集: X = { x 1 , x 2 , . . . , x n } , n = 100 X = \{ x_1, x_2, ..., x_n \}, n=100 X={x1,x2,...,xn},n=100
  • 概率密度 p ( x i ∣ θ ) p(x_i|\theta) p(xiθ) 表示抽到第 i i i 个男生身高的概率
  • 由于 100 个样本之间独立同分布,所以同时抽到这 100 个男生的概率是它们各自概率的乘积,也就是样本集 X X X 中各个样本的联合概率,用下式表示: L ( θ ) = L ( x 1 , x 2 , . . . , x n ; θ ) = ∏ i = 1 n p ( x i ; θ ) , θ ∈ Θ L(\theta) = L(x_1, x_2, ..., x_n; \theta) = \prod_{i=1}^n p(x_i; \theta), \theta \in \Theta L(θ)=L(x1,x2,...,xn;θ)=i=1np(xi;θ),θΘ

这个概率反映了在概率密度函数的参数是 θ \theta θ 时,得到 X X X 这组样本的概率。

我们需要找到一个参数 θ \theta θ,使得抽到 X X X 这组样本的概率最大,也就是说需要其对应的似然函数 L ( θ ) L(\theta) L(θ) 最大。

满足条件的 θ \theta θ 叫做 θ \theta θ 的最大似然估计值,记为: θ ^ = a r g m a x   L ( θ ) \hat{\theta} = \mathrm{argmax} \ L(\theta) θ^=argmax L(θ)

2.1.3 最大似然函数估计值的求解步骤

第一步:首先写出似然函数

L ( θ ) = L ( x 1 , x 2 , . . . , x n ; θ ) = ∏ i = 1 n p ( x i ; θ ) , θ ∈ Θ L(\theta) = L(x_1, x_2, ..., x_n; \theta) = \prod_{i=1}^n p(x_i; \theta), \theta \in \Theta L(θ)=L(x1,x2,...,xn;θ)=i=1np(xi;θ),θΘ

第二步:对 似然函数 取对数

l ( θ ) = ln ⁡ L ( θ ) = ln ⁡ ∏ i = 1 n p ( x i ; θ ) = ∑ i = 1 n ln ⁡ p ( x i ; θ ) l(\theta) = \ln L(\theta) = \ln{\prod_{i=1}^n p(x_i; \theta)} = \sum_{i=1}^n \ln{p(x_i; \theta)} l(θ)=lnL(θ)=lni=1np(xi;θ)=i=1nlnp(xi;θ)

第三步:对上式求导,并令导数为 0,得到似然方程

第四步:求解似然方程,得到的参数值即为我们要求的

多数情况下,我们是根据已知条件来推算结果,而极大似然估计是已知结果,寻求使该结果出现的可能性最大的条件,以此作为估计值。


Q:为什么要对似然函数取对数?
A:【文间跳转】极大似然函数取对数的原因

2.2 EM 算法实例描述

我们目前有 100 个男生和 100 个女生的身高,但是我们不知道这 200 个数据中哪个是男生的身高,哪个是女生的身高,即抽取得到的每个样本都不知道是从哪个分布中抽取的

这个时候,对于每个样本,就有两个未知量需要估计:

  1. 这个身高数据是来自于男生数据集合还是来自于女生数据集合?
  2. 男生、女生身高数据集的正态分布的参数( μ \mu μ σ 2 \sigma^2 σ2)分别是多少?

具体问题如下图所示:

在这里插入图片描述

对于具体的身高问题使用 EM 算法求解步骤如下:

在这里插入图片描述

步骤一 · 初始化参数:先初始化男生身高的正态分布的参数,如均值 μ = 1.65 \mu=1.65 μ=1.65,方差 σ 2 = 0.15 \sigma^2 =0.15 σ2=0.15

步骤二 · 计算分布:计算每一个人更可能属于男生分布或者女生分布;

步骤三 · 重新估计参数:通过分为男生的 n n n 个人来重新估计男生身高分布的参数(最大似然估计),女生分布也按照相同的方式估计出来,更新分布;

步骤四 · 迭代:这时候两个分布的概率也变了,然后重复步骤一至三,直到参数不发生变化为止。

2.3 EM 算法流程

输入

  • n n n 个样本观察数据 x = ( x 1 , x 2 , . . . , x n ) x = (x_1, x_2, ..., x_n) x=(x1,x2,...,xn),未观察到的隐含数据 z = ( z 1 , z 2 , . . . , z n ) z = (z_1, z_2, ..., z_n) z=(z1,z2,...,zn)
  • 联合分布 p ( x , z ; θ ) p(x,z; \theta) p(x,z;θ)
  • 条件分布 p ( z ∣ x ; θ ) p(z|x;\theta) p(zx;θ)
  • 最大迭代次数 J J J

算法步骤

  1. 步骤一 · 初始化参数:随机初始化模型参数 θ \theta θ 的初值 θ 0 \theta_0 θ0

  2. 步骤二 · 计算分布 j = 1 , 2 , . . . , J j = 1, 2,..., J j=1,2,...,J 开始 EM 算法迭代:

    • E 步:计算联合分布的条件概率期望 Q i ( z i ) = p ( z i ∣ x i ; θ j ) Q_i(z_i) = p(z_i |x_i; \theta_j) Qi(zi)=p(zixi;θj) l ( θ , θ j ) = ∑ i = 1 n ∑ z i Q i ( z i ) log ⁡ p ( x i , z i ; θ ) Q i ( z i ) l(\theta, \theta_j) = \sum_{i=1}^n\sum_{z_i}Q_i(z_i)\log{\frac{p(x_i,z_i;\theta)}{Q_i(z_i)}} l(θ,θj)=i=1nziQi(zi)logQi(zi)p(xi,zi;θ)
    • M 步:极大化 l ( θ , θ j ) l(\theta, \theta_j) l(θ,θj),得到 θ j + 1 \theta_{j+1} θj+1 θ j + 1 = a r g m a x ( θ , θ j ) \theta_{j+1} = \mathrm{argmax}(\theta, \theta_j) θj+1=argmax(θ,θj)
    • 迭代:如果 θ j + 1 \theta_{j+1} θj+1 已经已经收敛,则算法结束。否则继续进行 E 步和 M 步进行迭代。

输出:模型参数 θ \theta θ

3. EM 算法实例

学习目标:

  • 通过实例了解 EM 算法实现的流程

3.1 一个超级简单的案例

假设现在有两枚硬币 1 和 2,随机抛掷后正面朝上概率分别为 P 1 P_1 P1 P 2 P_2 P2。为了估计这两个概率,做实验,每次取一枚硬币,连掷 5 下,记录下结果,如下表所示:

硬币结果统计
1正正反正反3 正 2 反
2反反正正反2 正 3 反
1正反反反反1 正 4 反
2正反反正正3 正 2 反
1反正正反反2 正 3 反

可以很容易地估计出 P 1 P_1 P1 P 2 P_2 P2,如下:

P 1 = 3 + 1 + 2 15 = 1.4 P 2 = 2 + 3 10 = 0.5 \begin{aligned} & P_1 = \frac{3+1+2}{15} = 1.4\\ & P_2 = \frac{2+3}{10} = 0.5 \end{aligned} P1=153+1+2=1.4P2=102+3=0.5

到这里,一切似乎很美好,下面我们加大难度。

3.2 加入隐变量 z z z 后的求解

还是上面的问题,现在我们抹去每轮投掷时使用的硬币标记,如下:

硬币结果统计
Unknown(未知)正正反正反3 正 2 反
Unknown(未知)反反正正反2 正 3 反
Unknown(未知)正反反反反1 正 4 反
Unknown(未知)正反反正正3 正 2 反
Unknown(未知)反正正反反2 正 3 反

好了,现在我们的目标没变,还是估计 P 1 P_1 P1 P 2 P_2 P2,要怎么做呢?

显然,此时我们多了一个隐变量 z z z,可以把它认为是一个 5 维的向量 ( z 1 , z 2 , z 3 , z 4 , z 5 ) (z_1,z_2,z_3,z_4,z_5) (z1,z2,z3,z4,z5),代表每次投掷时所使用的硬币,比如 z 1 z_1 z1,就代表第一轮投掷时使用的硬币是 1 还是 2。但是,这个变量 z z z 不知道,就无法去估计 P 1 P_1 P1 P 2 P_2 P2。所以,我们必须先估计出 z z z,然后才能进一步估计 P 1 P_1 P1 P 2 P_2 P2

但要估计 z z z,我们又得知道 P 1 P_1 P1 P 2 P_2 P2,这样我们才能用最大似然概率法则去估计 z z z这不是鸡生蛋和蛋生鸡的问题吗,如何破?

答案就是先随机初始化一个 P 1 P_1 P1 P 2 P_2 P2,用它来估计 z z z,然后基于 z z z,还是按照最大似然概率法则去估计新的 P 1 P_1 P1 P 2 P_2 P2,如果新的 P 1 P_1 P1 P 2 P_2 P2 和我们初始化的 P 1 P_1 P1 P 2 P_2 P2 一样,请问这说明了什么?这说明我们初始化的 P 1 P_1 P1 P 2 P_2 P2 是一个相当靠谱的估计(已经收敛了,不需要再进行估计了)!

就是说,我们初始化的 P 1 P_1 P1 P 2 P_2 P2,按照最大似然概率就可以估计出 z z z,然后基于 z z z,按照最大似然概率可以反过来估计出 P 1 P_1 P1 P 2 P_2 P2。当与我们初始化的 P 1 P_1 P1 P 2 P_2 P2 一样时,说明 P 1 P_1 P1 P 2 P_2 P2 很有可能就是真实的值。这里面包含了两个交互的最大似然估计

如果新估计出来的 P 1 P_1 P1 P 2 P_2 P2 和我们初始化的值差别很大,怎么办呢?也很简单,就是继续用新的 P 1 P_1 P1 P 2 P_2 P2 迭代,直至收敛。

以上就是 EM 算法的初级版。

3.2.1 EM 算法初级版

我们不妨这样,先随便给 P 1 P_1 P1 P 2 P_2 P2 赋一个值,比如:

P 1 = 0.2 P 2 = 0.7 P_1 = 0.2\\ P_2 = 0.7 P1=0.2P2=0.7

然后,我们看看第一轮抛掷最可能是哪个硬币。

  • 如果是硬币 1,得出 3 正 2 反的概率为 0. 2 3 × 0. 8 2 = 0.00512 0.2^3 \times 0.8^2 = 0.00512 0.23×0.82=0.00512
  • 如果是硬币 2,得出 3 正 2 反的概率为 0. 7 3 × 0. 3 2 = 0.03087 0.7^3 \times 0.3^2 = 0.03087 0.73×0.32=0.03087

然后依次求出其他 4 轮中的相应概率。做成表格如下:

轮数若是硬币 1若是硬币 2最大概率
1(3 正 2 反)0.005120.03087硬币 2
2(2 正 3 反)0.020480.01323硬币 1
3(1 正 4 反)0.081920.00567硬币 1
4(3 正 2 反)0.005120.03087硬币 2
5(2 正 3 反)0.020480.01323硬币 1

按照最大似然法则:

  • 第 1 轮中最有可能的是硬币 2
  • 第 2 轮中最有可能的是硬币 1
  • 第 3 轮中最有可能的是硬币 1
  • 第 4 轮中最有可能的是硬币 2
  • 第 5 轮中最有可能的是硬币 1

我们就把上面的值作为 z z z 的估计值。然后按照最大似然概率法则来估计新的 P 1 P_1 P1 P 2 P_2 P2

P 1 = 2 + 1 + 2 15 = 0.33 P 2 = 3 + 3 10 = 0.6 \begin{aligned} & P_1 = \frac{2 + 1 + 2}{15} = 0.33\\ & P_2 = \frac{3 + 3}{10} = 0.6 \end{aligned} P1=152+1+2=0.33P2=103+3=0.6

设想我们是全知的神,知道每轮抛掷时的硬币就是如本文第001部分标示的那样。那么, P 1 P_1 P1 P 2 P_2 P2 的最大似然估计就是 0.4 和 0.5(下文中将这两个值称为 P 1 P_1 P1 P 2 P_2 P2 的真实值)。那么对比下我们初始化的 P 1 P_1 P1 P 2 P_2 P2 和新估计出的 P 1 P_1 P1 P 2 P_2 P2

初始化的 P 1 P_1 P1估计出的 P 1 P_1 P1真实的 P 1 P_1 P1
0.20.330.4
初始化的 P 2 P_2 P2估计出的 P 2 P_2 P2真实的 P 2 P_2 P2
0.70.60.5

通过表中数据我们知道,估计的 P 1 P_1 P1 P 2 P_2 P2 相比于它们的初始值,更接近它们的真实值了!

我们继续按照上面的思路,用估计出的 P 1 P_1 P1 P 2 P_2 P2 再来估计 z z z,再用 z z z 来估计新的 P 1 P_1 P1 P 2 P_2 P2,反复迭代下去,就可以最终得到 P 1 = 0.4 P_1=0.4 P1=0.4 P 2 = 0.5 P_2=0.5 P2=0.5。此时无论怎样迭代, P 1 P_1 P1 P 2 P_2 P2 的值都会保持 0.4 和 0.5 不变。于是乎,我们就找到了 P 1 P_1 P1 P 2 P_2 P2 的最大似然估计。

但这里有两个问题

  1. 新估计出的 P 1 P_1 P1 P 2 P_2 P2 一定会更接近真实的 P 1 P_1 P1 P 2 P_2 P2 吗?
  2. 迭代一定会收敛到真实的 P 1 P_1 P1 P 2 P_2 P2 吗?
  • 对于问题一:没错,一定会更接近真实的 P 1 P_1 P1 P 2 P_2 P2(数学可以证明,但这超出了本文的主题,请参阅其他书籍或文章)。
  • 对于问题二:不一定,取决于 P 1 P_1 P1 P 2 P_2 P2 的初始化值,上面我们之所以能收敛到 P 1 P_1 P1 P 2 P_2 P2,是因为我们幸运地找到了好的初始化值。

只会接近,但不一定能达到

3.2.2 EM 算法进阶版

我们思考下,上面的方法还有没有改进的余地?

我们是用最大似然概率法则估计出的 z z z 值,然后再用 z z z 值按照最大似然概率法则估计新的 P 1 P_1 P1 P 2 P_2 P2。也就是说,我们使用了一个最可能的 z z z 值,而不是所有可能的 z z z 值。

如果考虑所有可能的 z z z 值,对每一个 z z z 值都估计出一个新的 P 1 P_1 P1 P 2 P_2 P2,将每一个 z z z 值概率大小作为权重,将所有新的 P 1 P_1 P1 P 2 P_2 P2 分别加权相加,这样的 P 1 P_1 P1 P 2 P_2 P2 应该会更好一些。

那么,所有的 z z z 值有多少个呢?

显然,有 2 5 = 32 2^5 = 32 25=32 种,那么需要我们进行 32 次估值?

答案是并不需要,我们可以用期望来简化运算。

轮数若是硬币 1若是硬币 2
1(3 正 2 反)0.005120.03087
2(2 正 3 反)0.020480.01323
3(1 正 4 反)0.081920.00567
4(3 正 2 反)0.005120.03087
5(2 正 3 反)0.020480.01323

在 EM 算法初始版中,我们直接根据概率大小确定使用了哪枚硬币,如 0.00512 < 0.03087,我们认为使用了硬币 2。显然这样过于草率了,也不太科学。因此我们可以使用一个更加科学的方式,比如我们确定使用哪枚硬币的概率。

利用上面这个表,我们可以算出每轮抛掷中使用硬币 1 或者使用硬币 2 的概率。

比如第 1 轮,使用硬币 1 的概率是:

z 使用硬币 1 = 0.00512 0.00512 + 0.03087 = 0.14 z 使用硬币 2 = 1 − 0.14 = 0.86 \begin{aligned} & z_{使用硬币1} = \frac{0.00512}{0.00512 + 0.03087} = 0.14\\ & z_{使用硬币2} = 1 - 0.14 = 0.86 \end{aligned} z使用硬币1=0.00512+0.030870.00512=0.14z使用硬币2=10.14=0.86

因此我们可以算出其他 4 轮的概率,如下表所示:

轮数 z i = 硬币 1 z_i=硬币 1 zi=硬币1 z i = 硬币 2 z_i=硬币 2 zi=硬币2
1(3 正 2 反)0.140.86
2(2 正 3 反)0.610.39
3(1 正 4 反)0.940.06
4(3 正 2 反)0.140.86
5(2 正 3 反)0.610.39

上表中的右两列表示期望值。看第一行,0.86 表示从期望的角度看,这轮抛掷使用硬币 2 的概率是 0.86。相比于前面的方法,我们按照最大似然概率,直接将第 1 轮估计为用的硬币 2。此时的我们更加谨慎,我们只说,有 0.14 的概率是硬币 1,有 0.86 的概率是硬币 2,不再是非此即彼。这样我们在估计 P 1 P_1 P1 或者 P 2 P_2 P2 时,就可以用上全部的数据,而不是部分的数据,显然这样会更好一些。

这一步,我们实际上是估计出了 z z z 的概率分布,这步被称作 E 步。

结合下表:

硬币结果统计
Unknown(未知)正正反正反3 正 2 反
Unknown(未知)反反正正反2 正 3 反
Unknown(未知)正反反反反1 正 4 反
Unknown(未知)正反反正正3 正 2 反
Unknown(未知)反正正反反2 正 3 反

我们按照期望最大似然概率的法则来估计新的 P 1 P_1 P1 P 2 P_2 P2

P 1 P_1 P1 估计为例,第 1 轮的 3 正 2 反相当于:

0.14 × 3 = 0.42 ⇒ 正 0.14 × 2 = 0.28 ⇒ 反 0.14 \times 3 = 0.42 \Rightarrow 正\\ 0.14 \times 2 = 0.28 \Rightarrow 反 0.14×3=0.420.14×2=0.28

依次算出其他四轮,列表如下:

轮数正面反面
1(3 正 2 反) 0.14 × 3 = 0.42 0.14 \times 3 = 0.42 0.14×3=0.42 0.14 × 2 = 0.28 0.14 \times 2 = 0.28 0.14×2=0.28
2(2 正 3 反) 0.61 × 2 = 1.22 0.61 \times 2 = 1.22 0.61×2=1.22 0.61 × 3 = 1.83 0.61 \times 3 = 1.83 0.61×3=1.83
3(1 正 4 反) 0.94 × 1 = 0.94 0.94 \times 1 = 0.94 0.94×1=0.94 0.94 × 4 = 3.76 0.94 \times 4 = 3.76 0.94×4=3.76
4(3 正 2 反) 0.14 × 3 = 0.42 0.14 \times 3 = 0.42 0.14×3=0.42 0.14 × 2 = 0.28 0.14 \times 2 = 0.28 0.14×2=0.28
5(2 正 3 反) 0.61 × 2 = 1.22 0.61 \times 2 = 1.22 0.61×2=1.22 0.61 × 3 = 1.83 0.61 \times 3 = 1.83 0.61×3=1.83
总计4.227.98

此时我们就知道更加科学的 P 1 P_1 P1

P 1 = 4.22 4.22 + 7.98 = 0.35 P_1 = \frac{4.22}{4.22 + 7.98} = 0.35 P1=4.22+7.984.22=0.35

可以看到,改变了 z z z 值的估计方法后,新估计出的 P 1 P_1 P1 要更加接近 0.4(初级版计算得到的是 0.33)。原因就是我们使用了所有抛掷的数据,而不是之前只使用了部分的数据。

这步中,我们根据 E 步中求出的 z z z 的概率分布,依据最大似然概率法则去估计 P 1 P_1 P1 P 2 P_2 P2,被称作 M 步。


小结

  • EM 算法的实现思路:
    1. 首先根据己经给出的观测数据,估计出模型参数的值
    2. 然后再依据上一步估计出的参数值估计缺失数据的值,之后根据估计出的缺失数据加上之前己经观测到的数据重新再对参数值进行估计
    3. 反复迭代,直至最后收敛,迭代结束

4. 补充\拓展

4.1 极大似然函数取对数的原因

4.1.1 【原因一】减少计算量

在计算一个独立同分布数据集的联合概率时,如:

X = x 1 , x 2 , . . . , x n X = {x_1, x_2,..., x_n} X=x1,x2,...,xn

其联合概率是每个数据点概率的连乘:

p ( X ∣ Θ ) = ∏ i = 1 N p ( x i ∣ Θ ) p(X | \Theta) = \prod_{i=1}^Np(x_i | \Theta) p(X∣Θ)=i=1Np(xi∣Θ)

两边取对数则可以将连乘化为连加

ln ⁡ p ( X ∣ Θ ) = ∑ i = 1 N ln ⁡ p ( x i ∣ Θ ) \ln p(X | \Theta) = \sum_{i = 1}^N \ln p(x_i | \Theta) lnp(X∣Θ)=i=1Nlnp(xi∣Θ)

让乘法变成加法,从而减少了计算量

同时,如果概率中含有指数项,如高斯分布,能把指数项也化为求和形式,进一步减少计算量。另外,在对联合概率求导时,和的形式会比积的形式更方便。

4.1.2 【原因二】有利于结果更好的计算

其实可能更重要的一点是,因为概率值都在 [ 0 , 1 ] [0,1] [0,1] 之间,因此,概率的连乘将会变成一个很小的值,可能会引起浮点数下溢,尤其是当数据集很大的时候,联合概率会趋向于 0,非常不利于之后的计算

4.1.3 【原因三】取对数并不影响最后结果的单调性

p ( x ∣ Θ 1 ) > p ( x ∣ Θ 2 ) ⇔ ln ⁡ p ( x ∣ Θ 1 ) > ln ⁡ p ( x ∣ Θ 2 ) p(x | \Theta_1) > p(x | \Theta_2) \Leftrightarrow \ln p(x | \Theta_1) > \ln p(x|\Theta_2) p(xΘ1)>p(xΘ2)lnp(xΘ1)>lnp(xΘ2)

因为相同的单调性,它确保了概率的最大对数值出现在与原始概率函数相同的点上。因此,可以用更简单的对数似然来代替原来的似然。
同时,如果概率中含有指数项,如高斯分布,能把指数项也化为求和形式,进一步减少计算量。另外,在对联合概率求导时,和的形式会比积的形式更方便。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/645494.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

索引介绍和基本使用

介绍 索引就是用来加速SQL查询的 由于索引也是需要存储成索引文件的&#xff0c;因此对索引的使用也会涉及磁盘I/O操作。如果索引创建过多&#xff0c;使用不当&#xff0c;会造成SQL查询时&#xff0c;进行大量无用的磁盘I/O操作&#xff0c;降低了SQL的查询效率&#xff0c…

SaaS 系统完全开源介绍

&#x1f42f; 平台简介 芋道&#xff0c;以开发者为中心&#xff0c;打造中国第一流的快速开发平台&#xff0c;全部开源&#xff0c;个人与企业可 100% 免费使用。 架构图 管理后台的 Vue3 版本采用 vue-element-plus-admin &#xff0c;Vue2 版本采用 vue-element-admin 管…

MySQL数据库概念、管理以及SQL语句的基本命令操作

MySQL数据库概念、管理以及SQL语句的基本命令操作 一、数据库概念1、数据库的组成&#xff1a;数据、表、数据库2、数据库类型3、数据库的管理系统&#xff08;DBMS)4、数据库系统&#xff08;DBS&#xff09; 二、数据库系统发展史三、当今主流数据库四、关系型数据库五、MySQ…

HTML+CSS实训——Day15——部署项目到阿里云服务器

前言 因为阿里云有免费的3个月试用&#xff0c;我们可以把项目部署到上面。 选择这个服务 我们用CentOS&#xff0c;更简单&#xff0c;更轻量化。 打开他的VNC控制台 安装宝塔控制面板&#xff0c;输入 yum install -y wget && wget -O install.sh https://downlo…

提高你的小程序开发技能:五大重要步骤

对于任何开发人员来说&#xff0c;想要创建一个小程序并不是一件容易的事情。你需要为每个功能和应用程序编写代码&#xff0c;并且你需要不断地进行测试以确保它不会出错。 那么&#xff0c;我们该如何提高小程序的开发技能呢&#xff1f;通过下面这五个重要步骤&#xff0c;…

Win10麦克风没有声音怎么办?Win10麦克风没有声音恢复教程

Win10麦克风没有声音怎么办&#xff1f;Win10电脑中用户发现麦克风没有声音了&#xff0c;想知道怎么操作才能让声音恢复正常&#xff0c;这时候用户需要打开Win10电脑的设备管理器&#xff0c;点击更新相对应的驱动程序&#xff0c;这样就能轻松解决Win10麦克风没有声音的问题…

Python 课程设计2:学生信息管理系统

开发环境要求 本系统的软件开发及运行环境具体如下。 操作系统&#xff1a;Windows 10。Python版本&#xff1a;Python 3.7.0。开发工具&#xff1a;PyCharm VSCodePython内置模块&#xff1a;os、re。 功能&#xff1a; 1 录入学生信息功能 …

大模型微调方法调研

文章目录 Freeze方法PT方法Lora方法AdaloraPrompt TuningAdapter TuningPrefix tuning遗留问题 Freeze方法 对原始模型部分参数进行冻结操作&#xff0c;仅训练部分参数 PT方法 P-Tuning&#xff0c;仅对大模型的Embedding加入新的参数。 P-Tuning 提出将 Prompt 转换为可以…

Cgroup资源管理

docker资源限制 容器怎么实现资源的限制&#xff1f; 通过Cgroup资源限制 docker 通过Cgroup来控制容器使用的资源配额&#xff0c;包括CPU&#xff0c;内存&#xff0c;磁盘三大方面。 Cgroup是linux内核提供的一种可以限制&#xff0c;记录&#xff0c;隔离进程组所使用的…

IDEA默认代码样式的坑,逗号前面默认加上了空格

IDEA默认代码样式的坑&#xff0c;逗号前面默认加上了空格 个人习惯编写完代码&#xff0c;会使用CTRLALTL进行代码格式化&#xff0c;同时设置了提交的时候进行代码重排和格式化。突然有一天&#xff0c;格式化代码之后发现跟仓库的差异文件几百个&#xff0c;吓死。。。 当然…

代码开发中VO,BO,PO,DO,DTO是什么

代码开发中VO&#xff0c;BO&#xff0c;PO&#xff0c;DO&#xff0c;DTO是什么 MVC的简单定义&#xff1a; M层负责与数据库打交道&#xff1b; C层负责业务逻辑的编写&#xff1b; V层负责给用户展示&#xff08;针对于前后端不分离的项目&#xff0c;不分离项目那种编写…

一、微机保护装置的典型结构

微机型保护装置实质上是一种依靠单片微机智能地实现保护功能的工业控制装置。一般典型的微机保护结构是由五个部分构成的&#xff0c;即信号输入电路、单片微机系统、人机接口部分、输出通道回路及电源部分&#xff0c;如图1&#xff0d;l所示。 &#xff08;一&#xff09;信号…

多线程之基础

写在前面 本文看下多线程基础相关内容。 1&#xff1a;线程基础分析 1.1&#xff1a;摩尔定律失效 戈登.摩尔&#xff0c;英特尔公司的创始人之一&#xff0c;其发现了一个计算机的发展规律&#xff0c;即&#xff0c;处理器的性能每24个月就会翻一倍&#xff0c;这就是摩尔…

Vintage的变体与解读应用

Vintage在风险管理中有很多变体&#xff0c;通常分为以下四类&#xff1a; 1.根据选取切片数据时间不一样&#xff0c;可划分为Month end&#xff08;月末&#xff09;与Cycle end&#xff08;期末&#xff09;两种。 说明&#xff1a; **Month end&#xff1a;**选取切片数…

基于自适应高斯混合的稀疏注释语义分割

文章目录 Sparsely Annotated Semantic Segmentation with Adaptive Gaussian Mixtures摘要本文方法GMM FormulationTraining with AGMM 实验结果 Sparsely Annotated Semantic Segmentation with Adaptive Gaussian Mixtures 摘要 稀疏注释语义分割&#xff08;SASS&#xf…

给图片添加水印的最简单方法

给图片添加水印的最简单方法在数字化时代&#xff0c;图片广泛应用于社交媒体、网站、电商平台等各种场景中。然而&#xff0c;由于互联网分享的便捷性&#xff0c;图片的盗用问题也越来越严重。为了保护图片版权&#xff0c;给图片添加水印已经成为一个非常必要和重要的步骤。…

参与赢大奖!阿里云机器学习平台PAI助力开发者激发AIGC潜能

近年来&#xff0c;随着海量多模态数据在互联网的爆炸性增长和训练深度学习大模型的算力大幅提升&#xff0c;助力开发者一站式快速搭建文生图、对话等热门场景应用&#xff0c;阿里云机器学习平台PAI特推出AIGC加油包&#xff0c;为广大开发者加油助力激发AIGC潜能&#xff0c…

OJ管理员如何进行添加题目

OJ系统简介 Online Judge系统&#xff08;简称OJ&#xff09;是一个在线的判题系统。用户可以在线提交程序多种程序&#xff08;如C、C&#xff09; 源代码&#xff0c;系统对源代码进行编译和执行&#xff0c;并通过预先设计的测试数据来检验程序源代码的正确性。 一个用户提…

手把手教你进行Mysql条件查询操作

关注“Java架构栈”微信公众号&#xff0c;回复暗号【Java面试题】即可获取大厂面试题 从今天开始&#xff0c;健哥会带各位小伙伴开始学习数据库技术&#xff0c;这是Java开发中必不可少的一部分内容&#xff0c;也是非常重要的技术。本系列教程由浅入深&#xff0c;全面讲解数…

CentOS 停服倒计时,如何打造安全好用的 Linux 系统?

导读近年来&#xff0c;操作系统在国内的讨论极其热烈&#xff0c;也备受各方关注&#xff0c;操作系统在开发者圈中的重要性越来越高。毋庸置疑&#xff0c;对于众多的开发者来说&#xff0c;选择合适的操作系统对于开发效率、代码质量和个人发展都有着非常重要的影响。CSDN 作…