【Diffusion】李宏毅2023机器学习Diffusion笔记
文章目录
- 1 想法概述
- 2 实际过程
- 阶段1 Add Noise
- 阶段2 Denoise
- 3 数学原理
- 4 为什么推理时要额外加入noise
- 5 一些不知道对不对的Summary
1 想法概述
从一张充满噪声的图中不断denoise,最终得到一张clear的图片。为了确定当前图片中噪声占比的大小,同时输入原图片和参数 t t t,参数 t t t用于标识一张图片中的噪声占比含量。
显然迭代第1次时图片的噪声含量和迭代第999次是不同的,因此需要输入这种信息t来进行标识。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7CjpzYoX-1692290104065)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230814190229199.png)]](https://img-blog.csdnimg.cn/4f4e17d3e69340118b4f01c429735850.png)
2 实际过程
阶段1 Add Noise
首先,准备好一组确定的参数 α 1 ˉ , α 2 ˉ , … , α T ˉ \bar{\alpha_1},\bar{\alpha_2},\dots,\bar{\alpha_T} α1ˉ,α2ˉ,…,αTˉ,用以表示时间步 t t t下样本和噪声的混合情况, t t t越大,噪声占比越高。然后重复以下过程直至收敛:
-
采样
-
从真实样本集中取出一个样本 x 0 x_0 x0
-
从 [ 1 , T ] [1,T] [1,T]的整数中采样出 t t t来表示时间步
-
从标准正态分布中采样出噪声 ϵ \epsilon ϵ
-
-
构造带噪声样本 x = α t ˉ x 0 + 1 − α t ˉ ϵ x=\sqrt{\bar{\alpha_t}}x_0+ \sqrt{1-\bar{\alpha_t}} \epsilon x=αtˉx0+1−αtˉϵ
-
将构造样本 x x x和时间步 t t t一同输入噪声预测器 ϵ θ ( ) \epsilon_\theta() ϵθ(),得到预测噪声 ϵ θ ( x , t ) \epsilon_\theta(x,t) ϵθ(x,t)。
-
目标函数为 ϵ θ ( x , t ) \epsilon_\theta(x,t) ϵθ(x,t)和采样出的真实噪声 ϵ \epsilon ϵ的 M S E MSE MSE
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D7mqKw6q-1692290104066)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230814194524251.png)]](https://img-blog.csdnimg.cn/c04335120773405a8bdf66cd3009269b.png)
阶段2 Denoise
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-21zUXHgj-1692290104066)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230814201251917.png)]](https://img-blog.csdnimg.cn/31eb1bfa22734d9ba5246a0c317d3e00.png)
3 数学原理
- 极大似然估计近似等价于最小化KL散度(表示两个分布的相似性):
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S3lKC0VE-1692290104066)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230817221857642.png)]](https://img-blog.csdnimg.cn/f71fb4de1faa4b4080fbadc62dba0b0a.png)
- 对任何分布 q ( z ∣ x ) q(z|x) q(z∣x),有:
log P θ ( x ) ≥ ∫ z q ( z ∣ x ) log P ( z , x ) q ( z ∣ x ) d z = E q ( z ∣ x ) [ log P ( z , x ) q ( z ∣ x ) ] \log P_\theta(x) \ge \int_{z}q(z|x)\log \frac{P(z,x)}{q(z|x)}dz = E_{q(z|x)}[\log \frac{P(z,x)}{q(z|x)}] logPθ(x)≥∫zq(z∣x)logq(z∣x)P(z,x)dz=Eq(z∣x)[logq(z∣x)P(z,x)]
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EMBIDtfT-1692290104067)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230817222057765.png)]](https://img-blog.csdnimg.cn/2383ae51d3b14fff84fbed64cb5fdd62.png)
- 所以对DDPM来说:
log P θ ( x ) ≥ E q ( x 1 : x T ∣ x 0 ) [ log P ( x 0 : x T ) q ( x 1 : x T ∣ x 0 ) ] \log P_\theta(x) \ge E_{q(x_1:x_T|x_0)}[\log \frac{P(x_0:x_T)}{q(x_1:x_T|x_0)}] logPθ(x)≥Eq(x1:xT∣x0)[logq(x1:xT∣x0)P(x0:xT)]
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FqgMWPQQ-1692290104067)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230817222642961.png)]](https://img-blog.csdnimg.cn/d91ef7dc43b54294850f028358d3f1a3.png)
- 结合正态分布的可加性:做N次独立的正态sampling,可能通过一次的sampling就能解决。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oyzChf3t-1692290104067)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230817225900399.png)]](https://img-blog.csdnimg.cn/767e444ef5204f839cc0b930f56e1349.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w4gtTsG6-1692290104067)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230817231727538.png)]](https://img-blog.csdnimg.cn/bf47251d15fa41589595d129dc70d2a8.png)
- 对式3不断变换,最后可得(这个式子的过程可以不用看,也并不复杂,但是麻烦,理解结论就好):
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SY9fKeIh-1692290104068)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230817232929967.png)]](https://img-blog.csdnimg.cn/f4cea90358114568a48d9426017d81b9.png)
然后再经过一系列的运算求出来 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1|x_t,x_0}) q(xt−1∣xt,x0)依然是高斯分布,表示首尾 x 0 , x T x_0,x_T x0,xT固定住,产生 x t − 1 x_{t-1} xt−1的概率,是一个和network无关的分布。而 P ( x t − 1 ∣ x t ) P(x_{t-1}|x_t) P(xt−1∣xt)是由网络决定的,我们不考虑它的variance,只考虑mean。如果我们希望这两个分布越接近越好,那就想办法让两个分布的mean越接近越好。

化简:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B0OFKfc5-1692290104068)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230817233152037.png)]](https://img-blog.csdnimg.cn/94875687bc15457f8d78d4a50400a5d5.png)
实际需要预测出的部分:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OpE6Y02O-1692290104069)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230817234731710.png)]](https://img-blog.csdnimg.cn/058ce2f63eaa42ef97aa502ab8d92950.png)
4 为什么推理时要额外加入noise
李宏毅老师的一点Guess,生成式任务,概率最大的结果,未必就是最好的结果。人写的文章用词可能更suprising。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BxAIdBaQ-1692290104069)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230817235534101.png)]](https://img-blog.csdnimg.cn/2b08a21cf6bb432e806ba75c8e148d30.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w8wYcaVO-1692290104069)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230817235706919.png)]](https://img-blog.csdnimg.cn/ced2475cfe794eeca024204e5f32ceaf.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vmK39t6D-1692290104069)(【Diffusion】李宏毅2023机器学习Diffusion笔记/ab7e3c6482dc90f4bfc5857991f4375.jpg)]](https://img-blog.csdnimg.cn/41fca1f566d14926833764da62bd92ec.png)
5 一些不知道对不对的Summary
-
希望近似 P d a t a ( x ) P_{data}(x) Pdata(x)和 P θ ( x ) P_\theta(x) Pθ(x)的分布,而对给定的 x x x,使 P θ ( x ) P_\theta(x) Pθ(x)最大化可以转换为使其下界最大化,从而转换为使 E q ( x 1 : x T ∣ x 0 ) [ log P ( x 0 : x T ) q ( x 1 : x T ∣ x 0 ) ] E_{q(x_1:x_T|x_0)}[\log \frac{P(x_0:x_T)}{q(x_1:x_T|x_0)}] Eq(x1:xT∣x0)[logq(x1:xT∣x0)P(x0:xT)]最大化。
-
在假设 x t = β t x t − 1 + 1 − β t z t − 1 x_t=\sqrt{\beta_t}x_{t-1}+\sqrt{1-\beta_t}z_{t-1} xt=βtxt−1+1−βtzt−1的前提下,可以推出 x t = α t ˉ x 0 + 1 − α t ˉ z x_t=\sqrt{\bar{\alpha_t}}x_{0}+\sqrt{1-\bar{\alpha_t}}z xt=αtˉx0+1−αtˉz
-
从而可以进一步化简 E q ( x 1 : x T ∣ x 0 ) [ log P ( x 0 : x T ) q ( x 1 : x T ∣ x 0 ) ] E_{q(x_1:x_T|x_0)}[\log \frac{P(x_0:x_T)}{q(x_1:x_T|x_0)}] Eq(x1:xT∣x0)[logq(x1:xT∣x0)P(x0:xT)]为三项,其余两项与Network无关,可只考虑中间一项,该项由 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1|x_t,x_0}) q(xt−1∣xt,x0)和 P ( x t − 1 ∣ x t ) P(x_{t-1}|x_t) P(xt−1∣xt)的KL散度之和组成,
-
q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt−1∣xt,x0)表示首尾 x 0 , x T x_0,x_T x0,xT固定住产生 x t − 1 x_{t-1} xt−1的概率,可求得是一个和network无关的高斯分布,均值可以表示为:

-
而 P ( x t − 1 ∣ x t ) P(x_{t-1}|x_t) P(xt−1∣xt)是由网络决定的,我们不考虑它的variance,只考虑mean。
-
如果我们希望这两个分布越接近越好,那就想办法让两个分布的mean越接近越好。而上式中,仅有 ϵ \epsilon ϵ需要确定,因此我们希望网络能够预测这个值,从而完成推理。预测出这一项 ϵ \epsilon ϵ的过程,可以看作为从 x 0 x_0 x0和 x t x_t xt预测出 x t − 1 x_{t-1} xt−1的过程。
相关文章:
【Diffusion】李宏毅2023机器学习Diffusion笔记
文章目录 1 想法概述2 实际过程阶段1 Add Noise阶段2 Denoise 3 数学原理4 为什么推理时要额外加入noise5 一些不知道对不对的Summary 1 想法概述 从一张充满噪声的图中不断denoise,最终得到一张clear的图片。为了确定当前图片中噪声占比的大小,同时输入…...
CloudEvents—云原生事件规范
我们的系统中或多或少都会用到如下两类业务技术: 异步任务,用于降低接口时延或削峰,提升用户体验,降低系统并发压力;通知类RPC,用于微服务间状态变更,用户行为的联动等场景; 以上两种…...
神经网络基础-神经网络补充概念-51-局部最优问题
概念 局部最优问题是在优化问题中常见的一个挑战,特别是在高维、非凸、非线性问题中。局部最优问题指的是算法在优化过程中陷入了一个局部最小值点,而不是全局最小值点。这会导致优化算法在某个局部区域停止,而无法找到更好的解。 解决方案…...
深度学习中,什么是batch-size?如何设置?
什么是batch-size? batch-size 是深度学习模型在训练过程中一次性输入给模型的样本数量。它在训练过程中具有重要的意义,影响着训练速度、内存使用以及模型的稳定性等方面。 以下是 batch-size 大小的一些影响和意义: 训练速度:较大的 bat…...
[保研/考研机试] KY26 10进制 VS 2进制 清华大学复试上机题 C++实现
题目链接: 10进制 VS 2进制http://www.nowcoder.com/share/jump/437195121691738172415 描述 对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数B,我们称B为A的二进制逆序数。 例如对于十进制…...
JSP-学习笔记
文章目录 1.JSP介绍2 JSP快速入门3 JSP 脚本3.1 JSP脚本案例3.2 JSP缺点 4 EL表达式4.1 快速入门案例 5. JSTL标签6. MVC模式和三层架构6.1 MVC6.2 三层架构 7. 案例-基于MVC和三层架构实现商品表的增删改查 1.JSP介绍 概念 JSP(JavaServer Pages)是一种…...
Golang协程,通道详解
进程、线程以及并行、并发 关于进程和线程 进程(Process)就是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位,进程是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一…...
unity 之 Vector 数据类型
文章目录 Vector 1Vector 2Vector 3Vector 4 Vector 1 在Unity中,Vector1 并不是一个常见的向量类型。 如果您需要表示标量(单个值)或者只需要一维的数据,通常会直接使用浮点数(float)或整数(in…...
私密数据采集:隧道爬虫IP技术的保密性能力探究
作为一名专业的爬虫程序员,今天要和大家分享一个关键的技术,它能够为私密数据采集提供保密性能力——隧道爬虫IP技术。如果你在进行敏感数据采集任务时需要保护数据的私密性,那么这项技术将是你的守护神。 在进行私密数据采集任务时ÿ…...
使用git rebase 之后的如何恢复到原始状态
我们常常喜欢使用git rebase去切换分支提交代码,操作流程就是: 先切换分支:比如当前是master 我们修改了一堆代码产生一个commit id :5555555567777 那么我们常常比较懒就直接切换了:git checkout dev 然后呢?使用命令git rebase 5555555567777,想把这笔修改提交到d…...
matlab相机标定知识整理
matlab相机标定知识整理 单目相机标定 单目相机标定 内参矩阵:cameraParams.Intrinsics.K 或者 cameraParams.K旋转矩阵:cameraParams.RotationMatrices 有待确定 cameraParams.RotationVectors平移矩阵:cameraParams.TranslationVectors径向…...
win11安装ubuntu 子系统安装过程及注意事项
第一步 :安装系统必须组件 由于子系统是系统自带组件,需要安装软件支持 第二步:应用商店安装 ubuntu 编辑 编辑 这个时候打开会报错 第三步,运行linux子系统 选择Windows PowerShell 以管理员身份运行) 输入&#…...
torch.cat((A,B),dim=1)解析
官方说明torch.cat 引用自:Pytorch中的torch.cat()函数 torch.cat(tensors, dim0, *, outNone) → Tensor # 连接给定维数的给定序列的序列张量。所有张量要么具有相同的形状(除了连接维度),要么为空。示例 输入: import torch a torch.Tens…...
apache配置安全证书https踩坑记录
apache配置安全证书有如下几步 一、申请证书 这个网上有很多免费的,我用的是阿里云的服务器,在阿里云后台就可以申请免费证书。 二、上传证书 申请好证书后,根据服务器用的什么软件,是apache还是ngnix,下载相应的证书…...
SQL Server Express 自动备份方案
文章目录 SQL Server Express 自动备份方案前言方案原理SQL Server Express 自动备份1.创建存储过程2.设定计划任务3.结果检查sqlcmd 参数说明SQL Server Express 自动备份方案 前言 对于许多小型企业和个人开发者来说,SQL Server Express是一个经济实惠且强大的数据库解决方…...
Docker资源控制
目录 一、CPU 资源控制 1.设置CPU使用率上限 2.设置CPU资源占用比(设置多个容器时才有效) 3.设置容器绑定指定的CPU 二、对内存使用的限制 三、对磁盘IO配额控制(blkio)的限制 一、CPU 资源控制 cgroups,是一个非常强…...
微服务中间件-分布式缓存Redis
分布式缓存 a.Redis持久化1) RDB持久化1.a) RDB持久化-原理 2) AOF持久化3) 两者对比 b.Redis主从1) 搭建主从架构2) 数据同步原理(全量同步)3) 数据同步原理(增量同步) c.Redis哨兵1) 哨兵的作用2) 搭建Redis哨兵集群3) RedisTem…...
java面试强基(16)
目录 clone方法的保护机制 Java中由SubString方法是否会引起内存泄漏? Java中提供了哪两种用于多态的机制? 程序计数器(线程私有) 如何判断对象是否是垃圾? clone方法的保护机制 clone0方法的保护机制在Object中是被声明为 protected的。以User…...
Python可视化在量化交易中的应用(13)_Seaborn直方图
Seaborn中带核密度的直方图的绘制方法 seaborn中绘制直方图使用的是sns.histlot()函数: sns.histplot(data,x,y,hue,weights,stat‘count’,bins‘auto’,binwidth,binrange,discrete,cumulative,common_bins,common_norm,multiple‘layer’,element‘bars’,fill,…...
NOIP 2006 普及组 第二题 开心的金明
开心的金明 说明 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。 更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超…...
如何永久珍藏你的微信数字记忆?WeChatMsg让聊天记录成为永恒财富!
如何永久珍藏你的微信数字记忆?WeChatMsg让聊天记录成为永恒财富! 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/Gi…...
Adobe-GenP终极指南:5分钟破解Adobe创意套件限制的完整教程
Adobe-GenP终极指南:5分钟破解Adobe创意套件限制的完整教程 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 你是否曾因为Adobe Creative Cloud高昂的订阅…...
对比直接使用厂商 API 体验 Taotoken 在路由容灾上的价值
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用厂商 API 体验 Taotoken 在路由容灾上的价值 在开发依赖大模型能力的应用时,服务的连续性与稳定性是保障用…...
QMCFLAC2MP3终极指南:免费快速解锁QQ音乐格式限制
QMCFLAC2MP3终极指南:免费快速解锁QQ音乐格式限制 【免费下载链接】qmcflac2mp3 直接将qmcflac文件转换成mp3文件,突破QQ音乐的格式限制 项目地址: https://gitcode.com/gh_mirrors/qm/qmcflac2mp3 你是否曾经在QQ音乐下载了心爱的歌曲࿰…...
AutoCut终极指南:如何用文本编辑器快速剪辑100个视频
AutoCut终极指南:如何用文本编辑器快速剪辑100个视频 【免费下载链接】autocut 用文本编辑器剪视频 项目地址: https://gitcode.com/GitHub_Trending/au/autocut 还在为手动剪辑视频而烦恼吗?AutoCut项目让你告别复杂的视频编辑软件,通…...
Supabase AI Agent技能库:安全集成数据库操作与边缘函数调用
1. 项目概述:当Supabase遇上AI Agent,一个技能库的诞生最近在捣鼓AI Agent应用开发,发现一个挺有意思的现象:大家都能用LangChain、LlamaIndex这些框架快速搭出个Agent的架子,但真想让这个Agent去干点具体、有用的活儿…...
告别标题栏!在RK3568 Buildroot固件上,让你的Qt应用开机全屏显示的保姆级教程
RK3568嵌入式全屏实战:从Weston配置到Qt应用独占显示的完整指南 在嵌入式Linux系统开发中,GUI应用的全屏显示往往成为工程师面临的第一个"拦路虎"。当你在RK3568平台上精心开发的Qt应用启动后,却发现屏幕顶部顽固地挂着Weston窗口管…...
AI助手API开发资源全指南:从入门到实战的宝藏清单
1. 项目概述:一个为AI助手API开发者量身打造的“藏宝图”如果你正在或打算基于OpenAI的Assistant API、Anthropic的Claude API,或是其他主流AI平台的助手接口来构建应用,那么你大概率会遇到一个经典困境:官方文档虽然详尽…...
人性最残忍的真相是:你越不把自己当回事,别人就越不把你当回事
那个总给别人买贵东西的人,最后都怎么样了? 目录 那个总给别人买贵东西的人,最后都怎么样了? 我们为什么会忍不住过度付出? 真正的爱,从来都不是单方面的牺牲 爱自己,是所有健康关系的前提 昨天刷到一句话,瞬间戳中了我:“永远不要拿自己辛苦钱,去给别人买自己都舍不…...
AI Agent产品经理的新思维:从功能设计到AI原生产品的方法论转型
AI Agent产品经理的新思维:从功能设计到AI原生产品的方法论转型 各位产品同行、AI从业者,大家好!我是连续3年深耕AI工具Agent产品、从C端信息流(今日头条/抖音生态)PM成功转型AI原生垂直工具PM的张小白——过去两年&am…...
