当前位置: 首页 > news >正文

Classifier guidance与Classifier-free guidance的原理和公式推导

(Double童发发——学习笔记二)Classifier guidance与Classifier-free guidance的原理和公式推导

文章目录

    • (Double童发发——学习笔记二)Classifier guidance与Classifier-free guidance的原理和公式推导
    • 1. 原理
    • 2. 代码
    • 参考

1. 原理

Classifier GuidanceClassifier-Free Guidance方法的目标是一样的,即把一个非条件生成模型变成一个条件生成模型:

P(x)→P(x∣y)P(x)\rightarrow P(x|y)P(x)P(xy)

比如,在DDPM中的逆向过程为:

q(xt−1∣xt,x0)=N(xt−1;μ~t(xt,x0),β~tI),whereμ~t(xt,x0):=αˉt−1βt1−αˉtx0+αt(1−αˉt−1)1−αˉtxtandβ~t:=1−αˉt−11−αˉtβt\begin{aligned}q(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0)&=\mathcal{N}(\mathbf{x}_{t-1};\tilde{\boldsymbol{\mu}}_{t}(\mathbf{x}_{t},\mathbf{x}_{0}),\tilde{\beta}_{t}\mathbf{I}),\\\mathrm{where}\quad\tilde{\mu}_{t}(\mathbf{x}_{t},\mathbf{x}_{0})&:=\frac{\sqrt{\bar{\alpha}_{t-1}}\beta_t}{1-\bar{\alpha}_t}\mathbf{x}_0+\frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t}\mathbf{x}_t\quad\mathrm{and}\quad\tilde{\beta}_t:=\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t}\beta_t\end{aligned}q(xt1xt,x0)whereμ~t(xt,x0)=N(xt1;μ~t(xt,x0),β~tI),:=1αˉtαˉt1βtx0+1αˉtαt(1αˉt1)xtandβ~t:=1αˉt1αˉt1βt

如果我们加上一个条件yyy,如文本,做文生图任务:

q(xt−1∣xt,x0,y)q(x_{t-1}|x_{t},x_{0},y)q(xt1xt,x0,y)

这个过程可以用贝叶斯公式,全概率公式等等进行推导,但是比较复杂。可以通过score function直观地解释(因为score和ϵ\epsilonϵ的等价关系,可见论文Understanding Diffusion Models: A Unified Perspective),用贝叶斯定理将条件生成概率进行对数分解:

IMG_20250712_155858_edit_1502156968957246

这就是Classifier Guidance。从上式可以看到,Classifier Guidance条件生成只需额外添加一个classifier的梯度来引导。从成本上看,Classifier Guidance 需要训练噪声数据版本的classifier网络,推理时每一步都需要额外计算classifier的梯度。

Diffusion Models Beat GANs on Image Synthesis通过详细的数学推导,总结DDPM和DDIM对应的classifier guidance diffusion算法如下:

image-20250712164606821

我们通常会在这个classifier的梯度前加上一个权重系数 ω\omegaω 来调控这个分类器对整个生成过程的影响,也就是说这个 ω\omegaω 的值越大,生成结果与条件yyy更符合,但是生成图像的多样性就会下降;相反,如果取一个更小的 ω\omegaω 的值,就会导致生成的结果与条件yyy的偏离性更大,但是多样性更丰富。接着上面推导Classifier-Free Guidance

IMG_20250712_162820_edit_1503405782894556

Classifier-Free Guidance中需要训练两个模型,第一个就是带条件的模型预测带条件的噪声,还需要一个模型预测不带条件的噪声(这里替换回了ϵ\epsilonϵ),这是不需要分类器的代价。但实际上,这两个模型共用一套参数,在训练时,50%的概率将y→ϕy\rightarrow\phiyϕ。通过这种方式可以同时训练一个参数θ\thetaθ,同时实现条件生成和非条件生成。

严谨的公式推导可以看知乎的文章

image-20250712164312245

Classifier-Free Guidance的核心是通过一个隐式分类器来替代显示分类器,而无需直接计算显式分类器及其梯度。根据贝叶斯公式,分类器的梯度可以用条件生成概率和无条件生成概率表示

image-20250712164323782

把上面的分类器梯度代入到Classifier Guidance的分类器梯度中可得:

image-20250712164346899

由上可知,新的生成过程不再依赖显示的classifier,因而解决了Classifier Guidance的问题。

总的来说,训练时,Classifier-Free Guidance需要训练两个模型,一个是无条件生成模型,另一个是条件生成模型。但这两个模型可以用同一个模型表示,训练时只需要以一定概率将条件置空即可。

推理时,最终结果可以由条件生成和无条件生成的线性外推获得,生成效果可以引导系数可以调节,控制生成样本的逼真性和多样性的平衡。

2. 代码

if self.do_classifier_free_guidance:noise_pred_uncond, noise_pred_text = noise_pred.chunk(2)noise_pred = noise_pred_uncond + self.guidance_scale *(noise_pred_text - noise_pred_uncond) #这个公式就是上面我们推导出来的公式

参考

【AI知识分享】十分钟速通扩散模型中Classifier guidance与Classifier-free guidance的原理和公式推导_哔哩哔哩_bilibili

通俗理解Classifier Guidance 和 Classifier-Free Guidance 的扩散模型 - 知乎

http://www.dtcms.com/a/275790.html

相关文章:

  • 深大计算机游戏开发实验三
  • 深度学习图像分类数据集—害虫识别分类
  • 分布式数据库系统模式结构深度解析
  • Nginx 中的负载均衡策略
  • 数据统计及透视表
  • 使用Java完成下面项目
  • 引入了模块但没有使用”,会不会被打包进去
  • 【科研绘图系列】R语言绘制小提琴图
  • 基于定制开发开源AI智能名片S2B2C商城小程序的社群游戏定制策略研究
  • cuDNN 的 IMPLICIT_GEMM 算法
  • 【数据结构初阶】--顺序表(二)
  • 浅谈 Pydantic v2 的 RootModel 与联合类型——构建多请求结构的统一入口模型
  • 钉钉企业应用开发实战:从零构建组织级业务工具
  • 【LeetCode453.最小操作次数使数组元素相等】
  • leetcode-链表排序
  • Matlab中optimoptions的用法
  • docker 443错误 lookup docker.mirrors.ustc.edu.cn: no such host
  • Hap包引用的Hsp报签名错误怎么解决
  • ABSD(基于架构的软件开发)深度解析:架构驱动的工程范式
  • 初学者关于算法复杂度的学习笔记
  • goframe框架中获取url内容并转成Base64字符串
  • 【QGC】深入解析 QGC 配置管理
  • AAAI-2025 | 西交模拟人类空间推理策略的具身导航!REGNav:房间专家引导的图像目标导航
  • Linux文件的权限
  • Kotlin基础学习记录
  • 【MediaSoup】MS_DUMP打印转换为PLOGI的形式
  • Python-难点-uinttest
  • 网络资源模板--基于Android Studio 实现的记事本App
  • 通过卫星图像追踪城市扩张
  • Windows npx n8n 方式运行n8n密码忘了重置密码