Is Noise Conditioning Necessary for Denoising Generative Models?论文阅读笔记

server/2025/2/28 6:17:32/

在这里插入图片描述

  • 很吸引人的一个标题,很吸引人的一个作者,来读一读明神的新作,讲的是怎么把去噪领域的一些有意思的思想,特别是blind denoising和noise-level estimation的思想,应用到denoising diffusion模型中,从而去掉denoising duffusion中的noise condition,也就是DDNM和DDPM中的时间步长 t,t 是用来估计噪声强度的,其实和blind denoising与noise-level estimation的噪声强度是对应的,既然blind denoising可以在无需提供噪声强度作为提示的情况下进行去噪,是不是意味着denoising generative model也不需要 t 作为输入呢。如果能做到这一点,是有好处的,比如可以使用一个统一的score function,而不需要以 t 为条件,这样在理论上更优雅一些。

  • 文章提到,尽管损失函数是以下公式:
    在这里插入图片描述
    但网络的regression target却并不是 r ( x , ϵ , t ) r(x,\epsilon,t) r(x,ϵ,t),而是一些能够将 ( x , ϵ , t ) (x,\epsilon,t) (x,ϵ,t)映射到 z z z r r r值的期望。说起来有点绕,换个说法,如果已知 z z z t t t,有没有可能得知一个唯一正确的 r r r,文章想表达的是不可能,已知 z z z t t t的情况下 r r r不唯一,那么这个损失函数并不是真正地让网络在回归拟合一个函数,这个函数不存在,网络只是在学习r的可能取值的期望。文章画了个图来表达这个不唯一性
    在这里插入图片描述

  • 那么我们可以把这个损失函数改为它的等价形式,设 r r r的期望为 R R R,那么等价形式是:
    在这里插入图片描述
    在这里插入图片描述
    而关于这个采样函数 p p p我们所知就是 z z z x x x的条件分布和 ( x , ϵ , t ) (x,\epsilon,t) (x,ϵ,t)的联合分布:
    在这里插入图片描述

  • 这个时候我们可以把 t t t去掉,假设网络并不以 t t t为输入,会变成下面的损失函数:
    在这里插入图片描述

  • 从新的 R ( z ) R(z) R(z)可以看到,如果这里的 p ( t ∣ z ) p(t|z) p(tz)是一个狄拉克delta函数,也就是说无论 t t t是一个确定值,已知 z z z就已知 t t t,那 R ( z ∣ t ) R(z|t) R(zt)就是一个确定值,可以直接当作 R ( z ) R(z) R(z),就可以直接用这里的unconditional变体代替conditional的,网络就不需要 t t t作为额外输入。

  • 那接下来的问题就是确定 p ( t ∣ z ) p(t|z) p(tz)有多接近一个狄拉克delta函数。这里就可以从noise level estimation借鉴,既然这些方法可以从带噪声的图片估计出噪声强度,那么当 z z z是一张带噪声图片时, p ( t ∣ z ) p(t|z) p(tz)就是一个concentrated distribution,这就比较接近狄拉克delta函数了。具体有多接近,要看分布的方差有多大,文中推导了以下结果:
    在这里插入图片描述
    其中 d d d是数据维度

  • 可以看到,数据维度越大,对应的方差就越小。不过这里是用简单假设推导的,实际的复杂情况可以用实验来试试:
    在这里插入图片描述

  • 接着可以分析直接用狄拉克delta代替 p ( t ∣ z ) p(t|z) p(tz),即去掉 t t t导致的误差有多大:
    -
    在这里插入图片描述
    这里 E ( z ) E(z) E(z)约等于1,大概是 R ( z ) R(z) R(z)的千分之一,因此可以去掉 t t t,误差并不会太大。不过,由于推理阶段需要迭代采样,随着采样schedule的不同,产生的积累误差也不同。具体推导在这:
    在这里插入图片描述

  • 并且,前面的分析基于的假设是网络在学习 R ( z ∣ t ) R(z|t) R(zt)和学习 R ( z ) R(z) R(z)时都能完美拟合,但实际上学习 R ( z ∣ t ) R(z|t) R(zt)和学习 R ( z ) R(z) R(z)的难度不同,网络有可能因为学习 R ( z ∣ t ) R(z|t) R(zt)更难而学习 R ( z ) R(z) R(z)更简单,导致尽管 R ( z ) R(z) R(z)存在误差,但是网络预测与 R ( z ) R(z) R(z)之间的误差更小,使得总误差相比学习 R ( z ∣ t ) R(z|t) R(zt)要更小,即学习 R ( z ) R(z) R(z)的方法可能比学习 R ( z ∣ t ) R(z|t) R(zt)具备更优秀的性能。所以接下来就是实验部分,把网络的noisie conditioning去掉,并且找到一个使得误差足够小的采样schedule。

  • 文章对DDIM等模型做了一些实验,结果是,使用 t t t通常效果会更好,但没有 t t t其实也并不影响网络的生成能力,网络仍然能正常生成图片。只是效果不如使用 t t t的模型。文章也试了几种不使用 t t t的方案,其实结果都差不多:
    在这里插入图片描述

  • 总结,很有意思的一篇工作,虽然没有提出效果更好的模型,但是从理论和实验都展示了一个结论, t t t不是必要的,期待引入一些方法,在无 t t t的denoising generative model上有更好的效果。


http://www.ppmy.cn/server/171229.html

相关文章

【蓝桥杯嵌入式】各模块学习总结

系列文章目录 留空 文章目录 系列文章目录前言一、LED模块1.1 赛题要求1.2 模块原理图1.3 编写代码1.4 赛题实战 二、LCD模块2.1 赛题要求2.2 模块原理图2.3 编写代码2.4 赛题实战 三、按键模块3.1 赛题要求3.2 模块原理图3.3 编写代码3.4 赛题实战 四、串口模块4.1 赛题要求4…

Xcode如何高效的一键重命名某个关键字

1.选中某个需要修改的关键字; 2.右击,选择Refactor->Rename… 然后就会出现如下界面: 此时就可以一键重命名了。 还可以设置快捷键。 1.打开Settings 2.找到Key Bindings 3.搜索rename 4.出现三个,点击一个地方设置后其…

派可数据BI接入DeepSeek,开启智能数据分析新纪元

派可数据BI产品完成接入DeepSeek,此次接入标志着派可数据BI在智能数据分析领域迈出了重要一步,将为用户带来更智能、更高效、更便捷的数据分析体验。 派可数据BI作为国内领先的商业智能解决方案提供商,一直致力于为用户提供高效、稳定易扩展…

Springboot + Ollama + IDEA + DeepSeek 搭建本地deepseek简单调用示例

1. 版本说明 springboot 版本 3.3.8 Java 版本 17 spring-ai 版本 1.0.0-M5 deepseek 模型 deepseek-r1:7b 需要注意一下Ollama的使用版本: 2. springboot项目搭建 可以集成在自己的项目里,也可以到 spring.io 生成一个项目 生成的话,如下…

【Android】ViewPager的使用

AndroidManifest.xml <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"><applicationandroid:allowBac…

【Go】十七、grpc 服务的具体功能编写

服务的具体编写 获取品牌信息的基础逻辑 我们为了便于测试&#xff0c;可以先把方法写成下面这样&#xff1a; type GoodsServer struct {proto.UnimplementedGoodsServer }之后再 test/brands.go 中进行编写测试代码&#xff1a; // 创建客户端 var brandClient proto.Goo…

ESP32移植Openharmony外设篇(9)NB-IOT

NB-IOT&#xff08;窄带物联网&#xff09; 模块介绍 NB-IoT&#xff08;Narrowband Internet of Things&#xff09;是一种低功耗广域物联网&#xff08;LPWAN&#xff09;技术&#xff0c;专为低功耗、低数据速率和大规模连接的物联网应用而设计。它采用窄带宽信道和低复杂…

QtPropertyBrowser实现属性管理中的下拉框

#include <QtWidgets> #include <QtPropertyBrowser>class Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr) : QWidget(parent) {// 创建属性浏览器QtTreePropertyBrowser *browser new QtTreePropertyBrowser(this);// 创建枚举属性管…