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

【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)]

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越大,噪声占比越高。然后重复以下过程直至收敛:

  1. 采样

    1. 从真实样本集中取出一个样本 x 0 x_0 x0

    2. [ 1 , T ] [1,T] [1,T]的整数中采样出 t t t来表示时间步

    3. 从标准正态分布中采样出噪声 ϵ \epsilon ϵ

  2. 构造带噪声样本 x = α t ˉ x 0 + 1 − α t ˉ ϵ x=\sqrt{\bar{\alpha_t}}x_0+ \sqrt{1-\bar{\alpha_t}} \epsilon x=αtˉ x0+1αtˉ ϵ

  3. 将构造样本 x x x和时间步 t t t一同输入噪声预测器 ϵ θ ( ) \epsilon_\theta() ϵθ(),得到预测噪声 ϵ θ ( x , t ) \epsilon_\theta(x,t) ϵθ(x,t)

  4. 目标函数为 ϵ θ ( x , t ) \epsilon_\theta(x,t) ϵθ(x,t)和采样出的真实噪声 ϵ \epsilon ϵ M S E MSE MSE

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D7mqKw6q-1692290104066)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230814194524251.png)]

阶段2 Denoise

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-21zUXHgj-1692290104066)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230814201251917.png)]

3 数学原理

  1. 极大似然估计近似等价于最小化KL散度(表示两个分布的相似性):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S3lKC0VE-1692290104066)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230817221857642.png)]

  1. 对任何分布 q ( z ∣ x ) q(z|x) q(zx),有:

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(zx)logq(zx)P(z,x)dz=Eq(zx)[logq(zx)P(z,x)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EMBIDtfT-1692290104067)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230817222057765.png)]

  1. 所以对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:xTx0)[logq(x1:xTx0)P(x0:xT)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FqgMWPQQ-1692290104067)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230817222642961.png)]

  1. 结合正态分布的可加性:做N次独立的正态sampling,可能通过一次的sampling就能解决。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oyzChf3t-1692290104067)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230817225900399.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w4gtTsG6-1692290104067)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230817231727538.png)]

  1. 对式3不断变换,最后可得(这个式子的过程可以不用看,也并不复杂,但是麻烦,理解结论就好):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SY9fKeIh-1692290104068)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230817232929967.png)]

然后再经过一系列的运算求出来 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1|x_t,x_0}) q(xt1∣xt,x0)依然是高斯分布,表示首尾 x 0 , x T x_0,x_T x0,xT固定住,产生 x t − 1 x_{t-1} xt1的概率,是一个和network无关的分布。而 P ( x t − 1 ∣ x t ) P(x_{t-1}|x_t) P(xt1xt)是由网络决定的,我们不考虑它的variance,只考虑mean。如果我们希望这两个分布越接近越好,那就想办法让两个分布的mean越接近越好。
在这里插入图片描述

化简:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B0OFKfc5-1692290104068)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230817233152037.png)]

实际需要预测出的部分:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OpE6Y02O-1692290104069)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230817234731710.png)]

4 为什么推理时要额外加入noise

李宏毅老师的一点Guess,生成式任务,概率最大的结果,未必就是最好的结果。人写的文章用词可能更suprising。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BxAIdBaQ-1692290104069)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230817235534101.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w8wYcaVO-1692290104069)(【Diffusion】李宏毅2023机器学习Diffusion笔记/image-20230817235706919.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vmK39t6D-1692290104069)(【Diffusion】李宏毅2023机器学习Diffusion笔记/ab7e3c6482dc90f4bfc5857991f4375.jpg)]

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:xTx0)[logq(x1:xTx0)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=βt xt1+1βt zt1的前提下,可以推出 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:xTx0)[logq(x1:xTx0)P(x0:xT)]为三项,其余两项与Network无关,可只考虑中间一项,该项由 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1|x_t,x_0}) q(xt1∣xt,x0) P ( x t − 1 ∣ x t ) P(x_{t-1}|x_t) P(xt1xt)的KL散度之和组成,

  • q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt1xt,x0)表示首尾 x 0 , x T x_0,x_T x0,xT固定住产生 x t − 1 x_{t-1} xt1的概率,可求得是一个和network无关的高斯分布,均值可以表示为:

  • P ( x t − 1 ∣ x t ) P(x_{t-1}|x_t) P(xt1xt)是由网络决定的,我们不考虑它的variance,只考虑mean。

  • 如果我们希望这两个分布越接近越好,那就想办法让两个分布的mean越接近越好。而上式中,仅有 ϵ \epsilon ϵ需要确定,因此我们希望网络能够预测这个值,从而完成推理。预测出这一项 ϵ \epsilon ϵ的过程,可以看作为从 x 0 x_0 x0 x t x_t xt预测出 x t − 1 x_{t-1} xt1的过程。

http://www.lryc.cn/news/130056.html

相关文章:

  • CloudEvents—云原生事件规范
  • 神经网络基础-神经网络补充概念-51-局部最优问题
  • 深度学习中,什么是batch-size?如何设置?
  • [保研/考研机试] KY26 10进制 VS 2进制 清华大学复试上机题 C++实现
  • JSP-学习笔记
  • Golang协程,通道详解
  • unity 之 Vector 数据类型
  • 私密数据采集:隧道爬虫IP技术的保密性能力探究
  • 使用git rebase 之后的如何恢复到原始状态
  • matlab相机标定知识整理
  • win11安装ubuntu 子系统安装过程及注意事项
  • torch.cat((A,B),dim=1)解析
  • apache配置安全证书https踩坑记录
  • SQL Server Express 自动备份方案
  • Docker资源控制
  • 微服务中间件-分布式缓存Redis
  • java面试强基(16)
  • Python可视化在量化交易中的应用(13)_Seaborn直方图
  • NOIP 2006 普及组 第二题 开心的金明
  • 「UG/NX」Block UI 指定点SpecifyPoint
  • Linux Shell如果ping失败就重启网卡(详解)
  • 每天一道leetcode:剑指 Offer 13. 机器人的运动范围(中等广度优先遍历剪枝)
  • TypeError: a bytes-like object is required, not ‘str‘
  • 题解 | #1005.List Reshape# 2023杭电暑期多校9
  • 会声会影2023旗舰版电脑端视频剪辑软件
  • 【linux基础(四)】对Linux权限的理解
  • maven项目指定数据源
  • web3:使用Docker-compose方式部署blockscout
  • C++11实用技术(五)泛型编程加载dll接口函数
  • 使用wxPython和PyMuPDF提取PDF页面指定页数的内容的应用程序