以EM算法为例介绍坐标上升(Coordinate Ascent)算法:中英双语

中文版

什么是 Coordinate Ascent 算法?

Coordinate Ascent(坐标上升)是一种优化算法,它通过在每次迭代时优化一个变量(或一个坐标),并保持其他变量不变,逐步逼近最优解。与坐标下降(Coordinate Descent)算法相对,坐标上升通常用于求解带有多个变量的优化问题,特别是在优化函数在每个维度上都是可分的情况下。

在每次迭代中,Coordinate Ascent算法通过选择一个变量来最大化该变量对目标函数的贡献,然后再选择下一个变量进行优化。它通过反复更新每个坐标来寻找最优解。虽然这个过程可能不会全局收敛,但它在很多实际问题中表现得很好,特别是在目标函数较为简单且每个坐标可以独立优化时。

以EM算法为例介绍Coordinate Ascent

EM(Expectation-Maximization)算法是一种常见的优化算法,常用于统计学和机器学习中,尤其是当数据中有隐变量时。EM算法的基本思路是通过迭代求解期望步骤(E步)和最大化步骤(M步)来优化参数。

我们可以将EM算法视为一种坐标上升方法。每一轮的E步和M步都可以视为分别优化不同的“坐标”,其中E步优化期望函数,M步最大化该期望函数。

EM算法中的坐标上升

假设我们有一个隐变量模型,其目标是最大化对数似然函数:
L ( θ ) = log ⁡ P ( X , Z ∣ θ ) \mathcal{L}(\theta) = \log P(X, Z | \theta) L(θ)=logP(X,Zθ)
其中:

  • ( X X X ) 是观察数据,
  • ( Z Z Z ) 是隐变量,
  • ( θ \theta θ ) 是模型的参数。

由于隐变量 ( Z Z Z ) 是不可观测的,直接求解对数似然函数是困难的。因此,EM算法通过迭代的方法来解决这个问题。

  1. E步(Expectation step)
    在E步中,我们计算隐变量的期望值,即给定当前参数估计 ( θ ( t ) \theta^{(t)} θ(t) ) 下,隐变量 ( Z Z Z ) 的条件概率分布:
    Q ( θ , θ ( t ) ) = E Z ∣ X , θ ( t ) [ log ⁡ P ( X , Z ∣ θ ) ] Q(\theta, \theta^{(t)}) = \mathbb{E}_{Z | X, \theta^{(t)}} \left[ \log P(X, Z | \theta) \right] Q(θ,θ(t))=EZX,θ(t)[logP(X,Zθ)]
    这是一个坐标上升的过程,因为我们通过固定当前的参数 ( θ ( t ) \theta^{(t)} θ(t) ) 来最大化隐变量的期望。

  2. M步(Maximization step)
    在M步中,我们最大化E步得到的期望函数 ( Q ( θ , θ ( t ) ) Q(\theta, \theta^{(t)}) Q(θ,θ(t)) ) 来更新参数 ( θ \theta θ ):
    θ ( t + 1 ) = arg ⁡ max ⁡ θ Q ( θ , θ ( t ) ) \theta^{(t+1)} = \arg\max_\theta Q(\theta, \theta^{(t)}) θ(t+1)=argθmaxQ(θ,θ(t))
    这也可以视为一次坐标上升,因为我们固定隐变量的期望并优化参数 ( θ \theta θ )。

在EM算法中,E步和M步交替进行,每一轮都像是在“沿着不同的坐标轴上升”,通过迭代更新参数和隐变量的估计值。

数学公式

假设我们有如下的对数似然函数:
L ( θ ) = log ⁡ P ( X ∣ θ ) = log ⁡ ∑ Z P ( X , Z ∣ θ ) \mathcal{L}(\theta) = \log P(X | \theta) = \log \sum_{Z} P(X, Z | \theta) L(θ)=logP(Xθ)=logZP(X,Zθ)

由于隐变量 ( Z ) 无法直接观测,我们在E步中计算隐变量的条件期望:
Q ( θ , θ ( t ) ) = E Z ∣ X , θ ( t ) [ log ⁡ P ( X , Z ∣ θ ) ] Q(\theta, \theta^{(t)}) = \mathbb{E}_{Z | X, \theta^{(t)}} \left[ \log P(X, Z | \theta) \right] Q(θ,θ(t))=EZX,θ(t)[logP(X,Zθ)]

然后在M步中最大化这个期望:
θ ( t + 1 ) = arg ⁡ max ⁡ θ Q ( θ , θ ( t ) ) \theta^{(t+1)} = \arg\max_\theta Q(\theta, \theta^{(t)}) θ(t+1)=argθmaxQ(θ,θ(t))

这两个步骤交替进行,直到收敛为止。

例子:高斯混合模型(Gaussian Mixture Model, GMM)

高斯混合模型是一种常见的隐变量模型,它假设数据是由多个高斯分布组成的,每个数据点属于某个高斯分布,但我们不知道每个数据点具体属于哪个分布。EM算法可以用来估计模型参数。

假设数据 ( X = { x 1 , x 2 , … , x n } X = \{x_1, x_2, \dots, x_n\} X={x1,x2,,xn} ) 来自两个高斯分布,每个高斯分布的参数为 ( ( μ 1 , σ 1 2 ) (\mu_1, \sigma_1^2) (μ1,σ12) ) 和 ( ( μ 2 , σ 2 2 ) (\mu_2, \sigma_2^2) (μ2,σ22) )。我们要估计这些参数。

E步:计算每个数据点属于每个高斯分布的概率(即隐变量的期望):

给定当前参数 ( ( μ 1 ( t ) , σ 1 2 ( t ) , μ 2 ( t ) , σ 2 2 ( t ) ) (\mu_1^{(t)}, \sigma_1^{2(t)}, \mu_2^{(t)}, \sigma_2^{2(t)}) (μ1(t),σ12(t),μ2(t),σ22(t)) ),我们计算每个数据点 ( x i x_i xi ) 属于第一个高斯分布的概率(称为责任):
γ i 1 = π 1 N ( x i ∣ μ 1 ( t ) , σ 1 2 ( t ) ) π 1 N ( x i ∣ μ 1 ( t ) , σ 1 2 ( t ) ) + π 2 N ( x i ∣ μ 2 ( t ) , σ 2 2 ( t ) ) \gamma_{i1} = \frac{\pi_1 \mathcal{N}(x_i | \mu_1^{(t)}, \sigma_1^{2(t)})}{\pi_1 \mathcal{N}(x_i | \mu_1^{(t)}, \sigma_1^{2(t)}) + \pi_2 \mathcal{N}(x_i | \mu_2^{(t)}, \sigma_2^{2(t)})} γi1=π1N(xiμ1(t),σ12(t))+π2N(xiμ2(t),σ22(t))π1N(xiμ1(t),σ12(t))
其中, ( π 1 \pi_1 π1 ) 和 ( π 2 \pi_2 π2 ) 是高斯分布的混合系数, ( N ( x i ∣ μ , σ 2 ) \mathcal{N}(x_i | \mu, \sigma^2) N(xiμ,σ2) ) 是高斯分布的概率密度函数。

M步:最大化E步得到的期望函数以更新参数:

根据责任 ( γ i 1 \gamma_{i1} γi1 ) 和 ( γ i 2 \gamma_{i2} γi2 ),我们更新高斯分布的均值和方差:
μ 1 ( t + 1 ) = ∑ i = 1 n γ i 1 x i ∑ i = 1 n γ i 1 \mu_1^{(t+1)} = \frac{\sum_{i=1}^{n} \gamma_{i1} x_i}{\sum_{i=1}^{n} \gamma_{i1}} μ1(t+1)=i=1nγi1i=1nγi1xi
σ 1 2 ( t + 1 ) = ∑ i = 1 n γ i 1 ( x i − μ 1 ( t + 1 ) ) 2 ∑ i = 1 n γ i 1 \sigma_1^{2(t+1)} = \frac{\sum_{i=1}^{n} \gamma_{i1} (x_i - \mu_1^{(t+1)})^2}{\sum_{i=1}^{n} \gamma_{i1}} σ12(t+1)=i=1nγi1i=1nγi1(xiμ1(t+1))2

类似地,我们也更新 ( μ 2 \mu_2 μ2 ) 和 ( σ 2 2 \sigma_2^2 σ22 ),并更新混合系数 ( π 1 \pi_1 π1 ) 和 ( π 2 \pi_2 π2 )。


Python代码实现

以下是使用EM算法估计GMM参数的简单Python代码示例:
具体解析见文末

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

# 生成数据:两个高斯分布混合的样本
np.random.seed(42)
n_samples = 500
data1 = np.random.normal(0, 1, n_samples//2)  # 均值为0,标准差为1
data2 = np.random.normal(5, 1, n_samples//2)  # 均值为5,标准差为1
X = np.concatenate([data1, data2])

# 初始化参数
pi = np.array([0.5, 0.5])  # 混合系数
mu = np.array([0, 5])  # 均值
sigma = np.array([1, 1])  # 方差

# EM算法迭代
n_iterations = 100
for iteration in range(n_iterations):
    # E步:计算责任(每个点属于每个分布的概率)
    resp1 = pi[0] * norm.pdf(X, mu[0], sigma[0])
    resp2 = pi[1] * norm.pdf(X, mu[1], sigma[1])
    total_resp = resp1 + resp2
    resp1 /= total_resp
    resp2 /= total_resp

    # M步:最大化Q函数,更新参数
    pi[0] = np.mean(resp1)
    pi[1] = np.mean(resp2)
    mu[0] = np.sum(resp1 * X) / np.sum(resp1)
    mu[1] = np.sum(resp2 * X) / np.sum(resp2)
    sigma[0] = np.sqrt(np.sum(resp1 * (X - mu[0])**2) / np.sum(resp1))
    sigma[1] = np.sqrt(np.sum(resp2 * (X - mu[1])**2) / np.sum(resp2))

    # 打印每次迭代的结果
    print(f"Iteration {iteration+1}:")
    print(f"  pi: {pi}")
    print(f"  mu: {mu}")
    print(f"  sigma: {sigma}")

# 可视化结果
x_vals = np.linspace(-5, 10, 1000)
y_vals = pi[0] * norm.pdf(x_vals, mu[0], sigma[0]) + pi[1] * norm.pdf(x_vals, mu[1], sigma[1])
plt.hist(X, bins=30, density=True, alpha=0.6, color='g')
plt.plot(x_vals, y_vals, color='r')
plt.title('EM Algorithm for GMM')
plt.show()

总结

Coordinate Ascent(坐标上升)算法是一种通过逐个优化坐标(变量)来最大化目标函数的方法。在EM算法中,E步和M步分别优化隐变量的期望和模型参数的最大化,这可以看作是一种坐标上升的过程。通过反复交替执行这两个步骤,EM算法最终能够逼近最优的模型参数。

英文版

What is the Coordinate Ascent Algorithm?

Coordinate Ascent is an optimization algorithm that improves one variable (or coordinate) at a time, while keeping the other variables fixed, gradually approaching the optimal solution. In contrast to Coordinate Descent, which focuses on minimizing the objective function, Coordinate Ascent is used to maximize the objective function, typically in situations where the optimization function is separable across dimensions.

In each iteration, the Coordinate Ascent algorithm selects a variable and maximizes the contribution of that variable to the objective function, then proceeds to the next variable for optimization. The process involves iteratively updating each coordinate to find the optimal solution. While this process may not always converge globally, it performs well in many practical problems, particularly when the objective function is simple, and each coordinate can be independently optimized.

Coordinate Ascent in the Context of the EM Algorithm

The Expectation-Maximization (EM) algorithm is a common optimization method used in statistics and machine learning, especially when dealing with hidden variables in the data. The basic idea of the EM algorithm is to iteratively solve the Expectation (E) step and Maximization (M) step to optimize the model parameters.

We can view the EM algorithm as a form of Coordinate Ascent. Each round of the E-step and M-step can be seen as optimizing different “coordinates,” with the E-step optimizing the expectation function, and the M-step maximizing that expectation.

Coordinate Ascent in the EM Algorithm

Assume we have a latent variable model with the goal of maximizing the log-likelihood function:
L ( θ ) = log ⁡ P ( X , Z ∣ θ ) \mathcal{L}(\theta) = \log P(X, Z | \theta) L(θ)=logP(X,Zθ)
where:

  • ( X X X ) represents observed data,
  • ( Z Z Z ) represents latent variables,
  • ( θ \theta θ ) represents model parameters.

Since the latent variables ( Z Z Z ) are unobserved, directly maximizing the log-likelihood function is difficult. Thus, the EM algorithm solves this problem iteratively.

  1. E-step (Expectation step):
    In the E-step, we compute the expected value of the latent variables, i.e., given the current parameter estimate ( θ ( t ) \theta^{(t)} θ(t) ), the conditional probability distribution of the latent variables ( Z Z Z ):
    Q ( θ , θ ( t ) ) = E Z ∣ X , θ ( t ) [ log ⁡ P ( X , Z ∣ θ ) ] Q(\theta, \theta^{(t)}) = \mathbb{E}_{Z | X, \theta^{(t)}} \left[ \log P(X, Z | \theta) \right] Q(θ,θ(t))=EZX,θ(t)[logP(X,Zθ)]
    This is a coordinate ascent process because we maximize the expectation of the latent variables while holding the current parameters ( θ ( t ) \theta^{(t)} θ(t) ) fixed.

  2. M-step (Maximization step):
    In the M-step, we maximize the expected function ( Q ( θ , θ ( t ) ) Q(\theta, \theta^{(t)}) Q(θ,θ(t)) ) computed in the E-step to update the model parameters ( θ \theta θ ):
    θ ( t + 1 ) = arg ⁡ max ⁡ θ Q ( θ , θ ( t ) ) \theta^{(t+1)} = \arg\max_\theta Q(\theta, \theta^{(t)}) θ(t+1)=argθmaxQ(θ,θ(t))
    This is also a coordinate ascent process because we fix the expectation of the latent variables and optimize the parameters ( θ \theta θ ).

The E-step and M-step alternate, with each step resembling an ascent along different coordinates. Through iterative updates of the parameters and the latent variables’ estimates, the EM algorithm moves towards the optimal solution.

Mathematical Formulas

Assume we have the following log-likelihood function:
L ( θ ) = log ⁡ P ( X ∣ θ ) = log ⁡ ∑ Z P ( X , Z ∣ θ ) \mathcal{L}(\theta) = \log P(X | \theta) = \log \sum_{Z} P(X, Z | \theta) L(θ)=logP(Xθ)=logZP(X,Zθ)

Since the latent variables ( Z ) are unobserved, in the E-step, we compute the conditional expectation of the latent variables:
Q ( θ , θ ( t ) ) = E Z ∣ X , θ ( t ) [ log ⁡ P ( X , Z ∣ θ ) ] Q(\theta, \theta^{(t)}) = \mathbb{E}_{Z | X, \theta^{(t)}} \left[ \log P(X, Z | \theta) \right] Q(θ,θ(t))=EZX,θ(t)[logP(X,Zθ)]

Then, in the M-step, we maximize this expectation:
θ ( t + 1 ) = arg ⁡ max ⁡ θ Q ( θ , θ ( t ) ) \theta^{(t+1)} = \arg\max_\theta Q(\theta, \theta^{(t)}) θ(t+1)=argθmaxQ(θ,θ(t))

These two steps alternate until convergence.

Example: Gaussian Mixture Model (GMM)

A Gaussian Mixture Model (GMM) is a common latent variable model that assumes the data is generated from a mixture of several Gaussian distributions. Each data point belongs to one of the Gaussian distributions, but we don’t know which one. The EM algorithm can be used to estimate the model parameters.

Assume that the data ( X = { x 1 , x 2 , … , x n } X = \{x_1, x_2, \dots, x_n\} X={x1,x2,,xn} ) comes from two Gaussian distributions, with parameters ( ( μ 1 , σ 1 2 ) (\mu_1, \sigma_1^2) (μ1,σ12) ) and ( ( μ 2 , σ 2 2 ) (\mu_2, \sigma_2^2) (μ2,σ22) ), and we aim to estimate these parameters.

E-step: Calculate the probability (responsibility) of each data point belonging to each Gaussian distribution:

Given the current parameters ( ( μ 1 ( t ) , σ 1 2 ( t ) , μ 2 ( t ) , σ 2 2 ( t ) ) (\mu_1^{(t)}, \sigma_1^{2(t)}, \mu_2^{(t)}, \sigma_2^{2(t)}) (μ1(t),σ12(t),μ2(t),σ22(t)) ), we calculate the probability that data point ( x i x_i xi ) belongs to the first Gaussian distribution (called responsibility):
γ i 1 = π 1 N ( x i ∣ μ 1 ( t ) , σ 1 2 ( t ) ) π 1 N ( x i ∣ μ 1 ( t ) , σ 1 2 ( t ) ) + π 2 N ( x i ∣ μ 2 ( t ) , σ 2 2 ( t ) ) \gamma_{i1} = \frac{\pi_1 \mathcal{N}(x_i | \mu_1^{(t)}, \sigma_1^{2(t)})}{\pi_1 \mathcal{N}(x_i | \mu_1^{(t)}, \sigma_1^{2(t)}) + \pi_2 \mathcal{N}(x_i | \mu_2^{(t)}, \sigma_2^{2(t)})} γi1=π1N(xiμ1(t),σ12(t))+π2N(xiμ2(t),σ22(t))π1N(xiμ1(t),σ12(t))
where ( π 1 \pi_1 π1 ) and ( π 2 \pi_2 π2 ) are the mixing coefficients, and ( N ( x i ∣ μ , σ 2 ) \mathcal{N}(x_i | \mu, \sigma^2) N(xiμ,σ2) ) is the Gaussian distribution’s probability density function.

M-step: Maximize the expected function obtained in the E-step to update the parameters:

Using the responsibilities ( γ i 1 \gamma_{i1} γi1 ) and ( γ i 2 \gamma_{i2} γi2 ), we update the Gaussian distribution’s mean and variance:
μ 1 ( t + 1 ) = ∑ i = 1 n γ i 1 x i ∑ i = 1 n γ i 1 \mu_1^{(t+1)} = \frac{\sum_{i=1}^{n} \gamma_{i1} x_i}{\sum_{i=1}^{n} \gamma_{i1}} μ1(t+1)=i=1nγi1i=1nγi1xi
σ 1 2 ( t + 1 ) = ∑ i = 1 n γ i 1 ( x i − μ 1 ( t + 1 ) ) 2 ∑ i = 1 n γ i 1 \sigma_1^{2(t+1)} = \frac{\sum_{i=1}^{n} \gamma_{i1} (x_i - \mu_1^{(t+1)})^2}{\sum_{i=1}^{n} \gamma_{i1}} σ12(t+1)=i=1nγi1i=1nγi1(xiμ1(t+1))2

Similarly, we update ( μ 2 \mu_2 μ2 ), ( σ 2 2 \sigma_2^2 σ22 ), and the mixing coefficients ( π 1 \pi_1 π1 ) and ( π 2 \pi_2 π2 ).


Python Code Implementation

Here is a simple Python implementation of the EM algorithm for estimating GMM parameters:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

# Generate data: samples from a mixture of two Gaussian distributions
np.random.seed(42)
n_samples = 500
data1 = np.random.normal(0, 1, n_samples//2)  # Mean 0, Std 1
data2 = np.random.normal(5, 1, n_samples//2)  # Mean 5, Std 1
X = np.concatenate([data1, data2])

# Initialize parameters
pi = np.array([0.5, 0.5])  # Mixing coefficients
mu = np.array([0, 5])  # Means
sigma = np.array([1, 1])  # Variances

# EM algorithm iterations
n_iterations = 100
for iteration in range(n_iterations):
    # E-step: Calculate responsibilities (probabilities of each point belonging to each distribution)
    resp1 = pi[0] * norm.pdf(X, mu[0], sigma[0])
    resp2 = pi[1] * norm.pdf(X, mu[1], sigma[1])
    total_resp = resp1 + resp2
    resp1 /= total_resp
    resp2 /= total_resp

    # M-step: Maximize Q function, update parameters
    pi[0] = np.mean(resp1)
    pi[1] = np.mean(resp2)
    mu[0] = np.sum(resp1 * X) / np.sum(resp1)
    mu[1] = np.sum(resp2 * X) / np.sum(resp2)
    sigma[0] = np.sqrt(np.sum(resp1 * (X - mu[0])**2) / np.sum(resp1))
    sigma[1] = np.sqrt(np.sum(resp2 * (X - mu[1])**2) / np.sum(resp2))

    # Print results for each iteration
    print(f"Iteration {iteration+1}:")
    print(f"  pi: {pi}")
    print(f"  mu: {mu}")
    print(f"  sigma: {sigma}")

# Visualize the results
x_vals = np.linspace(-5, 10, 1000)
y_vals = pi[0] * norm.pdf(x_vals, mu[0], sigma[0]) + pi[1] * norm.pdf(x_vals, mu[1], sigma[1])
plt.hist(X, bins=30, density=True, alpha=0.6, color='g')
plt.plot(x_vals, y_vals, color='r')
plt.title('EM Algorithm for GMM')


plt.show()

Summary

The Coordinate Ascent method is a useful iterative approach to optimization, where only one parameter (coordinate) is updated at a time while others remain fixed. This method is central to algorithms like Expectation-Maximization (EM), where the E-step and M-step alternately optimize different coordinates (latent variables and model parameters). The Gaussian Mixture Model (GMM) example illustrates how the EM algorithm can be used for model estimation in latent variable models.

python代码中哪一步体现数据的似然最大化?

在EM算法的M步中,“最大化对数似然函数” 这一目标体现在通过更新参数(混合系数 ( π k \pi_k πk )、均值 ( μ k \mu_k μk ) 和方差 ( σ k \sigma_k σk ))来最大化 每个数据点的概率,从而最大化整个模型的 数据似然。下面详细解析这个过程,并明确如何体现最大化似然。

1. 对数似然函数的目标

对数似然函数表示的是数据给定当前模型参数下的 概率。在高斯混合模型(GMM)中,假设我们有一个由 ( K K K ) 个高斯分布组成的混合模型,数据集 ( X = { x 1 , x 2 , … , x N } X = \{x_1, x_2, \dots, x_N\} X={x1,x2,,xN} ) 由这些高斯分布生成。

模型的对数似然函数是:

L ( θ ) = ∑ i = 1 N log ⁡ ( ∑ k = 1 K π k N ( x i ; μ k , σ k 2 ) ) \mathcal{L}(\theta) = \sum_{i=1}^{N} \log \left( \sum_{k=1}^{K} \pi_k \mathcal{N}(x_i; \mu_k, \sigma_k^2) \right) L(θ)=i=1Nlog(k=1KπkN(xi;μk,σk2))

其中:

  • ( π k \pi_k πk ) 是第 ( k k k ) 个高斯分布的混合系数(即该高斯分布在总模型中的权重),
  • ( N ( x i ; μ k , σ k 2 ) \mathcal{N}(x_i; \mu_k, \sigma_k^2) N(xi;μk,σk2) ) 是第 ( k k k ) 个高斯分布对数据点 ( x i x_i xi ) 的概率密度,
  • ( μ k \mu_k μk ) 是第 ( k k k ) 个高斯分布的均值,
  • ( σ k 2 \sigma_k^2 σk2 ) 是第 ( k k k ) 个高斯分布的方差。

对数似然函数衡量的是在给定数据的情况下,当前模型参数 ( π k , μ k , σ k \pi_k, \mu_k, \sigma_k πk,μk,σk ) 下数据的 整体似然。我们的目标是最大化这个对数似然函数,找到能够最好地解释数据的模型参数。

2. M步的作用:最大化似然函数

在EM算法中,M步的目标是 最大化对数似然函数,即通过更新参数使得模型的似然值(数据的概率)最大化。如何做到这一点呢?

2.1. E步:计算责任(期望)

在E步中,我们计算每个数据点 ( x i x_i xi ) 属于每个高斯分布 ( k k k ) 的 责任,即数据点 ( x i x_i xi ) 属于第 ( k k k ) 个分布的后验概率:

γ i k = P ( z i = k ∣ x i ) = π k N ( x i ; μ k , σ k 2 ) ∑ k ′ = 1 K π k ′ N ( x i ; μ k ′ , σ k ′ 2 ) \gamma_{ik} = P(z_i = k | x_i) = \frac{\pi_k \mathcal{N}(x_i; \mu_k, \sigma_k^2)}{\sum_{k'=1}^{K} \pi_{k'} \mathcal{N}(x_i; \mu_{k'}, \sigma_{k'}^2)} γik=P(zi=kxi)=k=1KπkN(xi;μk,σk2)πkN(xi;μk,σk2)

这里,( γ i k \gamma_{ik} γik ) 表示数据点 ( x i x_i xi ) 属于高斯分布 ( k k k ) 的概率(责任)。

2.2. M步:更新参数

E步计算得到的责任 ( γ i k \gamma_{ik} γik ) 用来在M步中更新模型的参数。通过更新混合系数 ( π k \pi_k πk )、均值 ( μ k \mu_k μk ) 和方差 ( σ k \sigma_k σk ),我们让每个数据点的似然(由它属于每个高斯分布的概率加权计算的)最大化。

  • 更新混合系数 ( π k \pi_k πk ):混合系数表示每个高斯分布的权重。更新规则为:

π k = 1 N ∑ i = 1 N γ i k \pi_k = \frac{1}{N} \sum_{i=1}^{N} \gamma_{ik} πk=N1i=1Nγik

这里的更新表示的是:每个高斯分布的权重是所有数据点在该分布下的责任(概率)的平均值。

  • 更新均值 ( μ k \mu_k μk ):均值是高斯分布的中心,通过对数据点的加权平均来更新。更新规则为:

μ k = ∑ i = 1 N γ i k x i ∑ i = 1 N γ i k \mu_k = \frac{\sum_{i=1}^{N} \gamma_{ik} x_i}{\sum_{i=1}^{N} \gamma_{ik}} μk=i=1Nγiki=1Nγikxi

这里的加权平均意味着:每个数据点 ( x i x_i xi ) 对均值的贡献是它属于该高斯分布的概率 ( γ i k \gamma_{ik} γik )。

  • 更新方差 ( σ k 2 \sigma_k^2 σk2 ):方差衡量高斯分布的扩散程度,同样通过加权平方差来更新。更新规则为:

σ k 2 = ∑ i = 1 N γ i k ( x i − μ k ) 2 ∑ i = 1 N γ i k \sigma_k^2 = \frac{\sum_{i=1}^{N} \gamma_{ik} (x_i - \mu_k)^2}{\sum_{i=1}^{N} \gamma_{ik}} σk2=i=1Nγiki=1Nγik(xiμk)2

同样地,这里加权平方差意味着:每个数据点 ( x i x_i xi ) 对方差的贡献是它属于该高斯分布的概率 ( γ i k \gamma_{ik} γik )。

3. 最大化似然:如何体现

最大化对数似然函数是通过更新参数(( π k , μ k , σ k \pi_k, \mu_k, \sigma_k πk,μk,σk ))使得每个数据点的 似然 最大化来实现的。在M步中:

  • 更新混合系数 ( π k \pi_k πk ):通过更新每个高斯分布的权重,使得每个数据点属于各个高斯分布的责任概率最大化。
  • 更新均值 ( μ k \mu_k μk ):通过更新每个高斯分布的均值,使得数据点在该分布下的概率密度最大化。
  • 更新方差 ( σ k \sigma_k σk ):通过更新每个高斯分布的方差,使得数据点在该分布下的概率密度最大化。

最终,EM算法会通过迭代E步和M步,逐步优化参数,直到对数似然函数收敛,即模型的似然最大化。

M步通过计算每个数据点在E步中得到的责任,更新模型的参数(混合系数 ( π k \pi_k πk )、均值 ( μ k \mu_k μk ) 和方差 ( σ k \sigma_k σk )),使得数据在当前模型下的 似然 最大化。这是通过加权平均和加权平方差的方式来进行的,每次更新都朝着使数据在当前模型下最可能的方向调整参数。

后记

2024年12月28日14点12分于上海,在GPT4o大模型辅助下完成。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uniapp——微信小程序读取bin文件,解析文件的数据内容(三)

微信小程序读取bin文件内容 读取用户选择bin文件,并解析数据内容,分包发送给蓝牙设备; 文章目录 微信小程序读取bin文件内容读取文件读取内容返回格式 API文档: getFileSystemManager 关于App端读取bin文件,请查看&…

穷举vs暴搜vs深搜vs回溯vs剪枝系列一>组合

题目&#xff1a; 解析&#xff1a; 代码&#xff1a; private List<List<Integer>> ret;private List<Integer> path;private int n,k;public List<List<Integer>> combine(int _n, int _k) {n _n;k _k;path new ArrayList<>();ret…

鸿蒙开发实战之“使用HiLog和HiSysEvent进行日志与系统事件管理”

HiLog和HiSysEvent作为鸿蒙&#xff08;HarmonyOS&#xff09;系统中进行日志记录和系统事件管理的关键组件&#xff0c;为开发者提供了强大的工具来追踪系统行为、调试应用以及监控设备状态。它们不仅简化了日志管理和事件追踪的流程&#xff0c;还提高了开发效率和系统可维护…

Linux(Centos 7.6)yum源配置

yum是rpm包的管理工具&#xff0c;可以自动安装、升级、删除软件包的功能&#xff0c;可以自动解决软件包之间的依赖关系&#xff0c;使得用户更方便软件包的管理。要使用yum必须要进行配置&#xff0c;个人将其分为三类&#xff0c;本地yum源、局域网yum源、第三方yum源&#…

数据中台从centos升级为国产操作系统后,资源增加字段时,提交报500错误

文章目录 背景一、步骤1.分析阶段2.查看nginx3.修改用户&#xff08;也可以修改所有者权限&#xff09; 背景 故障报错&#xff1a; nginx报错信息&#xff1a; 2024/12/19 15:25:31 [crit, 500299#0: *249 onen0 " /var/lib/nginx/tmp/cient body/0000000001" f…

uniapp 前端解决精度丢失的问题 (后端返回分布式id)

原因&#xff1a; 后端使用分布式id, id为19位数&#xff0c;导致精度丢失 &#xff0c;前端解决方法 这个是通过浏览器请求回来的数据&#xff0c;这个时候id 数据已经丢失了&#xff0c;在数据库查询不到&#xff0c;在调获详情接口的时候会有问题 实际的&#xff1a; 解决…

十大排序---下

文章目录 前言一、归并排序二、快速排序三、计数排序四、桶排序五、基数排序总结 前言 今天我们来继续学习十大排序中剩下的五个。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、归并排序 归并排序&#xff08;Merge sort&#xff09;是建立在归…

Git如何设置和修改当前分支跟踪的上游分支

目录 前言 背景 设置当前分支跟踪的上游分支 当前分支已有关联&#xff0c;删除其关联&#xff0c;重新设置上游 常用的分支操作 参考资料 前言 仅做学习记录&#xff0c;侵删 背景 在项目开发过程中&#xff0c;从master新建分支时&#xff0c;会出现没有追踪的上游分…

【笔记】Linux中vim编辑器回忆录

&#xff08;一&#xff09;替换 末行模式中 替换整个文本的某个字符为某个东西 全局替换 &#xff1a;%s/旧字符/新字符/g &#xff1a;进入命令行 % 全局范围 s 替换命令 /旧字符/新字符/ 将旧字符换为新字符 g 全局替换 局部范围替换 &#xff1a;开始行号&#xff0c;…

【玩转MacBook】Git安装

Git 官网也提到了MacBook 可以使用 Homebrew 安装 Git&#xff0c;所以在此使用 Homebrew 安装。 1、安装 Homebrew 执行安装脚本 在 Terminal 中执行如下命令&#xff1a; /bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.…

Browser Use:AI智能体自动化操作浏览器的开源工具

Browser Use:AI智能体自动化操作浏览器的开源工具 Browser Use 简介1. 安装所需依赖2. 生成openai密钥3. 编写代码4. 运行代码5. 部署与优化5.1 部署AI代理5.2 优化与扩展总结Browser Use 简介 browser-use是一个Python库,它能够帮助我们将AI代理与浏览器自动化操作结合起来;…

字符串存储、分割相关总结(strncpy 函数和strtok() 函数相关)

1.想用这些函数都需要导入头文件 #include<string.h> 2.怎么创建字符串并输入 #define maxsize 100 char a[maxsize1];//创建字符串&#xff0c;预留一个位置放\0 【1】scanf("%s",a);//使用 scanf 函数读取不带空格的字符串 【2】fgets(a, sizeof(a), stdi…

缓存管理自动化:JuiceFS 企业版 Cache Group Operator 新特性发布

近期&#xff0c;JuiceFS 企业版推出了 Cache Group Operator&#xff0c;用于自动化创建和管理缓存组集群。Operator 是一种简化 Kubernetes 应用管理的工具&#xff0c;它能够自动化应用程序的生命周期管理任务&#xff0c;使部署、扩展和运维更加高效。 在推出 Operator 之前…

【蓝桥杯——物联网设计与开发】拓展模块5 - 光敏/热释电模块

目录 一、光敏/热释电模块 &#xff08;1&#xff09;资源介绍 &#x1f505;原理图 &#x1f505;AS312 &#x1f319;简介 &#x1f319;特性 &#x1f505;LDR &#xff08;2&#xff09;STM32CubeMX 软件配置 &#xff08;3&#xff09;代码编写 &#xff08;4&#x…

基于AI的增强型日内成交量比率概率预测在美股市场中的表现优于现有的基准

“IVE: Enhanced Probabilistic Forecasting of Intraday Volume Ratio with Transformers” 论文地址&#xff1a;https://arxiv.org/pdf/2411.10956 摘要 本文介绍了一种创新的金融市场成交量比预测技术&#xff0c;特别适用于VWAP&#xff08;成交量加权平均价格&#xff…

Tauri2+Leptos开发桌面应用--Sqlite数据库操作

在之前工作&#xff08;使用Tauri Leptos开发带系统托盘桌面应用-CSDN博客&#xff09;的基础上&#xff0c;继续尝试对本地Sqlite数据库进行读、写、删除操作&#xff0c;开发环境还是VS CodeRust-analyzer。 最终程序界面如下&#xff1a; 主要参考文章&#xff1a;Building…

设计模式之状态模式:自动售货机的喜怒哀乐

~犬&#x1f4f0;余~ “我欲贱而贵&#xff0c;愚而智&#xff0c;贫而富&#xff0c;可乎&#xff1f; 曰&#xff1a;其唯学乎” 一、状态模式概述 \quad 在我们的日常生活中&#xff0c;很多事物都具有不同的状态。比如我们经常使用的自动售货机&#xff0c;它就具有多种状态…

4.银河麒麟V10(ARM) 离线安装 MySQL

1. 系统版本 [rootga-sit-cssjgj-db-01u ~]# nkvers ############## Kylin Linux Version ################# Release: Kylin Linux Advanced Server release V10 (Lance)Kernel: 4.19.90-52.39.v2207.ky10.aarch64Build: Kylin Linux Advanced Server release V10 (SP3) /(La…

多模态论文笔记——LLaVA

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍多模态模型&#xff1a;LLaVA。处理包含图像和文本的多模态数据&#xff0c;并生成合理准确的回答。 文章目录 论文模型架构视觉编码器语言模型多模态融…

【Sentinel】初识Sentinel

目录 1.1.雪崩问题及解决方案 1.1.1.雪崩问题 1.1.2.超时处理 1.1.3.仓壁模式 1.1.4.断路器 1.1.5.限流 1.1.6.总结 1.2.服务保护技术对比 1.3.Sentinel介绍和安装 1.3.1.初识Sentinel 1.3.2.安装Sentinel 1.4.微服务整合Sentinel 1.1.雪崩问题及解决方案 1.1.1.…