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中Request的安装以及简单的使用方法图文教程

《Python中Request的安装以及简单的使用方法图文教程》python里的request库经常被用于进行网络爬虫,想要学习网络爬虫的同学必须得安装request这个第三方库,:本文主要介绍P... 目录1.Requests 安装cmd 窗口安装为pycharm安装在pycharm设置中为项目安装req

SpringBoot简单整合ElasticSearch实践

《SpringBoot简单整合ElasticSearch实践》Elasticsearch支持结构化和非结构化数据检索,通过索引创建和倒排索引文档,提高搜索效率,它基于Lucene封装,分为索引库、类型... 目录一:ElasticSearch支持对结构化和非结构化的数据进行检索二:ES的核心概念Index:

C# List.Sort四种重载总结

《C#List.Sort四种重载总结》本文详细分析了C#中List.Sort()方法的四种重载形式及其实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录1. Sort方法的四种重载2. 具体使用- List.Sort();- IComparable

SpringBoot项目整合Netty启动失败的常见错误总结

《SpringBoot项目整合Netty启动失败的常见错误总结》本文总结了SpringBoot集成Netty时常见的8类问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、端口冲突问题1. Tomcat与Netty端口冲突二、主线程被阻塞问题1. Netty启动阻

GO语言实现串口简单通讯

《GO语言实现串口简单通讯》本文分享了使用Go语言进行串口通讯的实践过程,详细介绍了串口配置、数据发送与接收的代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录背景串口通讯代码代码块分解解析完整代码运行结果背景最近再学习 go 语言,在某宝用5块钱买了个

SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)

《SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)》本文总结了SpringBoot项目整合Kafka启动失败的常见错误,包括Kafka服务器连接问题、序列化配置错误、依赖配置问题、... 目录一、Kafka服务器连接问题1. Kafka服务器无法连接2. 开发环境与生产环境网络不通二、序

SpringBoot整合Apache Spark实现一个简单的数据分析功能

《SpringBoot整合ApacheSpark实现一个简单的数据分析功能》ApacheSpark是一个开源的大数据处理框架,它提供了丰富的功能和API,用于分布式数据处理、数据分析和机器学习等任务... 目录第一步、添加android依赖第二步、编写配置类第三步、编写控制类启动项目并测试总结ApacheS

python3中正则表达式处理函数用法总结

《python3中正则表达式处理函数用法总结》Python中的正则表达式是一个强大的文本处理工具,用于匹配、查找、替换等操作,在Python中正则表达式的操作主要通过内置的re模块来实现,这篇文章主要... 目录前言re.match函数re.search方法re.match 与 re.search的区别检索

C++简单日志系统实现代码示例

《C++简单日志系统实现代码示例》日志系统是成熟软件中的一个重要组成部分,其记录软件的使用和运行行为,方便事后进行故障分析、数据统计等,:本文主要介绍C++简单日志系统实现的相关资料,文中通过代码... 目录前言Util.hppLevel.hppLogMsg.hppFormat.hppSink.hppBuf

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法