当前位置: 首页 > article >正文

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

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

生成式人工智能(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)、神经网络等。需要注意的是,由生成模型可以推导出判别模型,但由判别模型却无法还原生成模型的信息

相关文章:

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

上一篇笔记中提到了端到端模型底层核心采用了深度生成模型,先简单梳理一下 生成式人工智能(Artificial Intelligence Generated Content,AIGC)经历了从早期基于概率模型和规则系统的方法到现代深度生成模型的跨越式发展 深度神经…...

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) 。 当时我们说阻塞队列最大的用途, 就是用来实现生产者消费者模型。 生产者消费者模型是后端开发的常用编程方式, 它存在诸多好处: 解耦合支持并发支持忙闲不均削峰…...

【react】快速上手基础教程

目录 一、React 简介 1.什么是 React 2.React 核心特性 二、环境搭建 1. 创建 React 项目 2.关键配置 三、核心概念 1. JSX 语法 表达式嵌入 样式处理 2. 组件 (Component) 3. 状态 (State) 与属性 (Props) 4. 事件处理 合成事件(SyntheticEvent) 5. …...

流媒体网络协议全解析:从实时传输到自适应流,如何选择最优方案?

一、历史发展与协议提出者 流媒体协议的发展与互联网技术迭代紧密相关,主要分为三个阶段: 早期专有协议(1990s-2000s) RTSP/RTP 提出者:RealNetworks(RTSP初始推动者),后由IETF标准化(RFC 2326)。背景:1996年推出,用于视频监控和点播系统,基于UDP传输媒体流,支持…...

React + TypeScript 数据血缘分析实战

React TypeScript 数据血缘分析实战 目录 技术选型与架构设计核心概念解析基础场景实现 场景一:visx库基础血缘图实现场景二:React-Lineage-DAG企业级方案场景三:动态数据源与复杂交互 TypeScript类型系统深度优化性能优化与工程化实践开源…...

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

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

Nginx的反向代理(超详细)

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

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

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

Docker数据卷容器实战

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

Imagination通过最新的D系列GPU IP将效率提升至新高度

Imagination DXTP GPU IP在加速移动设备和其他电力受限设备上的 图形和计算工作负载时,能够延长电池续航时间。 近日,Imagination Technologies(“Imagination”)宣布推出其最新的GPU IP——Imagination DXTP,该产品…...

第13天:数据序列化实战 - 从内存到磁盘的完美转换

第13天:数据序列化实战 - 从内存到磁盘的完美转换 一、今日学习目标 🧱 掌握二进制序列化的原理与实现📄 学习JSON格式的序列化方法💾 完成学生信息管理系统的通用数据存储方案🔍 理解不同序列化格式的适用场景 二、…...

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

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

【备赛】点亮LED

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

cpp中的继承

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

WPF-3天快速WPF入门并达到企业级水准

嘿,小伙伴们!如果你已经有一定的C#开发基础,但想快速掌握WPF开发,达到企业级水准,那接下来的这个三天快速入门计划绝对适合你!虽然听起来有点挑战,但别担心,只要跟着这个高强度、结构…...

[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:包含即将发布的新功…...

Spring AOP 切面打印日志完整版

我的项目使用的是 SpringBoot 3。 要在 Spring Boot 3 项目中使用 AOP(面向切面编程)来打印接收和响应的参数,如 URL、参数、头部信息、请求体等,可以按照以下步骤操作: 步骤 1: 添加依赖 确保你的 pom.xml 文件中包…...

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

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

SEO炼金术(4)| Next.js SEO 全攻略

在上一篇文章 SEO炼金术(3)| 深入解析 SEO 关键要素 中,我们深入解析了 SEO 关键要素,包括 meta 标签、robots.txt、canonical、sitemap.xml 和 hreflang,并探讨了它们在搜索引擎优化(SEO)中的作…...

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…...

QVariantList使用详解

QVariantList 1. 基本概念2. 使用场景3. 基本操作3.1 创建和初始化3.2 访问元素3.3 修改元素3.4 删除元素 4. 实际应用示例5. 总结其他QT文章推荐 QVariantList 是 Qt 框架中的一个类,用于存储和操作 QVariant 对象的列表。 QVariant 是 Qt 中用于封装各种类型的通…...

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…...

Ubuntu20.04下各类常用软件及库安装汇总

1.Miniconda的安装 Ubuntu 20.04版本快速安装 Miniconda(宝宝级攻略) 2.Nvidia显卡驱动/CUDA/cuDNN安装 Ubuntu 20.04安装nvidia显卡驱动/CUDA/cuDNN Ubuntu 20.04:CUDAcuDNN安装&卸载 Y9000P24款 win11ubuntu20.04 双系统教程 3.SGL…...

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商城小程序的环境下,如何精准、高效地选择推广商品,成为商家面临的一大挑战。本文首先分析了商品选品的基…...