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

相关文章

MySQL基本查询示例总结

《MySQL基本查询示例总结》:本文主要介绍MySQL基本查询示例总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Create插入替换Retrieve(读取)select(确定列)where条件(确定行)null查询order by语句li

windows和Linux安装Jmeter与简单使用方式

《windows和Linux安装Jmeter与简单使用方式》:本文主要介绍windows和Linux安装Jmeter与简单使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows和linux安装Jmeter与简单使用一、下载安装包二、JDK安装1.windows设

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi