Noise Conditional Score Networks 简单总结

2024-08-23 15:20

本文主要是介绍Noise Conditional Score Networks 简单总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Noise Conditional Score Networks

Score

S c o r e = ∇ x l o g p ( x ) (1) Score = \nabla_xlog~{p(x)} \tag{1} Score=xlog p(x)(1)

Score 是论文中的一个定义,表示概率密度 p ( x ) p(x) p(x)的梯度,沿着概率密度的梯度向前走,会走到概率密度最高的点。

郎之万动力学采样

x ~ t = x ~ t − 1 + ϵ 2 ∇ x ~ log ⁡ p ( x ~ t − 1 ) + ϵ z t (2) \tilde{x}_t = \tilde{x}_{t-1} + \frac{\epsilon}{2} \nabla_{\tilde{x}} \log p(\tilde{x}_{t-1}) + \sqrt{\epsilon} z_t \tag{2} x~t=x~t1+2ϵx~logp(x~t1)+ϵ zt(2)

z t z_t zt表示高斯噪声, ϵ \epsilon ϵ表示步长,这个公式表示沿着Score向前走,会走到概率密度最高的点,也就是真实的数据分布

Score learning

要想从公式(2)得到真实的数据分布,关键是要学习Score。
L = 1 2 E P data ( x ) [ ∥ s θ ( x ) − ∇ x log ⁡ p ( x ) ∥ 2 2 ] (3) L = \frac{1}{2} \mathbb{E}_{P_{\text{data}}(x)} \left[\left\| s_{\theta}(x) - \nabla_{x} \log p(x) \right\|_2^2 \right] \tag{3} L=21EPdata(x)[sθ(x)xlogp(x)22](3)

直接通过公式(3)学习存在1个问题:

数据密度分布存在低密度区域,对应的样本少, s θ ( x ) s_{\theta}(x) sθ(x)学习不充分,在这些样本点上不能得到足够准确的梯度分数。

通过在真实数据中引入微小的高斯噪声来模拟密度低的样本点,使 s θ ( x ) s_{\theta}(x) sθ(x)学习充分。刚开始的噪声大,后面的噪声小

Noise Conditional Score learning

L = 1 2 E P data ( x ) E x ~ ∼ N ( x ; σ 2 I ) [ ∥ s θ ( x ~ ; σ ) + x ~ − x σ 2 ∥ 2 2 ] (4) L = \frac{1}{2} \mathbb{E}_{P_{\text{data}}(x)} \mathbb{E}_{\tilde{x} \sim \mathcal{N}(x; \sigma^2 I)} \left[ \left\| s_{\theta}(\tilde{x}; \sigma) + \frac{\tilde{x} - x}{\sigma^2} \right\|_2^2 \right] \tag{4} L=21EPdata(x)Ex~N(x;σ2I)[ sθ(x~;σ)+σ2x~x 22](4)

加噪的目的是让样本分布的空间扩大,前期加噪越强,分布空间越大。到后期,加噪小,几乎等于真实样本分布。Score也会越来越准确

这篇文章是一个简单总结,详细的推导 可以看这篇文章和这篇文章。

补充知识:

郎之万动力学[^1]用随机微分方程描述粒子的运动,粒子运动的方向由当前位置的能量密度函数的梯度来指导(粒子会朝着从能量密度高向密度低的地方运动)而且受到微弱的随机噪声的影响。通常表示为
x t + 1 = x t − ϵ ∇ E ( x t ) + 2 ϵ η t x_{t+1} = x_t -\epsilon \nabla E(x_t)+\sqrt{2\epsilon}\eta_t xt+1=xtϵE(xt)+2ϵ ηt
x x x,表示分子的位置, E ( x ) E(x) E(x)表示分子的能量密度函数, ϵ \epsilon ϵ表示步长, η \eta η表示高斯噪声, t t t表示当前时刻。

参考:

[^1] 郎之万动力学

[^2] NCSN视频讲解

文章信息

发表时间:2019,发表地点:NuerPIS,作者:Song, Yang,机构:Stanford.

原文:Generative Modeling by Estimating Gradients of the Data Distribution

原发表网站引用模板:

@inproceedings{NEURIPS2019_3001ef25,author = {Song, Yang and Ermon, Stefano},booktitle = {Advances in Neural Information Processing Systems},editor = {H. Wallach and H. Larochelle and A. Beygelzimer and F. d\textquotesingle Alch\'{e}-Buc and E. Fox and R. Garnett},pages = {},publisher = {Curran Associates, Inc.},title = {Generative Modeling by Estimating Gradients of the Data Distribution},url = {https://proceedings.neurips.cc/paper_files/paper/2019/file/3001ef257407d5a371a96dcd947c7d93-Paper.pdf},volume = {32},year = {2019}
}

这篇关于Noise Conditional Score Networks 简单总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1099757

相关文章

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

python连接sqlite3简单用法完整例子

《python连接sqlite3简单用法完整例子》SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置,:本文主要介绍python连接sqli... 目录1. 连接到数据库2. 创建游标对象3. 创建表4. 插入数据5. 查询数据6. 更新数据7. 删除

Jenkins的安装与简单配置过程

《Jenkins的安装与简单配置过程》本文简述Jenkins在CentOS7.3上安装流程,包括Java环境配置、RPM包安装、修改JENKINS_HOME路径及权限、启动服务、插件安装与系统管理设置... 目录www.chinasem.cnJenkins安装访问并配置JenkinsJenkins配置邮件通知

在Java中实现线程之间的数据共享的几种方式总结

《在Java中实现线程之间的数据共享的几种方式总结》在Java中实现线程间数据共享是并发编程的核心需求,但需要谨慎处理同步问题以避免竞态条件,本文通过代码示例给大家介绍了几种主要实现方式及其最佳实践,... 目录1. 共享变量与同步机制2. 轻量级通信机制3. 线程安全容器4. 线程局部变量(ThreadL

Python yield与yield from的简单使用方式

《Pythonyield与yieldfrom的简单使用方式》生成器通过yield定义,可在处理I/O时暂停执行并返回部分结果,待其他任务完成后继续,yieldfrom用于将一个生成器的值传递给另一... 目录python yield与yield from的使用代码结构总结Python yield与yield

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三