SCORE-BASED GENERATIVE MODELING THROUGH STOCHASTIC DIFFERENTIAL EQUATIONS 阅读笔记

2023-11-13

文章提出了一个基于随机微分方程的生成模型。Denoising Score Matching with Annealed Langevin Sampling(SMLD)和 Denoising Diffusion Probabilistic Models(DDPM)方法可以合并到该框架中。

建立一个连续时间索引的扩散过程 { x ( t ) } t = 0 T , t ∈ [ 0 , T ] \{\mathbf{x}(t)\}_{t=0}^T, t \in [0, T] {x(t)}t=0T,t[0,T],其满足 x ( 0 ) ∼ p 0 \mathbf{x}(0)\sim p_0 x(0)p0是需要学习的目标数据分布, x ( T ) ∼ p T \mathbf{x}(T)\sim p_T x(T)pT是便于采样的先验分布。这个扩散过程可以用下面的随机微分方程(SDE)的解表示:
d x = f ( x , t ) d t + g ( t ) d w (5) \mathrm{d}\mathbf{x} = f(\mathbf{x}, t)\mathrm{d}t + g(t)\mathrm{d}\mathbf{w} \tag{5} dx=f(x,t)dt+g(t)dw(5) w \mathbf{w} w是标准Wiener过程, f ( ⋅ , t ) f(\cdot, t) f(,t)是称为drift coefficient的向量函数, g ( t ) g(t) g(t)是称为diffusion coefficient的标量函数。
通过从 x ( T ) ∼ p T \mathbf{x}(T)\sim p_T x(T)pT采样,并逆转上面的过程,我们可以得到 x ( 0 ) ∼ p 0 \mathbf{x}(0)\sim p_0 x(0)p0,从而得到目标数据分布的样本。已有工作证明上面扩散过程的逆仍然是一个扩散过程,不过时间从T到0:
d x = [ f ( x , t ) − g ( t ) 2 ∇ x log ⁡ p t ( x ) ] d t + g ( t ) d w ‾ (6) \mathrm{d}\mathbf{x} = [f(\mathbf{x}, t) - g(t)^2 \nabla_\mathbf{x}\log p_t(\mathbf{x})]\mathrm{d}t + g(t)\mathrm{d}\overline{\mathbf{w}} \tag{6} dx=[f(x,t)g(t)2xlogpt(x)]dt+g(t)dw(6) w ‾ \overline{\mathbf{w}} w是时间从T到0的标准Wiener过程。 ∇ x log ⁡ p t ( x ) \nabla_\mathbf{x}\log p_t(\mathbf{x}) xlogpt(x)被称为score。如果可以得到score ∇ x log ⁡ p t ( x ) \nabla_\mathbf{x}\log p_t(\mathbf{x}) xlogpt(x),那么就可以通过逆过程采样 p 0 p_0 p0的样本。

为了得到 x ( 0 ) ∼ p 0 \mathbf{x}(0)\sim p_0 x(0)p0,需要先求score ∇ x log ⁡ p t ( x ) \nabla_\mathbf{x}\log p_t(\mathbf{x}) xlogpt(x),再根据公式(6)的逆扩散过程求解 x ( T ) \mathbf{x}(T) x(T)

score估计

score可以通过训练一个基于分数的模型来估计。
在这里插入图片描述

逆SDE求解

可以用通用的SDE求解算法直接求逆时间SDE。但因为我们有score模型,所以我们考虑更好的方法,也就是利用score-based MCMC方法。
作者提出Predictor-Corrector (PC) samplers。在每一个时间步,首先用SDE求解器估计下一个时间步的样本(predictor),然后再用score-based MCMC方法修正估计样本的边际分布(corrector)。
在这里插入图片描述

概率流

对于所有的扩散过程,存在一个确定的过程,其轨迹和扩散过程有相同的边际概率密度(marginal probability densities) { p ( x ) } t = 0 T \{p(\mathbf{x})\}_{t=0}^T {p(x)}t=0T。公式(5)对应的确定过程满足下面的常微分方程(ODE):
d x = [ f ( x , t ) − 1 2 g ( t ) 2 ∇ x log ⁡ p t ( x ) ] d t \mathrm{d}\mathbf{x} = [f(\mathbf{x}, t) - \frac{1}{2}g(t)^2 \nabla_\mathbf{x}\log p_t(\mathbf{x})]\mathrm{d}t dx=[f(x,t)21g(t)2xlogpt(x)]dt作者将上面的ODE称为概率流ODE(probability flow ODE)。
DDPM不能直接计算likelihood,只能用ELBO代替likelihood。而扩散过程的likelihood可以通过转换为概率流ODE计算。因为概率流ODE算是neural ODE的一个特例,neural ODE的论文中已经证明其可以计算flow的概率,所以通过instantaneous change of variables formula可以计算概率流ODE的概率。
另外,因为公式(5)没有可学习的参数,所以如果有完美估计的score,那么通过概率流ODE可以得到数据和隐含表示的一对一映射关系。毕竟概率流ODE类似normalize flow是一个确定的过程,而不像DDPM等方法一样,在不停的采样。

可控生成

可控生成可以通过求解条件逆时间SDE得到
d x = { f ( x , t ) − g ( t ) 2 [ ∇ x log ⁡ p t ( x ) + ∇ x log ⁡ p t ( y ∣ x ) ] } d t + g ( t ) d w ‾ \mathrm{d}\mathbf{x} = \{f(\mathbf{x}, t) - g(t)^2 [\nabla_\mathbf{x}\log p_t(\mathbf{x}) + \nabla_\mathbf{x}\log p_t(\mathbf{y|x})]\}\mathrm{d}t + g(t)\mathrm{d}\overline{\mathbf{w}} dx={f(x,t)g(t)2[xlogpt(x)+xlogpt(y∣x)]}dt+g(t)dw

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SCORE-BASED GENERATIVE MODELING THROUGH STOCHASTIC DIFFERENTIAL EQUATIONS 阅读笔记 的相关文章

  • len()函数

    len 函数 描述 len 函数返回对象 字符 列表 元组等 长度或项目个数 语法 len 方法语法 len s 参数 s 对象 返回值 返回对象长度 实例 以下实例展示了 len 的使用方法 str 1111111111111 print
  • Python 11 (paramiko模块,ssh密钥,进程线程,锁,信号量)

    本节内容 paramiko模块 基于SSH用于连接远程服务器并执行相关操作 paramiko模块 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接 Author yyqian import paramiko 创建SS
  • android studio f5,AndroidStudio 快捷鍵

    8种机械键盘轴体对比 本人程序员 要买一个写代码的键盘 请问红轴和茶轴怎么选 符號說明 gt option alt gt shift gt control gt command gt esc 注 与F6 F7 F12等F功能键开头的组合的快

随机推荐

  • java中String、StringBuffer、StringBuilder的区别

    java中String StringBuffer StringBuilder是编程中经常使用的字符串类 他们之间的区别也是经常在面试中会问到的问题 现在总结一下 看看他们的不同与相同 三者共同之处 都是final类 不允许被继承 主要是从性
  • msvcp140.dll丢失如何修复?win7丢失msvcp140.dll的修复方法

    有win7用户在操作电脑的过程中 遇到msvcp140 dll丢失的情况 这是怎么回事 一般是由于系统中丢失dll文件导致的 下面就和小编一起来看看具体的解决办法吧 MSVCP文件的版本 这是我电脑上安装的各版本 VC 版本间互相不重复 并
  • javac不是内部或外部命令,也不是可运行的程序 或批处理文件的细节问题(window10)

    目录 步骤一 找到JDK下的bin目录 运行cmd 输入javac 能提示 说明环境配置有问题 步骤二 cmd输入 path 步骤三 看看下载的JDK包解压后目录对不对 步骤四 检查是否有环境冲突 最后 环境变量配置 描述 打开cmd 输入
  • 前后台交互时客户端请求的中文字变成问号

    今天在写form表单的时候发现提交的中文字在后台接收的时候变成了 如下图 经过检查发现是编码格式的不统一的问题 前台给数据设置了编码格式 而后台没有设置编码格式 就造成了中文字不能识别
  • spring boot中web容器配置

    web容器配置 spring boot 默认的web容器是 tomcat 如果需要换成其他的 web 容器 可以如下配置
  • windows下nginx配置为服务

    1 下载winswx 下载地址 winsw下载 2 解压后将其重命名为 nginx service 并将其放到nginx目录下 3 新建一个文本文档内容如下 里面的路径根据自己的情况修改
  • mysql 8 窗口函数

    使用mysql8 遇到一个问题 分区之后排序 得到的结果不是预想中的值 而把排序取消之后 能够得到正确的结果 如图所示 搞不懂 大佬解释下
  • hadoop datanode没有启动

    datanode启动不了 即执行命令 bin hadoop namenode format 后 默认地址tmp hadoop 1 dfs data current VERSION namenod 和datanode 的clusterid不一
  • Qt5.9中QMessageBox输出变量的用法(或者是字符串添加变量的方法):tr("%1").arg(variable)

    本文主要总结在Qt5 9的Creator4 4 1中 在弹出框QMessageBox中输出变量的方法之一tr 1 arg variable 具体的示例如下所示 str tr 这是变量 QMessageBox warning this tr
  • 基于Vue项目的富文本vue-quill-editor的使用

    基于Vue项目的富文本vue quill editor的使用 文章目录 基于Vue项目的富文本vue quill editor的使用 一 背景 二 Vue Quill Editor使用 1 简介 2 安装 3 挂载到项目 1 全局挂载 2
  • CentOS8 Keepalived 高可用测试

    keepalived 安装与使用 介绍 软件原理 准备工作 软件安装 配置文件 启动 介绍 Keeplived 是一款系统插件 工作在TCP IP 层 通过虚拟IP对外提供服务 当主节点出现故障时 能自动切换到从节点 达到一个高可用的目的
  • ZooKeeper数据存储与数据同步机制

    ZooKeeper中 数据存储分为两部分 内存数据 ZKDatabase 与磁盘数据 事务日志 事务快照 ZKDatabase ZooKeeper的数据模型是一棵树 而从使用角度看 ZooKeeper就像一个内存数据库一样 在内存数据库中
  • 损失函数(loss function)(基本介绍,作用,场景,特点,常见损失函数,代码示例)

    一 损失函数是什么 损失函数 Loss Function 是机器学习和深度学习中的一个重要概念 用于衡量模型预测结果与真实结果之间的差异或误差 它是一个数值评估指标 通过对模型输出和真实标签之间的比较 提供了对模型性能的度量 二 损失函数的
  • 时序预测

    时序预测 MATLAB实现基于BiLSTM双向长短期记忆神经网络的时间序列预测 递归预测未来 多指标评价 目录 时序预测 MATLAB实现基于BiLSTM双向长短期记忆神经网络的时间序列预测 递归预测未来 多指标评价 预测结果 基本介绍 程
  • 100流明相当于多少w_1978年的100元, 相当于现在的多少钱? 答案“出乎意料”...

    点上面蓝色字免费关注 如今的钱是越来越不值钱 每个月四五千的工资在没有负债的情况下 也就刚好够家庭使用 如果有房贷车贷等其他负债 四五千的工资根本就养不活一个家 很多人都怀念七八十年代的生活 一个月几十元工资就能养活一家人而且还没有什么生活
  • maven 打包时异常 <找不到符号 [ERROR] 符号: 方法>

    被依赖项目没有打包到本地仓库 或者没有上传到远程仓库 ERROR Failed to execute goal org apache maven plugins maven compiler plugin 3 3 compile defau
  • 从0到1开发一个React组件库

    背景 前端技术的不断发展过程中 组件化 模块化已成为主流 当开发的项目中有一些公共组件可以沉淀的时候 将这些组件抽离出来 开发一个组件库无疑是一个好的选择 那么怎么去开发一个组件库呢 本文将和你一起从零开发一个 React 组件库 本文项目
  • C#中定义数组

    一 一维 int numbers new int 1 2 3 4 5 6 不定长 int numbers new int 3 1 2 3 定长 二 多维 int numbers new int 1 2 3 1 2 3 不定长 int num
  • C语言——打鱼晒网问题

    一 实例说明 如果一个渔夫从 2011 年 1 月 1 日开始每三天打一次渔 两天晒一次网 编程实现当输入 2011 年1月1日以后的任意一天 输出该渔夫是在打渔还是在晒网 二 实现代码 include
  • SCORE-BASED GENERATIVE MODELING THROUGH STOCHASTIC DIFFERENTIAL EQUATIONS 阅读笔记

    文章提出了一个基于随机微分方程的生成模型 Denoising Score Matching with Annealed Langevin Sampling SMLD 和 Denoising Diffusion Probabilistic M