当前位置: 首页 > 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.xdnf.cn/news/1110043.html

相关文章:

  • 【STM32实践篇】:最小系统组成
  • 深入详解:决策树在医学影像领域心脏疾病诊断的应用及实现细节
  • Pytest 跳过测试技巧:灵活控制哪些测试该跑、哪些该跳过
  • 图像扭曲增强处理流程
  • 物联网设备数据驱动3D模型的智能分析与预测系统
  • frp内网穿透教程及相关配置
  • 【Redis实战】Widnows本地模拟Redis集群的2种方法
  • Git 相关的常见面试题及参考答案
  • 国产电钢琴电子琴手卷钢琴对比选购指南
  • 2025年亚太杯(中文赛项)数学建模B题【疾病的预测与大数据分析】原创论文讲解(含完整python代码)
  • ESP32使用freertos更新lvgl控件内容
  • 搭建云手机教程
  • 聊下easyexcel导出
  • Java可变参数
  • 从基础加热到智能生态跨越:艾芬达用创新重构行业价值边界!
  • Go mod 依赖管理完全指南:从入门到精通
  • 代码随想录day28贪心算法2
  • 【AI News | 20250711】每日AI进展
  • Spring(四) 关于AOP的源码解析与思考
  • Java SE--抽象类和接口
  • 如何查看服务器当前用户的权限
  • GD32 CAN1和TIMER0同时开启问题
  • 深度学习15(GRU、LSTM+词嵌入+seq2seq+attention)
  • 电子基石:硬件工程师的器件手册 (五) - 三极管:电流放大的基石与开关的利刃
  • 7. JVM类加载器与双亲委派模型
  • 关于两种网络攻击方式XSS和CSRF
  • 二分法寻找无序序列的峰值
  • [Token]Token merging for Vision Generation
  • 学python,PyCharm 和 VSCode哪个更好用?
  • ChatRex RexSeek RexThinker: 结合多模态大语言模型的目标检测模型构建