🗽Denoising Diffusion Probabilistic Models (Part 1)

type
status
date
slug
summary
tags
category
icon
password
“The sculpture is already complete within the marble block, before I start my work. It is already there, I just have to chisel away the superfluous material.” — Michelangelo
 
目前主流的生成模型有以下几种(
notion image

Introduction

论文中描述 diffusion model 为 ”a parameterized Markov chain trained using variational inference to produce samples matching the data after finite time“。这条马尔科夫链反向学习扩散过程(一条逐渐往原始数据里加噪声的马尔科夫链),目的是从完全噪声中还原出原始数据。
论文把加入的噪声看做是 Gaussian noise,那么自然可以用条件概率来建模去噪过程中的转移,即给定当前状态作为条件,通过 condition Gaussian 还原前一时刻的状态。而这个 condition Gaussian 就可以用一个神经网络来 parameterization。
notion image

 

Diffusion models and denoising autoencoders

Model Structure

扩散模型包括两个部分:Forward process 和 Reverse process
notion image
  • Forward process
    • 加噪到 的过程。从 的加噪可以描述为
      其中, 就是加入的 Gaussian noise,
      也就是说, 可以通过采样一个正态分布得到,即状态转移可以用条件概率密度函数 来描述
      整个 forward process 可以描述为
      一组 称为 variance schedule,是预先定义好的一组 0 到 1 之间的数(逐渐增大,后面会讲)。
  • Reverse process
    • 同理,反向过程可以描述为
实际上,整个 forward process 可以简化为一步加噪。我们令 ,将递推式展开,再利用正态分布的性质,可以得到
也就是说,现在我们已经从一张原始图像 通过一步加噪得到了全噪声 ,接下来我们要想办法确定 以执行 reverse process(这也是整个流程的关键)。
 
首先根据贝叶斯公式(逆概的含金量)
其中,三个概率密度函数分别满足
把这三个高斯分布写开,暴力计算一把,可以得到 满足的高斯分布概率密度函数
其中
但很明显这个 reverse process 的状态转移函数有个很大的问题,式子中含有 。我们使用一步加噪公式替换掉这个
带入我们就可以得到
这个式子里唯一的未知数是噪声 ,所以我们用一个神经网络(论文里称为 function approximator) 去预测这个噪声,得到 parameterization 后的
整个 Denoise 过程可抽象简化为下图
notion image

Loss Function

那么显然,我们的优化目标是让 Noise Predicter 预测的噪声和 ground truth 的噪声尽可能接近, 而 ground truth 就是 forward process 中加入的噪声。
生成模型的优化目标
notion image
生成模型可以简化为一个简单分布 (如高斯分布),通过一个神经网络 ,一一映射到图像(或其他)分布 上,目标是是让生成图像的分布和实际图像的分布尽可能接近。衡量二者接近程度一般采用最大似然估计
notion image
更直观一些,生成模型让训练数据分布 映射到一个简单分布(Encoder),再从简单分布映射到观测数据分布 (Decoder),这样做推理时,就只需要在这个简单分布上做采样。
从训练数据分布 中采样一组 ,根据最大似然估计,我们希望这些采样出来的(观察到的)真实数据概率最大,即
根据 ELBOEvidence Lower Bound),
其中, 称为 evidence(似乎是个定值?), 称为 KL 散度,表征两个概率密度函数的相似程度。最小化 KL 散度可以转化为最大化 ELBO
挖坑,这里涉及到复杂的数学推导
 
接下来我们盯着损失函数 看,最大化 ELBO 可以转化为最小化 ELBO 的相反数,即
对这个损失函数一通爆算(原论文 Appendix A 给出了详细推导),可以得到
一个个来看这个式子的三个部分。
其中, 是 forward process 的终点, 是 reverse process 的起点,直观来讲就是希望两个高斯噪声尽可能接近,这是显然的
直观来讲是希望 尽可能接近,这也是可以通过设置超参数来做到的
现在的问题就聚焦在了 上。这个 KL 散度中,前半部分 由前文公式 1 给出,后半部分 由前文公式 2 定义。两部分实际都是高斯分布,我们有公式可以直接计算两个高斯分布的 KL 散度。
由此我们算一把推出
这里其实将 的方差取了与 相等的值,即
最后,在经过一些 离谱的 巧妙的变换,可以最终得到
💡
上面这一系列的数学推导其实就是从数学上描述了为什么是 noise predictor,为什么我们的优化目标是让生成的 noise 和 ground truth 的 noise 尽量接近。比较两个 noise 的接近程度实际上是十分自然的,因此 loss function (实际上是 MSE loss)的推导在实际应用中其实没有太大作用。
 

Training & Sampling

notion image
值的注意的是,论文作者发现不带系数做训练的效果更好,所以在伪代码中没有我们推出的损失函数的系数部分。
notion image
由于 ,对 采样可以用如下公式
 
整个 training 过程可以这样描述
  1. Randomly select a time step and encode it
    1. notion image
  1. Add noise to image
    1. notion image
  1. Train the UNet
    1. notion image
       
整个 sampling 过程可以这样描述
  1. Iteratively denoise the image (T = 1000)
    1. notion image
  1. Iteratively denoise the image (T = 999~2)
  1. Iteratively denoise the image (T = 1)
    1. notion image

 
完整且极为详细的公式推导可以参看 “Understanding Diffusion Models: A Unified Perspective”。
b 站上的讲解视频
【大白话01】一文理清 Diffusion Model 扩散模型 | 原理图解+公式推导_哔哩哔哩_bilibili
希望这个视频能帮助大家比较清晰理解Diffusion model~ 如果大家有收获还请点赞、投币、转发(这对鼓励up主真的很重要)如果大家对视频中有任何疑问,欢迎私信或评论区留言,我看到后都会回复视频中的PPT都是自己原创完成的,如果大家喜欢,我会在后面分享的~最近事情比较多,但是下一个视频在做了(╯▽╰), 视频播放量 31488、弹幕量 100、点赞数 1254、投硬币枚数 1162、收藏人数 2181、转发人数 281, 视频作者 吃花椒的麦, 作者简介 这个人懒得写,相关视频:不愧是李宏毅!一小时讲透【Diffusion Model 】扩散模型!入门真的没你想的那么难…… (AI人工智能/深度学习/计算机视觉/CV/大模型),【较真系列】讲人话-Diffusion Model全解(原理+代码+公式),扩散模型/Diffusion Model原理讲解,两分钟讲清楚什么是diffusion model(扩散模型),【李宏毅】2024年公认最好的扩散模型【Diffusion Model】教程!从入门到进阶,一套全解决!-附带课件,Diffusion | DDPM 代码精讲,【中英文字幕】吴恩达-扩散模型diffusion的工作原理,【Diffusion模型】由浅入深了解Diffusion,不仅仅是震撼,感受它带给我们的无限可能!!(超详细的保姆级入门教程),B站强推!2024公认最通俗易的扩散模型【Diffusion】3小时入门到精通,比GAN还牛逼,Stable diffusion_Diffusion Model,[零基础] Stable Diffusion 原理详解
【大白话01】一文理清 Diffusion Model 扩散模型 | 原理图解+公式推导_哔哩哔哩_bilibili
【较真系列】讲人话-Diffusion Model全解(原理+代码+公式)_哔哩哔哩_bilibili
众所周知,这两年AIGC非常火,相当于直接开启AI2.0时代。衍生出了包括文生图,文生视频,文生3D等一系列非常fancy的新技术,其实这些新技术,离不开一个梦开始的地方--就是DDPM这个模型。所以我们接下来将会用比较人话的方式向大家分享DDPM这个模型的原理,公式和代码。希望通过这次分享,大家可以对Diddusion model祛魅,不再恐惧它,尤其是公式推导部分。我们要从战术上平视它,不再感, 视频播放量 33032、弹幕量 167、点赞数 1277、投硬币枚数 1164、收藏人数 2613、转发人数 264, 视频作者 SY_007, 作者简介 ,相关视频:54、Probabilistic Diffusion Model概率扩散模型理论与完整PyTorch代码详细解读,Diffusion Model(扩散模型)!2024年公认最通俗易懂的扩散模型来了!3小时入门到精通!建议收藏!(人工智能/深度学习/机器学习/神经网络/AI),不愧是李宏毅!一小时讲透【Diffusion Model 】扩散模型!入门真的没你想的那么难…… (AI人工智能/深度学习/计算机视觉/CV/大模型),Diffusion Model | 扩散模型原理及代码实现,3小时快速上手!(附带源码),Diffusion | DDPM 代码精讲,【李宏毅】2024年公认最好的扩散模型【Diffusion Model】教程!从入门到进阶,一套全解决!-附带课件,【公式推导】还在头疼Diffusion模型公式吗?Diffusion理论公式喂饭式超详细逐步推导来了!,【大白话01】一文理清 Diffusion Model 扩散模型 | 原理图解+公式推导,【串讲系列】讲人话-Stable Diffusion全解(原理+代码+公式)之SD1.5,【中英文字幕】吴恩达-扩散模型diffusion的工作原理
【较真系列】讲人话-Diffusion Model全解(原理+代码+公式)_哔哩哔哩_bilibili
一个可视化的 blog(这个博主有多个模型的可视化 blog)
 
上一篇
Attention Is All You Need
下一篇
Denoising Diffusion Probabilistic Models (Part 2)
Loading...