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

手把手推导:从Score Function到Langevin采样,彻底搞懂SGM扩散模型的数学原理

手把手推导从Score Function到Langevin采样彻底搞懂SGM扩散模型的数学原理在生成模型领域Score-Based Generative ModelingSGM正以其独特的数学美感和理论深度吸引着越来越多的研究者。与常见的生成对抗网络GAN或变分自编码器VAE不同SGM通过直接建模概率密度的梯度场即Score Function来实现数据生成这一思路不仅优雅而且在实践中展现出了惊人的效果。本文将带您深入SGM的核心数学原理从Score Function的定义出发逐步推导到Langevin采样算法的实现细节让您真正理解这一强大模型背后的理论基础。1. Score Function概率密度的导航图1.1 Stein Score Function的定义与几何意义在概率论中给定一个概率密度函数p(x)其Stein Score Function定义为s(x) \nabla_x \log p(x)这个看似简单的定义蕴含着深刻的几何意义。Score Function实际上描述了概率密度函数在x点处的最陡上升方向。想象你站在一个概率密度构成的山丘上Score Function就是告诉你应该朝哪个方向走才能最快到达山顶即概率密度最大的区域。对于高斯分布N(μ, σ²I)我们可以具体计算出其Score Function\begin{aligned} p(x) \frac{1}{(2\pi)^{d/2}\sigma^d}\exp\left(-\frac{\|x-\mu\|^2}{2\sigma^2}\right) \\ \log p(x) -\frac{\|x-\mu\|^2}{2\sigma^2} C \\ s(x) \nabla_x \log p(x) -\frac{x-\mu}{\sigma^2} \end{aligned}这个结果清晰地展示了Score Function的方向性它总是指向分布的中心均值μ且随着距离中心越远其强度越大。1.2 加噪过程中的Score Function变化在SGM中我们通过逐步加噪的过程来构造一系列分布。设原始数据分布为q(x₀)在加噪步骤t时数据分布变为q(x_t|x_0) \mathcal{N}(x_0, \sigma_t^2 I)对应的边缘分布为q(x_t) \int q(x_t|x_0)q(x_0)dx_0根据1.1节的推导条件分布的Score Function为\nabla_{x_t} \log q(x_t|x_0) -\frac{x_t - x_0}{\sigma_t^2}然而我们真正需要的是边缘分布的Score Functions_t(x_t) \nabla_{x_t} \log q(x_t)这个无法直接计算因为q(x_t)的表达式涉及积分。这正是我们需要神经网络来近似Score Function的原因。2. Score Matching训练Score Network2.1 目标函数的推导我们的目标是训练一个网络sθ(xₜ,t)来近似真实的Score Function sₜ(xₜ)。直接的想法是最小化以下L₂损失\mathcal{L} \mathbb{E}_{q(x_t)} \left[ \| s_\theta(x_t,t) - \nabla_{x_t} \log q(x_t) \|^2 \right]但这个目标不可行因为我们无法直接计算∇ₓlog q(xₜ)。幸运的是我们可以利用Score Matching的技巧通过以下等价形式来避免直接计算\mathcal{L} \mathbb{E}_{q(x_t|x_0)q(x_0)} \left[ \| s_\theta(x_t,t) - \nabla_{x_t} \log q(x_t|x_0) \|^2 \right] C其中C是与θ无关的常数。根据1.2节的结果我们可以将目标函数具体化为\mathcal{L} \mathbb{E} \left[ \left\| s_\theta(x_t,t) \frac{x_t - x_0}{\sigma_t^2} \right\|^2 \right]2.2 与DDPM的联系有趣的是SGM的目标函数可以与DDPMDenoising Diffusion Probabilistic Models建立联系。考虑加权损失\mathcal{L}^* \sigma_t^4 \mathcal{L} \mathbb{E} \left[ \left\| \frac{x_t - x_0}{\sigma_t} \sigma_t s_\theta(x_t,t) \right\|^2 \right]令z (xₜ - x₀)/σₜ这是标准正态噪声zθ -σₜsθ(xₜ,t)则损失变为\mathcal{L}^* \mathbb{E} \left[ \| z - z_\theta \|^2 \right]这正是DDPM中预测噪声的目标函数这一发现揭示了两种看似不同的生成模型背后深刻的统一性。3. Langevin动力学与采样过程3.1 Langevin动力学的基本原理Langevin动力学提供了一种通过Score Function进行采样的方法。其离散形式为x_{i1} x_i \epsilon \nabla_x \log p(x_i) \sqrt{2\epsilon} z_i其中zᵢ ∼ N(0,I)ϵ是步长。这一更新公式可以理解为漂移项ϵ∇ₓlog p(xᵢ)推动样本向高概率区域移动扩散项√(2ϵ)zᵢ保证探索性避免陷入局部极值在适当条件下当ϵ→0且迭代次数→∞时xᵢ的分布会收敛到p(x)。3.2 SGM中的退火Langevin采样在SGM中我们采用退火(annealing)策略从高噪声级别逐步过渡到低噪声级别。具体算法如下初始化xₜ⁰ ∼ N(0,I)tT对每个t执行N步Langevin更新x_t^{i1} x_t^i \frac{\alpha_t}{2} s_\theta(x_t^i,t) \sqrt{\alpha_t} z_i将最终样本作为下一噪声级别的初始值xₜ₋₁⁰ xₜᴺt t-1重复步骤2-3直到t0其中αₜ是噪声级别相关的步长。这种退火策略有效地克服了传统Langevin采样在多模态分布中的混合问题。4. 实践中的技巧与优化4.1 噪声调度与步长选择在实践中噪声级别{σₜ}的选择至关重要。常见的策略包括调度类型公式特点线性调度σₜ σₘₐₓ - (σₘₐₓ-σₘᵢₙ)(t/T)简单直接指数调度σₜ σₘₐₓ(σₘᵢₙ/σₘₐₓ)^(t/T)更关注低噪声区域余弦调度σₜ cos(πt/2T)平滑过渡步长αₜ通常与σₜ²成正比以确保不同噪声级别的更新幅度相对一致。4.2 网络架构设计Score Network sθ(xₜ,t)通常采用类似UNet的结构但有以下特殊考虑时间嵌入将噪声级别t通过正弦位置编码嵌入网络噪声条件在残差块中加入与σₜ相关的缩放因子归一化使用Group Normalization而非Batch Normalization一个典型的实现片段可能如下class ScoreNetwork(nn.Module): def __init__(self): super().__init__() self.time_embed nn.Sequential( nn.Linear(1, 128), nn.SiLU(), nn.Linear(128, 256) ) self.conv1 nn.Conv2d(3, 64, 3, padding1) self.downblocks nn.ModuleList([DownBlock(64*(2**i)) for i in range(4)]) self.upblocks nn.ModuleList([UpBlock(64*(2**(3-i))) for i in range(4)]) def forward(self, x, t): t_emb self.time_embed(t.view(-1,1)) h self.conv1(x) skips [] for block in self.downblocks: h block(h, t_emb) skips.append(h) for i, block in enumerate(self.upblocks): h block(h, skips[-(i1)], t_emb) return h4.3 采样加速技巧为了提高采样效率可以应用以下技巧子序列采样不必遍历所有T个噪声级别而是选择子序列{t₁,...,tₖ}预测校正交替使用Langevin步骤和Score Matching校正高阶方法使用二阶或更高阶的数值积分方法在实践中通常需要在生成质量和计算效率之间进行权衡。例如使用50-100个噪声级别配合100-200步Langevin更新可以在合理时间内获得高质量样本。

相关文章:

手把手推导:从Score Function到Langevin采样,彻底搞懂SGM扩散模型的数学原理

手把手推导:从Score Function到Langevin采样,彻底搞懂SGM扩散模型的数学原理 在生成模型领域,Score-Based Generative Modeling(SGM)正以其独特的数学美感和理论深度吸引着越来越多的研究者。与常见的生成对抗网络&am…...

别只用来聊天了!手把手教你用边界AICHAT的AI绘画功能,从文生图到艺术二维码一次搞定

别只用来聊天了!手把手教你用边界AICHAT的AI绘画功能,从文生图到艺术二维码一次搞定 当大多数人还在用AI聊天机器人进行日常问答时,边界AICHAT已经悄然进化成一个强大的创意工具箱。这款被严重低估的生产力工具,其绘画模块的完整…...

轻量级视觉语言模型Bunny:架构解析与本地部署实战

1. 项目概述:一个轻量级视觉语言模型的诞生最近在开源社区里,BAAI-DCAI/Bunny 这个项目引起了不小的关注。简单来说,Bunny 是一个轻量级的视觉语言模型家族,它的核心目标是在保持与大型模型相近甚至更优性能的前提下,将…...

解锁Unity游戏本地化魔法:XUnity.AutoTranslator自动化解决方案

解锁Unity游戏本地化魔法:XUnity.AutoTranslator自动化解决方案 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 想象一下,你正沉浸在一款精美的日系RPG中,却被语言障碍…...

时序模型(Time Series Model)

时序模型(Time Series Model)是专门用于分析和处理时间序列数据的统计与机器学习模型,核心是捕捉数据随时间变化的规律、趋势和依赖关系,进而实现对未来数据的预测、异常检测或模式识别。时间序列数据是按时间顺序排列的连续数据点…...

ESP32-C3 I2C通信保姆级教程:两块板子互传数据,从接线到代码调试全流程

ESP32-C3 I2C通信实战指南:双板互传数据全流程解析 1. 硬件准备与连接 对于刚接触ESP32-C3的开发者来说,I2C通信是一个既实用又容易上手的入门项目。我们首先需要准备两块ESP32-C3开发板、若干杜邦线以及一台安装了Arduino IDE的电脑。ESP32-C3的I2C引…...

Unity新手避坑指南:手把手教你搞定FPS游戏中的射线射击与怪物生成(附完整C#脚本)

Unity FPS游戏开发实战:从射线射击到智能刷怪的完整解决方案 引言 在Unity中开发FPS游戏时,射线射击和怪物生成系统是两大核心模块。很多新手开发者往往会在实现这两个功能时遇到各种问题——从基础的射线检测失效,到复杂的怪物AI行为管理。…...

深度解析DLSS Swapper:智能游戏图形增强文件管理系统的技术实现与架构设计

深度解析DLSS Swapper:智能游戏图形增强文件管理系统的技术实现与架构设计 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 在当今游戏图形技术快速迭代的时代,DLSS(深度学习超级采样…...

别再复制粘贴了!用这15行C语言代码搞定74HC165驱动(STM32/STC8H通用)

15行C语言实现74HC165通用驱动:跨平台移植与位操作实战 当你的项目需要同时支持STM32和STC8H单片机时,最头疼的莫过于为不同平台重复编写外设驱动。74HC165作为常用的并行输入转串行输出芯片,其驱动代码往往被各种平台特定的宏定义和寄存器操…...

你的消费级NVMe SSD支持原子写吗?一个命令教你排查数据安全风险

你的消费级NVMe SSD支持原子写吗?一个命令教你排查数据安全风险 当你在咖啡厅用笔记本处理交易记录时突然断电,或是深夜赶工遭遇台式机蓝屏,那些未保存的数据真的能毫发无损吗?消费级NVMe固态硬盘(SSD)的原…...

神经检索模型中的MW损失函数设计与实践

1. 项目背景与核心价值 在信息检索领域,神经检索模型近年来已成为提升搜索质量的关键技术。传统检索模型主要依赖词频统计和浅层语义匹配,而神经检索通过深度神经网络捕捉查询和文档间的复杂语义关系,显著提升了搜索相关性。然而,…...

基于Nostr与AI代理的远程编程助手:加密通信与微支付实践

1. 项目概述:一个通过加密消息远程控制本地AI编程助手的桥梁 如果你是一名开发者,可能经常遇到这样的场景:你正坐在咖啡馆里,用手机刷着社交网络,突然灵光一现,想到了一个绝佳的代码优化方案,或…...

从TextEncoder缺失说起:聊聊微信小程序与Web标准API的‘时差’问题

微信小程序与Web标准API的兼容性困境:以TextEncoder为例的技术深探 在微信小程序的开发过程中,许多开发者都曾遇到过这样的场景:在浏览器中运行良好的代码,移植到小程序环境后却突然报错TextEncoder is not defined。这并非个例&a…...

MAA明日方舟自动化助手:智能解放双手的完整解决方案

MAA明日方舟自动化助手:智能解放双手的完整解决方案 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://gitco…...

四大编程语言对决:PHP vs Java vs Python vs Go

PHP、Java、Python和Golang语言的区别PHP、Java、Python和Golang是四种广泛使用的编程语言,它们在设计理念、应用场景、性能和语法上各有特点。下面我将从多个维度逐步分析它们的区别,帮助您理解如何根据需求选择合适的语言。比较基于真实的技术特性和社…...

Windows任务栏透明美化神器:TranslucentTB个性化配置全攻略

Windows任务栏透明美化神器:TranslucentTB个性化配置全攻略 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 你是否厌倦了Wind…...

别再只用PI了!手把手教你用准PR控制器搞定逆变器并网(附MATLAB/Simulink仿真模型)

准PR控制器在逆变器并网控制中的实战应用与Simulink建模指南 电力电子工程师们经常面临一个共同挑战:如何让逆变器输出的电流完美跟踪电网电压波形?传统PI控制器在直流系统中表现出色,但遇到交流信号时却显得力不从心。本文将带您深入探索准P…...

从车间到财报:CPK值如何影响你的生产成本与客户订单?一个质量经理的实战笔记

从车间到财报:CPK值如何影响你的生产成本与客户订单? 作为一家中型注塑厂的质量总监,去年我花了三个月时间说服管理层投资120万升级模具精度。当我在季度经营分析会上展示"CPK从1.33提升到1.67使医疗客户投诉率下降82%"时&#xff…...

避坑指南:在Anaconda中为VeighNa Studio配置TensorFlow 2.10和PyTorch 2.1的完整流程

避坑指南:在Anaconda中为VeighNa Studio配置TensorFlow 2.10和PyTorch 2.1的完整流程 量化交易与AI技术的结合正在重塑金融市场的分析方式。对于刚接触VeighNa Studio的开发者来说,搭建一个稳定支持TensorFlow和PyTorch的环境是开展量化策略研究的第一步…...

选错SoC就亏大了!RK3588和RK3588s到底怎么选?给嵌入式开发者的避坑指南

RK3588与RK3588s深度对比:嵌入式项目选型的黄金法则 第一次接触RK3588系列芯片时,我正为一个工业控制项目选型。客户要求既要能驱动4K显示屏,又要满足严苛的功耗限制。当我看到RK3588和RK3588s的参数表时,第一反应是"这不就是…...

保姆级教程:Quartus II 13.1与ModelSim联调环境搭建(附避坑指南与资源)

Quartus II 13.1与ModelSim联调环境搭建全攻略:从零开始到完美运行 在FPGA开发的世界里,一个稳定可靠的开发环境就像战士手中的利剑。对于初学者来说,Quartus II与ModelSim的联调环境搭建往往成为第一道门槛。本文将带你一步步走过这个看似复…...

避开这些坑,你的大唐杯备赛效率翻倍:关于队友、时机与官方资源的实操指南

避开这些坑,你的大唐杯备赛效率翻倍:关于队友、时机与官方资源的实操指南 通信专业的学生对大唐杯一定不陌生。这项教育部认可的学术竞赛,凭借较高的得奖率和专业含金量,成为许多通信学子证明自己实力的重要舞台。但备赛过程中&am…...

别再瞎调循环了!LabVIEW FPGA里Loop Timer、Wait和Tick Count到底怎么选?

LabVIEW FPGA定时函数三剑客:精准控制与性能优化的实战指南 在LabVIEW FPGA开发中,定时控制是构建高性能实时系统的核心技能。面对循环速率控制、精确延迟添加和代码耗时测量等不同需求,开发者常常陷入选择困境——Loop Timer、Wait和Tick Co…...

Android应用开发中的WIFI通信技术与全面面试指南

引言 在移动互联网时代,WIFI已成为Android应用的核心通信方式,尤其在物联网、流媒体和实时数据传输场景中。作为Android应用工程师,掌握WIFI相关技术不仅能提升应用性能,还能应对复杂网络环境挑战。本文将基于修改后的职位要求,深入探讨Android WIFI开发的核心技术、优化…...

阴阳师自动化脚本:20项日常任务一键托管,解放你的游戏时间

阴阳师自动化脚本:20项日常任务一键托管,解放你的游戏时间 【免费下载链接】OnmyojiAutoScript Onmyoji Auto Script | 阴阳师脚本 项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript 还在为阴阳师中无尽的日常任务感到疲惫吗&…...

从一次漏洞预警到实战:我是如何用Dependency-Check排查Log4j2依赖并生成HTML报告的

从一次漏洞预警到实战:我是如何用Dependency-Check排查Log4j2依赖并生成HTML报告的 那天下午3点17分,企业安全组的紧急邮件突然弹出——标题里赫然写着"CVE-2021-44228"和"Log4j2远程代码执行漏洞"。作为技术负责人,我立…...

Java 25虚拟线程资源争用诊断手册:用jcmd+JFR+自研调度热力图定位毫秒级调度延迟(仅限Early Access用户)

更多请点击: https://intelliparadigm.com 第一章:Java 25虚拟线程资源调度优化配置 Java 25 正式将虚拟线程(Virtual Threads)从预览特性转为标准特性,并深度整合了 Project Loom 的调度器增强机制。其核心调度优化依…...

Radxa X4单板计算机:x86架构的高性价比选择

1. Radxa X4单板计算机深度解析在单板计算机(SBC)领域,x86架构与ARM架构的竞争从未停止。Radxa最新推出的X4单板计算机以惊人的60美元起售价,将Intel Alder Lake-N系列处理器带入了Raspberry Pi的价格区间。作为一名长期关注嵌入式…...

ChatGPT对话导出工具:浏览器扩展实现结构化保存与知识管理

1. 项目概述:一个让ChatGPT对话“活”起来的工具如果你经常使用ChatGPT的Web界面进行深度对话,可能会遇到一个痛点:那些充满灵感的讨论、精心设计的提示词、或是解决了一个复杂问题的完整思路,最终都只能以零散的文本形式&#xf…...

DOL-Lyra构建系统:3分钟快速部署终极指南

DOL-Lyra构建系统:3分钟快速部署终极指南 【免费下载链接】DOL-CHS-MODS Degrees of Lewdity 整合 项目地址: https://gitcode.com/gh_mirrors/do/DOL-CHS-MODS DOL-Lyra构建系统是一个专为Degrees of Lewdity游戏设计的自动化打包解决方案,通过自…...