Denoising Diffusion Probabilistic Models简介

news2024/11/29 12:52:09

目录

  • 概要
    • 前向过程
      • nice property
    • 逆向过程
  • 参数推导
    • 简化
  • 参考资料

概要

Denoising Diffusion Probabilistic Model(DDPM)是一个生成模型,给定一个目标分布,学习模型以便可以从目标分布中采样。
使用马尔科夫链建模。输入是噪声,通过神经网络逐步去噪,最终产生的输出符合目标分布。
生成的数据可以是任意的,可以是图像也可以语音。目前diffusion model主要用于图像生成,所以后面将以图像生成为例介绍。
在这里插入图片描述
diffusion model分为两个过程:

  1. 预定义前向过程(forward diffusion process):一步步往图像中加入噪声,直到图像变成纯噪声。该过程的形式和参数都是人为定义的。
  2. 需要学习逆向过程(reverse denoising diffusion process):一步步从纯噪声中去噪,直到得到图像。该过程用一个可学习的神经网络表示。

前向过程和逆向过程都分为 T T T步。图像的生成使用逆向过程。

diffusion model是隐变量模型 p θ ( x 0 ) : = ∫ p θ ( x 0 : T ) d x 1 : T p_\theta(\mathbf{x}_0):=\int p_\theta(\mathbf{x}_{0:T})d\mathbf{x}_{1:T} pθ(x0):=pθ(x0:T)dx1:T,其中 x 0 ∼ q ( x 0 ) \mathbf{x}_0\sim q(\mathbf{x}_0) x0q(x0)是可观测变量, x 1 ​ , x 2 , . . . , x T \mathbf{x}_1​,\mathbf{x}_2,...,\mathbf{x}_T x1,x2,...,xT是隐标量并且和可观测变量 x 0 \mathbf{x}_0 x0有相同的维度。

前向过程

真实数据的分布为 q ( x 0 ) q(\mathbf{x}_0) q(x0),前向过程是一个预定义的马尔科夫链,其中 q ( x t ∣ x t − 1 ) q(\mathbf{x}_t | \mathbf{x}_{t-1}) q(xtxt1)加入高斯噪声:
q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t x t − 1 , β t I ) q(\mathbf{x}_t | \mathbf{x}_{t-1})=\mathcal{N}(\mathbf{x}_t;\sqrt{1−\beta_t}\mathbf{x}_{t−1},\beta_t\mathbf{I}) q(xtxt1)=N(xt;1βt xt1,βtI)其中 0 < β 1 ​ < β 2 < . . . < β T < 1 0<\beta_1​<\beta_2<...<\beta_T<1 0<β1<β2<...<βT<1是预定义的数值,可以用不同的variance schedule定义。
q ( x 0 ) q(\mathbf{x}_0) q(x0)开始,逐步加入高斯噪声,生成 x 1 ​ , x 2 , . . . , x T \mathbf{x}_1​,\mathbf{x}_2,...,\mathbf{x}_T x1,x2,...,xT。如果variance schedule的选择合适, x T \mathbf{x}_T xT将是纯高斯噪声。

nice property

根据我们定义的前向过程,一个好的性质是 x t \mathbf{x}_t xt可以直接采样从 x 0 \mathbf{x}_0 x0采样得到(高斯的和已经是高斯),而不需要一步一步地采样:
q ( x t ∣ x 0 ) = N ( x t ; α ˉ t x 0 , ( 1 − α ˉ t ) I ) q(\mathbf{x}_t|\mathbf{x}_0)=\mathcal{N}(\mathbf{x}_t;\sqrt{\bar{\alpha}_t}\mathbf{x}_0,(1-\bar{\alpha}_t){\mathbf{I}}) q(xtx0)=N(xt;αˉt x0,(1αˉt)I)其中 α t : = 1 − β t , α ˉ t : = Π s = 1 t α s \alpha_t :=1−\beta_t, \bar{\alpha}_t := \Pi_{s=1}^{t} \alpha_s αt:=1βt,αˉt:=Πs=1tαs
因为 β t \beta_t βt是variance schedule定义的,所以 α t \alpha_t αt也都是已知的。

逆向过程

逆向过程被定义为一个从 p ( x T ) = N ( x T ; 0 , I ) p(\mathbf{x}_T)=\mathcal{N}(\mathbf{x}_T;\mathbf{0},\mathbf{I}) p(xT)=N(xT;0,I)出发的马尔科夫链。
前向过程的形式和参数都是预定义的,但后向过程 p ( x t − 1 ∣ x t ) p(\mathbf{x}_{t-1} | \mathbf{x}_t) p(xt1xt)的形式和参数未知的,因为要计算这个条件概率需要知道所有可观测变量的分布。
我们使用一个神经网络来近似这个条件概率,近似概率用 p θ ( x t − 1 ∣ x t ) p_\theta(\mathbf{x}_{t-1} | \mathbf{x}_t) pθ(xt1xt)表示,其中 θ \theta θ是神经网络的参数,使用梯度下降法优化。
我们并不知道 p ( x t − 1 ∣ x t ) p(\mathbf{x}_{t-1} | \mathbf{x}_t) p(xt1xt)的形式和参数,这里我们假设它是高斯的。高斯分布有两个参数,分别是均值 μ θ \mu_\theta μθ和方差 Σ θ \Sigma_\theta Σθ,所以逆向过程可以表示为:
p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_{t})=\mathcal{N}(\mathbf{x}_{t-1} ; \mu_\theta(\mathbf{x}_{t},t),\Sigma_\theta(\mathbf{x}_{t},t)) pθ(xt1xt)=N(xt1;μθ(xt,t),Σθ(xt,t))使用神经网络学习均值和方差。特别地,DDPM的作者将方差固定为常数,只学习均值。

参数推导

参数推导推导的是逆向过程中的参数。
diffusion model是隐变量模型 p θ ( x 0 ) : = ∫ p θ ( x 0 : T ) d x 1 : T p_\theta(\mathbf{x}_0):=\int p_\theta(\mathbf{x}_{0:T})d\mathbf{x}_{1:T} pθ(x0):=pθ(x0:T)dx1:T
考虑最大化log likelihood来学习参数,但因为隐变量模型的likelihood没法直接表示,一般都是采用优化log likelihood的下界variational lower bound (ELBO)。

在diffusion model中,为了方便神经网络优化,我们将最大化问题转换为最小化问题,优化的目标是:
E [ − log ⁡ p θ ( x 0 ) ] ≤ E q [ − log ⁡ p θ ( x 0 : T ) q ( x 1 : T ∣ x 0 ) ] = E q [ − log ⁡ p ( x T ) − ∑ t ≥ 1 log ⁡ p θ ( x t − 1 ∣ x t ) q ( x t ∣ x t − 1 ) ] : = L \mathbb{E}[-\log p_\theta(\mathbf{x}_0)]\leq \mathbb{E}_q[-\log \frac{p_\theta(\mathbf{x}_{0:T})}{q(\mathbf{x}_{1:T}|\mathbf{x}_{0})}]= \mathbb{E}_q[-\log p_(\mathbf{x}_T)-\sum_{t\geq1}\log \frac{p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_{t})}{q(\mathbf{x}_{t}|\mathbf{x}_{t-1})}]:=L E[logpθ(x0)]Eq[logq(x1:Tx0)pθ(x0:T)]=Eq[logp(xT)t1logq(xtxt1)pθ(xt1xt)]:=L L L L可以重写为
在这里插入图片描述
其中 q ( x t − 1 ∣ x t , x 0 ) q(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0) q(xt1xt,x0)是高斯分布:
在这里插入图片描述
因为 L L L中都是高斯函数的KL散度,有闭合(closed form)的表达式。优化时将分别考虑各个 L t L_t Lt

  1. 其中因为 β t \beta_t βt是预定义的, L T L_T LT是一个常数可以忽略。
  2. L 0 L_0 L0是使用一个单独的离散解码器。
  3. L t − 1 L_{t-1} Lt1可以写为:
    L t − 1 = E x 0 , ϵ [ 1 2 σ 2 ∥ μ ~ t ( x t , x 0 ) − μ θ ( x t , t ) ∥ 2 ] + C L_{t-1}=\mathbb{E}_{\mathbf{x}_0,\epsilon}[\frac{1}{2\sigma^2}\|\tilde\mu_t(\mathbf{x}_t,\mathbf{x}_0)-\mu_\theta(\mathbf{x}_t,t)\|^2]+C Lt1=Ex0,ϵ[2σ21μ~t(xt,x0)μθ(xt,t)2]+C L t − 1 L_{t-1} Lt1经过带入公式以及参数化的技巧,优化目标变为
    E x 0 , ϵ [ β t 2 2 σ t 2 α t ( 1 − α ˉ t ) ∥ ϵ − ϵ θ ( α ˉ t x 0 + ( 1 − α ˉ t ) ϵ , t ) ∥ 2 ] \mathbb{E}_{\mathbf{x}_0,\epsilon}[\frac{\beta^2_t}{2\sigma_t^2\alpha_t(1-\bar\alpha_t)}\|\epsilon-\epsilon_\theta(\sqrt{\bar{\alpha}_t}\mathbf{x}_0+\sqrt{(1-\bar{\alpha}_t)}\epsilon,t)\|^2] Ex0,ϵ[2σt2αt(1αˉt)βt2ϵϵθ(αˉt x0+(1αˉt) ϵ,t)2]网络学习的是添加的噪声, μ θ ( x t , t ) \mu_\theta(\mathbf{x}_{t},t) μθ(xt,t)可以由下面的公式计算得到 μ θ ( x t , t ) = 1 α t ( x t − β t 1 − α ˉ t ϵ θ ( x t , t ) ) \mu_\theta(\mathbf{x}_{t},t)=\frac{1}{\sqrt{\alpha_t}}(\mathbf{x}_{t}-\frac{\beta_t}{\sqrt{1-\bar\alpha_t}}\epsilon_\theta(\mathbf{x_t,t})) μθ(xt,t)=αt 1(xt1αˉt βtϵθ(xt,t))

简化

L t − 1 L_{t-1} Lt1可以进行简化,简化后的目标是:
E x 0 , ϵ ∥ ϵ − ϵ θ ( α ˉ t x 0 , ( 1 − α ˉ t ) ϵ , t ) ∥ 2 \mathbb{E}_{\mathbf{x}_0,\epsilon}\|\epsilon-\epsilon_\theta(\sqrt{\bar{\alpha}_t}\mathbf{x}_0,\sqrt{(1-\bar{\alpha}_t)}\epsilon,t)\|^2 Ex0,ϵϵϵθ(αˉt x0,(1αˉt) ϵ,t)2简化版删去了原有的权重,所以是一个加权的变分界,其减小了 t t t较小时的权重。实验显示简化版的优化目标效果更好。

参考资料

NIPS 2020《Denoising Diffusion Probabilistic Models》
Hugging Face blog《The Annotated Diffusion Model》
Lil’Log《What are Diffusion Models?》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/87860.html

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

相关文章

“乌卡时代”下,跨境电商卖家到底在焦虑什么?

三年前新冠疫情大爆发&#xff0c;现今国家全面解封&#xff0c;但形式任然不稳定&#xff0c;加之国际形势扑朔迷离&#xff0c;各国外贸瞬息万变&#xff0c;跨境电商行业面对的复杂性也随之正变得越来越高。无论是运价&#xff0c;还是爆仓&#xff0c;亦或是港口拥堵等情况…

WPF入门 第一篇 基础布局与简单样式

基础布局与简单样式 首先&#xff0c;创建WPF项目&#xff0c;在自动打开的MainWindow.xaml里面&#xff0c;找到Grid标签&#xff0c;并将它替换为&#xff1a; <Grid><Grid.RowDefinitions><RowDefinition></RowDefinition><RowDefinition>&…

【案例教程】地球科学数据(ERA5、雪深、积雪覆盖、海温、植被指数、土地利用)处理实践

【查看原文】地 球 科 学 常 见 数 据 的 处 理 实 践 技 术 应 用 在地球科学中&#xff0c;不同数据根据具体学科的特色存储为多种数据格式。在科研工作中需要将多种数据进行综合使用分析&#xff0c;因此需要寻找学习通用的数据格式解决方法&#xff0c;把研究的精力聚焦到具…

芜湖~西门子低代码最新组件首发,快来围观!

热爱低代码的小伙伴们&#xff0c;我们又见面啦~ 在与大家长达1年多时间的沟通交流中&#xff0c;我们深刻感受到大家对西门子低代码的浓厚兴趣。为了不辜负大家的厚爱&#xff0c;我们潜心研制了一批前端组件。因为随着商业化的趋势&#xff0c;越来越多的企业级产品对更好的…

web前端实训作业 html+css+javascript 水果超市网页设计实例 企业网站制作

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…

12.7、后渗透测试--python插件执行py脚本

加载python插件&#xff1a;meterpreter >load python查看指令集&#xff1a;meterpreter >helppython执行单条语句&#xff1a;meterpreter > python_execute "import os; cdos.getcwd()" -r cd # 将os.getcwd()赋值给 cd 这个变量&#xff0c;然后用 -…

中英翻译《The number thirteen数字13》

The number thirteen 数字13 一、Pre-reading activity 阅前思考 1.Do you have a lucky number? If so, what is it? 你有幸运数字吗&#xff1f;如果有&#xff0c;是什么&#xff1f; 2.What number is next? 10, 11, 12, ____? 下一个数字是什么&#xff1f; 10、11、1…

设计模式-迭代器模式

迭代器模式UML类图 实现代码如下&#xff08;这里使用的集合是list,也可以使用其他集合这里就不一一展示了&#xff09; public interface Iterator<T> {T next();boolean hasNext(); } 复制代码 public class ConcreteIterator<T> implements Iterator<T>…

商品企划VE课程大纲

课程信息 课程受众: 高中基层管理人员、储备干部&#xff0c;项目经理&#xff0c;商品企划人员&#xff0c;研发人员 课程时间: 2天 授课方式: 理论讲座&#xff0b;实战工作坊&#xff0b;录像观赏&#xff0b;角色扮演&#xff0b;提问互动&#xff0b;分组讨论&#xff0…

Java入门教程(29)——封装

封装是面向对象三大特征之一。 文章目录1.封装的特性2.封装的作用3.访问控制符4.实例1.封装的特性 高内聚、低耦合 2.封装的作用 提高代码的安全性。提高代码的复用性。高内聚&#xff1a;封装细节&#xff0c;便于修改内部代码&#xff0c;提高可维护性。低耦合”&#xff…

Linux常用目录操作及示例操作

文章目录一、常用权限操作1.1 常用权限操作1. chgrp命令2. chown命令3. chmod命令1.2 权限操作实战任务1 创建文件&#xff0c;设置其用户组任务2 修改文件的所有者任务3 修改文件操作权限二、常用目录操作2.1 常用目录操作2.2 目录操作实战任务1 获取命令帮助信息任务2 查看当…

IBM有望在2026年之前实现量子优势

&#xff08;图片来源&#xff1a;网络&#xff09; 目前&#xff0c;噪声是量子计算面临的最大挑战&#xff0c;限制了量子计算技术的快速发展。在未来几年内&#xff0c;IBM正努力通过各种类型的量子误差管理来减少噪声&#xff0c;直到实现真正的量子纠错 (QEC)。 这也是降低…

ANSYS Topology Optimization拓扑优化技术在轻量化设计应用概述

产品概念设计初期&#xff0c;单纯的凭借经验以及想象对零部件进行设计往往是不够的&#xff0c;在适当约束条件下&#xff0c;如果能充分利用“拓扑优化技术”进行分析&#xff0c;并结合丰富的产品设计经验&#xff0c;是有能力设计出更满足产品结构技术方案、工艺要求、而且…

通俗易懂的Redis数据结构基础教程

Redis有5个基本数据结构&#xff0c;string、list、hash、set和zset。它们是日常开发中使用频率非常高应用最为广泛的数据结构&#xff0c;把这5个数据结构都吃透了&#xff0c;你就掌握了Redis应用知识的一半了。 string 首先我们从string谈起。string表示的是一个可变的字节…

操作系统中的线程

我的GitHub&#xff1a;Powerveil GitHub 我的Gitee&#xff1a;Powercs12 (powercs12) - Gitee.com 皮卡丘每天学Java 进程就是 任务&#xff0c;跑起来的程序 系统使用 PCB 描述进程&#xff0c;使用双向链表来管理进程 进程存在的意义就是让操作系统可以同时执行多个任务&…

(node中)module.exports 和exports的区别

&#xff08;node中使用&#xff09;module.exports 和exports的区别是什么? 用一句话来说明就是&#xff0c;require只会去引用module.exports这个对象的导出&#xff0c;不会引用exports对象的&#xff0c;而我们在编写模块时&#xff08;初始化&#xff09;用到的exports对…

微服务框架 SpringCloud微服务架构 分布式缓存 44 Redis 分片集群 44.4 故障转移

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 分布式缓存 文章目录微服务框架分布式缓存44 Redis 分片集群44.4 故障转移44.4.1 故障转移44.4.2 数据迁移44 Redis 分片集群 44.4 故障转移…

[附源码]Python计算机毕业设计高等数学在线学习平台Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

零基础怎么学Python?要学多久?

首发内容&#xff0c;希望从各个角度为大家解答Python的学习方向&#xff0c;能够帮助更多入门的同学们。 一、为什么学Python 是因为铺天盖地的广告还是要转行&#xff0c;有本职工作希望自动化办公还是爱好&#xff1f; &#xff08;1&#xff09;有本职工作觉得应该学Pyt…

你一定要了解的NAT工作原理

大家好&#xff0c;我是技福的小咖老师。 前两天给大家分享了NAT策略问题的23个问题&#xff0c;有朋友私信我&#xff0c;想再普及一下NAT基础知识。今天咱们就来复习下NAT的工作原理。 随着网络应用的增多&#xff0c;IPv4地址枯竭的问题越来越严重。尽管IPv6可以从根本上解…