生成式 AI 模型 - 最大似然估计

最大似然估计 (MLE) 是一种统计方法,它提供了一种主要方法来估计最能描述给定数据集的概率分布的参数。MLE 假设指定的分布会生成数据。简而言之,MLE 是一种用于找出模型未知参数最可能值的方法,例如一组数据点的平均值或分布。这有点像我们猜测序列中缺失的数字,以便它符合我们已经知道的数字模式。

在生成式 AI 领域,尤其是在生成对抗网络 (GAN) 和变分自动编码器 (VAE) 等生成模型中,MLE 得到了广泛的应用。例如,在生成手写数字 (0-9) 的图像时,我们希望我们的模型生成与数据集中的图像相似的图像(如 MNIST)。我们可以通过在给定模型参数的情况下最大化观察训练数据的可能性来实现这一点。

最大化 Σ log P(x | θ)

当我们使用 Python 编程语言创建第一个 GAN 模型时,我们将详细介绍这一点。阅读本章以了解最大似然估计的概念、它在生成建模中的重要作用、MLE 在生成建模中的应用及其 Python 实现。

了解最大似然估计 (MLE)

最大似然估计 (MLE) 是一种强大的统计方法,用于根据观察到的数据估计概率分布的参数。让我们借助其数学基础 − 来更详细地了解它

MLE 的数学基础

MLE 的核心是似然函数:$\mathrm{L(\theta | x)}$。这里,$\mathrm{\theta}$ 表示分布的参数,x 表示观察到的数据。

似然函数量化了给定特定参数值时观察到数据的概率。从数学上讲,它表示为观测数据的联合概率密度函数 (PDF) 或概率质量函数 (PMF)。

$$\mathrm{L(\theta | x) \: = \: f(x | \theta)}$$

为了使计算简单,我们通常使用对数似然函数 $\mathrm{l(\theta | x)}$,它是似然函数 − 的自然对数

$$\mathrm{l(\theta | x) \: = \: \log L(\theta | x)}$$

实际上,MLE 的目标是找到参数值$\mathrm{\hat{\theta}}$ 最大化似然函数 $\mathrm{L(\theta | x)}$ 或等效地,对数似然函数 $\mathrm{l(\theta | x)}$ −

$$\mathrm{\hat{\theta} \: = \: argmax_{\theta} L(\theta | x)}$$

或者,

$$\mathrm{\hat{\theta} \: = \: argmax_{\theta} l(\theta | x)}$$

现在,为了获得最大似然估计$\mathrm{\hat{\theta}}$,我们区分对数似然函数$\mathrm{l(\theta | x)}$ 相对于参数 $\mathrm{\theta}$ 并将导数设置为零 −

$$\mathrm{\frac{\partial \: l(\theta | x)}{\partial \: \theta} \: = \: 0}$$

解上述方程可得出 MLE $\mathrm{\hat{\theta}}$。

生成模型中的 MLE

正如我们之前讨论的那样,生成模型涉及捕获数据的底层分布并生成与原始训练数据相当的新数据。在训练生成模型时,MLE 通过估计底层概率分布的参数起着至关重要的作用。

让我们看看 MLE 如何应用于生成模型 −

模型选择

我们首先需要选择一个能够捕捉底层数据分布的概率模型。一些常见的模型是高斯分布、混合模型、神经网络等。

似然函数

接下来我们需要定义似然函数。这个似然函数测量观察到给定数据的概率。例如,对于给定数据集 $\mathrm{D \: = \: \lbrace x_{1},x_{2},x_{3},\: \dots \: x_{n} \rbrace}$,似然函数 $\mathrm{L(\theta | D)}$ 取决于模型参数 $\mathrm{\theta}$,由观察每个数据点的概率乘积 −

$$\mathrm{L(\theta | D) \: = \: \prod_{i=1}^N p(x_{i} | \theta)}$$

最大化

现在我们需要最大化关于模型参数 $\mathrm{\theta}$ 的似然函数。最大化涉及找到使观察到的数据在模型下最有可能的 $\mathrm{\theta}$ 值。

参数估计

最后,当似然函数最大化时,得到的参数值用作生成模型参数的估计值。这些估计的参数定义了学习到的分布,然后可用于生成与观察到的数据相当的新数据点。

MLE 在生成建模中的应用

MLE 在生成建模的各个领域都有广泛的应用。下面给出了一些重要的应用 −

  • 高斯混合模型 (GMM) − MLE 用于估计 GMM 中高斯分量的参数。这些参数支持对具有多种模式的复杂数据分布进行建模。
  • 变分自动编码器 (VAE) − 在 VAE 中,MLE 用于学习潜在变量分布的参数。它允许模型通过从这个学习到的分布中进行采样来生成新的数据样本。
  • 生成对抗网络 (GAN) − GAN 不直接优化似然函数,但 MLE 用于训练 GAN 以指导学习过程并提高样本质量。

使用 Python 实现最大似然估计

我们可以使用 Python 实现 MLE,并使用 Matplotlib 等库对其进行可视化。下面给出了一个简单的示例,用于执行 MLE 来从给定的数据集估计高斯分布的参数 −

示例

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

# 样本数据集(您可以用自己的数据替换它)
data = np.random.normal(loc=2, scale=1, size=2000)

# 高斯分布的最大似然估计
def maximum_likelihood_estimation(data):
    # 计算数据的平均值和标准差
    mu = np.mean(data)
    sigma = np.std(data)
    return mu, sigma

# 执行最大似然估计
estimated_mu, perceived_sigma = maximum_likelihood_estimation(data)

# 生成用于绘图的 x 值
x = np.linspace(min(data), max(data), 1000)

# 绘制数据的直方图
plt.figure(figsize=(7.2, 5.5))
plt.hist(data, bins=30, density=True, alpha=0.6, color='blue', label='数据直方图')

# 绘制真实高斯分布
plt.plot(x, norm.pdf(x, loc=2, scale=1), color='red', linestyle='--', label='真实高斯分布')

# 使用 MLE 绘制估计的高斯分布
plt.plot(x, norm.pdf(x, loc=estimated_mu, scale=estimated_sigma), color='green', linestyle='-', label='Estimated Gaussian Distribution (MLE)')

plt.xlabel('Value')
plt.ylabel('Probability Density')
plt.title('Maximum Likelihood Estimation for Gaussian Distribution')
plt.legend()
plt.grid(True)

plt.show()

输出

上述代码将生成一个图表,显示数据的直方图、真实的高斯分布以及使用最大似然估计 (MLE) 获得的估计高斯分布。

最大似然估计

结论

在本章中,我们强调了 MLE 在生成模型中的重要性。在生成模型中,MLE 是学习数据分布和生成新样本的支柱。

模型选择、似然函数、最大化和参数估计是我们可以在生成模型中应用 MLE 的步骤。