【diffusion初探】

参考与李宏毅老师diffusion model

一. denoising diffusion probabilistic model

  • diffusion model是怎样运作的
    在这里插入图片描述
  1. 首先sample一张噪声vector,size和图像的大小相同
  2. 经过多个denoise模块反复使用得到一张清晰的图片(这个过程被称为reverse process)
  3. denoise接受两个输入,一个是噪声图像,一个是目前的噪声程度(即当前运行的step,因为噪声程度是随着step减小而递减的)
  • 如何训练一个denoise模块
    每个denoise模块中包含一个noise predicter,他接受噪声图像和噪声程度两个输入,输出一张噪声图,负责预测图片中的噪声长什么样,再将噪声图与输入图像相减,最终输出。
    在这里插入图片描述
    我们需要训练一个noise predicter,这是在运行diffusion之前训练好的。首先,我们需要自己输入一张图片,然后不断的进行random sample,最后得到一张辨认不出来的图(这个过程被称为forward/diffusion process),这样就能得到训练的数据和标签(每次图像中的真实噪声)

二. stable diffusion

在每一步的denoise模块中加入了文字描述

  • framework:先将文字输入进一个text encoder(clip)得到特征向量,再将特征向量与噪声feature map结合输入进入一个Generation Model得到一个中间产物(一个类似于凸图片压缩版本的feature map),最后通过一个decoder得到输出图片。三个模块独立训练,最终组合到一起
    在这里插入图片描述
  • 拓展模型
  1. DALL-E模型
    在这里插入图片描述

  2. Imafen
    在这里插入图片描述

  • Encoder:相较于来说,文字的encoder带来的收益会比diffusion模块带来的收益会好很多,如下图所示曲线越靠近右下方表示模型效果越好
    其中涉及了两个评价指标
  1. FID:将图片通过一个强有力的图像分类CNN得到latent representation,利用FID衡量生成的图片的representation和原始图片的representation的距离(假设所有分布都是Gaussians分布,该值越小越好。此过程需要大量的生成图片,FID-10K代表生成了10k张。
  2. CLIP sorce:clip是一个用400milion image-text pairs所训练出的大模型,利用clip sorce来表示文字和图像之间的匹配程度
  • Decoder:利用已知数据集训练一个encoder,encoder负责提取latent representation,decoder负责还原。训练好之后,decoder直接用。
    在这里插入图片描述
  • generation model:首先将图片输入到encoder里面得到中间产物,不断的每一步上加上噪声,noise predicter接受步骤序号,text vector和加入了噪声之后的feature map。
    在这里插入图片描述

三. DDPM

  • VAE vs, Diffusion Model的直观体验
    在这里插入图片描述
    包括两个步骤:Training and Sampling
  • Traning:训练一个noise predicter
    在这里插入图片描述
  1. 从一个干净的图片中采样
  2. 从1-T里面去一个t
  3. 从一个高斯白噪声里面采样一个 ε \varepsilon ε
  4. 红色方框表示将步骤2和步骤4得到的原图和噪声加权融合,t越小代表越接近原图,相应at越大。 ε θ \varepsilon _{\theta } εθ表示noise predicter,输入一张带有噪声的图像和步骤号(t),输出噪声图像。用原始噪声相减产生代价函数
  • Sampling
    在这里插入图片描述
  1. 在最开始的时候从高斯白噪声采样一个 X T X_{T} XT,T的值越大,表明越接近原始噪声
  2. 从T一直循环到1,表示整个denoise过程,这个过程的步骤数是一定
  3. 每次从高斯白噪声里面采样一个z
  4. 第t-1次的x由第t次的xt减去经过加权noise predicter产生的噪声,再加权一个值,最后加上一个随机白噪声(在第二篇解释)。其中的系数只改变方差,因为所有分布都是均值为0,方差为1。

四. 数学模型

  • diffusion本质想要生成一个分布无线接近于真实分布
    在这里插入图片描述
  • maximum likehood estimation(最大似然估计)
    通过最大似然估计从真实分布 P d a t a ( x ) P_{data}\left(x\right) Pdata(x)中sample的多个样本和假设 P θ ( x ) P_{\theta }\left(x\right) Pθ(x)的分布是mean of Gussian来估计最好的参数 θ \theta θ
    在这里插入图片描述
  • VAE的推到过程
    在这里插入图片描述
    *这里采用最大似然估计的方法,数学原理会在后面展示。

通过式子变形,将最大化似然函数转化为最小化KL divergence
刚才介绍了最大似然估计中假设神经网络输出G(z)是mean of Gussian分布,这是因为:

  1. 高斯分布具有连续平滑的曲线,微小的z的变动会带到结果x的变化
  2. 可以简化KL计算

σ 2 \sigma ^{2} σ2是所说的每次添加的随机噪声,用来解决低密度问题

五. 一些数学背景知识

  1. 似然(likehood):
    (1) 对于某个未知参数(对于一个network或者是noise predicter的参数不知道)的分布,但是分布形式已知(假设生成的数据是Po(x)是mean of Gussian).
    (2) 需要来自经过这个分布独立同分布采样的一堆样本(Pdata(x)来自真实世界)
    基于以上两个条件针对待估计的分布参数,使用这一堆已知的样本 去反推 某个参数估计值 作为这个分布参数的可能性(似然)。
  2. 概率(possibility)
    已知分布的形式和参数,度量生成某个样本的可能性。已知因,度量果。P(样本|已知的参数),而似然是已知分布的形式和对应的已经生成样本,度量 某个未知分布参数的可能性。 已知果,度量因。P(参数|已知的样本)
  3. 似然函数
    在这里插入图片描述
  4. 最大似然估计
    对与给定的观测的数据x,从所有参数中找到使得似然函数值最大的参数
    在这里插入图片描述对于所有观测值发生的概率,等于将每个概率连乘
    在这里插入图片描述
  5. 离散随机变量的最大似然估计
    在处理导数的时候,由于是连乘,首先进行log处理变为连加
    在这里插入图片描述
  • joint probability 联合概率 并集
  • marginal probability 边缘概率 不考虑其他的情况下,只关注其中一个事件的结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值