谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

来源丨新智元

编辑丨极市平台

极市导读

在NLP领域,研究者们已经充分认识并认可了表征学习的重要性,那么视觉领域的生成模型呢?最近,谢赛宁团队发表的一篇研究就拿出了非常有力的证据:Representation matters!>>

扩散模型如何突破瓶颈?成本高又难训练的DiT/SiT模型如何提升效率?

对于这个问题,纽约大学谢赛宁团队最近发表的一篇论文找到了一个全新的切入点:提升表征(representation)的质量。

论文的核心或许就可以用一句话概括:「表征很重要!」

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

用谢赛宁的话来说,即使只是想让生成模型重建出好看的图像,仍然需要先学习强大的表征,然后再去渲染高频的、使图像看起来更美观的细节。

这个观点,Yann LeCun之前也多次强调过。

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

有网友还在线帮谢赛宁想标题:你这篇论文不如就叫「Representation is all you need」(手动狗头)

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

由于观点一致,这篇研究也获得了同在纽约大学的Yann LeCun的转发。

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍
当使用自监督学习训练视觉编码器时,我们知道一个事实,使用具有重建损失(reconstruction loss)的解码器的效果远远不如具有特征预测损失(feature prediction loss)和崩溃预防机制的联合嵌入架构。
这篇来自纽约大学谢赛宁团队的论文表明,即使只对生成像素感兴趣(例如,使用扩散Transformer生成漂亮的图片),包含特征预测损失也是值得的,以便解码器的内部表示可以基于预训练的视觉编码器(例如 DINOv2)进行特征预测。

REPA的核心思想非常简单,就是让扩散模型中的表征与外部更强大的视觉表征进行对齐,但提升效果非常显著,颇有「他山之石,可以攻玉」的意味。

仅仅是在损失函数添加一项相似度最大化,就能将SiT/DiT的训练速度提升将近18倍,还刷新了模型的SOTA性能,在ImageNet 256x256上实现了最先进的FID=1.42。

谢赛宁表示,刚看到实验结果时,他自己也被震惊到了,因为感觉并没有发明什么全新的东西,而只是意识到了,我们几乎完全不理解扩散模型和SSL方法学习到的表示。

论文简介

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

论文地址:https://arxiv.org/abs/2410.06940

项目地址:https://sihyun.me/REPA/

在生成高维的视觉数据方面,基于去噪方法(如扩散模型)或基于流的生成模型,已经成为了一种可扩展的途径,并在有挑战性的的零样本文生图/文生视频任务上取得了非常成功的结果。

最近的研究表明,生成扩散模型中的去噪过程可以在模型内部的隐藏状态中引入有意义的表示,但这些表示的质量目前仍落后于自监督学习方法,例如DINOv2。

作者认为,训练大规模扩散模型的一个主要瓶颈,就在于无法有效学习到高质量的内部表示。

如果能够结合高质量的外部视觉表示,而不是仅仅依靠扩散模型来独立学习,就可以使训练过程变得更容易。

为了实现这一点,论文基于经典的扩散Transformer架构,引入了一种简单的正则化方法REPA(REPresentation Alignment)。

简单来说, 就是将去噪网络中从噪声输入  得到的隐藏状态  的投影, 与外部自监督预训练的视觉编码器从干净图像x获得的视觉表示y*进行对齐。

这样一个非常直给的策略,却获得了惊人的结果:应用于流行的SiT或DiT时,模型的训练效率和生成质量都得到了显著提高。

具体来说,REPA可以将SiT的训练速度加快17.5×以上,以不到40万步的训练量匹配有700万步训练的SiT-XL模型的性能,同时实现了FID=1.42的SOTA结果。

REPA:使用表征对齐的正则化

统一视角的扩散模型+流模型

由于论文希望同时优化基于流的模型SiT和基于去噪的扩散模型DiT,因此首先从统一的随机插值视角,对这两种模型进行简要的回顾。

考虑在t∈[0,T]的连续时间步中,对数据𝐱*~p(𝐱)使用高斯分布ε~𝓝(0,𝐈)添加随机噪音:

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

其中,αt和σt分别表示t的递减和递增函数。在公式(1)给定的过程中,存在一个带有速度场(velocity field)的概率流常微分方程:

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

其中t步时的分布就等于边际概率pt(𝐱)。

速度𝐯(𝐱,t)可以表示为如下两个条件期望之和:

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

这个值可以通过最小化如下训练目标得到近似值𝐯θ(𝐱,t):

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

同时,还存在一个反向的随机微分方程(SDE),带有扩散系数wt,其中的边际概率pt(𝐱)与公式(2)相符:

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

其中,𝐬(𝐱t,t)是一个条件期望值,定义为:

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

对任意t>0,都可以通过速度𝐯(𝐱,t)计算出𝐬(𝐱,t)的值:

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

这表明,数据𝐱t也可以通过求解公式(5)的SDE来以另一种方式生成。

以上定义对类似的扩散模型变体,例如DDPM,同样适用,只是需要将连续的时间步离散化。

方法概述

令p(𝐱)为数据𝐱∈𝓧的未知目标分布,我们的训练目标就是通过模型对数据的学习得到p(𝐱)的近似。

为了降低计算成本,最近流行的「潜在扩散」方法(latent diffusion)提出学习潜在变量𝐳=E(𝐱)的分布p(𝐳),其中E表示来自预训练自编码器(例如KL-VAE)中的编码部分。

要学习到分布p(𝐳),就需要训练扩散模型𝐯θ(𝐳t,t),训练目标是进行速度预测,具体方法如上一节所述。

放在自监督表示学习的背景中,可以将扩散模型看成编码器fθ:𝓩⭢𝓗和解码器gθ:𝓗⭢𝓩的组合,其中编码器负责隐式地学习到表示𝐡t以重建目标𝐯t。

然而,作者提出,用于生成的大型扩散模型并不擅长表征学习,因此REPA引入了外部的语义丰富的表示,从而显著提升生成性能。

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

REPA方法概述

模型观察

扩散模型是否真的不擅长表征学习?这需要更进一步地观察模型才能确定,为此,研究人员测量并比对了diffusion transformer和当前的SOTA自监督模型DINOv2之间的表征差距,包括语义差距和特征对齐两种角度。

语义差距

从图2a可知,预训练SiT的隐藏层表示在第20层达到最佳状态,这与之前的研究结果相符,但仍远远落后于DINOv2。

特征对齐

如图2b和2c所示,使用CKNNA值测量SiT和DINOv2之间的表征对齐程度后发现,SiT的对齐效果会随着模型增大和训练迭代步数增加而逐渐改善,但即使增加到7M次迭代,和DINOv2之间的对齐程度仍然不足。

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

事实上,这种差距不仅在SiT中存在,根据附录C.2的实验结果,DiT等其他基于去噪的生成式Transformer模型也存在类似的问题。

缩小表征差距

那么,REPA方法究竟如何缩小这种表征差距,让diffusion transformer在噪声输入中也能学到有用的语义特征?

定义N,D分别表示patch数量预训练编码器f的嵌入维度,编码器输入为无噪声的图像𝐱,输出为𝐲=f(𝐱*)∈ℝN×D。

Diffusion transformer将编码器输出𝐡t=fθ(𝐳t)通过一个可训练的投影头hφ(MLP)投影为hφ(𝐡t)∈ℝN×D。

之后,REPA负责将hφ(𝐡t)与𝐲*进行对齐,通过最大化两者间的patch间相似度:

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

在实际实现中,将这一项添加到公式(4)定义的基于扩散的训练目标中,就得到总体的训练目标:

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

其中超参数λ>0用于控制模型在去噪目标和表征对齐间的权衡。

从图3结果可知,REPA减少了表示中的语义差距。

有趣的是,使用REPA后,仅对齐前几个Transformer块就能实现足够程度的表示对齐,从而让diffusion transformer的靠后层专注于捕获高频细节,从而进一步提高生成性能。

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

实验结果

为了验证REPA方法的有效性,实验在两种流行的扩散模型训练目标(即𝓛velocity)上进行了实验,包括DiT中改进后的DDPM和SiT中的线性随机插值,但实际中也同样可以考虑其他的训练目标。

所用模型默认严格遵循SiT和DiT的原始结构(除非有特别说明),包括B/2、L/2、XL/2三种参数设置,如表1所示。

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

以下实验旨在回答3个问题:

REPA能否显著提升diffusion transformer的训练?

REPA在模型规模和表征质量方面是否具有可扩展性?

扩散模型的表征能否和多种视觉表征进行对齐?

REPA提升视觉缩放

首先比较两个SiT-XL/2模型在前400K次迭代期间生成的图像,它们共享相同的噪声、采样器和采样步数,但其中使用REPA训练的模型显示出更好的进展。

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

REPA在各个方面都展现出了强大的可扩展性

研究人员还改变了预训练编码器和Diffusion Transformer的模型大小来检验REPA的可扩展性。

图5a结果表明,与更好的视觉表示相结合可以改善生成效果和线性探测的结果。

此外,如图5b和c所示,增加模型大小可以在生成和线性评估方面带来更快的收益,也就是说,模型规模越大,REPA的加速效果越明显,表现出了强大的可扩展性。

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

REPA显著提高训练效率和生成质量

最后,论文比较了普通DiT或SiT模型在训练中使用REPA前后的FID值。

在没有指导的情况下,REPA在400K次迭代时实现了FID=7.9,优于普通模型在7M次迭代后的性能。

此外,使用无分类器引导时,带有REPA的SiT-XL/2的性能优于SOTA性能(FID=1.42),同时迭代次数减少了7倍。

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

作者介绍

Sihyun Yu

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

本文一作Sihyun Yu是KAIST(韩国科学技术院)人工智能专业最后一年的博士生,此前他同样在KAIST获得了数学和计算机科学的双专业学士学位。他的研究主要集中在减少大型生成模型训练(和采样)的内存和计算负担,其中,对大规模且高效的视频生成特别感兴趣;博士期间,他还曾在英伟达和谷歌研究院担任实习生。

参考资料:

https://x.com/sainingxie/statdus/1845510163152687242

www.zeeklog.com  - 谢赛宁新作:表征学习有多重要?一个操作刷新SOTA,DiT训练速度暴涨18倍

极市干货

技术专栏:||||

技术综述:||

Read more

科普文:Write Code Every Day 编程每一天

科普文:Write Code Every Day 编程每一天

我决定给自己定下几条规则: 1. 每天编写代码。我可以撰写文档、博客、或者做任何其他事情,但必须在写完代码之后。 2. 代码必须可用。无需调整缩进,无需重新格式化,尽可能无需重构。 3. 所有代码必须在午夜前写完。 4. 代码必须开源在 GitHub 上。 上述规则难免过于武断。代码不一定非要在午夜前写完,我这么说只是为了避免过度劳累,导致不良代码的产生。把代码放在 Github 上,是为了强迫自己更加细心(让自己尽早考虑代码重用以及模块化)。 截至目前,我已经连续工作接近二十周时间,而且取得了显著的成功。我想告诉大家,这种策略改变了我编写代码的工作方式,对我的生活和精神产生了巨大的影响。 以下是习惯改变之后发生在我身上的几件趣事: 最小可用代码。我每天强制自己编写代码不少于三十分钟。有时候工作时间可能稍长一些(但一般不超过一个小时),周末的时候,我常常工作一整天。 编程是一个习惯。有一点需要注意的是,我并不特别在意代码在 Github 上的受关注程度。我认为我从这项实验中得到的最大收获是:这是我为我自己做出的改变,与其他人无关,我不想以此取悦任何人。就像培养个人饮

By Ne0inhk
科普文:软件架构数据库系列之【MySQL前世今生及其体系结构概叙】

科普文:软件架构数据库系列之【MySQL前世今生及其体系结构概叙】

一、基本概念 OLTP(On-Line transaction processing) OLTP:联机事务处理,主要对数据库增删改查。 OLTP 主要用来记录某类业务事件的发生;数据会以增删改的方式在数据库中进行数据的更新处理操作,要求实时性高、稳定性强、确保数据及时更新成功。 OLAP(On-Line Analytical Processing) OLAP:联机分析处理,主要对数据库查询。 当数据积累到一定的程度,我们需要对过去发生的事情做一个总结分析时,就需要把过去一段时间内产生的数据拿出来进行统计分析,从中获取我们想要的信息,为公司做决策提供支持,这时候就是在做 OLAP 。 数据库(Database) 数据库(DB)是一个按照数据结构来组织、存储和管理数据的仓库,通俗点,就是存储数据的仓库。 数据库是一个电子化的文件夹,存储了一些特定的数据。在MySQL中,数据库是在文件系统中创建的,具有特定的结构,用于存储表和索引等数据库对象。 数据库实例(Instance) 数据库实例是一个运行的服务器,它处理数据库操作。实例通过后台进程(如mysqld)运行

By Ne0inhk
科普文:软件架构数据库系列之【MySQL存储引擎InnoDB】

科普文:软件架构数据库系列之【MySQL存储引擎InnoDB】

概叙 前面我们梳理了MySQL体系结构,涉及到innodb的并未进行详细说明,故在此文中进行补充说明。 为了更好的理解Innodb,这里还是和前面MySQL体系结构一文中一样,保持一样的结构。重复的章节就不再描述,重点描述Inodb引擎。 MySQL体系架构 MySQL是由SQL接口,解析器,优化器,缓存,存储引擎组成的(SQL Interface、 Parser、 Optimizer、Caches&Buffers、Pluggable Storage Engines) 1. 客户端:Connectors指的是不同语言中与SQL的交互,含jdbc驱动、mysql客户端、以及一些mysql链接工具(sqlYong、Navcat等等)。 2. 服务层(MySQL Server) 1. Management Serveices & Utilities: 系统管理和控制工具,例如备份恢复、Mysql复制、集群等 2. Connection Pool: 连接池:

By Ne0inhk
科普文:软件架构系列之【可用性和可靠性及其衡量标准】

科普文:软件架构系列之【可用性和可靠性及其衡量标准】

一、RTO/RPO 保障系统能在足够长的时间内提供指定程度的服务,衡量数据库系统的可用性用RTO和RPO;     (1)RTO(Recovery Time Obejective,恢复时间指标):故障恢复过程中所需的时间花费。故障发生后,从IT系统停止服务开始,到IT服务系统恢复为止,此两点之间的时间段成为RTO,比如:故障发生后系统服务在12小时内便可恢复,那么RTO值就是12小时,对数据库系统而言,RTO通常需要控制在秒到分钟级别,该项指标是描述系统可用的指标之一,不能完全代表可用性。     (2)RPO(Recovery Point Objective,恢复时间点目标):数据恢复后对应的时间点。即数据可恢复到哪个时间点上,该时间点之后的数据都会丢失,该值越小越好。如果数据库采用主备强同步或者多基于共识协议的副本技术,后者数据库依赖分布式文件系统,则RPO的值可以确保为0,即数据不丢失,该项指标更多的是在描述系统的可靠性,唯有可靠才更可用。 二、SLA SLA是在传统领域,在商业上定义系统的高可用性时采用SLA(Service Level Agreement,服务等级协议

By Ne0inhk