Guidance,让扩散模型的指标更能打

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
简介: Guidance,让扩散模型的指标更能打

扩散模型的悲惨开始

搞AI的都知道,一个模型好不好空口无凭,我们必须要用数据说话。但是扩散模型刚出来的时候存在一个问题,就是图片我们用人眼看起来好像效果还是挺好的,但是在数值上就是打不过GAN生成的图像,所谓的数值上就是在评价指标上,比如FID score和IS score。就算我们直接把图片放到论文中,人家也可能会质疑说,你这些图片肯定是把效果好的放出来了,效果不好的根本就没让我们看吧。所以如果数值提不上去,论文很难有说服力,审稿人那一关就过不了。所以很重要的一个努力方向就是提高模型的指标。另外还有一个问题就是模型的采样是按照时间步来的嘛,这样比较慢。所以大家就在想办法改进这些地方。就引出了我们今天要讲的东西,借助一些技巧或者guidance来帮助引导模型训练和采样。

其实在之前的这篇文章【翻译】最近兴起的扩散模型提过一嘴引导扩散这个事,今天就把它展开讲讲。

从uncondition到condition

我们扩散模型的反向过程是给定$x_T$时刻的输入,从$x_T$生成$x_{T-1}$,这样逐步一直到恢复图像$x_0$。恢复过程每一步用的都是一个U-Net,不停地采样、生成、采样、生成,算算算。

image.png

我们将每一步的过程formulate一下就是$f_\theta(x_t,t)$,就是时间步t的生成需要两个输入信息:

  1. 当前时间步的输入$x_t$
  2. 当前时间步$t$

引入guidance之后给模型提供指导,这个指导我们用$\mathbf y$表示,那我们就可以得到修改之后的网络$f_\theta(x_t,t,\mathbf y)$。接下来我们就来看一下$\mathbf y$究竟可以变成什么。


classifier guided diffusion

image.png

classifier gudied diffusion 就是在我们训练模型的同时 再 额外训练一个图像分类器,在很多论文中的实现方法就是直接用ImageNet的数据集去训练一个图像分类器,由于扩散模型的特性是从每一步的噪声图像中恢复,所以训练分类器的过程中是不断对ImageNet的图像加噪之后再训练分类器。

这个分类器的作用是:当我们拿到图片$x_t$之后,我们可以知道它分类的对不对,通过使用交叉熵目标函数,会得到一些梯度,然后我们用这些梯度去帮助模型进行接下来的采样和生成。

分类器的梯度暗含当前图片的一些信息,比如是否含有某个物体,比如图片是否真实等 。这个梯度引导就是给U-Net传递信息,我现在生成的图片要像什么东西。

经过classifier gudied diffusion的引导之后,生成的图片保真性就提高了很多,在FID score和IS score等指标上大幅度提高,扩散模型也第一次在评价指标的数值上超越了big GAN。详细的可以看《diffusion model beat GAN》这篇论文。这个做法是牺牲了一部分的多样性来换取图片的真实性,但是这个取舍是值得的,它的多样性依旧是比GAN要好很多的。评价指标数值提上来了,多样性还能吊打你,这样就开始奠定了新一位大魔王的地位了。

GAN、VAE、Diffusion model等生成模型如果大家不了解可以浅浅看一下这个文章:图像生成模型简介 - 掘金 (juejin.cn)

简单classifier之后的思路

除了用分类器我们还能借助什么产生指导信号呢?比如换成CLIP模型,这样文本和图像还能联系起来,这样我们就不止可以使用梯度来引导图像生成了,还可以使用文本信息来引导图像生成。

还有用语言模型进行文本方向引导的,利用图片的一些小任务引导的等等。


通过上述两大类改进方法,我们可以归结起来引导扩散模型生成和采样的一大方向就是:

$$ p(x_{t-1}|x_t) = \| \epsilon - f_\theta(x_t,t,\mathbf y) \| $$

其中的$\mathbf y$就是我们选定的控制方法。

但是这个方法有一个缺陷,就是我们需要借助另外一个模型进行引导。简单的分类器都要用带噪声的ImageNet数据集进行训练,更别说CLIP或者其他预训练的大型语言模型了。这样成本比较高,训练过程也是不可控的。


classifier-free guidance

因为我们上边提到的一些缺陷,所以有研究人员开始考虑不需要额外模型的方法,也就是classifier-free。不使用classifier之后我们能不能找到一种指导信号去让模型生成的更好呢?

在模型训练阶段让其产生两个输出,一个是在有条件的情况下产生的输出,一个是在无条件下产生的输出。

$$ f_\theta(x_t,x,\mathbf y) - f_\theta(x_t,x,\phi) $$

比如你用文本控制图像生成,训练时候用的是图像文本对,文本作为guidance信号。此时$\mathbf y$就是文本,你在训练的时候用$\mathbf y$去生成图像$f_\theta(x_t,x,\mathbf y)$,然后在某些情况下你随机去掉这个信号,取而代之传入一个空集$\phi$,再去生成另外一个输出$f_\theta(x_t,x,\phi)$,这样你就可以在生成图像的分布空间中知道有条件和无条件图像的距离,我们就可以知道在这个分布空间上如何从无条件输出得到有条件的输出,通过训练我们就可以知道有条件、无条件的差距是多少,最后去做图像生成的时候,即使我们没有条件去做生成,也可以获得一个比较合理的输出结果。这样就摆脱了分类器。

但是这样存在一个问题就是训练代价比较昂贵,扩散模型的训练本来就很烧钱,现在居然要一次做两个输出,一个有条件一个无条件,这样又增加很多成本。

但是这个真的是很好用的方法,GLIDE、DALL·E 2、Imagen等模型都用到了这个技巧。

相关文章
DDR3L内存,12800S/12800R/12800L分别是什么意思?
DDR3L内存,12800S/12800R/12800L分别是什么意思?
1625 0
|
11月前
|
Java 应用服务中间件 Maven
如何将 Spring Boot 应用程序部署为 WAR?
如何将 Spring Boot 应用程序部署为 WAR?
556 1
|
Python
【报错】Could not install packages due to an OSError: [Errno 2] No such file or directory: ‘/METADATA‘
【报错】Could not install packages due to an OSError: [Errno 2] No such file or directory: ‘/METADATA‘
2987 1
|
9月前
|
人工智能 搜索推荐 算法
解决方案评测|主动式智能导购AI助手构建
阿里云的主动式智能导购AI助手是电商商家提升用户体验和销量的利器。它能实时分析用户行为,提供个性化推荐,支持多渠道无缝对接,并具备语音和文本交互功能。通过注册阿里云账号、开通服务、配置项目、设置推荐策略、集成到平台并测试优化,商家可以轻松部署这一工具。关键代码示例帮助理解API对接和数据处理。建议增强个性化推荐算法、优化交互体验并增加自定义选项,以进一步提升效果。
587 11
|
8月前
|
小程序 测试技术 数据安全/隐私保护
微信公众号接口测试实战指南
微信公众号接口测试是确保系统稳定性和功能完整性的重要环节。本文详细介绍了测试全流程,包括准备、工具选择(如Postman、JMeter)、用例设计与执行,以及常见问题的解决方法。通过全面测试,可以提前发现潜在问题,优化用户体验,确保公众号上线后稳定运行。内容涵盖基础接口、高级接口、微信支付和数据统计接口的测试,强调了功能验证、性能优化、安全保护及用户体验的重要性。未来,随着微信生态的发展,接口测试将面临更多挑战和机遇,如小程序融合、AI应用和国际化拓展。
|
并行计算 PyTorch 算法框架/工具
基于CUDA12.1+CUDNN8.9+PYTORCH2.3.1,实现自定义数据集训练
文章介绍了如何在CUDA 12.1、CUDNN 8.9和PyTorch 2.3.1环境下实现自定义数据集的训练,包括环境配置、预览结果和核心步骤,以及遇到问题的解决方法和参考链接。
715 4
基于CUDA12.1+CUDNN8.9+PYTORCH2.3.1,实现自定义数据集训练
|
11月前
|
监控 负载均衡 Kubernetes
深入探索微服务架构中的服务治理
深入探索微服务架构中的服务治理
343 0
|
搜索推荐
Edge——如何屏蔽CSDN搜索结果
Edge——如何屏蔽CSDN搜索结果
396 1
Edge——如何屏蔽CSDN搜索结果
|
小程序
Taro@3.x+Vue@3.x+TS开发微信小程序,上传文件
本文介绍如何在Taro项目中使用Nut UI的`<nut-uploader/>`组件实现图片上传功能,并通过示例代码展示了自定义上传逻辑的方法。
465 0
Taro@3.x+Vue@3.x+TS开发微信小程序,上传文件
|
自然语言处理 Java
CoreNLP server的开启与使用方法
Ubuntu20.04.2系统本身不含有JDK,而CoreNLP需要依赖JDK进行运行,所以需要先安装好JDK,可以输入java,然后系统会自动提示没有安装JDK,并会推荐安装的版本
335 0

热门文章

最新文章