生成式 AI - Diffusion 模型的数学原理(2)

来自 论文《 Denoising Diffusion Probabilistic Model》(DDPM)
论文链接: https://arxiv.org/abs/2006.11239
Hung-yi Lee 课件整理

文章目录

        • 一、基本概念
        • 二、VAE与Diffusion model
        • 三、算法解释
        • 四、训练过程
        • 五、推理过程

一、基本概念

Diffusion model的概念上一篇博客讲过了,很直观,一个Forward Process,是把噪声加到图片里面去,直到看不出原来的图长什么样子;和一个Reverse Process,它做Denoise,先给它一个全部都是噪声的图片,每次Denoise图像都会一点点浮现,直到最后完整的图像被生成。

二、VAE与Diffusion model

Diffusion model和VAE非常相似,VAE有一个Encoder把图像转换为latent representation,然后使用一个Decoder把这个latent representation还原成图片;Diffusion model 可以想象成加噪声的过程就是在做Encoder,只是这个Encoder不是一个神经网络,不是学习出来的,噪声加进去的过程是固定好的,它不需要学习,是人设计的,通过加噪声的过程把一张图片变成只有杂训的图片,看不出来里面有什么,这个只有杂训的图片就相当于VAE里面的latent representation,然后Denoise的过程就相当于VAE里面的Encoder,把都是杂训的图还原成原来的图。

三、算法解释

DDPM原始论文里面算法原理就是这样两个图,上一篇博客提到这里暗藏玄机,如果你仔细读一下这个算法似乎和上一篇博客讲的内容有些不一样,我们先来看看这个算法里面在做什么。

四、训练过程

先来看看训练的算法。
第一行,首先是做repeat,从第二行到第五行,直到converged为止。
第二行,代码讲的是,需要先sample一个样本X0,通常我们把X0当作干净的图。
第三行,sample一个t,从1到T之间sample一个整数出来,比如说T是1000,就是从1到1000sample一个整数出来,比如说980。
第四行, ε \varepsilon ε 是从一个标准分布中sample出来的,这个标准分布的均值是0,方差是I,这个 ε \varepsilon ε 的大小和图片的大小一样,它里面都是杂训,看不到有意义的信息。
第五行,比较复杂,红色框里面做的事情是把X0和 ε \varepsilon ε 做权重加权,这里的权重是事先定好的,从 α ˉ 1 \bar{\alpha } _{1} αˉ1 α ˉ T \bar{\alpha } _{T} αˉT,它的设置通常是由大到小。这样得到的就是一个有杂训的图,sample的T越大,那么 α \alpha α 就越小, α \alpha α 越小意味着原来的图X0占的比例越小,噪声占的比例越多。

红色方框再往外看是 ϵ θ {\epsilon } _{\theta } ϵθ, 它表示Noise Predictor,它的输入是带杂训的图片和t。

再往外看是学习目标 ϵ {\epsilon } ϵ, 就是我们sample出来的那个噪声。

到这里你会发现,想象中的操作和实际的操作不太一样,想象中是一步一步把噪声加进去的,实际上噪声的加入是通过 α ˉ t \bar{\alpha } _{t} αˉt决定那个噪音的严重程度,一次性加入的,直接混入噪音得到有噪音的图。

五、推理过程

再来看看产生图的过程。
先sample一张全部都是噪声的图。
接下来开始跑这个reverse process把图生成出来,一共要跑T次。
接下来又sample了一个噪声z,后续在细讲。
下面的公式要做的事情是什么呢, x t x_{t} xt是上一个步骤产生出来的图, ϵ θ ( x t , t ) \epsilon _{\theta} (x_{t},t ) ϵθxtt是noise predictor输出的图片,后面再加一个噪声,这个噪声Z又是一个玄机,后续解释。

如果这个式子没有看太懂的话看看下面的图演示帮助理解。

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

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

相关文章

代码随想录算法训练营第15天—二叉树04 | ● *110.平衡二叉树 ● *257. 二叉树的所有路径 ● 404.左叶子之和

*110.平衡二叉树 题目链接/文章讲解/视频讲解:https://programmercarl.com/0110.%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.html 考点 后序遍历二叉树高度计算 我的思路 错误地将平衡二叉树的定义等价为判断整体二叉树的最大深度和最小深度之差是否大于1 视…

Redis系列学习文章分享---第一篇(Redis快速入门之初始Redis--NoSql+安装redis+客户端+常用命令)

目录 今天开始进入Redis系列学习分享1.初识Redis1.1.认识NoSQL1.1.1.结构化与非结构化1.1.2.关联和非关联1.1.3.查询方式1.1.4.事务1.1.5.总结 1.2.认识Redis1.3.安装Redis1.3.1.依赖库1.3.2.上传安装包并解压1.3.3.启动1.3.4.默认启动1.3.5.指定配置启动1.3.6.开机自启 1.4.Re…

【MySQL】变量、流程控制

一、变量 在MySQL的存储过程与函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终的结果数据。它可以分为用户自定义变量与系统变量 1、系统变量 1)系统变量分为全局变量(需要使用关键字global)和会话…

【前端素材】bootstrap5实现房产信息网HomeFi平台(附源码)

一、需求分析 房产信息网是一个在线平台,专门提供房地产相关信息的网站。这些网站通常为买家、卖家、租客、房地产经纪人等提供各种房产信息,包括可售房屋、出租房源、房价走势、地产市场分析、房产投资建议等内容。以下是房产信息网的主要功能和特点: 房源信息浏览:用户可…

【lesson60】网络基础

文章目录 网络发展认识协议网络协议初识OSI七层模型TCP/IP五层(或四层)模型网络传输基本流程数据包封装和分用网络中的地址管理 网络发展 以前没有网络剧的工作模式是:独立模式:,计算机之间相互独立 所以多个计算机要协同开发比较难。 有了网络以后&am…

6.s081 学习实验记录(九)lock parallelism

文章目录 一、Memory allocator简介提示实验代码实验结果 二、Buffer cache简介提示实验代码实验结果 该实验将重构某些代码以提高并发度。 首先切换到lock分支: git fetchgit checkout lockmake clean 一、Memory allocator 简介 user/kalloctest 这个程序会对…

关于投资,房地产,AI

各位朋友,新年好! 过个年,世界发生了很多大事! 投资 先是证监会,证监会年前换帅,吴清接棒,吴清何许人也?江湖人称“券商屠夫”,成功处置了2008年的券商风险&#xff0…

Eclipse - Format Comment

Eclipse - Format & Comment 1. Correct Indentation2. Format3. Toggle Comment4. Add Block Comment5. Remove Block CommentReferences 1. Correct Indentation Ctrl A: 选择全部代码 Ctrl I: 校正缩进 or right-click -> Source -> Correct Indentation 2. F…

【开工大吉】推荐4款开源、美观的WPF UI组件库

WPF介绍 WPF 是一个强大的桌面应用程序框架,用于构建具有丰富用户界面的 Windows 应用。它提供了灵活的布局、数据绑定、样式和模板、动画效果等功能,让开发者可以创建出吸引人且交互性强的应用程序。 HandyControl HandyControl是一套WPF控件库&#xf…

安全技术和防火墙

1.安全技术和防火墙 1.1安全技术 入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全决…

普中51单片机学习(九)

蜂鸣器 蜂鸣器简介 在单片机应用的设计上,很多方案都会用到蜂鸣器,大部分都是使用蜂鸣器来做提示或报警,比如按键按下、开始工作、工作结束或是故障等等。改变单片机引脚输出波形的频率,就可以调整控制蜂鸣器音调,产…

Python操作Kafka基础教程

01 Python操作Kafka基础教程 创建ZooKeeper容器 docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper创建Kafka容器 语法是: docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID0 -e KAFKA_ZOOKE…

世界顶级名校计算机专业,都在用哪些书当教材?(文末送书)

目录 01《深入理解计算机系统》02《算法导论》03《计算机程序的构造和解释》04《数据库系统概念》05《计算机组成与设计:硬件/软件接口》06《离散数学及其应用》07《组合数学》08《斯坦福算法博弈论二十讲》参与规则 清华、北大、MIT、CMU、斯坦福的学霸们在新学期里…

讨好型人格的职业分析,如何改变讨好型人格

一味讨好他人,忽略自己感受,凡事以人为先,忽视自己需求,这就是讨好型人格。 讨好型人格最典型的表现就是非常注重外界的看法,不管做什么事都会小心翼翼,生怕自己所做的事会引发别人的不满。 如果自己哪方…

MAC电脑系统清理空间免费版软件CleanMyMac X2024

大家好,我是那个总是被苹果电脑“内存已满”提示搞得焦头烂额的专业博主。如果你也像我一样,在使用Mac时经常遭遇卡顿、慢吞吞的情况,那么今天的Mac清理空间妙招分享绝对适合你! CleanMyMac X全新版下载如下: https://wm.makedi…

【Redis快速入门】深入解读哨兵模式

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

HTML 入门指南

简述 参考:HTML 教程- (HTML5 标准) HTML 语言的介绍、特点 HTML:超级文本标记语言(HyperText Markup Language) “超文本” 就是指页面内可以包含图片、链接等非文字内容。“标记” 就是使用标签的方法将需要的内容包括起来。…

电阻(二):希尔伯特(Hilbert)曲线

1、Hilbert简介 希尔伯特曲线是一种能在 2D平面完美填充正方形的曲线,连续且稳定(当细分足够小时,线构成面)而又不可导的曲线。只要恰当选择函数,画出一条连续的参数曲线,当参数 t 在 [0、1 ] 区间取值时&a…

ESP32-Cam学习(2)——PC实时显示摄像头画面

具体代码和操作过程见: 3. 实时显示摄像头画面 (itprojects.cn)https://doc.itprojects.cn/0006.zhishi.esp32/02.doc/index.html#/e03.showvideo我主要记录一下我在复现的过程中,遇到的问题以及解决方法。 1.安装第三方库 首先电脑端的代码需要用pych…

备战蓝桥杯---动态规划(入门3之子串问题)

本专题再介绍几种经典的字串问题。 这是一个两个不重叠字串和的问题,我们只要去枚举分界点c即可,我们不妨让c作为右区间的左边界,然后求[1,c)上的单个字串和并用max数组维护。对于右边,我们只要反向求单个字串和然后选左边界为c的…