论文阅读的附录(八):Understanding Diffusion Models: A Unified Perspective(五):逐步加噪评分匹配

news/2025/2/2 16:03:23/

Understanding Diffusion Models: A Unified Perspective(五):逐步加噪评分匹配

  • 文章概括
      • 1. Fisher 散度的定义
        • 问题
      • 2. 数学技巧:积分分部法(Integration by Parts)
        • 2.1 回顾积分分部法
        • 2.2 多维积分分部公式
      • 3. 重新表达 Fisher 散度的第二项
        • 3.1 第二项的原始形式
        • 3.2 替换到 Fisher 散度
        • 3.3 最终可优化的目标
      • 4. 为什么重新表达后可以绕过真实得分函数?
      • 5. 示例:一维高斯分布的评分匹配
        • 5.1 真实得分函数
        • 5.2 模型得分函数
        • 5.3 Fisher 散度展开
      • 6. 总结

文章概括

引用:

@article{luo2022understanding,title={Understanding diffusion models: A unified perspective},author={Luo, Calvin},journal={arXiv preprint arXiv:2208.11970},year={2022}
}
Luo, C., 2022. Understanding diffusion models: A unified perspective. arXiv preprint arXiv:2208.11970.

原文: https://arxiv.org/abs/2208.11970
代码、数据和视频:https://arxiv.org/abs/2208.11970


文章解析原文:
论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(五)


1. Fisher 散度的定义

Fisher 散度衡量模型得分函数 s θ ( x ) s_\theta(x) sθ(x) 和真实得分函数 ∇ log ⁡ p ( x ) \nabla \log p(x) logp(x) 的差异:
D F ( s θ , ∇ log ⁡ p ) = E p ( x ) [ ∥ s θ ( x ) − ∇ log ⁡ p ( x ) ∥ 2 2 ] . D_F(s_\theta, \nabla \log p) = \mathbb{E}_{p(x)} \left[ \| s_\theta(x) - \nabla \log p(x) \|_2^2 \right]. DF(sθ,logp)=Ep(x)[sθ(x)logp(x)22].

展开平方项:
D F ( s θ , ∇ log ⁡ p ) = E p ( x ) [ ∥ s θ ( x ) ∥ 2 2 ] − 2 E p ( x ) [ s θ ( x ) T ∇ log ⁡ p ( x ) ] + E p ( x ) [ ∥ ∇ log ⁡ p ( x ) ∥ 2 2 ] . D_F(s_\theta, \nabla \log p) = \mathbb{E}_{p(x)} \left[ \| s_\theta(x) \|_2^2 \right] - 2 \mathbb{E}_{p(x)} \left[ s_\theta(x)^T \nabla \log p(x) \right] + \mathbb{E}_{p(x)} \left[ \| \nabla \log p(x) \|_2^2 \right]. DF(sθ,logp)=Ep(x)[sθ(x)22]2Ep(x)[sθ(x)Tlogp(x)]+Ep(x)[∥∇logp(x)22].

问题
  • 第三项 E p ( x ) [ ∥ ∇ log ⁡ p ( x ) ∥ 2 2 ] \mathbb{E}_{p(x)} \left[ \| \nabla \log p(x) \|_2^2 \right] Ep(x)[∥∇logp(x)22] 与模型 s θ ( x ) s_\theta(x) sθ(x) 无关,因此可以忽略。
  • 第二项 E p ( x ) [ s θ ( x ) T ∇ log ⁡ p ( x ) ] \mathbb{E}_{p(x)} \left[ s_\theta(x)^T \nabla \log p(x) \right] Ep(x)[sθ(x)Tlogp(x)] 涉及真实得分函数 ∇ log ⁡ p ( x ) \nabla \log p(x) logp(x),我们无法直接计算。

目标:通过数学技巧,重新表达第二项,从而绕过对 ∇ log ⁡ p ( x ) \nabla \log p(x) logp(x) 的依赖。


2. 数学技巧:积分分部法(Integration by Parts)

2.1 回顾积分分部法

对于任意两个函数 u ( x ) u(x) u(x) v ( x ) v(x) v(x),积分分部公式为:
∫ u ( x ) v ′ ( x ) d x = [ u ( x ) v ( x ) ] − ∫ u ′ ( x ) v ( x ) d x . \int u(x) \, v'(x) dx = \left[ u(x) v(x) \right] - \int u'(x) v(x) dx. u(x)v(x)dx=[u(x)v(x)]u(x)v(x)dx.

我们将其推广到多维情形,涉及梯度和散度(divergence)。

2.2 多维积分分部公式

假设 u ( x ) u(x) u(x) 是一个标量函数, v ( x ) v(x) v(x) 是一个向量场,则:
∫ u ( x ) ∇ ⋅ v ( x ) d x = ∫ ∇ u ( x ) ⋅ v ( x ) d x . \int u(x) \nabla \cdot v(x) \, dx = \int \nabla u(x) \cdot v(x) \, dx. u(x)v(x)dx=u(x)v(x)dx.

如果 p ( x ) p(x) p(x) 是概率密度函数,其积分在边界快速衰减为零,则有:
E p ( x ) [ ∇ ⋅ v ( x ) ] = − E p ( x ) [ ∇ log ⁡ p ( x ) ⋅ v ( x ) ] . \mathbb{E}_{p(x)} \left[ \nabla \cdot v(x) \right] = -\mathbb{E}_{p(x)} \left[ \nabla \log p(x) \cdot v(x) \right]. Ep(x)[v(x)]=Ep(x)[logp(x)v(x)].


3. 重新表达 Fisher 散度的第二项

3.1 第二项的原始形式

目标是重新表达:
E p ( x ) [ s θ ( x ) T ∇ log ⁡ p ( x ) ] . \mathbb{E}_{p(x)} \left[ s_\theta(x)^T \nabla \log p(x) \right]. Ep(x)[sθ(x)Tlogp(x)].

利用积分分部公式:
E p ( x ) [ s θ ( x ) T ∇ log ⁡ p ( x ) ] = − E p ( x ) [ ∇ ⋅ s θ ( x ) ] . \mathbb{E}_{p(x)} \left[ s_\theta(x)^T \nabla \log p(x) \right] = -\mathbb{E}_{p(x)} \left[ \nabla \cdot s_\theta(x) \right]. Ep(x)[sθ(x)Tlogp(x)]=Ep(x)[sθ(x)].

3.2 替换到 Fisher 散度

将第二项替换后,Fisher 散度变为:
D F ( s θ , ∇ log ⁡ p ) = E p ( x ) [ ∥ s θ ( x ) ∥ 2 2 ] + 2 E p ( x ) [ ∇ ⋅ s θ ( x ) ] . D_F(s_\theta, \nabla \log p) = \mathbb{E}_{p(x)} \left[ \| s_\theta(x) \|_2^2 \right] + 2 \mathbb{E}_{p(x)} \left[ \nabla \cdot s_\theta(x) \right]. DF(sθ,logp)=Ep(x)[sθ(x)22]+2Ep(x)[sθ(x)].

这是一种可计算的目标函数,因为:

  • 第一个期望项 E p ( x ) [ ∥ s θ ( x ) ∥ 2 2 ] \mathbb{E}_{p(x)} \left[ \| s_\theta(x) \|_2^2 \right] Ep(x)[sθ(x)22] 只依赖于模型 s θ ( x ) s_\theta(x) sθ(x)
  • 第二个期望项 E p ( x ) [ ∇ ⋅ s θ ( x ) ] \mathbb{E}_{p(x)} \left[ \nabla \cdot s_\theta(x) \right] Ep(x)[sθ(x)] 是散度,模型 s θ ( x ) s_\theta(x) sθ(x) 的梯度也可计算。
3.3 最终可优化的目标

最终,我们无需知道真实得分函数 ∇ log ⁡ p ( x ) \nabla \log p(x) logp(x),即可优化模型 s θ ( x ) s_\theta(x) sθ(x)
E p ( x ) [ ∥ s θ ( x ) ∥ 2 2 + 2 ∇ ⋅ s θ ( x ) ] . \mathbb{E}_{p(x)} \left[ \| s_\theta(x) \|_2^2 + 2 \nabla \cdot s_\theta(x) \right]. Ep(x)[sθ(x)22+2∇sθ(x)].


4. 为什么重新表达后可以绕过真实得分函数?

重新表达后:

  • ∥ s θ ( x ) ∥ 2 2 \| s_\theta(x) \|_2^2 sθ(x)22:完全依赖模型 s θ ( x ) s_\theta(x) sθ(x),直接计算。
  • ∇ ⋅ s θ ( x ) \nabla \cdot s_\theta(x) sθ(x):是模型的散度,也完全可计算。
  • 原始目标中的 ∇ log ⁡ p ( x ) \nabla \log p(x) logp(x) 被替换掉,因此不再依赖真实数据分布的得分函数。

5. 示例:一维高斯分布的评分匹配

假设数据分布为一维标准正态分布:
p ( x ) = 1 2 π e − x 2 2 . p(x) = \frac{1}{\sqrt{2\pi}} e^{-\frac{x^2}{2}}. p(x)=2π 1e2x2.

5.1 真实得分函数

真实得分函数为:
∇ log ⁡ p ( x ) = − x . \nabla \log p(x) = -x. logp(x)=x.

5.2 模型得分函数

假设模型得分函数为 s θ ( x ) = − θ x s_\theta(x) = -\theta x sθ(x)=θx,其中 θ \theta θ 是待学习的参数。

5.3 Fisher 散度展开

展开 Fisher 散度:
D F ( s θ , ∇ log ⁡ p ) = E p ( x ) [ ∥ s θ ( x ) − ∇ log ⁡ p ( x ) ∥ 2 2 ] . D_F(s_\theta, \nabla \log p) = \mathbb{E}_{p(x)} \left[ \| s_\theta(x) - \nabla \log p(x) \|_2^2 \right]. DF(sθ,logp)=Ep(x)[sθ(x)logp(x)22].

重新表达目标:
E p ( x ) [ s θ ( x ) 2 ] + 2 E p ( x ) [ ∇ ⋅ s θ ( x ) ] . \mathbb{E}_{p(x)} \left[ s_\theta(x)^2 \right] + 2 \mathbb{E}_{p(x)} \left[ \nabla \cdot s_\theta(x) \right]. Ep(x)[sθ(x)2]+2Ep(x)[sθ(x)].

具体计算:

  1. E p ( x ) [ s θ ( x ) 2 ] = θ 2 E p ( x ) [ x 2 ] = θ 2 . \mathbb{E}_{p(x)} \left[ s_\theta(x)^2 \right] = \theta^2 \mathbb{E}_{p(x)} \left[ x^2 \right] = \theta^2. Ep(x)[sθ(x)2]=θ2Ep(x)[x2]=θ2.
  2. ∇ ⋅ s θ ( x ) = − θ . \nabla \cdot s_\theta(x) = -\theta. sθ(x)=θ.

最终目标:
D F ( s θ , ∇ log ⁡ p ) = θ 2 − 2 θ . D_F(s_\theta, \nabla \log p) = \theta^2 - 2\theta. DF(sθ,logp)=θ22θ.

通过优化 D F D_F DF,我们可以得到最优参数 θ = 1 \theta = 1 θ=1,使得 s θ ( x ) = ∇ log ⁡ p ( x ) = − x s_\theta(x) = \nabla \log p(x) = -x sθ(x)=logp(x)=x


6. 总结

通过积分分部法,Fisher 散度中的真实得分函数 ∇ log ⁡ p ( x ) \nabla \log p(x) logp(x) 被散度项 ∇ ⋅ s θ ( x ) \nabla \cdot s_\theta(x) sθ(x) 替代。评分匹配无需直接访问 ∇ log ⁡ p ( x ) \nabla \log p(x) logp(x),使得在未知真实分布的情况下也能训练得分函数。


http://www.ppmy.cn/news/1568734.html

相关文章

【4. C++ 变量类型详解与创新解读】

本章目录: 前言什么是变量?C 基本变量类型1. 基本类型2. 扩展类型 自动类型转换与强制类型转换自动类型转换强制类型转换 声明与定义声明定义 左值与右值结语 前言 在C中,变量是程序存储数据的基本单元。变量的定义和使用涉及多种类型和规则&#xff0c…

认识小程序的基本组成结构

1.基本组成结构 2.页面的组成部分 3.json配置文件 4.app.json文件(全局配置文件) 5.project.config.json文件 6.sitemap.json文件 7.页面的.json配置文件 通过window节点可以控制小程序的外观

零代码搭建个人博客—Zblog结合内网穿透发布公网

目录 一、准备工作二、Z-blog 网站搭建1. XAMPP 环境设置2. Z-blog 安装3. Z-blog 网页测试 三、内网穿透工具 Cpolar 的安装和配置1. Cpolar 安装2. Cpolar 云端设置3. Cpolar 本地设置 四、本地网页发布五、注意六、本次经历总结 大家好,我是学问小小谢。 最近心血…

04树 + 堆 + 优先队列 + 图(D1_树(D2_二叉树(BT)(D1_基础学习)))

目录 一、简介 二、二叉树的类型 1. 严格二叉树 2. 满二叉树 3. 完全二叉树 三、二叉树的性质 四、二叉树的结构 五、二叉树的操作 1. 基本操作 2. 辅助操作 六、二叉树的应用 七、二叉树的遍历 1. 简介 2. 遍历方式 3. 遍历的分类:4类 3.1. 前序遍历…

HTML一般标签和自闭合标签介绍

在HTML中,标签用于定义网页内容的结构和样式。标签通常分为两类:一般标签(也称为成对标签或开放闭合标签)和自闭合标签(也称为空标签或自结束标签)。 以下是这两类标签的详细说明: 一、一般标…

代码随想录算法训练营第三十九天-动态规划-337. 打家劫舍 III

老师讲这是树形dp的入门题目解题思路是以二叉树的遍历(递归三部曲)再结合动规五部曲dp数组如何定义:只需要定义一个二个元素的数组,dp[0]与dp[1] dp[0]表示不偷当前节点的最大价值dp[1]表示偷当前节点后的最大价值这样可以把每个节…

61.异步编程1 C#例子 WPF例子

和普通的任务绑定不太相同的部分如下: public MainWindowViewModel(){FetchUserInfoCommand new RelayCommand(async (param) > await FetchUserInfoAsync());}private async Task FetchUserInfoAsync(){// 模拟异步操作,比如网络请求await Task.Del…

无线通信与人工智能技术与发展年度总结

2024年,无线通信与人工智能技术取得了显著的进步和突破,这些技术的革新不仅推动了行业的数字化转型,还为全球经济的持续发展注入了新的活力。以下是对无线通信与人工智能技术在这一年发展的详细总结。 #### 无线通信技术的飞速演进 无线通信…