深度生成模型(二)——基本概念与数学建模

ops/2025/3/1 22:56:21/

上一篇笔记中提到了端到端模型底层核心采用了深度生成模型,先简单梳理一下

生成式人工智能(Artificial Intelligence Generated Content,AIGC)经历了从早期基于概率模型和规则系统的方法到现代深度生成模型的跨越式发展

深度神经网络为 AIGC 带来了革命性的突破:

  1. 变分自编码器(Variational Autoencoder, VAE)等模型显著提升了生成模型的能力
  2. 生成对抗网络(Generative Adversarial Network, GAN)通过引入对抗训练机制,实现了更逼真生成样本的目标
  3. Transformer 模型的出现为序列数据的建模带来了新的思路,其核心是自注意力机制。该机制能够捕捉序列中任意两位置之间的依赖关系
  4. 在 Transformer 架构基础上,生成式预训练 Transformer(Generative Pre-trained Transformer, GPT)采用了预训练和微调的双阶段策略,极大提升了自然语言处理任务的效果。GPT 通过最大化语言模型的对数似然进行训练
  5. ChatGPT和稳定扩散(Stable Diffusion)等模型推动了AIGC进入一个全新阶段:ChatGPT 在 GPT 架构基础上,经过大量数据的预训练以及针对对话系统的微调,具备了高质量的交互生成能力,能够在对话中实现上下文理解和长文本生成;稳定扩散模型通过逆扩散过程将噪声逐步去除,实现高质量图像的生成。其生成过程可视为在一个马尔科夫链中从纯噪声逐步演化为清晰图像的逆过程

目录

1 基本概念

2 概率密度估计

2.1 基本概念

2.2 高维数据中的密度估计

2.3 含隐变量模型与 EM 算法

2.4 变分自编码器(VAE)思想

3 样本生成(采样)

4 生成模型在监督学习中的应用


1 基本概念

概率生成模型(Probabilistic Generative Model),简称生成模型,是概率统计和机器学习领域中一类用于随机生成可观测数据的重要模型

其基本思想是:在一个连续或离散的高维空间中,假设存在一个随机向量 X 服从一个未知的真实数据分布 pr​(x),生成模型通过学习一系列可观测样本 x^{(1)}, x^{(2)}, \dots, x^{(N)} 来构建一个参数化模型 p_{\theta}(x),使得生成的样本与真实样本尽可能相似

左图:真实分布 p_r(x) 以及从中采样的“真实”样本

右图:参数化分布 p_{\theta}(x) 以及从中采样的“生成”样本

生成模型通常包含两个基本功能:概率密度估计样本生成

1. 概率密度估计
给定一组样本数据,通过最大化似然函数来学习参数 θ,以便 p_{\theta}(x) 能够尽可能准确地近似 。常用的优化目标为最大化对数似然:

\theta^* = \arg\max_{\theta} \sum_{i=1}^{N} \log p_{\theta}(x^{(i)})

2. 样本生成(采样)
利用训练得到的模型 p_{\theta}(x) 生成新样本,使得生成样本的统计特性与真实数据相匹配。采样方法可能包括直接采样、马尔科夫链蒙特卡罗(MCMC)方法等。

对于图像、文本、声音等不同类型数据,生成模型均能发挥重要作用。然而,对于高维空间中的复杂分布,密度估计和生成样本通常面临两大挑战:

  • 高维建模难题:高维随机向量难以直接建模,通常需要借助条件独立性假设或降维方法来简化问题
  • 采样方法不足:即便建立了复杂的概率模型,从中高效采样也是一个非常难的问题,需要设计专门的采样算法或采用近似方法

为了解决上述问题,深度生成模型利用深度神经网络近似任意函数的能力,既可以直接建模复杂分布 p_r(x),也可以在隐空间中构造更容易采样的表示

概率密度估计

2.1 基本概念

概率密度估计(Density Estimation)是基于一些观测样本来估计一个随机变量的概率密度函数的方法。在机器学习中,这是一类典型的无监督学习问题。假设给定一组数据

\{x^{(1)}, x^{(2)}, \dots, x^{(N)}\}

这些数据都是从未知分布 p_r(x)  中独立采样得到的。密度估计的目标是根据这组样本,构建一个参数化模型 p_\theta(x) 来近似 p_r(x)

\theta^* = \arg\max_\theta \prod_{i=1}^{N} p_\theta(x^{(i)}) \quad     \Longleftrightarrow \quad \theta^* = \arg\max_\theta \sum_{i=1}^{N} \log p_\theta(x^{(i)})

密度估计方法主要分为两类:

  • 参数密度估计:假定数据分布属于某个已知的分布族,通过估计参数来确定分布,例如高斯分布的均值和协方差
  • 非参数密度估计:不做具体分布假设,直接利用数据自身来估计密度,例如核密度估计(Kernel Density Estimation, KDE)

2.2 高维数据中的密度估计

以手写体数字图像为例,每幅图像可以表示为一个随机向量 X,其中每一维代表一个像素值。我们假设所有手写体图像都服从一个未知的分布 p_r(x),并希望通过观测样本来估计该分布

然而,直接建模 p_r(x) 存在两大难题:

  1. 高维建模困难:图像中各像素间存在复杂依赖关系(例如相邻像素通常颜色相似),很难用简单的图模型来精确描述这种依赖关系
  2. 采样难度大:即使得到了复杂分布的近似模型,从中高效采样也往往不易实现

为了解决这两个问题,通常引入隐变量 z 来简化模型,将高维分布的建模任务分解为两个局部条件概率的估计问题:

  • 隐变量先验 p_\theta(z)
  • 条件分布 p_\theta(x \mid z)

一般我们会假设隐变量 z 的先验分布为标准高斯分布,即

p(z) = \mathcal{N}(z; 0, I)

其中各维度之间相互独立,因此先验分布中不含需要学习的参数。这样,密度估计的重点就转移为如何精确地估计条件分布 p_\theta(x \mid z)

2.3 含隐变量模型与 EM 算法

当需要建模含隐变量的联合分布 p_\theta(x, z) 时,由于隐变量 z 的不可观测性,我们通常使用 EM 算法(Expectation-Maximization Algorithm)来进行密度估计。EM 算法通过以下两个步骤交替进行迭代求解:

  1. E 步(Expectation Step):计算隐变量的后验分布 p(z \mid x; \theta) 或其近似

  2. M 步(Maximization Step):利用 E 步得到的后验分布,更新参数 θ,使得观测数据的对数似然最大化,即 \theta^* = \arg\max_\theta \sum_{i=1}^{N} \log p_\theta(x^{(i)})

在实际问题中,当条件分布 p_\theta(x \mid z) 与后验分布 p(z \mid x; \theta) 都较为复杂时,传统的 EM 算法难以直接求解。这时,可以利用神经网络来对这些分布进行建模,从而发展出基于变分推断的模型,即 变分自编码器(VAE)

2.4 变分自编码器(VAE)思想

变分自编码器的核心思想是利用神经网络对条件分布和后验分布进行近似建模。具体来说,VAE 包括两个模块:

  • 编码器 q_\phi(z \mid x):将观测数据 x 映射到隐变量 z 的分布
  • 解码器 p_\theta(x \mid z):根据隐变量 z 重构或生成数据 x

VAE 的目标是最大化变分下界(Evidence Lower Bound, ELBO),其目标函数为:

\mathcal{L}_{\text{VAE}} = \mathbb{E}_{q_\phi(z \mid x)}\left[\log p_\theta(x \mid z)\right] - \text{KL}\left(q_\phi(z \mid x) \parallel p(z)\right)

其中 \text{KL}(\cdot \parallel \cdot) 表示 Kullback-Leibler 散度,用以衡量编码器输出分布 q_\phi(z \mid x) 与先验分布 p(z) 之间的差异。最大化 ELBO 即相当于在保证模型重构能力的同时,使得隐变量的分布尽可能接近先验分布

样本生成(采样)

生成模型除了具备密度估计的功能外,还可以用于生成样本,即从一个给定的概率密度函数 p_\theta(x) 中生成服从该分布的新样本,这一过程也被称为采样。同时,生成模型在监督学习中也有广泛应用,通过对样本与标签联合分布 p(x, y) 的建模,可以间接求解条件概率分布 p(y|x)

在生成模型中,给定一个参数化的概率密度函数 p_\theta(x) 后,采样的目标是生成一组样本,使得这些样本服从 p_\theta(x)。如果已经得到了隐变量的局部条件概率 p_\theta(z) 以及条件概率 p_\theta(x|z),则生成数据 x 的过程可以分为两步进行:

  1. 隐变量采样:从隐变量的先验分布 p_\theta(z) 中采样,得到样本 z:z \sim p_\theta(z)

  2. 条件采样:根据采样得到的 z,从条件分布 p_\theta(x|z) 中采样,生成样本 x:x \sim p_\theta(x|z)

为了便于采样,通常要求 p_\theta(z) 不宜过于复杂。因此,另一种生成样本的思路是:从一个简单的分布(例如标准正态分布)中采样得到 z,然后利用一个深度神经网络 g(z)z 映射到数据空间,使得 g(z) 服从真实分布 p_r(x)

x = g(z), \quad z \sim \mathcal{N}(0, I)

这种方法能够避免直接对复杂高维分布 p_r(x) 进行密度估计,从而有效降低生成样本的难度。这正是生成对抗网络(GAN)的基本思想,即利用深度神经网络将简单分布映射为复杂数据分布的过程

4 生成模型在监督学习中的应用

除了用于生成样本之外,生成模型还可以应用于监督学习中。监督学习的目标是建模样本 x 与输出标签 y 之间的条件概率分布 p(y|x)。根据贝叶斯公式,

p(y|x) = \frac{p(x,y)}{p(x)}

可以将监督学习问题转换为对联合概率分布 p(x,y) 的密度估计问题

在这种框架下,生成模型不仅可以用于无监督数据的建模,还能用于构建带标签数据的生成模型。例如,在手写体数字图像的分类问题中,将图像表示为随机向量 X,标签 y 则表示对应的数字类别。生成模型通过对 p(x,y) 的建模,实现了对 p(y|x) 的间接推导。这种方法在某些情况下可以提高分类器的泛化能力

在监督学习中,比较典型的生成模型有:

  • 朴素贝叶斯分类器:假设各特征之间条件独立,直接基于 p(x,y) 进行建模
  • 隐马尔可夫模型(HMM):主要用于处理序列数据,通过建模隐状态与观测数据之间的关系来进行序列标注或分类

与生成模型对应的另一类监督学习方法是判别模型。判别模型直接对条件概率 p(y|x) 进行建模,而不需要构造完整的联合分布 p(x,y)。常见的判别模型包括 Logistic 回归、支持向量机(SVM)、神经网络等。需要注意的是,由生成模型可以推导出判别模型,但由判别模型却无法还原生成模型的信息


http://www.ppmy.cn/ops/162346.html

相关文章

SQL Server 创建用户并授权

创建用户前需要有一个数据库,创建数据库命令如下: CREATE DATABASE [数据库名称]; CREATE DATABASE database1;一、创建登录用户 方式1:SQL命令 命令格式:CREATE LOGIN [用户名] WITH PASSWORD ‘密码’; 例如,创…

BigDecimal 为什么可以不丢失精度?

本文已收录至Java面试网站:https://topjavaer.cn 大家好,今天咱们来聊聊 Java 中的 BigDecimal。在金融领域,数据的精确性相当重要,一个小数点的误差可能就意味着几百万甚至几千万的损失。而 BigDecimal 就是专门用来解决这种高精…

docker启动elasticsearch,挂载文件报错:Device or resource busy

本人使用的是elasticsearch 8.17.0,不过通过看帖子发现这个问题很早之前就有了,并且到现在官方也没有很好的解决。 原始错误是在安全自动配置期间引发的,配置文件里显示的启用安全配置xpack.security.enabled: true可以跳过自动配置&#xf…

事故02分析报告:慢查询+逻辑耦合导致订单无法生成

一、事故背景与现象 时间范围 2022年2月3日 18:11~18:43(历时32分钟) 受影响系统 系统名称角色影响范围dc3订单数据库主库订单生成、事务回滚dc4订单数据库从库数据同步、容灾切换 业务影响 核心业务:手机点餐、C扫B支付订单无法推送至…

鸿蒙 ArkUI 实现敲木鱼小游戏

敲木鱼是一款具有禅意的趣味小游戏,本文将通过鸿蒙 ArkUI 框架的实现代码,逐步解析其核心技术点,包括动画驱动、状态管理、音效震动反馈等。 一、架构设计与工程搭建 1.1 项目结构解析 完整项目包含以下核心模块: ├── entry…

linux中安装部署Jenkins,成功构建springboot项目详细教程

参考别人配置Jenkins的git地址为https,无法连上github拉取项目,所以本章节介绍通过配置SSH地址来连github拉取项目 目录: 1、springboot项目 1.1 创建名为springcloudproject的springboot项目工程 1.2 已将工程上传到github中,g…

linux学习笔记2

认知权限信息 -或d或l:-表示文件,d表示文件夹,l表示软链接 rwx:r表示读权限,w表示写权限,x表示执行权限 文件类型所属用户权限所属用户组权限其它用户权限 修改权限chmod [-R] 权限 文件或文件夹 -R对文件夹内的全部内容应用同样的操作 chmod -R urwx,grx,ox 可使用简单表示r4…

【Prometheus】prometheus服务发现与relabel原理解析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…