[Diffusion Model 笔记]Score based

news/2024/10/22 8:09:07/

目录

  • 概述
  • 方法
  • 怎么估计score(估计噪声就是估计score)
  • 怎么采样(给原始数据加噪声,早期大后来变小)
  • inpainting (来自补充材料)
  • 还没有细究的地方:

概述

本文是观看以下视频的笔记
https://www.bilibili.com/video/BV1VP411u71p/?spm_id_from=333.788&

论文:Generative Modeling by Estimating Gradients of the Data Distribution (NeurIPS2019)

  • 注意,这篇比DDPM更早在这里插入图片描述

  • likelihood-based methods对网络结构的设计有很大限制,但score-based只要输入输出维度一样就行了;

  • gan就是太难train 了。在生成和判别之间要权衡。但咱们score-based就不用,就一个loss完事儿。

方法

  • 定义score:对数概率的梯度
  • 核心思路:之前的方法都是学习概率分布本身;现在我们学习score。这样我们就可以根据score指示的方向一步步走到正确的地方
    • 首先用某种方法估计出score
    • 然后,随机初始化噪声,然后按照score走一步;再走一步;迭代,组中走到正确的位置(走一步怎么走是根据郎之万动力学的公式)

怎么估计score(估计噪声就是估计score)

  • 首先套用DDPM的噪声假设, q ( x t ∣ x 0 ) ∼ N ( α ˉ t x 0 , ( 1 − α ˉ t ) I ) q\left(\mathbf{x}_t \mid \mathbf{x}_0\right)\sim \mathcal{N}\left(\sqrt{\bar\alpha_t} \mathbf{x}_0, (1-\bar\alpha_t\right)\mathbf{I}) q(xtx0)N(αˉt x0,(1αˉt)I) x t = α ˉ t x 0 + 1 − α ˉ t ϵ \mathbf{x}_t=\sqrt{\bar\alpha_t} \mathbf{x}_0+\sqrt{1-\bar\alpha_t} \boldsymbol{\epsilon} xt=αˉt x0+1αˉt ϵ (1),
  • 根据高斯分布的定义,写出p(xt)的表达式:
    • p ( x t ) ∝ exp ⁡ { − ( x t − α ˉ t x 0 ) ⊤ ( x t − α ˉ t x 0 ) 2 ( 1 − α ˉ t ) } p(\mathbf{x}_{t})\propto\exp\{-\frac{(\mathbf{x}_{t}-\sqrt{\bar{\alpha}_{t}}\mathbf{x}_{0})^{\top}(\mathbf{x}_{t}-\sqrt{\bar{\alpha}_{t}}\mathbf{x}_{0})}{2(1-\bar{\alpha}_{t})}\} p(xt)exp{2(1αˉt)(xtαˉt x0)(xtαˉt x0)}
  • 根据这个式子,求出对数梯度:
    • ∇ x t log ⁡ p ( x t ) = − x t − α ˉ t x 0 1 − α ˉ t \nabla_{\mathbf{x}_{t}}\log p(\mathbf{x}_{t})=-\frac{\mathbf{x}_{t}-\sqrt{\bar{\alpha}_{t}}\mathbf{x}_{0}}{1-\bar{\alpha}_{t}} xtlogp(xt)=1αˉtxtαˉt x0
  • 观察式(1), 发现对数梯度的分母就是 1 − α ˉ t ϵ \sqrt{1-\bar\alpha_t} \boldsymbol{\epsilon} 1αˉt ϵ
  • 也就是说,加在原图上的噪声,和我们要求的pxt的对数梯度,只相差一个系数。所以估计噪声就可以估计出梯度的方向
  • (个人理解):这里实际上说明,我们DDPM定义的,通过权重来增加的噪声(x0和噪声的加权和),某种程度上相当于在对数空间直接增加噪声?
  • 在这里插入图片描述

怎么采样(给原始数据加噪声,早期大后来变小)

  • 问题:在数据密度较低的位置,score的估计往往不准,这样很难走进准确的区域
    • 解决方法:给原始数据加噪声,这样原始数据的分布范围就变大了,低密度区域就变小了,能准确估计score的区域就变大了
    • 新的问题:噪声加了,原始数据就破坏了呀;噪声越强,破坏越强;噪声越小,score又无法准确估计
    • 解决方法:在推理的不同阶段加不同强度的噪声,从大到小
    • 这不就是DDPM了吗?噪声按这个权重,早期大,晚期小
  • 注意,似乎是在training和inference的时候都加了噪声了
    在这里插入图片描述

加噪声前,计算的score在大片区域不太准:
在这里插入图片描述

加噪声后,计算的score更准:
在这里插入图片描述
最终的采样算法:

  • L是Level,每一个Level i 都有自己的步长αi和和噪声
  • 没看懂在那里加的噪声

在这里插入图片描述

inpainting (来自补充材料)

  • 每次采样得到一个noisy image,
  • 下一步之前,我就直接把没mask的部分用gt+噪声代替
  • 那感觉和RePaint一模一样啊?

在这里插入图片描述

还没有细究的地方:

  • training的时候是怎么加的噪声?
  • inference那个算法里面具体哪里体现了加噪声的?

http://www.ppmy.cn/news/1442477.html

相关文章

网工内推 | 云计算运维,厂商云相关认证优先,股票期权,全勤奖

01 国科科技 招聘岗位:云计算运维 职责描述: 1、负责私有云平台的运维管理工作,包括云平台日常运维、故障处理、扩容、版本升级、优化和维护等。 2、根据业务需求,从技术角度支持及配合各业务系统上云工作。 3、为云上业务系统提供云产品、云服务方面的…

java坦克大战1.0——敌人坦克发射子弹+敌人消失+爆炸

目录 1.敌人坦克发射子弹 1.功能分析 2.代码: 1.EnemyTank类: 2.MyPanel类 2.敌人消失 1.功能分析: 2.代码 1.EnemyTank类: 2.MyPanel类 3.Shot类 3.爆炸效果 1.功能分析 2.代码 1.Bomb类 2.MyPanel类 最终代码&…

沪深300指数和中证500指数中的变动(2007-2022年)连锁股东工具变量

01、数据简介 沪深300指数是由上海证券交易所和深圳证券交易所共同发布的包含300只规模较大、流动性较好的股票构成的指数,涵盖了沪市和深市的大部分龙头股和市值较大的公司。 中证500指数则是由中国证券指数有限公司发布的涵盖了A股市场中500只股票的指数。 综上…

Spring Web MVC入门(3)——响应

目录 一、返回静态页面 RestController 和 Controller之间的关联和区别 二、返回数据ResponseBody ResponseBody作用在类和方法的情况 三、返回HTML代码片段 响应中的Content-Type常见的取值: 四、返回JSON 五、设置状态码 六、设置Header 1、设置Content…

第4篇:创建Nios II工程之Hello_World<三>

Q:接着我们再来完成Nios II软件工程设计部分。 A:从Quartus Tools选择Nios II Software Build Tools for Eclipse,打开Nios II SBT软件,Workspace指定到hello_world工程的software文件夹路径;再从File-->New-->…

java基础之类运行与双亲委派机制简介

一 类加载运行过程 通过java命令运行某个类的main函数来启动程序时,首先需要通过类加载器将主类加载到JVM中; 源码: package com.ddu.jvm;public class HelloWordHelper {public static void main(String[] args) {User user new User();…

Pow(x,n)——力扣

python(快速幂) 50. Pow(x, n) 已解答 中等 相关标签 相关企业 实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。 示例 1: 输入:x 2.00000, n 10 输出:10…

【深度学习】Dropout、DropPath

一、Dropout 1. 概念 Dropout 在训练阶段会让当前层每个神经元以drop_prob( 0 ≤ drop_prob ≤ 1 0\leq\text{drop\_prob}\leq1 0≤drop_prob≤1)的概率失活并停止工作,效果如下图。 在测试阶段不会进行Dropout。由于不同批次、不同样本的神…