#Time Travelling Pixels (TTP)

一种名为“时空旅行”(TTP)的新方法,该方法将SAM基础模型的通用知识整合到变化检测任务中。该方法有效地解决了在通用知识转移中的领域偏移问题,以及大模型在表达多时相图像同质性和异质性特征时的挑战。基于大模型的遥感图像变化检测

“Time Travelling Pixels: Bitemporal Features Integration with Foundation Model for Remote Sensing Image Change Detection”(时空旅行:基于大模型双时相特征融合的遥感图像变化检测)

Paper: https://arxiv.org/abs/2312.16202

Code: https://github.com/KyanChen/TTP

变化检测是遥感领域的一个重要研究领域,对于观察和分析地表变化起着关键作用。尽管基于深度学习的方法在该领域取得了显著的成果,但在时空复杂的遥感场景中执行高精度的变化检测仍然是一个重大挑战。最近流行的基础模型,凭借其强大的通用能力和泛化能力,为该问题提供了潜在的解决方案。然而,如何弥补不同数据域和任务域之间的鸿沟仍然是一个挑战。在本文中,作者介绍了一种名为“时空旅行”(TTP)的新方法,该方法将SAM基础模型的通用知识整合到变化检测任务中。该方法有效地解决了在通用知识转移中的领域偏移问题,以及大模型在表达多时相图像同质性和异质性特征时的挑战。在LEVIR-CD上取得的SOTA结果证明了TTP的有效性。

随着对地观测技术的发展,遥感图像变化检测已经成为该领域研究的前沿和热点。其主要目标是分析多时相遥感产品中感兴趣的变化,这些变化通常表现为像素级的二元分类(变化/未变化)。遥感地面的动态属性不仅受自然因素的影响,也受人类活动的影响。精确感知这些变化对于土地覆盖的定量分析具有极其重要的意义,可以作为描绘宏观经济趋势、人类活动和气候变化的有力工具。

高分辨率遥感图像已经成为复杂变化检测的有力工具。然而,在复杂场景中执行稳健的变化检测仍然是一个艰巨的挑战。变化检测聚焦“非语义变化”中的“有效变化”,即,由大气条件、遥感器、配准等引起的非语义变化,以及与下游应用无关的语义变化都应该被忽略。这对开展精准的变化检测任务提出了相当大的挑战。深度学习技术在变化检测领域取得了显著的进步。例如,基于CNN的算法可以通过其强大的特征提取能力揭示变化区域的稳健特征,从而在各种复杂场景中取得了令人印象深刻的性能。最近,基于Transformer的方法进一步加速了这个领域的发展,Transformer可以捕捉整个图像中的长距离依赖关系,赋予模型全局感受野,为需要高级语义知识的任务(如变化检测)开辟了新的途径。尽管这些方法取得了显著的成功,但它们在复杂和不断变化的时空环境中的适应性仍然距离实际应用有相当大的距离。此外,随着模型规模的扩大,变化检测有限的标注数据也显著限制了这些模型的潜力。虽然自监督表示学习和模拟数据生成等取得了一些进展,但它们仍然无法完全覆盖由时空变化引起的遥感图像场景的多样性。也无法推动大参数模型在不同场景中的性能。

基础模型强大的通用性和适应性已经得到了证明。这些模型在大量数据上进行训练,从而获得了通用的知识和表示。视觉领域的基础模型,如CLIP和SAM,已经被研究人员广泛研究和利用。这些模型是大量通用知识的存储库,可以进行跨领域的转移和共享,能够大大减少特定任务标注数据的需求。然而,当前的视觉基础模型主要是为自然图像设计的,这些模型用于遥感图像变化检测任务时会产生领域差异。此外,大多数视觉基础模型擅长理解单个图像,在提取多个图像同质性和异质性特征的方面表现不佳,特别是当图像中发生显著变化时,而这种能力对于变化检测来说是至关重要的。

本文将视觉基础模型的通用知识融入到变化检测任务中。该方法克服了在知识转移过程中遇到的领域偏移问题,以及表达多时相图像的同质性和异质性特征的挑战。文中引入了一种名为“时空旅行”(TTP)的方法,该方法将时相信息无缝地集成到像素语义特征空间中。具体来说,TTP利用了SAM模型的通用分割知识,并将引入低秩微调参数到SAM主干中来缓解空间语义的领域偏移。此外,TTP提出了一个时间旅行激活门,允许时相特征渗透到像素语义空间,从而赋予基础模型理解双时相图像之间的同质性和异质性特征的能力。最后,文中设计了一个轻量高效的多层级变化预测头来解码密集的高级变化语义特征。该方法为开展准确高效的遥感图像变化检测铺平了道路。

1)作者通过将基础模型的通用潜在知识转移到变化检测任务,解决了注释数据不足的问题。在文章中,通过引入时间旅行像素(TTP)来弥补知识转移过程中的时空领域差距。

2)具体来说,作者引入了低秩微调以缓解空间语义的领域偏移,提出了一个时间旅行激活门以增强基础模型识别图像间相关性的能力,并设计了一个轻量高效的多层级预测头来解码基础模型中封装的密集语义信息。

3)作者在LEVIR-CD数据集上将提出的方法与各种先进的方法进行了比较。结果表明,该方法达到了最先进的性能,突显了其有效性和进一步应用的潜力。

方法

Overview

为了减轻变化检测的注释需求,本文利用了从基础模型转移过来的通用知识。作者利用SAM的通用分割能力来构建一个变化检测网络,即TTP。TTP主要由三个部分组成:基于低秩微调的基础模型主干;插入双时相图像特征间的时间旅行激活门;以及一个高效的多层级解码头。其结构如图1所示。

w~深度学习~合集2_深度学习

Efficient Fine-tuning of Foundation Model

SAM的主干由Transformer编码器组成,可以分为base版、large版和huge版,分别对应12层、24层和32层。为了提高计算效率,主干中的大部分Transformer层使用局部注意力,只有四层使用全局注意力。在本文中利用预训练的视觉主干,保持其参数处于冻结状态,以加速适应下游任务。为了弥补自然图像和遥感图像领域之间的差距,在多头注意力层中引入了低秩可训练参数,如下式所示,

w~深度学习~合集2_深度学习_02

Time-traveling Activation Gate

当前的视觉基础模型擅长理解单个图像的内容,在提取图像间的特征时表现不佳。然而,在变化检测中,专注于双时相图像中的“有效差异”而忽略“无关差异”是至关重要的。为了解决这个问题,文中引入了时间旅行激活门,它促进了时相特征流入像素特征的语义空间。这使基础模型能够理解双时相图像中的变化,并关注“有效变化”。为了提高效率,只在主干中的全局注意力层后加入激活门,按照下面的公式来整合双时相信息, 

w~深度学习~合集2_深度学习_03

Multi-level Decoding Head

遥感图像的场景多样,地物的尺度存在显著变化。然而,基于ViT的视觉编码器通常只生成单一尺度的特征图。尽管这些图包含了高级的全局语义信息,但如果没有多层级的解码头,它们的性能优势可能难以显现。为了解决这个问题,文中设计了一个轻量高效的多层级变化预测头。该头通过转置卷积上采样和最大池化下采样来构建多级特征。然后使用一个轻量级的MLP映射层来输出最终的变化概率图,

w~深度学习~合集2_深度学习_04

实验

作者在LEVIR-CD上进行了实验。为了评估性能,采用广泛认可交并比(IoU)、F1分数、精确度和召回率,以及总体准确度(OA)。

作者将提出的TTP与一系列最先进的变化检测方法进行了比较,包括FC-Siam-Di、DTCDSCN、STANet、SNUNet、BIT、ChangeFormer、ddpm-CD、WNet 和CSTSUNet。比较结果如表1所示,提出的TTP达到了最高的性能(92.1/85.6 F1/IoU),显著超过了当前的先进方法,如WNet(90.7/82.9)和CSTSUNet(90.7/83.0)。这表明了从基础模型转移通用知识可以增强变化检测,同时也验证了提出的转移方法的有效性。

w~深度学习~合集2_深度学习_05

如表1所示,当移除时间旅行门(ttg)和多级解码头(ml)时,性能会有所下降。此外,从基础模型中移除低秩微调参数会导致性能大幅下降。这些观察结果强调了本文提出的方法可以有效地弥补领域差距并增强时空理解。它们同时也验证了每个组件在变化检测任务中的有效性。

结论

本文通过将基础模型的通用知识融入变化检测任务,缓解了复杂时空遥感场景下模型难泛化的挑战。具体来说,作者引入了低秩微调来弥补自然图像和遥感图像之间的空间语义鸿沟,缓解了基础模型的局限性;提出了一个时间旅行激活门,使基础模型具有时相建模的能力。此外设计了一个多层级变化预测头来解码密集特征。在LEVIR-CD数据集上的实验结果表明了提出方法的有效性,该方法能在单卡4090上进行训练。








#MDD-UNet

这里提出了一种基于U-Net的无监督域自适应框架,该框架的理论保证基于Margin Disparity Discrepancy(MDD)的Margins。本工作通过证明在保留U-Net标准形式的同时,改进了其性能,从而为从方法论和实践角度研究具有非常大型假设空间的模型提供了新途径。

当前图像分割的最先进技术通常基于U-Net结构,这是一种U形编码器-解码器网络,具有跳接连接。尽管性能强大,但这种架构在用于具有与训练数据不同特性的数据时,通常表现不佳。

为了解决在存在域转移的情况下提高性能的问题,已经开发了许多技术,但通常与域自适应理论的联系并不紧密。在本文中,作者提出了一种基于U-Net的无监督域自适应框架,该框架的理论保证基于Margin Disparity Discrepancy(MDD)的Margins。作者在海马体分割任务上评估所提出的技术,结果发现Margins-UNet能够学习到具有域不变性的特征,而无需了解目标域中的标签。

在12个数据集组合中的11个上,Margins-UNet在标准U-Net上的性能得到提高。本工作通过证明在保留U-Net标准形式的同时,改进了其性能,从而为从方法论和实践角度研究具有非常大型假设空间的模型提供了新途径。

代码:https://github.com/asbjrmunk/mdd-unet

1 Introduction

在医学图像分析数据中,设备、患者组和扫描协议等因素导致了分布的巨大变化。由于标记医学图像通常需要专业行人的大量参与,因此可用的标记数据通常有限。这是医学图像分割中的一个关键挑战,因为模型通常无法泛化到与训练数据的具体设置不同的数据,而手动标记每个新测试域的数据是不切实际的。

解决这个问题的一个方法是自监督域自适应(UDA)。在UDA中,目标是将源域学习到的知识转移到一个类似但不同的目标域,只假设源域的标签。

w~深度学习~合集2_深度学习_06

实用的域自适应方法试图利用这种权衡,例如DANN[6]采用了一种受GAN[9]启发的对抗性架构,其中网络在寻求学习输入表示时,源域和目标域无法区分,同时在本领域表现良好。然而,DANN的理论基础仅限于二分类器,这意味着对于分割等问题,该方法缺乏理论保证,因为最大玩家和最小玩家的假设空间明显不同。

张等人[1]通过提出一个新的分布差异测量方法,称为Margin Disparity Discrepancy (MDD),使得可以基于评分函数和边际损失推导出与Ben David等人[8]相似的一般化界。值得注意的是,这种方法被无缝地转换为一种理论上的对抗性架构,分类器的假设空间没有限制,实现了相对于最先进域自适应方法显著的改进。

尽管MDD理论对于任意假设类模型是合理的,但在应用于具有非常大的假设空间的模型时,如用于图像分割的模型,其是否实用还不明确。

生物医学分割的域自适应目前从理论上尚不明确。由于在医学领域,理论理解尤为重要,因为它为理解所提出方法的潜力和限制提供了途径。本文旨在研究是否可以将MDD应用于分割问题,通过结合U-Net,即最先进的医学分割模型的架构基础,与MDD,并提出一种理论上证明的域自适应生物医学图像分割方法。

本文的贡献在于提出了新的方法,包括一种新的训练程序和一种创新的早期停止方案。该方法在脑部MRI的海马体分割任务上进行了评估。作者发现,所提出的这种方法在基础U-Net上取得了显著的改进。

本文被认为是一种概念验证,它为理解和分析域自适应在医学领域的应用提供了一种途径。所提出方法的理论证明,开辟了完全新的研究途径,可能为作者理解对抗域自适应的能力和限制提供基本贡献。

2 Method

w~深度学习~合集2_深度学习_07

Margin Disparity Discrepancy

所提出方法的理论基础是张等人提出的_Margin Disparity Discrepancy_(MDD)。

w~深度学习~合集2_深度学习_08

w~深度学习~合集2_深度学习_09

这自然是一个minimax游戏,其中目标是学习一个表示,使得最终的分类基于既具有区分性又对域的变化不变的特征。

Network Architecture

作者将MDD与U-Net相结合。U-Net自然地分为_block_,每个block由一个或多个卷积操作和ReLU激活函数组成,并使用收缩路径中的最大池化和扩展路径中的上卷积进行组合。作者只考虑应用于2D数据的模型,这些数据可以通过将每个切片独立考虑而获得3D体积。作者将MDD应用于U-Net,将其分为四个部分:

w~深度学习~合集2_深度学习_10

Gradient Reversal Layer

w~深度学习~合集2_深度学习_11

Loss

由于边距损失容易导致梯度消失,作者遵循[1]并使用交叉熵损失来优化方程1。

w~深度学习~合集2_深度学习_12

可以使用随机梯度下降直接优化。

Pre-training and early stopping

w~深度学习~合集2_深度学习_13

3 Experimental setup

作者在 hippocampus 分割任务上验证所提出方法的有效性。

Data

本研究中使用的核心数据是来自[10]的T1加权MRI卷。标签突出了海马体,分为三个类别标签:左侧海马体、右侧海马体和背景。数据包括四个数据集,分别用于表示分布转移,通过选择不同的数据集作为源域和目标域。这些数据集如下:

HarP:包括135个来自ADNI研究的正常、认知受损和痴呆症患者的T1加权MRI扫描(65名女性和70名男性,年龄在60到90岁之间)。数据使用GE、Philips和Siemens的扫描仪,强度为1.5T或3T。

Hammers:包括30个来自[12]的健康受试者(15名女性和15名男性)的T1加权MRI扫描(年龄在20到54岁之间)。数据使用1.5T的GE扫描仪获取。

Oasis:包括35个来自MICCAI 2012多原子标签挑战[13,14]的健康受试者(22名女性和13名男性)的T1加权MRI扫描(年龄在18到90岁之间)。数据使用1.5T的GE扫描仪获取。

LPBA40:包括40个来自[15]的健康受试者(22名女性和13名男性)的T1加权MRI扫描(年龄在19到40岁之间)。数据使用1.5T的GE扫描仪获取。

Preprocessing

所有体积都使用基于强学习的脑部提取系统ROBEX[16]进行去骨,偏移场校正和转换到RAS+方向。此外,每个体积的强度都限制在99百分位数,标准化以具有零均值和单位方差,然后缩放到范围在-1到1之间。由于网络只处理2D输入,因此将体积在冠状维度上切片,并填充到大小为256×256。

Model configurations

作者将MDD-UNet与U-Net进行比较。首先,作者对U-Net进行60次迭代训练。在应用MDD之前,先用MDD对U-Net进行训练。使用Adam[17]训练,学习率在不同部分的MDD-UNets中不同。

w~深度学习~合集2_深度学习_14

4 Results

作者的实验结果如表1所示。与基础U-Net相比,MDD-UNet的性能有显著提高,在12个组合中有11个取得了最佳性能。

w~深度学习~合集2_深度学习_15

5 Discussion & Limitations

冻结层。为了分析冻结层的影响,作者进行了一项实验,研究不同块的冻结对性能的影响。作者定义一个块为具有相同特征图大小的卷积层,由max池或上卷积分隔。作者从左到右计数块,即正向传播的顺序。

表2显示了在验证集上的epoch训练进度中,目标分布的 dice 得分。在添加MDD之前,U-Net在目标集上的性能为0.54 Dice。将编码器的前两个块冻结优于所有其他配置,特别是任何将解码器块冻结的配置。

w~深度学习~合集2_深度学习_16

MDD-UNet的冻结层表明,模型在U-Net中的低级特征比高级特征更具域不变性。此外,由于最大玩家的假设空间非常大,找到对抗者之间的理想平衡很难。这些结果展示了,在的开始使用冻结层和预训练,可以实现稳定的训练,从而允许MDD应用并使用早期停止机制。

MDD的有效性。 当应用MDD时,网络在目标域上的性能可以有效提高。图3显示了应用MDD的迭代次数与目标域上Dice性能的关系。当应用MDD时,目标性能在几迭代后大幅提升。早期停止机制可靠地停止训练,当目标性能最好或接近最好时。 

w~深度学习~合集2_深度学习_17

局限性。 本工作不声称将MDD-UNet确立为最先进的域自适应方法,并且未来的工作应该研究其与增强和其他已知可以提高域转移性能的方法论改进的交互作用。

此外,在本工作中,作者专注于证明MDD在2D数据上的模型上的有效性。将来的工作将研究该方法在3D数据上的行为,这在医学领域很常见,并且是U-Net的现代改编。

6 Conclusion

在本文中,作者提出了一种基于U-Net和MDD的域自适应方法,并给出了理论保证。作者证明,MDD-UNet在分割海马体数据方面优于常规U-Net。这项工作为更深入地研究所提出的方法的应用和重要的是MDD差异度量到生物医学领域开辟了道路。

此外,这项工作为理论分析生物医学域自适应开辟了完全新的研究途径,这是生物医学领域的一个全新的研究领域。







#Block-State Transformer


1+1>2。Mamba可以替代Transformer,但它们也能组合起来使用

Transformer 很厉害,但并不完美,尤其是在处理长序列方面。而状态空间模型(SSM)则在长序列上的表现相当不俗。早在去年就有研究者提出可使用 SSM 替代 Transformer,参见文章《预训练无需注意力,扩展到4096个token不成问题,与BERT相当》,前些天基于 SSM 方法的 Mamba 更是异军突起,推理吞吐量达到了 Transformer 的五倍之多,参阅《五倍吞吐量,性能全面包围Transformer:新架构Mamba引爆AI圈》。

但实际上,SSM 和 Transformer 并不是非此即彼的两种架构,它们完全可以组合起来!

近日公布的一篇 NeurIPS 2023 论文《Block-State Transformers》就采用了这种做法,其不仅能轻松支持 65k token 长度的超长输入,而且计算效率还非常高,速度相比使用循环单元的 Transformer 足可提升十倍之多!这篇论文也得到了 Mamba 作者 Tri Dao 的点赞,他表示:「SSM 和Transformer 似乎可以互补。」

但在我们介绍这种新方法前,先简单说说 Transformer。在许多不同的自然语言处理(NLP)任务上,Transformer 的表现都非常出色。可以说 Transformer 已经很大相当程度上替代了循环神经网络。不仅如此,它也正在图像和视频等 NLP 之外的领域大展拳脚。

其成功的原因有很多,包括计算效率和架构层面的归纳偏差,这让它们非常适合在自然语言任务进行大规模训练。在计算方面,Transformer 能以并行方式处理输入序列的 token,从而使其能充分利用现代加速器硬件。此外,注意力机制让 Transformer 可以找到更长序列之间的关系,其方式是在推断下一个 token 时读取从过去 token 提取的所有信息。相比于 RNN 和 LSTM,自注意力有两个优势:(1) 存储信息以及将这些信息直接用作上下文的能力得到了极大提升,(2) 在更长序列上能更稳定地训练。

尽管 Transformer 相比 RNN 有很多优势,但它在输入序列长度的扩展上依然存在问题,其中涉及计算性能和质量等方面的原因。更进一步说,Transformer 的运行时间会随输入序列长度的增长成二次方增长,这会让训练这些模型的成本越来越高。

此外,众所周知使用注意力的 Transformer 在长输入分类任务上表现不佳。最基本的 Transformer 在长序列上训练时可能不稳定,而且其 token 重要度聚焦在当前时间步骤周围约 50 个 token 的局部感受野中。

近来,越来越多的研究表明状态空间模型(SSM)可以替代 Transformer,因为 SSM 可以捕获极长序列之中的依赖关系,同时还有更高的计算效率和更好的并行化能力。

尽管 SSM 依然属于自回归序列模型,但其底层的线性时间不变式动态系统可使用基于快速傅立叶变换(FFT)的可并行化卷积算子来高效地处理序列,而且这个过程的复杂度仅为 𝒪(𝐿 log 𝐿),其中 𝐿 是序列的长度。此外,借用在线函数近似的方法,通过推导循环更新规则,可以确保在长序列上保留过去的信息,甚至可达成千上万个时间步骤。在 Long-Range Arena 基准上,SSM 甚至超过了 Transformer 一大截

尽管 SSM 在长程分类任务上很成功,但如果要用作通用语言建模的现成可用序列模型,SSM 还完全赶不上 Transformer。

近期又有研究《Long Range Language Modeling via Gated State Spaces》认为 Transformer 和 SSM 完全可以互补。

DeepMind 等机构提出的新架构 Block-State Transformer(BST)将强大的基于局部注意力的归纳偏差与长期上下文建模能力组合到了一起,做成了单一层。

论文地址:https://arxiv.org/pdf/2306.09539.pdf

据介绍,该模型能在处理长输入序列的同时整合注意力机制来预测下一个 token。相比于基于 Transformer 的层,BST 是完全可并行化的,能扩展用于更长得多的序列,同时速度还能快 10 倍。

在每一层 BST 中,有一个 SSM 将输入的整个序列映射进一个同样长度的「上下文」序列。这个 SSM 子层使用基于 FFT 的卷积。然后将这个上下文序列分成大小相等的上下文块,这个大小即为窗口长度 W;然后再将每个上下文块输入一个 Transformer 层,其注意力关注的是大小为 W 的子序列。之后对输入 token 嵌入块与对应的上下文状态块使用交叉注意力,如图 1 所示。

w~深度学习~合集2_深度学习_18

注意,通过将 SSM 用作一种上下文化的方法,就可以完全不需要序列循环,这样一来就能以完全并行的方式运行这种 SSM-Transformer 混合层。

最后的运行时间复杂度可以表示成一个和:𝒪(𝑊²)+𝒪(𝐿 log 𝐿),其中前一项表示 Transformer 子层的时间复杂度,后一项是 SSM 子层的时间复杂度。

只要有支持并行计算的硬件,相较于 Block-Recurrent Transformer 的 𝒪(𝐿𝑊),这是一个重大提升。此外,由于硬件施加的限制,SSM 在完整序列上的运行时间复杂度与 Block Transformer 在 token 块上的运行时间复杂度相当,这进一步意味着 BST 层不存在速度瓶颈。该团队使用包含数十万 token 的序列通过实验验证了这一点。

方法

这里研究的是通过仅解码器语言模型实现下一 token 预测的问题。

对状态空间的前置说明

状态空间模型可以分为两大类:

状态空间:结构化核S4、S5、S4D、DSS遵循卷积核的一种结构化初始化,方式是展开一种线性时间不变式(LTI)动态系统,如下所示:

w~深度学习~合集2_深度学习_19

其中的参数包括状态矩阵 𝚨∈ℝ^{N×N},向量 𝐁∈ℝ^{N×1}、𝐂∈ℝ^{1×N}、𝐃∈ℝ^{1×1}。SSM 会将一维的输入信号 u_k 映射成一维的输出信号 y_k。

显式参数化的过滤器。不同于结构化核,还可以将卷积核参数化为可训练的权重并优化它们。但是,这会导致性能很差,除非对这些核使用特定类型的正则化方法。替代 Transformer 的无注意力模型中也有使用可训练核的,比如 Hyena 涉及到沿核对权重进行指数衰减。

Block-State Transformer(BST)层

Block-State Transformer 层将 SSM 与 Block Transformer 组合到了一起。在每一次训练迭代中,都会从一个长文档采样一个包含 L 个 token 的序列。然后嵌入该 token 并将其馈送给模型。这个模型由堆叠的 Block-State Transformer 层构成。每一层 BST 都会选择性地包含一个 SSM 子层,其负责为 Block Transformer 层提供长程上下文,这与 Block-Recurrent Transformer(BRECT)单元的工作方式类似。这个 SSM 子层的输入是前一层的 token 嵌入序列,输出则是一个长度同样为 L 的序列。

这个输出经过了上下文编码,也就是说每个时间步骤的项目都可能包含有关该序列中元素之前的所有时间步骤的信息。他们从上下文序列收集一定数量 S 的「上下文状态」,并使得 S ≪ L。

这些上下文状态会被馈送给 Block Transformer,以替代 Block-Recurrent Transformer 中的「循环状态向量」。如图 1 右侧所示,后续操作保持不变,只是无需再运行 BRECT 单元的循环单元,因为现在是通过 SSM 来维护上下文。除了上下文状态,Block Transformer 的输入中还有长度 W 的 token 嵌入的块/窗口;然后在这个窗口与上下文状态上使用交叉注意力。然后将这个交叉注意力操作的输出与自注意力在输入嵌入上的输出连接起来,之后是一个简单的投影。

SSM 不仅能在更长时间尺度上保留信息,而且使用 SSM 来维持上下文状态以替代循环单元,可以得到计算效率更高的层。通过将 SSM 整合进 Transformer 层,可以移除循环部分,从而让 Block-State Transformer 层可以完全并行化。

上下文状态

尽管从技术上看,最新的 SSM 输出包含有关整个序列的信息,但仅从最后的状态检索单个 token 可能是不可行的。为了弥补这一点,该团队将一系列状态连接了起来,对应于最新的 token 块。这与 BRECT 采用的方法类似。这种表征可以通过冗余来确保可检索性和易访问性。

在新提出的方法中,上下文状态是使用 SSM 的输出构建的,并会被馈送给 Transformer 的注意力头。这些上下文状态的构建方式有很多。为了引导设计决策,该团队考虑了多种设计方案,包括使用单头(Single-Head)、多头(Multi-Head)或多过滤器(Multi-Filter)。其中单头设计见图 1。下图 2 则展示了多头和多过滤器的设计方案。

w~深度学习~合集2_深度学习_20

比较下来,多过滤器的记忆状态的冗余最少,多头次之,单头的冗余最大。

结果

该团队在 PG19、GitHub 和 arXiv 三个数据集上进行了实验,检验了新提出的 BST 在不同长度的英语文本、latex 科学文章和源代码上的效果。下表 1 总结了实验结果。

w~深度学习~合集2_深度学习_21

下图 3 则给出了长度泛化分析并报告了困惑度。实验中,新模型和基准模型的参数数量都约为 4 亿,训练时的序列长度为 4k,测试中的序列长度为 {512, 16k, 65k}。

可以看到,在 PG19、GitHub 和 arXiv 上,当序列长度为 65k 时,BST:SH:S4-L 的困惑度最好。

w~深度学习~合集2_深度学习_22

在效率方面,下图 4 左给出了 BST 层在 GPU 上的基准测试结果。

可以看到 SSM 带来了非常显著的增长——比包含循环单元的 Block-Recurrent Transformer 快 6-11 倍;即使在序列长度达到 65k token 时,还依然能有 6 倍的提升,而这时候硬件就已经开始饱和了。当使用结构化的 SSM 时,计算复杂度与 SSM 的内部记忆状态大小 N 紧密相关。对于报告的性能,N = 16。

w~深度学习~合集2_深度学习_23

研究者表示,如果使用其它自动微分框架中近期引入的更快的针对硬件的 I/O 感知型实现,BST 方法的速度还能更快。








#FMB~~

伯克利开源高质量大型机器人操控基准,面对复杂自主操控任务不再犯难

随着人工智能和机器人技术的迅速发展,功能操控(Functional Manipulation)在机器人学中的重要性愈加突出。传统的基准测试已无法满足目前机器人对复杂操控任务的需求,呼吁新的操控基准(Functional Manipulation Benchmark)出现。

概述

机器人操控面临两个主要挑战:机器人如何智能地处理复杂的接触动力学以及如何应对环境和物体的多样性。针对这些挑战,机器人学习技术被视为关键的解决手段。因此,该领域需要一个全面易得的框架,提供有挑战性的实际任务、高质量数据、易于复制的设置,集合了基线结果的相关方法,基于该框架,研究人员能够对所提出任务的实验发现进行深入分析。

加州大学伯克利分校智能机器人实验室(RAIL)的研究团队提出了如上所述的现实世界基准,称为 FMB(Functional Manipulation Benchmark for Generalizable Robotic Learning)。

  • 项目主页:https://functional-manipulation-benchmark.github.io/
  • 论文地址:https://arxiv.org/abs/2401.08553
  • 论文题目:FMB: a Functional Manipulation Benchmark for Generalizable Robotic Learning
  • 共同第一作者主页:https://people.eecs.berkeley.edu/~jianlanluo/
  • https://charlesxu0124.github.io/

FMB 具有以下特点:

  • 创新设计:采用了 3D 打印技术制作任务中的物体,来考验机器人的泛化能力,这种方法也便于其他研究人员复现。
  • 多样化任务:包含单物体和多物体多阶段操控任务,真实模拟日常环境中的挑战。
  • 大型数据集:通过大量人工演示,为机器人提供了丰富的数据集。
  • 模仿学习基线:使用最先进的机器学习方法,提供了基线结果和模块化组件以供其他研究者使用。

物体和任务

FMB 中的任务大致分为两类:单物体多步骤操控任务和多物体多步骤操控任务。这些任务旨在测试机器人的基本技能,如抓取、重新定位和装配等,这些都是完成整个任务所必需的技能。FMB 中的任务要求机器人不仅能完成单一的操控技能,还要求机器人能够将这些技能组合起来,完成更为复杂的多步骤任务。

FMB 的任务设计灵活多变,研究人员可以根据需要选择专注于单一技能,深入研究机器人的操控能力,也可以研究完整的多步骤任务,这需要机器人进行长期规划并具备从失败中恢复的能力。由于涉及选择合适的物体并推理操控物体的顺序,更为复杂的多步骤任务要求机器人能够做出复杂的实时决策。

w~深度学习~合集2_深度学习_24

w~深度学习~合集2_深度学习_25

大型数据集

在机器人学习的过程中,数据的作用不可小觑。为了使机器人更好地理解和掌握复杂的任务,研究团队收集了一个涵盖上述任务的大规模专家人类示范数据集,包含超过两万个操作轨迹。研究团队采用了四个不同的摄像机记录这些示范数据,其中两个摄像机安装在机器人的腕部,另外两个提供全局视角。这些摄像机捕捉了对于机器人学习解决任务至关重要的 RGB 彩色图像信息、深度信息等数据。

此外,数据集还记录了机器人末端执行器的力 / 扭矩信息,这对于像装配这样需要接触大量物体的的任务非常重要。通过这些丰富的数据,机器人能够深入理解任务的每个细节,更加精确地模仿人类的操作技巧。正是由于数据的深度和广度,为机器人学习提供了坚实的基础。这使得机器人在执行复杂任务时,能够更加人性化和更灵巧地对任务作出响应。

w~深度学习~合集2_深度学习_26

模仿学习基线

w~深度学习~合集2_深度学习_27

基线策略的架构图。

基于 Transformer 和 ResNet 的两种模型都使用了共享权重的 ResNet 编码器对每个图像视图进行编码,然后与本体感知信息和可选的物体和相应的机器人技能编码特征结合,以预测 7 自由度的动作。

FMB 的实验部分对模仿学习系统的性能进行了一系列测试,比较了不同的学习方法,探究了不同输入模式和设计决策的影响。实验发现,使用深度信息有助于提高抓取策略的效果,力 / 扭矩信息对于装配任务非常重要。对于多步骤任务,传统的 ResNet、Transformer 和 Diffusion 方法均未能奏效,但该论文中提出的分级控制 (hierarchical control) 方法显示出了潜力。

抓取任务

w~深度学习~合集2_深度学习_28

实验结果显示,纳入深度信息的 ResNet 策略在抓取任务中的性能一致优于仅使用 RGB 信息的策略。通过数据削减研究,研究团队探究了不同数量的训练数据对抓取任务性能的影响。结果显示,纳入深度信息的 ResNet 策略在处理已见物体时的性能将随着训练数据量的增加而提升。值得注意的是,该策略对未见过的物体表现出了与已见物体相近的性能,这表明训练对象的多样性极大地促进了机器人的泛化能力。

装配任务

w~深度学习~合集2_深度学习_29

在装配任务中,力 / 扭矩信息的重要性得到了证实。力 / 扭矩信息对于机器人采取的策略判断物体是否已经接触到目标表面,并有效进行搜索等行为非常重要。

w~深度学习~合集2_深度学习_30

然而,当策略在所有物体上进行训练时,机器人并不总是能够成功地完成装配任务。这是因为策略需要首先判断应将物体装配到哪个孔中,然后再生成相应的动作,这大大增加了任务的复杂性。为了解决这个问题,研究团队在策略中添加了一个选取物体机制,帮助策略确定需要装配的物体的形状,从而专注于生成正确的装配动作。

多步骤任务

w~深度学习~合集2_深度学习_31

FMB 的框架包含了两项复杂任务。这些复杂任务要求机器人能够像人类一样连续完成多个步骤。此前的方法是让机器人学习整个过程,但这种方法容易因为单一环节的错误而不断累计误差,最后导致整个任务失败。无论是在单物体还是多物体操控任务中,这种方法的成功率均为 0/10。

针对累积误差问题,研究团队采用了分层控制策略。分层策略通过将任务分解成若干小块,每完成一块便相当于通过一个决策点,即使出现错误也能迅速纠正,避免影响后续环节。例如,如果机器人在抓取过程中未能稳固抓住物体,它会持续尝试直至成功。

研究团队测试了两种分层方法,第一种方法为单一策略提供指示任务类型的有效向量,而第二种方法则是针对每个操控技能单独训练不同的策略,均采用了操作员的指令作为上层策略,在测试中,研究团队发现这两种方法均表现优异。

测试结果显示了分层方法在处理复杂机器人任务中的有效性,并为未来研究提供了新的研究方向。

w~深度学习~合集2_深度学习_32

如上图所示,机器人在学习后能够自主进行功能操控。

w~深度学习~合集2_深度学习_33

总的来说,以上实验展示了研究团队在机器人学习领域的技术创新,也验证了 FMB 是适合开发先进机器人学习方法的基准。研究团队研究期待未来的研究可以在 FMB 基础上进一步推动机器人学习的边界。







#SO2~~

极其简洁的 Offline-to-Online (O2O) RL 算法 SO2,只需两个简单 trick:使用加入噪声的 action 来更新 Q 值+增大 Q 值更新频率,就可使 offline-to-online RL 领域的算法性能大幅度提升。从Q值估计的角度重新审视Offline-to-Online强化学习

AAAI 2024 高分作:Offline-to-Online 强化学习算法 SO2!

极其简洁的 Offline-to-Online (O2O) RL 算法 SO2,只需两个简单 trick:使用加入噪声的 action 来更新 Q 值+增大 Q 值更新频率,就可使 offline-to-online RL 领域的算法性能大幅度提升。

1. Halfcheetah 一骑绝尘:仅用 170K Env Steps 就可以在 Halfcheetah 环境上达到 1.3w+ 的累积回报,而 300K 则可以超过 1.6w+。强化学习社区尝试训练过 MuJoCo 环境的同学肯定深有感受:online RL 的最强算法 SAC, 一般需要 3M Env Steps 才能到 1.2w 的累积回报,之后无论再训练多长时间,1.6w 水准的 Halfcheetah 几乎都是遥不可及。

w~深度学习~合集2_深度学习_34

图1. Halfcheetah 环境训练曲线对比图

2. MuJoCo 一招鲜吃遍天: 这种训练方法在所有 MuJoCo 环境和数据集上都大幅领先其他 offline-to-online RL baseline 方法。

w~深度学习~合集2_深度学习_35

图2. MuJoCo 不同环境和数据集上各类 O2O 算法的表现

论文题目: A Perspective of Q-value Estimation on Offline-to-Online Reinforcement Learning

论文链接:https://arxiv.org/abs/2312.07685

开源代码链接:https://github.com/opendilab/SO2

引言

离线强化学习(offline reinforcement learning/batch reinforcement learning)可谓是近年来最火热也最重要的强化学习子领域,在各类决策任务中都展现出了惊艳的效果,相关的上下游任务也都发展得十分迅速。其中,基于离线强化学习已经训练收敛的策略,再继续进行后续的在线学习,这种训练方式就是本文研究的核心目标——offline-to-online reinforcement learning。

尽管目前这个方向已经出现了一些优秀的研究成果,但这些工作主要着眼于引入其他在线学习方法中的复杂设计,尝试去解决 O2O 训练中状态-动作分布飘移(shift)的问题。这些方法往往显著加大算法复杂度,同时又面临保障持续训练稳定性的挑战。

w~深度学习~合集2_深度学习_36

图3. SO2 算法设计动机示意图。通过两个关键设计,SO2 显著缓解了值函数估计问题

为了提供一种简单统一的方法来释放离线到在线强化学习的潜力,来自悉尼大学,香港中文大学,北京大学,以及上海人工智能实验室(OpenDILab 团队)等机构的研究者们从 Q 值估计的全新视角出发,结合现在广泛使用的强化学习技术,实现了统一简单高效的离线到在线的强化学习。此外,还提供了关于动作值函数估计偏差分析的相关方法,以及相应的评测分析,深入理解 O2O 领域的挑战与机遇。

背景与贡献

尽管离线强化学习的算法研究和应用落地取得了诸多进展,但离线到在线强化学习(Offline-to-Online RL)仍然面临一系列困难和挑战,甚至在训练过程中常常出现完全崩溃的情况。具体来说,离线到在线强化学习的核心是在从离线预训练到在线学习的过程中维持有效的策略和决策。在 offline RL 中,由于缺乏在线交互,Q 值(一种衡量在特定状态下执行某动作的预期回报的指标)的估计容易产生偏差,而同时 online RL 需要准确的 Q 值来指导策略的优化和决策。因此,如何在离线到在线的训练转换中正确处理 Q 值估计,就成为 O2O RL 的关键问题。本文基于一个之前常常被忽视的视角,针对 O2O RL 中的 Q 值估计偏差问题进行深入研究和解决,并提出了一种新方法。具体来说:

1. 量化分析了离线强化学习训练过程中 Q 值估计可能产生的偏差及其对在线强化学习阶段的影响;

2. 提出了一种新算法 SO2,通过引入特定的技术手段减轻上文所述的偏差,提高 Q 值估计的准确性。这些技术包括对目标动作的扰动处理,以及提高 Q 值更新的频率,以加速学习过程并减少由离线训练带来的偏差。

这项工作的重要性在于,它不仅提供了一种提高 O2O RL 性能的具体技术路径,也为理解和解决 O2O RL 中的关键问题提供了新视角——Q 值估计的准确性。通过这项研究,可以更好地理解在离线到在线转换过程中如何处理和优化 RL 算法,从而推动整个强化学习领域的发展。

Q 值估计误差问题的分析与评估

和离线强化学习与在线强化学习领域类似,O2O RL 同样面临严重的 Q 值估计偏差问题,同时,由于离线数据集和在线样本之间可能存在更严重的数据分布漂移,该问题的复杂性更为棘手。因此,本文将针对离线到在线强化学习(O2O RL)中的 Q 值估计问题进行系统性的分析和评估。

w~深度学习~合集2_深度学习_37

图4. 各类强化学习方法性能对比。其中 Online 方法已特殊标出。

首先,本小节会对 Q 值估计误差问题进行详细介绍。上面所示的图 4 对比了多种标准 online RL 方法和使用在线微调的 offline RL 方法的性能。以标准 online RL 方法的结果为基线,可以观察到这些直接使用在线微调的 offline RL 方法——包括 TD3-BC ,CQL,EDAC 和它们的 Loose 变体(减少保守估计的约束),在后续的在线学习中性能提升速度都显著变慢。

换句话说,虽然这些离线强化学习算法在离线设置中表现出色,但在后续的在线学习期间性能提升缓慢甚至会出现退化。因此,可以观察到 O2O RL 并不能简单迁移之前的算法,其中的优化问题面临着严峻挑战。

为了分析关于 Q 值估计的问题,本文提出了两个量化标准:

1. Q 值的标准化差异 (Normalized difference of the Q-value)

2. 基于 Q 值的肯德尔 τ 系数 (Kendall’s τ coefficient over Q-value)

首先,Q 值的标准化差异可以来衡量估计的 Q 值与真实 Q 值之间的差异。具体来说,实验中先计算真实 Q 值和对应的估计 Q 值,其中真实 Q 值是基于当前策略收集的充分延长轨迹上实际获得的回报来计算的,提供了真实 Q 值的准确反映,然后对两者之间的差异进行标准化差异计算,从而提供每种强化学习方法 Q 值估计的误差程度。

另外,为了突出在线 RL 算法与离线 RL 算法之间的差异,实验中还从离线 RL 算法的标准化差异中减去在线 RL 基线(如 SAC)的标准化差异。因此,正的标准化差异意味着离线 RL 算法的 Q 值估计相对于在线基线有过高估计的倾向,反之则意味着低估。

w~深度学习~合集2_深度学习_38

图5. 几种 offline RL 算法 Q 值的标准化差异的对比图

从图 5 中可以观察到 TD3-BC 和 CQL 通常会过高估计在线收集的未见状态-动作对的 Q 值,而 EDAC 面临着显著的Q 值低估问题。

其次,基于 Q 值的肯德尔 τ 系数可以用来衡量估计的 Q 值的排序准确性。肯德尔 τ 系数(Kendall's τ coefficient)是一种用于衡量两组数据之间排序相关性的统计方法。它评估的是两个变量的排列顺序之间的相似性。具体的计算原理如下:

1. 数据准备:

  • 从预训练的策略中回放多个 episode,收集状态-动作对。
  • 使用滑动窗口方法在每个 episode 中选择状态-动作对的集合,记为P_i,其中 i 表示窗口编号。

2. 计算估计的 Q 值和真实 Q 值:

  • 对于每个集合 P_i 中的所有状态-动作对,计算它们的估计 Q 值和真实 Q 值。

3. 计算肯德尔系数:

  • 对每个集合 P_i ,计算肯德尔系数,记为 K_i。
  • 计算所有集合的系数的平均值。
  • 最终 τ 的值在-1到1之间,值为1表示完全正相关,-1表示完全负相关,0表示无相关。

通过肯德尔 τ 系数可以评估离线强化学习算法在估计 Q 值排序准确性方面的表现。较低的 τ 系数表明离线 RL 算法在 Q 值估计的排序准确性上明显逊于在线 RL 算法,这可能导致训练不稳定和性能提升缓慢。

w~深度学习~合集2_深度学习_39

图6. 不同算法 Q 值的肯德尔 τ 系数对比

图 6 中显示 offline RL 算法的 τ 系数明显低于 online RL算法(SAC),表明它们在评估不同状态-动作对的相对质量方面并不够准确。

上述的分析说明:虽然这些离线算法(CQL、TD3-BC和EDAC)在预训练后表现出色,并为在线学习提供了良好的初始行为,但它们在不同环境和不同训练设置下,由于 Q 值估计的偏差和排序不准确而导致性能提升缓慢且稳定性差。因此,如何获得准确的 Q 值估计是 O2O RL 的重要瓶颈。

SO2 方法介绍

为了解决上文中分析的 Q 值估计问题,本文基于强化学习中广泛使用的算法设计技巧,提出了两种主要的解决方案:

  • 扰动值更新(Perturbed Value Update, PVU)
  • 增加Q值更新频率

首先,扰动值更新(Perturbed Value Update,PVU)可以对目标动作进行额外的噪声扰动,以平滑带有尖峰的偏差 Q 值估计。这种方法防止智能体过度拟合于过去可能有效但不一定适用于新情况的特定动作。

通过引入带噪声的动作,鼓励智能体在下一个状态中探索不同的动作,减少高估偏差。换句话说,这种设计鼓励智能体考虑一系列合理的动作,而不是固定在某一个看似最优的动作上,从而产生更准确的价值估计,减轻 online RL 中的价值估计偏差。其次,增加 Q 值更新频率则是一种更自然的想法。对于存在偏差的 Q 值估计,自然需要适当增加更新频率,以便快速收敛到正常水平。增加 Q 值和策略的更新频率使学习过程更能响应新的数据。这导致更准确的价值估计和更快地收敛到最优策略。

这两种技术共同提高了 Q 值函数估计的准确性,并进一步改善了在线学习期间的性能,具体的算法伪代码如下所示:

w~深度学习~合集2_深度学习_40

图7. SO2 算法伪代码

实验分析

w~深度学习~合集2_深度学习_41

w~深度学习~合集2_深度学习_42

图8. MuJoCo 环境中 SO2 和其他算法的对比示意图和表格

尽管算法设计非常简单,但 SO2 算法却可以在 O2O RL 问题中表现出非常强大的性能。上图所示的学习曲线对比展示了在不同数量的训练步骤下的性能,SO2 在样本效率和渐近性能方面显著优于所有基准。与其他算法相比,SO2 在利用少量样本时表现出极高效率。同时在经过充分训练后,也可以看到 SO2 在长期训练中的优势。

w~深度学习~合集2_深度学习_43

图9. 各个算法在不同环境的 Q 值标准差

在图 9 中,还可以观察到在不同实验条件下 SO2 表现为较低的 Q 值标准差,从而体现了SO2 性能收益和之前的 Q 值分析的一致性。

w~深度学习~合集2_深度学习_44

图10. 基于随机数据集的SO2与在线强化学习的对比

此外,图 10 还表明即便使用随机策略收集的离线训练数据,SO2 仍然可以通过少量在线交互实现专家级性能。这体现了离线到在线强化学习的巨大潜力,并不像模仿学习那样需要大量的专家数据。

w~深度学习~合集2_深度学习_45

图11. Adroit 环境中各个算法的性能对比

w~深度学习~合集2_深度学习_46

图12. SO2 算法和之前 O2O RL 算法的组合效果

同时,SO2 也展现出强大的扩展性,兼容性和泛化性。Adroit 环境中的实验(图11)仍然体现了 SO2 的优异性能。而图 12 中的复合实验则说明,SO2 算法可以组合应用到之前的各类 O2O 算法中,更加增强这些算法的最终效果。

展望

O2O RL仍有很多尚未解决的算法问题和应用挑战,未来的工作将会继续探索和扩展 Q 值估计在离线到在线强化学习(O2O RL)的实际应用。研究如何进一步提高 Q 值估计的准确性和效率,以更好地适应和解决实际应用中的挑战。具体来说,如何进一步优化 Q 值估计方法,提高 Q 值估计的准确性和稳定性首当其冲。这可能包括开发新的算法框架,或对现有方法进行调整和优化。

其次,如何应用于更多场景和任务,将所提出的方法应用于更广泛的环境和任务,以验证其泛化能力和实用性,不仅仅局限于游戏或模拟环境的应用,而是扩展到更多现实世界中的复杂和动态场景。最后,除了实证研究外,也还需要更深入的理论研究,对 Q 值估计的理论基础进行更深入的探索和分析,以更好地理解其在不同决策场景下的行为和效果。









#PrimeNumberTheoremAnd

借助 Lean,陶哲轩又开始了新的项目。Lean中证明素数定理,研究蓝图都建好了

「由 Alex Kontorovich 和我领导的一个新的 Lean 形式化项目刚刚正式宣布,该项目旨在形式化素数定理(prime number theorem,PNT)的证明,以及伴随而来的复分析和解析数论的支持机制,并计划给出进一步的结果如 Chebotarev 密度定理。」著名数学家陶哲轩在个人博客中写。

素数定理是数学中的一个重要定理,描述了素数在自然数中的分布规律,该定理在数论中是一个比较重要的研究方向。

形式化证明本质上是一种计算机程序,但与 C++ 或 Python 中的传统程序不同,证明的正确性可以用证明助手(比如 Lean 语言)来验证。举例来说,陶哲轩在论文《A MACLAURIN TYPE INEOUALITY》中给出的证明只有不到一页,但形式化证明使用了 200 行 Lean 语言。

w~深度学习~合集2_深度学习_47

而陶哲轩的合作者 Alex Kontorovich 也是一位非常著名的数学家,现为罗格斯大学数学系特聘教授,主要研究方向是数论。

目前,这两位数学家合作的 Lean 形式化项目「PrimeNumberTheoremAnd」已经上传到 GitHub 上。

项目地址:https://github.com/AlexKontorovich/PrimeNumberTheoremAnd

因为该项目刚建立不久,陶哲轩以及 Alex Kontorovich 还为此构建了一幅蓝图:

w~深度学习~合集2_深度学习_48

蓝图地址:https://alexkontorovich.github.io/PrimeNumberTheoremAnd/web/

可以看出该蓝图包含 5 个部分:

第一部分介绍了项目的首要目标是在 Lean 中证明素数定理。他们表示该问题仍然是 Wiedijk 列出的需要形式化的 100 个定理中突出的问题之一。值得注意的是,PNT 之前已被形式化过,由 Avigad 等人在 Isabelle 中完成。而该项目的目标是将这项工作扩展到级数中的素数(Dirichlet 定理)、Chebotarev 密度定理等等。

目前,完成上述目标可以考虑下面三种方法:

最快的是 Michael Stoll 提出的「欧拉积」项目,该项目对 PNT 的证明只缺少 Wiener-Ikehara Tauberian 定理(对应第二部分)。

第二种是开发一些复分析,包括   residue calculus on rectangles 、 argument principle 和 Mellin 变换,从而得出一个仅包含渐近公式的素数定理(PNT)的证明(对应第三部分)。

第三种方法,也是三种方法中最通用的一种,包括阿达马因子分解定理、Hoffstein-Lockhart 等过程(对应第四部分)。

最后一部分是基本推论。

其实回顾陶哲轩以往的研究,他都多次都提到过 Lean。简单来讲,Lean 是一种可帮助数学家验证定理的编程语言,用户可以在其中编写和验证证明。相比初代 Lean,现在最新的 Lean 4 版本进行了多项优化,包括更快的编译器、改进的错误处理和更好的与外部工具集成的能力等。现在,陶哲轩他们又将该工具用于素数定理的形式化证明,可见 Lean 已成为数学研究中的得力助手。







#Bridge-TTS

近日,由清华大学计算机系朱军教授课题组发布的基于薛定谔桥的语音合成系统 [1],凭借其 「数据到数据」的生成范式,在样本质量和采样速度两方面,均击败了扩散模型的 「噪声到数据」范式。击败扩散模型,清华朱军团队基于薛定谔桥的新语音合成系统来了

论文链接:https://arxiv.org/abs/2312.03491

项目网站:https://bridge-tts.github.io/ 

代码实现:https://github.com/thu-ml/Bridge-TTS

问题背景

自 2021 年起,扩散模型(diffusion models)开始成为文本到语音合成(text-to-speech, TTS)领域的核心生成方法之一,如华为诺亚方舟实验室提出的 Grad-TTS [2]、浙江大学提出的 DiffSinger [3] 等方法均实现了较高的生成质量。此后,又有众多研究工作有效提升了扩散模型的采样速度,如通过先验优化 [2,3,4]、模型蒸馏 [5,6]、残差预测 [7] 等方法。然而,如此项研究所示,由于扩散模型受限于「噪声到数据」的生成范式,其先验分布对生成目标提供的信息始终较为有限,对条件信息无法利用充分。

w~深度学习~合集2_深度学习_49

本次语音合成领域的最新研究工作,Bridge-TTS,凭借其基于薛定谔桥的生成框架,实现了「数据到数据」的生成过程,首次将语音合成的先验信息由噪声修改为干净数据由分布修改为确定性表征

该方法的主要架构如上图所示,输入文本首先经由文本编码器提取出生成目标(mel-spectrogram, 梅尔谱)的隐空间表征。此后,与扩散模型将此信息并入噪声分布或用作条件信息不同,Bridge-TTS 的方法支持直接将其作为先验信息,并支持通过随机或确定性采样的方式,高质量、快速地生成目标。

工作成果

在验证语音合成质量的标准数据集 LJ-Speech 上,研究团队将 Bridge-TTS 与 9 项高质量的语音合成系统和扩散模型的加速采样方法进行了对比。如下所示,该方法在样本质量上(1000 步、50 步采样)击败了基于扩散模型的高质量 TTS 系统 [2,3,7],并在采样速度上,在无需任何后处理如额外模型蒸馏的条件下,超过了众多加速方法,如残差预测、渐进式蒸馏、以及最新的一致性蒸馏等工作 [5,6,7]。

w~深度学习~合集2_深度学习_50

以下是 Bridge-TTS 与基于扩散模型方法的生成效果示例,更多生成样本对比可访问项目网站:https://bridge-tts.github.io/

  • 1000 步合成效果对比

输入文本:「Printing, then, for our purpose, may be considered as the art of making books by means of movable types.」

语音都发不了...

  • 4 步合成效果对比

输入文本:「The first books were printed in black letter, i.e. the letter which was a Gothic development of the ancient Roman character,」

  • 2 步合成效果对比

输入文本:「The prison population fluctuated a great deal,」

下面展示了 Bridge-TTS 一个在 2 步和 4 步的一个确定性合成(ODE sampling)案例。在 4 步合成中,该方法相较于扩散模型显著合成了更多样本细节,并没有噪声残留的问题。在 2 步合成中,该方法展示出了完全纯净的采样轨迹,并在每一步采样完善了更多的生成细节。

w~深度学习~合集2_深度学习_51

在频域中,更多的生成样本如下所示,在 1000 步合成中,该方法相较于扩散模型生成了更高质量的梅尔谱,当采样步数降到 50 步时,扩散模型已经牺牲了部分采样细节,而基于薛定谔桥的该方法仍然保持着高质量的生成效果。在 4 步和 2 步合成中,该方法不需蒸馏、多阶段训练、和对抗损失函数,仍然实现了高质量的生成效果。

w~深度学习~合集2_深度学习_52

在 1000 步合成中,Bridge-TTS与基于扩散模型的方法的梅尔谱对比

w~深度学习~合集2_深度学习_53

在 50 步合成中,Bridge-TTS与基于扩散模型的方法的梅尔谱对比

w~深度学习~合集2_深度学习_54

在 4 步合成中,Bridge-TTS与基于扩散模型的方法的梅尔谱对比

w~深度学习~合集2_深度学习_55

在 2 步合成中,Bridge-TTS与基于扩散模型的方法的梅尔谱对比

Bridge-TTS一经发布,凭借其在语音合成上新颖的设计与高质量的合成效果,在 Twitter 上引起了热烈关注,获得了百余次转发和数百次点赞,入选了 Huggingface 在 12.7 的 Daily Paper 并在当日获得了支持率第一名,同时在 LinkedIn、微博、知乎、小红书等多个国内外平台被关注与转发报道。

w~深度学习~合集2_深度学习_56

多个外文网站也进行了报道和讨论:

w~深度学习~合集2_深度学习_57

方法介绍

薛定谔桥(Schrodinger Bridge)是一类继扩散模型之后,近期新兴的深度生成模型,在图像生成、图像翻译等领域都有了初步应用 [8,9]。不同于扩散模型在数据和高斯噪声之间建立变换过程,薛定谔桥支持任意两个边界分布之间的转换。在 Bridge-TTS 的研究中,作者们提出了基于成对数据间薛定谔桥的语音合成框架,灵活支持着多种前向过程、预测目标、及采样过程。其方法概览如下图所示:   

w~深度学习~合集2_深度学习_58

w~深度学习~合集2_深度学习_59

  • 模型训练:该方法保持了扩散模型训练过程的多个优点,如单阶段、单模型、和单损失函数等。并且其对比了多种模型参数化(Model parameterization)的方式,即网络训练目标的选择,包括噪声预测(Noise)、生成目标预测(Data)、和对应于扩散模型中流匹配技术 [10,11] 的速度预测(Velocity)等。文章发现以生成目标,即梅尔谱为网络预测目标时,可以取得相对更佳的生成效果

w~深度学习~合集2_深度学习_60

  • 采样过程:得益于该研究中薛定谔桥完全可解的形式,对薛定谔桥对应的前 - 后向 SDE 系统进行变换,作者们得到了 Bridge SDE 和 Bridge ODE 用于推断。同时,由于直接模拟 Bridge SDE/ODE 推断速度较慢,为加快采样,该研究借助了扩散模型中常用的指数积分器 [12,13],给出了薛定谔桥的一阶 SDE 与 ODE 采样形式:

w~深度学习~合集2_深度学习_61

在 1 步采样时,其一阶 SDE 与 ODE 的采样形式共同退化为网络的单步预测。同时,它们与后验采样 / 扩散模型 DDIM 采样有着密切联系,文章在附录中给出了详细分析。文章也同时给出了薛定谔桥的二阶采样 SDE 与 ODE 采样算法。作者发现,在语音合成中,其生成质量与一阶采样过程类似。

在其他任务如语音增强、语音分离、语音编辑等先验信息同样较强的任务中,作者们期待此研究也会带来较大的应用价值。








#VQ-VAE


本文利用 VQ-VAE 的结构来学习姿态特征的编码,并用训练好的解码器和 codebook 来指导姿态估计模型的学习,把姿态估计任务变成了一个预测 codebook 中特征的分类问题。

下面是姿态估计模型比较通用的一个结构,目前的算法大都脱离不出这个范畴:

w~深度学习~合集2_深度学习_62

不知道大家有没有思考过这样一个问题:我们训练的姿态估计模型,算一个Encoder、Decoder、还是Encoder-Decoder结构?

为了简单起见,我们以 Topdown 算法来讨论。不难想到,至少有两种视角是说得通的:

  1. 整个模型(Backbone、Neck、Head)就是一个 Encoder,完成图片到位置信息的编码,位置信息的编码形式可以是具体的坐标,也可以是 Heatmap 或者离散的 bin。
  2. Backbone 作为一个共识里的特征提取器,是 Encoder,将图片编码到了某个特征空间,然后 Head 部分是在对这份特征进行解码,解码成人类可以理解的位置信息,因此是 Encoder-Decoder 结构。

以上两种视角最大的不同在于,一种编码空间是人类定义的、可以理解的,另一种是模型自己学习的、人类不好理解或解释的。现阶段我们的知识并不能给出明确的判断,来证明或证伪模型内部的工作原理属于以上哪一种,亦或者其实都不属于,但大量的研究进展都证实,增加模型中可以解释、定义明确的部分、对模型学习的特征空间做出更多限定,对于我们优化算法、训练模型是有巨大帮助的。

在这篇文章中,我们来一起学习一下 CVPR 2023 的论文《Human Pose as Compositional Tokens》,文章利用 VQ-VAE 的结构来学习姿态特征的编码,并用训练好的解码器和 codebook 来指导姿态估计模型的学习,把姿态估计任务变成了一个预测 codebook 中特征的分类问题。

论文链接:https://arxiv.org/pdf/2303.11638.pdf

开源地址:https://github.com/Gengzigang/PCT/tree/main

在进入 PCT 论文的核心思想之前需要再对基础知识做一点铺垫,简单介绍一下 VQ-VAE。

其实近年的姿态估计研究中,利用生成模型的工作越来越多,比如我在《(论文笔记及思考:Human Pose Regression with Residual Log-likelihood Estimation(ICCV 2021 Oral))[https://zhuanlan.zhihu.com/p/395521994] 》中介绍过的 RLE ,使用 Normalizing Flows 中的 RealNVP 来建模数据的真实分布从而提升回归算法的精度;又比如扩散模型火了之后衍生出的好几篇 DiffPose 同名工作;我也读过一些用 GAN 或神经风格迁移来增加数据量、提升图片分辨率、数据增强的工作。这一次,在 PCT 中引入了 VQ-VAE。

不得不说,用到了生成模型的工作读起来都比较有意思,但唯一的问题在于数学公式比较多,理解起来会相对困难,直到现在也还是有同学反映 RLE 看不懂,我也在考虑再写一篇深入浅出 RLE ,来尝试尽量避开数学公式再解读一下(挖坑)。

AE

在讲 VQ-VAE 之前,我们可以先介绍一下最基础的 AutoEncoder(AE)。

w~深度学习~合集2_深度学习_63

w~深度学习~合集2_深度学习_64

基于 AE 的思想,很快也延伸出了 DAE 等工作,对输入图片进行人工的加噪处理,从而让模型可以更好地捕捉关键特征。

VAE

w~深度学习~合集2_深度学习_65

这里多说一句,为什么选择用高斯分布其实是有讲究的,高斯分布的好处是让特征都集中在0点附近,因此可以让特征空间变得稠密,这一来做生成任务的时候,随机取样取到的值也大概率是有意义的。

VQ-VAE

w~深度学习~合集2_深度学习_66

有意思的是,虽然 VQ-VAE 名字里带 VAE,但它其实更像一个 AE,因为训练好的 VQ-VAE 里 codebook 是固定的,这意味着你并不能像 VAE 一样随机取样送进 Decoder 来做生成,而必须通过某种方式预测 codebook 中的特征,组合之后才能给 Decoder 使用。

更细节的内容不在这里展开了,感兴趣的小伙伴可以自行学习。

Pose as Compositional Tokens (PCT)

基础知识铺垫完后,让我们进入 Human Pose as Compositional Tokens。顾名思义,这篇文章是想用 Token 的组合来表示人体姿态,什么叫“Token 的组合”呢?联系一下 VQ-VAE,自然是 codebook 里的特征了。

所以更通俗地理解,PCT 可以看成是用 Backbone 预测 M 个特征,然后把它们用 codebook 中与它们最近似的特征进行替换,然后扔给 Head 来预测坐标。

那么,很自然地我们就会问,codebook 里的特征从哪里呢?这里让我再一次请出 AE 的结构图:

w~深度学习~合集2_深度学习_67

那么,作为 AE 的上位替代,VQ-VAE 同样可以无缝衔接,我们只需要用姿态坐标来训练一个 VQ-VAE 网络,就可以得到 codebook,而这个 codebook 中的特征我们可以认为是各种不同姿态的构成元素,只要 codebook 足够大,那么我们一定能通过这些特征的组合来重建出原来的姿态。

w~深度学习~合集2_深度学习_68

由于输入是坐标不是图片,因此 Encoder 部分论文选择了 MLP-Mixer,这里可以简单地理解成一种不容易过拟合的大号的 MLP 了,其实理论上来说换成 Transformer 或者真的就用 MLP 也是没问题的,看你的任务难度来调整即可。

Decoder 部分也同样是 MLP-Mixer 的堆叠,用 M 个特征来重建 17x2 的姿态坐标。

这个网络是跟图片无关的,所以其实训练的时候其实理论上可以进行的数据增强会比带图片的要丰富很多,这一点做过 Pose Lifting 相关算法的同学应该知道我在说什么。

训练时的损失函数如下:

w~深度学习~合集2_深度学习_69

可以看到是 L1 loss 来监督重建的坐标值,第二项则是 VQ-VAE 中的 commitment loss,目的是鼓励 Encoder 的输出尽量接近 codebook 中的特征,防止 Encoder 预测的结果频繁在各个 codebook 特征之间跳动。

Class Head

训练好了姿态版本的 VQ-VAE,我们真正需要的其实只是 codebook 和 Decoder,原来的 Encoder 就可以扔掉了。接下来需要做的事是训练一个新的 Encoder,这个 Encoder 的能力是把输入图片也编码到 codebook 所在的特征空间,然后就可以快乐地查表和重建了。

w~深度学习~合集2_深度学习_70

但是要从头训一个 Backbone 来做这件事其实也挺麻烦的,作者想了一个更简单的办法,就是用在 Heatmap 方法上训好的 Backbone (MMPose 里一堆现成的)冻结住,在后面接一个轻量的 Class Head 做特征转换即可。

具体而言,Backbone 输出的特征图往往是维度比较高的,而 VQ-VAE 学出来的特征空间只需要 M 个特征,所以可以简单地通过 1x1 卷积降到 M 维,然后把二维的特征图拉直成一维,用全连接层变换到特定的特征维度。这里的做法跟 SimCC 中是比较接近的。

最后再通过一个分类层,对 M 个特征(形状为 MxN)进行分类,假设 codebook 中有 V 个特征,那么分类的结果就是 MxV 的 logits,然后像正常的分类问题一样在 [V] 维度取 softmax 就可以得到每个特征对应到 codebook 里的置信度。

在替换这一步,正常来做的话是对 MxV 的 logits 取 argmax 得到 codebook 里的索引,然后直接替换,但这样一来训练梯度就无法回传了,所以作者对这一步进行了软化,用 softmax 出来的结果乘上 codebook 里的特征矩阵:

w~深度学习~合集2_深度学习_71

也就是 (MxN) x (NxV) =  (MxV) 的矩阵运算,从而使得梯度可以反向传播,网络也就可以端到端训练了。

可以结合作者开源的代码来理解以上计算过程。

# Head 部分
def forward(self, x, extra_x, joints=None, train=True):
    """Forward function."""
    
    if self.stage_pct == "classifier":
        batch_size = x[-1].shape[0]
        cls_feat = self.conv_head[0](self.conv_trans(x[-1]))
        cls_feat = cls_feat.flatten(2).transpose(2,1).flatten(1)
        cls_feat = self.mixer_trans(cls_feat)
        cls_feat = cls_feat.reshape(batch_size, self.token_num, -1)

        for mixer_layer in self.mixer_head:
            cls_feat = mixer_layer(cls_feat)
            
        cls_feat = self.mixer_norm_layer(cls_feat)
        cls_logits = self.cls_pred_layer(cls_feat)
        encoding_scores = cls_logits.topk(1, dim=2)[0]
        cls_logits = cls_logits.flatten(0,1)
        cls_logits_softmax = cls_logits.clone().softmax(1)
    else:
        ## 省略跟 class head 无关的代码 ##

    ## 省略跟 class head 无关的代码 ##
    
    output_joints, cls_label, e_latent_loss = \
        self.tokenizer(joints, joints_feat, cls_logits_softmax, train=train)
    
    if train:
        return cls_logits, output_joints, cls_label, e_latent_loss
    else:
        return output_joints, encoding_scores

# Tokenizer
def forward(self, joints, joints_feature, cls_logits, train=True):
    """Forward function. """
    if train or self.stage_pct == "tokenizer":
        ## 省略跟 class head 无关的代码 ##
    else:
        bs = cls_logits.shape[0] // self.token_num
        encoding_indices = None
    
    if self.stage_pct == "classifier":
        part_token_feat = torch.matmul(cls_logits, self.codebook)
    else:
        part_token_feat = torch.matmul(encodings, self.codebook)

    if train and self.stage_pct == "tokenizer":
        ## 省略跟 class head 无关的代码 ##
    else:
        e_latent_loss = None
    
    # Decoder of Tokenizer, Recover the joints.
    part_token_feat = part_token_feat.view(bs, -1, self.token_dim)
    
    part_token_feat = part_token_feat.transpose(2,1)
    part_token_feat = self.decoder_token_mlp(part_token_feat).transpose(2,1)
    decode_feat = self.decoder_start(part_token_feat)

    for num_layer in self.decoder:
        decode_feat = num_layer(decode_feat)

    decode_feat = self.decoder_layer_norm(decode_feat)
    recoverd_joints = self.recover_embed(decode_feat)
    
    return recoverd_joints, encoding_indices, e_latent_loss

而我想说的是,相比于直接软化相乘,这里其实还可以有个更骚的操作:

quantize = cls_logits_softmax + (codebook - cls_logits_softmax).detach()
# 正向传播和往常一样
# 反向传播时,detach()这部分梯度为0,quantize和input的梯度相同
# 即实现将quantize复制给input

这样做可以做到数值上把 Encoder 预测的特征替换成 codebook 里的特征,但梯度上用预测的结果进行回传。好处是可以消除掉软化相乘的结果跟真实 codebook 之间的差异,因为软化出来的毕竟不是真的替换,特征还是会有细微的数值差异的,如果 Decoder 够强的话可能无所谓,但能消除差异肯定是更好的。有空也许可以验证一下这么做对于模型性能有没有帮助。

实验结果

w~深度学习~合集2_深度学习_72

从结果来看还是不错的,不过我注意到本文的实验都用的 Swin 这种非常强的 Backbone,不知道是不是因为冻结 Backbone 的做法对特征质量要求比较高,弱的 Backbone 可能效果不够。至于冻结 Backbone,嗯。。我闻到了经费紧张的味道。

本文的另一大卖点是对遮挡情况的鲁棒性,由于 VQ-VAE 是直接在姿态上进行训练的,所以理论上学到的 codebook 中的特征就可以任意组合出各种不同的姿态,而受图片本身质量的干扰会显著降低,在 OCHuman 和 CrowdPose 等数据集上的表现也佐证了这一点。

w~深度学习~合集2_深度学习_73

 而 VQ-VAE 学出来的 codebook 特征由于含义非常明确,所以也很容易进行可视化验证,任意地调整输入 Decoder 的特征组合,就可以看到预测出来的姿态上的变化,并且这种变化是局部的:

w~深度学习~合集2_深度学习_74

结语

本文主要介绍了一种在姿态估计任务中引入 VQ-VAE 来约束姿态特征空间的方法。另外本文的官方代码是基于 MMPose 做的,也欢迎大家来试用 MMPose~







#Beimingwu

机器学习在众多领域取得巨大成功,海量的优质机器学习模型被不断开发。但同时,普通用户想要得到适合自己任务的模型并不容易,更不用说从头开始构建新模型了。南京大学周志华教授提出的「学件」范式通过模型 + 规约的思路构建学件市场(现称学件基座系统),让用户根据需求从中统一地选择和部署模型。如今学件范式迎来了首个开源的基础平台 —— 北冥坞(Beimingwu)。

在经典的机器学习范式中,为一项新任务从头训练高性能的模型需要大量的高质量数据、专家经验和计算资源,无疑耗时耗力且成本高昂。此外,复用已有的模型也存在很多问题,比如很难将训练好的特定模型适应不同的环境、逐步改进训练好的模型过程中可能出现灾难性遗忘。

不仅如此,数据隐私和所有权问题也阻碍开发者之间共享经验,并限制了大模型在很多数据敏感场景中的能力发挥。事实上,大多数研究分别针对这些问题开展,而大多数问题在实践中往往同时出现并相互影响。

另外,在自然语言处理和计算机视觉领域取得显著成就的主流大模型发展范式也没有解决上述问题。由于计划外任务和场景的无限性、环境的不断变化性、灾难性遗忘、极高的资源需求、隐私问题、本地化部署需求以及个性化和定制化的要求,为每个潜在的任务构建对应的大模型显然不切实际。

面对这些问题, 南京大学周志华教授在 2016 年提出了学件(learnware)概念,并基于学件以一种全新的范式来解决机器学习任务。并且,学件范式首次提出建立一个基础平台 —— 学件基座(dock)系统,统一容纳全球开发者自发提交的机器学习模型,然后根据潜在用户的任务需求来利用模型能力解决新任务。

学件范式的核心设计是这样的:对于来自不同任务的任意结构的高质量模型,学件是一个格式统一的基础单元,包含了模型本身以及以某种表示描述模型特性的规约。有分享意愿的开发者可自由提交模型,学件坞系统协助产生规约形成学件存放在学件坞中,开发者在这个过程中无需向学件坞泄露自己的训练数据。未来用户可以向学件基座系统提交需求,在学件系统协助下通过查搜和复用其中的学件来解决自己的机器学习任务,且用户可以不向学件系统泄露自有数据。

而为了建立学件范式的初步科研平台,周志华教授团队近日构建了北冥坞(Beimingwu),它是第一个开源的、用于未来学件范式研究的学件基座系统。相关论文已经公布,足足有 37 页。

从技术上看,受益于可扩展的系统和引擎架构设计、广泛的工程实现和优化、全流程基线算法的集成以及算法基础评估场景的构建,北冥坞系统不仅为未来的学件相关算法和系统研究提供了基础,而且还为托管大量学件和建立学件生态系统奠定了可能性。

  • 论文标题:Beimingwu: A Learnware Dock System
  • 论文地址:https://arxiv.org/pdf/2401.14427.pdf
  • 北冥坞主页:https://bmwu.cloud/
  • 北冥坞开源仓库:https://www.gitlink.org.cn/beimingwu/beimingwu
  • 核心引擎开源仓库:https://www.gitlink.org.cn/beimingwu/learnware

在本文中,研究者的贡献可总结如下:

  • 基于学件范式,简化了用户解决新任务的模型开发:做到了数据高效、无需专家知识和不泄露原始数据;
  • 提出了完整统一且可扩展的系统引擎架构设计;
  • 开发了具有统一用户接口的开源学件基座系统;
  • 用于不同场景的全流程基线算法实现和评估。

学件范式概览

学件范式由周志华教授团队于 2016 年提出,并在 2024 年的论文《Learnware: small models do big》中进行总结并进一步设计。该范式的简化流程如下图 1 所示:对于任何类型和结构的高质量机器学习模型,它们的开发者或所有者可以自发地将训练好的模型提交到学件基座系统(以往称为学件市场)中。

w~深度学习~合集2_深度学习_75

正如前文所介绍,学件范式提出建立一个学件基座系统,来统一容纳、组织和利用表现良好的已有模型,从而统一地利用来自所有社区的努力来解决新的用户任务,并有可能同时解决大家关心的一些重大问题,包括了训练数据和训练技巧缺乏、灾难性遗忘、难以实现持续学习、数据隐私或专有化、开放世界中计划外的新任务、重复浪费训练导致的碳排放等。

最近,学件范式及其核心思想受到了越来越多的关注。但关键问题和主要的挑战在于:考虑到学件基座系统可以容纳数千甚至数百万个模型,如何识别和选择对新用户任务最有帮助的一个或一组学件?显然,直接将用户数据提交到系统中进行试验的成本高昂,并且会泄露用户的原始数据。

学件范式的核心设计在于规约,最近研究主要基于缩略核均值嵌入(reduced kernel mean embedding, RKME)规约。

虽然现有的理论和实证分析研究已经证明了基于规约的学件识别的有效性,但学件基座系统的实现仍然缺失并面临巨大的挑战,需要基于规约的全新架构设计来应对多样化的真实世界任务和模型,并根据用户的任务需求统一地查搜和复用大量的学件。

研究者构建了首个学件基座系统 —— 北冥坞,对包括提交、可用性测试、组织、管理、识别、部署和学件复用在内的全流程提供了支持。

利用北冥坞解决学习任务

基于学件范式的首次系统实现,北冥坞显著简化了为新任务构建机器学习模型的过程。现在,我们可以按照学件范式的流程来构建模型。并且受益于统一的学件结构、统一的架构设计和统一的用户接口,北冥坞中所有提交的模型实现了统一识别和复用。

令人兴奋的是,给定一个新的用户任务,如果北冥坞拥有能够解决这项任务的学件,则只需要几行代码,用户就可以轻松地获得并部署其中的高质量模型,不需要大量数据和专家知识,也不会泄露自己的原始数据。

下图 2 为利用北冥坞解决学习任务的代码示例。

w~深度学习~合集2_深度学习_76

下图 3 展示了使用北冥坞的整个工作流程,包括统计规约生成、学件识别、加载和复用。基于工程实现和统一的接口设计,每一步都可以通过一行关键代码来实现。

w~深度学习~合集2_深度学习_77

研究者表示,在解决学习任务时,基于北冥坞,使用学件范式的模型开发流程具有以下几点显著优势:

  • 不需要大量的数据和计算资源;
  • 不需要大量的机器学习专业知识;
  • 为多样化模型提供统一、简单的本地部署;
  • 隐私保护:不泄露用户的原始数据。

目前,北冥坞初期仅拥有 1100 个在开源数据集上构建的学件,覆盖的场景不多,处理大量特定和未见过场景的能力依然有限。基于可扩展的架构设计,北冥坞可以作为学件范式的研究平台,为学件相关研究提供便捷的算法实现和实验设计。

与此同时,依赖基础实现和可扩展架构支撑,不断提交的学件和不断提升的算法将不断增强系统解决任务的能力,并增强系统复用现有训练良好的模型以解决超出开发者原始目标的新任务的能力。未来,学件基座系统的持续演进使其能够响应越来越多的用户任务,而不会发生灾难性遗忘,并自然地实现终身学习。

北冥坞设计

论文第 4 节介绍了北冥坞系统的设计。如图 4 所示,整个系统包括四个层次:学件存储、系统引擎、系统后台和用户界面。这一节首先介绍了每一层的概况,然后介绍了基于规约设计的系统核心引擎,最后介绍了系统中实现的算法。

w~深度学习~合集2_深度学习_78

首先看下每一层的概况:

学件存储层。在北冥坞,学件以压缩包的形式存储。这些压缩包主要包括四类文件:模型文件、规约文件、模型执行环境依赖文件和学件配置文件。

这些学件压缩包由学件数据库集中管理。数据库中的学件表存储了关键信息,包括学件 ID、存储路径和学件状态(如未验证和已验证)。该数据库为北冥坞后续核心引擎访问学件信息提供了统一的接口。

此外,该数据库可使用 SQLite(适用于开发和实验环境中的简易设置)或 PostgreSQL(推荐用于生产环境中的稳定部署)构建,两者使用相同的接口。

核心引擎层。为了保持北冥坞的简洁性和结构性,作者将核心组件和算法从大量的工程细节中分离出来。这些抽取出来的组件现在可以作为学件 python 包使用,它是北冥坞的核心引擎。

作为系统内核,该引擎涵盖了学件范式中的所有流程,包括学件的提交、可用性测试、组织、识别、部署和复用。它独立于后台和前台运行,为学件相关任务和研究实验提供全面的算法接口。

此外,规约是引擎的核心组件,从语义和统计角度表征各个模型,连接着学件系统中各个重要组件。除了开发者提交模型时生成的规约外,引擎还能利用系统知识为学件生成新的系统规约,从而加强学件的管理并进一步表征其能力。

现有的模型管理平台,如 Hugging Face,仅被动地收集和托管模型,让用户自行决定模型的能力和与任务的相关性,与之相比,北冥坞通过其引擎,以全新的系统架构主动管理学件。这种主动管理不仅限于收集和存储,该系统根据规约组织学件,可以根据用户任务需求匹配相关学件,并提供相应的学件复用和部署方法。

核心模块设计如下图:

w~深度学习~合集2_深度学习_79

系统后台层。为了使北冥坞实现稳定部署,作者在核心引擎层的基础上开发了系统后台。通过多个模块的设计和大量的工程开发,北冥坞目前已具备在线稳定部署的能力,为前端和客户端提供了统一的后台应用程序接口。

为确保系统高效稳定运行,作者在系统后台层进行了多项工程优化,包括异步学件验证、跨多后端节点的高并发性、界面级权限管理、后台数据库读写分离、系统数据自动备份。

用户接口层。为方便北冥坞用户使用,作者开发了相应的用户接口层,包括基于网络的浏览器前端和命令行客户端。

基于 web 的前端同时提供用户和管理员版本,提供各种用户交互和系统管理页面。此外,它还支持多节点部署,以便顺利访问北冥坞系统。

命令行客户端与学件 python 包集成在一起。通过调用相应接口,用户可以通过前端调用后台在线 API,访问学件相关模块和算法。

实验评估

在第 5 节中,作者构建了各种类型的基础实验场景,以评估在表格、图像和文本数据上进行规约生成、学件识别和复用的基准算法。

表格数据实验

在各种表格数据集上,作者首先评估了从学件系统中识别和复用与用户任务具有相同特征空间的学件的性能。此外,由于表格任务通常来自不同的特征空间,作者还对来自不同特征空间的学件的识别和复用进行了评估。

同质案例

在同质案例中,PFS 数据集中的 53 个商店充当 53 个独立用户。每个商店利用自己的测试数据作为用户任务数据,并采用统一的特征工程方法。这些用户随后可以在基座系统上查搜与其任务具有相同特征空间的同质学件。

当用户没有标注数据或标注数据量有限时,作者对不同的基准算法进行了比较,所有用户的平均损失如图 6 所示。左表显示,无数据方法比从市场上随机选择和部署一个学件要好得多;右图表明,当用户的训练数据有限时,识别并复用单个或多个学件比用户自训练的模型性能更优。

w~深度学习~合集2_深度学习_80

异构案例

根据市场上学件与用户任务的相似性,异构案例可进一步分为不同的特征工程和不同的任务场景。

不同的特征工程场景:图 7 左显示的结果表明,即使用户缺乏标注数据,系统中的学件也能表现出很强的性能,尤其是复用多个学件的 AverageEnsemble 方法。

w~深度学习~合集2_深度学习_81

不同的任务场景。图 7 右显示了用户自训练模型和几种学件复用方法的损失曲线。很明显,异构学件在用户标注数据量有限的情况下实验验证是有益的,有助于更好地与用户的特征空间进行对齐。

图像和文本数据实验

此外,作者在图像数据集上对系统进行了基础的评估。

图 8 显示,当用户面临标注数据稀缺或仅拥有有限数量的数据(少于 2000 个实例)时,利用学件基座系统可以产生良好的性能。

w~深度学习~合集2_深度学习_82

最后,作者在基准的文本数据集上对系统进行了基础评估。通过统一的特征提取器进行特征空间对齐。

结果如图 9 所示,同样地,即使在没有提供标注数据的情况下,通过学件识别和复用所获得的性能也能与系统中最好的学件相媲美。此外,与从头开始训练模型相比,利用学件基座系统可以减少约 2000 个样本。

w~深度学习~合集2_深度学习_83








#DPO数学原理

本文通过数学推导展示了如何从偏好对齐的总体优化目标出发,逐步简化并最终得到DPO的优化目标。

一、DPO在做一件什么事

在文章的开始,我们来思考一个问题:如果想让你训练一个能听得懂人类问题,并给出人类满意答案的模型,你会怎么设计大致的训练步骤?

一口吃成一个大胖子是困难的,所以不如让我们循序渐进地来设计这个训练过程:

首先,你的模型必须要有充足的知识储备,以应对你可能提出的任何问题

其次,你的模型需要明白“你在提出问题”或者“你在下达指令”这个动作,它在理解这一点的基础上,尝试按照你的指令给出相应的回答

最后,你希望模型不仅能对你的问题给出答案,还需要给出令你满意的回答,也就是你希望模型对齐你的偏好。

我们以chatGPT的训练为例,看看它是如何贴合这个训练步骤的:

  • 首先,它使用大量的数据(文本、代码、数学等),先训练出一个base模型。这个训练过程赋予模型对文本上下文的理解能力和通用的知识,你也可以理解成它训练出了一个能做好词语接龙的base模型
  • 然后,我们在这个base模型上做微调,使得模型能够听懂人类的指令,这个过程得到的模型我们称为
  • 最后,我们采用rlhf的方式(奖励模型 + ppo),使得模型不仅能够听懂人类指令,还能产出符合人类偏好的回答。

(关于chatGPT原理和rlhf原理的部分,可以参考这篇和这篇文章)。

现在,我们把焦点放在第三步上:如何训练模型对齐人类的偏好。在以chatGPT为代表的训练方法中:

  • 训练奖励模型(Reward Model, RM):
  • 首先,我们需要有一个【标准】,这个标准在告诉待训练的模型,什么回答才是人类喜欢的。这个标准就是奖励模型,它将对各个回答进行打分。
  • 然后,在训练奖励模型时,我们可以采用【偏好排序】来标注数据集。即对于一个prompt,我们可以产出若干个回答。然后让人工对这若干个回答进行偏好排序,我们就用这些数据来训练模型
  • 训练对齐模型:
  • 在这篇文章中,我们称经过偏好对齐训练后的模型为【对齐模型】,这个模型也是我们训练的最终目的
  • 设计对齐模型的优化目标:这个优化目标不仅考虑到奖励模型的得分,也尽量让对齐模型参数更新后输出的分布不要偏移太远,防止模型越训越差。
  • 使用强化学习的方法,采用PPO手段来训练这个优化目标,因为用到了强化学习,所以这种方法又被称为rlhf-ppo。在这个过程中,我们让对齐模型根据prompt自生成回答,并采用训练好的奖励模型对回答进行打分,对齐模型会根据评分结果不断调整自己的输出分布。更多细节在上面提到的rlhf相关文章中,这里不赘述。

当你仔细端详【对齐人类偏好】这个训练步骤时,你可能会感觉有些疑惑:

  • 看起来,在训练奖励模型的过程中,我们就已经在考虑“什么回答是好的,什么回答是不好的”这个问题了。而对齐模型依然是在考虑这个问题。所以,我们能不能避开奖励模型的训练,直接一步到位训练对齐模型呢?
  • 在实际rlhf-ppo的训练中,存在【显存占据大】、【超参多】、【模型训练不稳定】等一系列问题。所以,在考虑“一步到位训练对齐模型”的过程中,我们是不是也能顺手做到绕过强化学习,采用一个更简单的方式(比如类似于sft)来使用偏好数据训练对齐模型呢?

基于这些考虑,DPO(Direct Preference Optimization)应运而生,正如它名字中Direct蕴含的含义一样,比起传统基于强化学习PPO的方式,它改进了以下两点:

  • 不再训练奖励模型,直接使用人类标注的偏好数据,一步到位训练对齐模型。
  • 不再使用强化学习的方法,通过数学推理,将原始的偏好对齐目标步步简化,最后通过类似于sft的方式,用更简单的步骤训练出对齐模型。

我们借用DPO论文中的配图,来直观比较RLHF-PPO和DPO之间的差异:

w~深度学习~合集2_深度学习_84

这篇文章将从数学原理上详细解释,DPO是如何从最原始的偏好对齐优化目标开始,一步步做简化的(不涉及实操代码,这个后续有时间再单开一篇文章)。本文从更符合大家逻辑思考顺序的角度,重构了DPO的推导过程,并对每一步推导过程都给出了详细的注解,希望能帮大家解决一些数学上的困惑,也更好理解DPO。

二、偏好对齐模型的优化目标

w~深度学习~合集2_深度学习_85

不管你是ppo还是dpo,在偏好对齐这一步中,总的优化目标是不变的,如上式所示,其中:

  •  : 是我们正在训练的、目的是为了对齐人类偏好的模型
  •  : 是训练好的奖励模型
  •  :参考模型, 一般是sft步骤的模型初始化而来

下面开始循序渐进解释dpo loss函数是如何从这个总体优化目标中推导而出的,大家在这个过程中依然牢记两件事:

  • 绕过奖励模型
  • 最大可能简化优化目标

三、步骤1:从优化目标中求解最优对齐模型


3.1 推导细节

w~深度学习~合集2_深度学习_86

式(11)依然是总优化目标,符号稍作了改写。现在我们要找到能最大化这个优化目标的对齐模型。现在我们开始对它进行改进:

w~深度学习~合集2_深度学习_87

第1行~第2行:

所以可以从第1行改写成第2行。

第2行~第3行:

除以,并取反(因此max改成min)

第3行~第4行:

  • 首先,人为定义一个partition function:
  •  表示在给定某个 prompt  的前提下, ref模型可能生成的所有 y , 因此我们有
  • 由  的定义我们知道,它是关于  的函数,且它和我们准备优化的模型  没有关系。

我们把带入第3行,就可以得到第4行的结果。

观察式(12)中括号里的左半部分,我们发现它非常像一个KL散度的形式(即衡量了两个分布之间的相似性),鉴于分子已经是个显式的分布表示了,我们干脆把分母也写成一个显示的分布表示,我们定义一个分布:

好,现在再把这个人为定义的分布表达带回到式(12)中,我们得到:

w~深度学习~合集2_深度学习_88

观察式(14),前面我们说过  和我们准备优化的模型  没有关系,所以可以把它忽略掉。那么现在我们只用关心KL散度这一项。我们知道KL散度在两个分布完全相等时达到最小,由此我们可以写出模型的显式解:

w~深度学习~合集2_深度学习_89

我们对式(15)再做一个简单的改写:因为以上推导都是在假设我们有一个固定的奖励函数的基础上进行的,所以我们可以加一个下标来强调这一点,则式(15)可进一步被改写成:

w~深度学习~合集2_深度学习_90

可是, 在正常的对齐训练中, 这个奖励函数  可不是任意的, 它是我们先用数据训练出来的最优奖励模型,然后在这个最优奖励模型的基础上,我们再通过训练去找到最优对齐模型  。 最优的奖励模型  和基于它训练出的最优的对齐模型  依然满足式 (4) 的关系, 我们分别设它们为 , 则有:

后面这些推导步骤没有什么难度,无非是做了些公式和符号上的变化。

3.2 步骤1总结

到此为止,经过了长长的推导,你可能已经有点懵了,没关系,我们总结一下步骤1中我们做的事情:

  • 首先,我们有一个对齐人类偏好阶段的总优化目标函数,它是在假设我们已经有一个奖励函数的基础上设计的,我们的目标是找到能使这个目标值最大化的对齐模型:

w~深度学习~合集2_深度学习_91

  • 然后,我们从这个目标函数出发,找到的显式解(也就是在任意固定的奖励函数r的基础上最优的):

其中,  是人为定义的partition function, 它形式为

  • 最后,由于在实际训练中,我们肯定是在最优的奖励函数上去训练最优的对齐模型,所以我们对上式的符号稍加更改,令星号代表最优,则有:

四、步骤2:跳过奖励模型

虽然我们现在得到了对齐模型  的显式解  ,但是我们却很难直接利用起这个显式解形式,原因如下:

  •  的值很难估计。根据  的形式可知, 想要估计它, 需要对一个prompt x采样足够多的回答 y 。这个代价是十分昂贵的。
  • 同时回顾最开始我们的目标:省略训练奖励模型这个步骤,一步到位来训练对齐模型。而目前我们得到的  的显式解仍然需要一个确定的奖励函数 , 没有达到我们的目标。

所以现在我们继续来迭代。基于上述第 2 个原因,我们可以先从  的显式解中推出奖励函数  的形式:

w~深度学习~合集2_深度学习_92

好, 现在既然我们能用最优对齐模型  表示出最优奖励模型  了, 那么我们直接把  代入到奖励模型的训练优化目标中去, 不就意味着我可以明面上训练奖励模型, 实际上却一步到位训练出了对齐模型吗? 

现在,问题回到“奖励模型的训练上”来了。我们通常使用“偏好排序”这种数据标注方式来对奖励模型进行训练,一般有2种偏好排序方法:

  • 只生成2个回答,<prompt x, chosen y1, reject y2>,即对于一个prompt,我们只生成2个回答,让人工对这两个回答的偏好做排序,我们希望奖励模型对chosen回答的给分尽量高于对reject回答的给分。
  • 生成K个(K > 2)回答,<prompt x, y1, ..., yK>,假设人工标注后的偏好排序组合为(比如人工人为偏好从大到小应该为y2 > y3 > y1 >... > yK,则这个排列就为),那么我们希望奖励模型对这个排序的总得分要大于其余任何可能的偏好排序。

在某些框架(比如chatGPT)的训练中,当生成的回答>2个时,它会把回答拆成两两pair对,这样就可以和只生成2个回答时的目标函数做统一。但在更一般的场景中,对于>2个回答的场景,我们是把每一种可能的回答偏好排序当成一个整体数据进行处理的,然后希望真值排序的得分最高。DPO的推导是基于后者进行的,所以接下来,我们也对K=2和K>2这两种情况分别下DPO最终的目标函数形式推导进行详细说明。

4.1 BT模型:只生成2个回答

<prompt x, chosen y1, reject y2>,对于一个prompt,我们只生成两个答案,然后在这两个答案间进行偏好排序。那么在这种偏好标注数据下,我们该怎么设计奖励模型的训练目标呢?

首先,我们需要明确,我们到底希望一个好的奖励模型能做什么事?我们当然是希望“chosen y1打败reject y2的概率尽量大”。基于此,我们可以引入统计模型Bradley-Terry(BT模型) 进行建模,该模型在1952年被首次提出,用于分析成对数据间的相对优势或者偏好,被广泛应用于体育比赛分析、市场研究等场景。在该模型下,我们假设有一个成对数据,则“y1打败y2的概率”可以被表示成:

其中,  分别表示  的强度参数。

什么是强度参数呢? 假设我们现在想预测球队1在本场能打败球队2的概率,那么强度参数就可以是这两只球队过往的胜率。那么同理,如果现在y1和y2分别表示chosen和reject回答,那么强度参数就可以是奖励模型对这两个回答打出的分数,则根据BT模型,我们有:

我们希望y1打败y2的概率尽量大,也就是我们希望对于整个标注数据集,chosen打败reject的期望概率尽量大(其中,w=chosen,l=reject),所以奖励函数的总体优化目标可以设计成:

我们把P的具体形式代入这个函数,则有:

w~深度学习~合集2_深度学习_93

诶,你看,这最后一行公式你眼熟不?这不就是chatGPT中构造的奖励模型优化目标的最终形式么?在chatGPT的论文中,直接给出了这个优化目标,并做了直觉上的解读。而这里我们则更进一步:从最经典的BT模型开始,一步步推导出成对偏好数据下的奖励模型优化目标应该如何设计。

好,现在我们假设,最优奖励模型为,则我们将其带入上面的优化目标中,就有:

而同时,根据前文的推导,最优的奖励模型又可以用最优的对齐模型来显式表示,即:

我们把这个显式表示带入上面的优化目标中,则有:

到这里,你是否惊奇地发现:我们已经把训练奖励模型的目标函数转化成只和对齐模型相关了! 也就是说,我们可以一步到位,绕开训练奖励模型的过程,直接用标注好的【成对】偏好数据,以类似于sft的过程直接训练对齐模型了!因此我们对上述式子再稍加改动,我们设等待训练的对齐模型为,则有:

看,这就是【成对】偏好数据下DPO的优化目标。

总结一下,在这一节中:

  • 我们通过经典的BT模型,先一步步推导出【成对偏好数据】下训练奖励模型的优化目标
  • 然后,我们再使用前问推导出的奖励函数和对齐模型的关系,把奖励模型优化目标中和奖励函数相关的部分替换成对齐模型,构造出了【成对偏好数据】下的DPO优化目标,以此达到绕过奖励模型的偏好对齐训练。

4.2 PT模型:生成K(K>2)个回答

现在,如果我不想使用【成对偏好数据】,而是对于一个prompt,我标出K(K>2)个回答,然后对这些回答进行人工偏好排序,在这种方式下,我要怎么设计奖励模型优化目标呢?

类比于BT,我们同样有一个基于统计的PT模型(Plackett-Luce)可以对多数据的偏好进行排序,假设为人工标注出的真值排序,则我们当然希望能够打败其余任何一种可能的偏好排序,我们将“最优排序打败其余任何一种排序”的概率表示成:

其中,  表示人类标注的偏好序列  中的第  个数据, 序列  中的  个回答已经按照偏好从高到低进行排序

上面这个公式从直观上理解的话:

  • 对于真值  中的第一个回答 , 它是人工标注的偏好最高的数据, 我们当然希望它的得分在  中占大头
  • 对于真值  中的第一个回答 , 我们当然希望它的得分在  中占大头
  • 对于真值  中的第一个回答 , 我们当然希望它的得分在  中占大头
  • 以此类推, 则不难理解上述在PT模型下概率P的表达方式。

同样, 我们把最优奖励函数  代入上面的P中, 则有:

w~深度学习~合集2_深度学习_94

然后我们再用  去表示 , 则有 (这里我们可以把  省略掉, 因为正如前文所说, 它和对齐模型  没有关系) :

w~深度学习~合集2_深度学习_95

那么对于整个数据集来说,我们希望最优序列打败其余任何一个可能序列的期望概率尽量大,则多回答下DPO的目标函数可以写成:

w~深度学习~合集2_深度学习_96

五、(必看)DPO优化目标推导过程总结

我们把DPO的推导过程完整总结一次:

  • 首先, 我们有一个对齐人类偏好阶段的总优化目标函数, 它是在假设我们已经有一个奖励函数  的基础上设计的, 我们的目标是找到能使这个目标值最大化的对齐模型

w~深度学习~合集2_深度学习_97

  • 然后, 我们从这个目标函数出发, 找到  的显式解 (也就是在任意固定的奖励函数  的基础上最优的  ) :

其中,  是人为定义的partition function, 它形式为

  • 接着,由于在实际训练中,我们肯定是在最优的奖励函数上去训练最优的对齐模型pi,所以我们对上式的符号稍加更改,令星号代表最优:
  • 然后,由于我们的训练目标是尽量绕过奖励模型,直接使用偏好数据,通过类似sft的方式一步到位训练对齐模型,所以我们将上式先改写成如下形式。接下来,我们只需要关注如何构造奖励函数的训练目标,然后把这个式代入训练目标中,就可以一步到位训练对齐模型。
  • 在奖励模型的训练过程中,有2种数据标注的方式,分别是【成对回答偏好标注】和【多回答偏好标注】。
  • 成对回答偏好标注:在这类数据标注方式上,我们使用BT模型,先推导出奖励模型的优化目标,然后使用  替换掉优化目标中的 ,得到最终的dpo优化目标:
  • 多回答偏好标注:推导逻辑同上,但不同的是我们使用的是PT模型,最终得到的DPO优化目标为:

w~深度学习~合集2_深度学习_98








#OK-Robot

如果有个这样的机器人,你几点回家?

「xx,去把电视柜上的遥控器帮我拿过来。」在一个家庭环境中,很多家庭成员都不免被支使干这种活儿。甚至有时候,宠物狗也难以幸免。但人总有支使不动的时候,宠物狗也并不一定都能听懂。帮人类干活儿的终极梦想还是寄托在机器人身上。

最近,纽约大学、Meta 研发出的一款机器人学会了这个技能。你只需要对它说,「把桌子上的玉米片拿到床头柜上」,它就能自己找到玉米片,并规划出路线和相应的动作,顺利完成任务。此外,它还能帮你整理东西或扔垃圾。

这个机器人名叫 OK-Robot,由来自纽约大学、Meta 的研究者共同构建。他们将视觉语言模型(用于物体检测)、导航和抓取的基础模块整合到一个开放知识型框架中,为机器人的高效拾放操作提供了解决方案。看来,等我们老了之后,买个机器人给自己端茶倒水还是有希望的。

OK-Robot 定位中的「开放知识」指的是在大型公开数据集上训练的学习模型。当 OK-Robot 被放置在一个新的家庭环境中时,它将从 iPhone 上获取扫描结果。根据扫描结果,它会使用 LangSam 和 CLIP 计算出密集的视觉语言表征,并将其存储在语义存储器中。在此之后,给定一个需要拾取的对象的语言查询,查询的语言表征与语义记忆相匹配。接下来,它会依次应用导航和拾取模块,移动到所需物体并将其拾取。类似的过程也可用于丢弃物体。

为了研究 OK-Robot,研究者在 10 个真实的家庭环境中对其进行了测试。通过实验,他们发现,在一个从未见过的自然家居环境中,该系统零样本部署的成功率平均为 58.5%。然而,这一成功率在很大程度上取决于环境的「自然程度」。因为他们发现,通过改进查询、整理空间和排除明显具有对抗性的物体(太大、太半透明、太滑),这一成功率达到了约 82.4%。

总之,通过实验,他们得出了以下结论:

  • 预训练的视觉语言模型对开放词汇导航非常有效:目前的开放词汇视觉语言模型 —— 如 CLIP 或 OWL-ViT—— 在识别真实世界中的任意物体方面表现出色,并能以零样本的方式导航、找到这些物体。
  • 预训练的抓取模型可直接应用于移动操控:与 VLM 类似,根据大量数据预训练的专用机器人模型可以直接应用于家庭中的开放词汇抓取。这些机器人模型不需要任何额外的训练或微调。
  • 如何组合组件至关重要: 研究者发现,在预先训练好模型的情况下,可以使用一个简单的状态机模型(state-machine model)将它们组合起来,而无需进行任何训练。他们还发现,使用启发式方法来抵消机器人的物理限制,可以在真实世界中获得更高的成功率。
  • 目前仍存在一些挑战:考虑到在任意家庭中进行零样本操作的巨大挑战,OK-Robot 在先前工作的基础上进行了改进:通过分析失败模式,他们发现在视觉语言模型、机器人模型和机器人形态学方面可以进行重大改进,这将直接提高开放知识操纵智能体的性能。

为了鼓励和支持其他研究者在开放知识机器人领域的工作,作者表示将共享 OK-Robot 的代码和模块。更多信息可参见:https://ok-robot.github.io。

w~深度学习~合集2_深度学习_99

  • 论文标题:OK-Robot: What Really Matters in Integrating Open-Knowledge Models for Robotics
  • 论文链接:https://arxiv.org/pdf/2401.12202.pdf

技术组成和方法

该研究主要解决这个问题:从 B 上拿起 A 并将其放在 C 上,其中 A 是一个物体,B 和 C 是现实世界环境中的某个地方。要实现这一点,所提系统需要包含以下模块:开放词汇对象导航模块,开放词汇 RGB-D 抓取模块以及释放或放置对象的启发式模块(dropping heuristic)。

开放词汇对象导航

首先是扫描房间。开放词汇对象导航遵循了 CLIP-Fields 的方法,并假设有一个预先映射阶段,即使用 iPhone 手动扫描家庭环境。这种手动扫描只是用 iPhone 上的 Record3D 应用程序拍摄家庭视频,这将产生一系列带位置的 RGB-D 图像。

扫描每个房间的时间不到一分钟,一旦信息收集完毕,RGB-D 图像以及相机的姿态和位置就被导出到项目库中进行地图构建。录制时必须捕捉地面表面以及环境中的物体和容器。

接下来是进行对象检测。在扫描的每一帧上,会有一个开放词汇对象检测器对扫描的内容进行处理。本文选择 OWL-ViT 对象检测器,因为这种方法在初步查询中表现更好。研究者在每一帧上应用检测器,并提取每个对象边界框、CLIP 嵌入、检测器置信度,并将它们传递到导航模块的对象存储模块中。

然后进行以对象为中心的语义存储。本文借助 VoxelMap 来完成这一步,具体来说,他们使用深度图像和相机收集的姿态将对象掩模反向投影到现实世界坐标中,这种方式可以提供一个点云,其中每个点都有一个来自 CLIP 的关联语义向量。

之后是查询记忆模块:给定一个语言查询,本文使用 CLIP 语言编码器将其转换为语义向量。由于每个体素都与家中的真实位置相关联,因此可以找到最有可能找到查询对象的位置,类似于图 2 (a)。

w~深度学习~合集2_深度学习_100

必要时,本文将「A on B」实施为「A close B」。为此,查询 A 选择前 10 个点,查询 B 选择前 50 个点。然后计算 10×50 成对欧氏距离,并选择与最短 (A, B) 距离相关的 A 点。

完成上述过程,接下来就是导航到现实世界中的对象:一旦得到了现实世界中的 3D 位置坐标,就可以将其用作机器人的导航目标来初始化操作阶段。导航模块必须将机器人放置在手臂可触到的范围,以便机器人随后可以操纵目标物体。

机器人对现实世界物体的抓握

与开放词汇导航不同,为了完成抓取任务,算法需要与现实世界中的任意对象进行物理交互,这使得这部分变得更加困难。因此,本文选择使用预训练的抓取模型来生成现实世界中的抓取姿态,并使用 VLM 进行语言条件过滤。

本文使用的抓取生成模块是 AnyGrasp,它在给定单个 RGB 图像和点云的场景中使用平行钳口夹具生成无碰撞抓取。

AnyGrasp 提供了场景中可能的抓握(图 3 第 2 列),包括抓握点、宽度、高度、深度和抓握分数,该分数表示每次抓握中未校准的模型置信度。

w~深度学习~合集2_深度学习_101

使用语言查询过滤抓握:对于从 AnyGrasp 获得的抓握建议,本文采用 LangSam 过滤抓握。本文将所有建议的抓握点投影到图像上,并找到落入对象掩模的抓握点(图 3 第 4 列)。

抓握执行。一旦确定了最佳抓握(图 3 第 5 列),就可以使用简单的预抓握方法来抓握目标对象。

释放或放置对象的启发式模块

抓握对象后,接下来就是将对象放置在什么地方。与 HomeRobot 的基线实现不同,该方法假设物体放下的位置是一个平坦的表面,本文进行了扩展,还涵盖了凹物体,如水槽、箱子、盒子和袋子。   

至此,导航、抓握和放置都有了,之后就可以直接将它们组合起来,该方法可以直接应用于任何新的家庭。对于新的家居环境,该研究可以在一分钟内扫描房间。然后,只需不到五分钟即可将其处理到 VoxelMap 中。一旦完成,机器人就可以立即放置在选定的场地并开始运行。从到达一个全新的环境到开始在其中自主操作,该系统平均需要不到 10 分钟即可完成第一个取放任务。

实验

在超过 10 个家庭实验中,OK-Robot 在取放任务上实现了 58.5% 的成功率。

该研究还对 OK-Robot 进行了深入探索以更好地理解其故障模式。研究发现,故障的主要原因是操作故障,然而,仔细观察后注意到失败的原因是长尾造成的,如图 4 所示,失败的三大原因包括未能从语义记忆中检索到要导航到的正确对象 (9.3%) ,从操作模块获得的姿态难以完成(8.0%),以及硬件原因(7.5%)。

w~深度学习~合集2_深度学习_102

由图 5 可得,OK-Robot 中使用的 VoxelMap 略微优于其他语义记忆模块。至于抓取模块,AnyGrasp 明显优于其他抓取方法,在相对规模上比最佳候选方法(自上而下抓取)的性能高出近 50%。然而,基于启发式的算法,HomeRobot 的自上向下抓取击败了开源 AnyGrasp 基线和 Contact-GraspNet,这一事实表明构建真正的通用抓取模型仍然很困难。

w~深度学习~合集2_深度学习_103

图 6 展示了 OK-Robot 在各个阶段失败的完整分析。由分析可得,当研究者对环境进行清理并删除模糊物体时,导航准确率会上升,总错误率从 15% 下降到 12%,最后一直下降到 4%。同样,当研究者清理环境中的杂物时,操作准确率也提高了,错误率从 25% 下降到 16%,最后下降到 13%。 

w~深度学习~合集2_深度学习_104