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

news2025/5/12 9:16:26

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

生成式人工智能(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.coloradmin.cn/o/2307604.html

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

相关文章

Mac本地部署Deep Seek R1

Mac本地部署Deep Seek R1 1.安装本地部署大型语言模型的工具 ollama 官网:https://ollama.com/ 2.下载Deepseek R1模型 网址:https://ollama.com/library/deepseek-r1 根据电脑配置,选择模型。 我的电脑:Mac M3 24G内存。 这…

项目——仿RabbitMQ实现消息队列

1.项目介绍 曾经在学习Linux的过程中,我们学习过阻塞队列 (BlockingQueue) 。 当时我们说阻塞队列最大的用途, 就是用来实现生产者消费者模型。 生产者消费者模型是后端开发的常用编程方式, 它存在诸多好处: 解耦合支持并发支持忙闲不均削峰…

【nextjs官方demo】Chapter 6连接数据库报错

问题:跟着demo创建完成postgres数据库,并修改了env文件,需要访问/seed去初始化数据的时候: 报错信息如下,看信息就是bcrypt模块有问题: 排除了你的环境问题后,就看下面这句话: 它的…

Nginx的反向代理(超详细)

正向代理与反向代理概念 1.概念: 反向代理服务器位于用户与目标服务器之间,但对用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务…

Plantsimulation中机器人怎么通过阻塞角度设置旋转135°

创建一个这样的简单模型。 检查PickAndPlace的角度表。源位于180的角位置,而物料终结位于90的角位置。“返回默认位置”选项未被勾选。源每分钟生成一个零件。启动模拟时,Plant Simulation会选择两个位置之间的最短路径。示例中的机器人无法绕135的角位…

Docker数据卷容器实战

数据卷容器 数据共享 上面讲述的是主机和容器之间共享数据,那么如何实现容器和容器之间的共享数据呢?那就是创建 创建数据卷容器。 命名的容器挂载数据卷,其他容器通过挂载这个(父容器)实现数据共享,挂载…

【Rust中级教程】2.13. 结语(杂谈):我学习Rust的心路历程

2.13.1. 【Rust自学】专栏的缘起 笔者我在去年12月份之前对Rust还一无所知,后来看到JetBrains推出了Rust Rover,想着自己毕竟是买的全产品证书就下载下来玩了一下。原本就是看看,都打算卸载了,后来去网上查才发现Rust这门语言挺牛…

【备赛】点亮LED

LED部分的原理图 led前面有锁存器,这是为了防止led会受到lcd的干扰(lcd也需要用到这些引脚)。 每次想要对led操作,就需要先打开锁存器,再执行操作,最后关闭锁存器。 这里需要注意的是,引脚配置…

cpp中的继承

一、继承概念 在cpp中,封装、继承、多态是面向对象的三大特性。这里的继承就是允许已经存在的类(也就是基类)的基础上创建新类(派生类或者子类),从而实现代码的复用。 如上图所示,Person是基类&…

[Java基础] JVM常量池介绍(BeanUtils.copyProperties(source, target)中的属性值引用的是同一个对象吗)

文章目录 1. JVM内存模型2. 常量池中有什么类型?3. 常量池中真正存储的内容是什么4. 判断一个字符串(引用)是否在常量池中5. BeanUtils.copyProperties(source, target)中的属性值引用的是同一个对象吗?6. 获取堆内存使用情况、非堆内存使用情况 1. JVM内…

NocoBase 本周更新汇总:新增路由管理

汇总一周产品更新日志,最新发布可以前往我们的博客查看。 NocoBase 目前更新包括的版本更新包括三个分支:main ,next和 develop。 main :截止目前最稳定的版本,推荐安装此版本。 next:包含即将发布的新功…

【数据结构】(12) 反射、枚举、lambda 表达式

一、反射 1、反射机制定义及作用 反射是允许程序在运行时检查和操作类、方法、属性等的机制,能够动态地获取信息、调用方法等。换句话说,在编写程序时,不需要知道要操作的类的具体信息,而是在程序运行时获取和使用。 2、反射机制…

ONES 功能上新|ONES Copilot、ONES Project 新功能一览

ONES Copilot 智能 AI 助手模型可配置多种类型模型,服务提供方 Dashscope 的模型列表中新增 DeepSeek V3 与 DeepSeek R1;选择自定义模型配置时,填写私有部署的 DeepSeek 模型相关参数即可。 应用场景: 企业内部自部署或在模型服务…

STM32寄存器控制引脚高低电平

一. 引子 最近在学习32代码的过程当中,虽然在学习IMX6ULL开发板的过程中接触过很多寄存器,最近在返回去看32的时候,在研究代码的时候发现自己对于寄存器的有些特性理解的不够深刻,所以下来的时候去查了资料,以及问了一…

SOC-ATF 安全启动BL1流程分析(1)

一、ATF 源码下载链接 1. ARM Trusted Firmware (ATF) 官方 GitHub 仓库 GitHub 地址: https://github.com/ARM-software/arm-trusted-firmware 这是 ATF 的官方源码仓库,包含最新的代码、文档和示例。 下载方式: 使用 Git 克隆仓库: git…

TDesign:Cascader 级联选择器(省市区三级联动)

Cascader 级联选择器API 参考官方示例代码 在自己的模板中使用:view import package:ducafe_ui_core/ducafe_ui_core.dart; import package:flutter/material.dart; import package:get/get.dart; import package:tdesign_flutter/tdesign_flutter.dart;import i…

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

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

2025系统架构师(一考就过):案例之四:架构复用、架构评估、特定架构(DSSA)、架构开发方法(ABSD)

二、软件架构复用 ◆软件产品线是指一组软件密集型系统,它们共享一个公共的、可管理的特性集,满足某个特定市场或任务的具体需要,是以规定的方式用公共的核心资产集成开发出来的。即围绕核心资产库进行管理复用、集成新的系统。 ◆软件架构…

基于定制开发开源AI大模型S2B2C商城小程序的商品选品策略研究

摘要:随着电子商务的蓬勃发展和技术的不断进步,商品选品在电商领域中的重要性日益凸显。特别是在定制开发开源AI大模型S2B2C商城小程序的环境下,如何精准、高效地选择推广商品,成为商家面临的一大挑战。本文首先分析了商品选品的基…

Docker 2025/2/24

用来快速构建、运行和管理应用的工具。帮助部署。 快速入门 代码略 解释 docker run :创建并运行一个容器,-d是让容器在后台运行 --name mysql :给容器起个名字,必须唯一 -p 3306:3306 :设置端口映射 -e KEYVALUE :是设置环境变量 mysql :指定运行的…