BossNAS
ICCV 2021 NAS研究:通过自监督孪生超网络自动搜索CNN与Transformer最优混合架
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
ICCV 2021 NAS研究:通过自监督孪生超网络自动搜索CNN与Transformer最优混合架
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,你是一个城市规划师,但有一项特殊任务:城市里每一栋楼的造型都要让 AI 自己「商量」出来,而不是你拍脑袋决定。传统神经网络设计高度依赖人类专家的经验与试错,而 BossNAS(Block-wisely Self-supervised Neural Architecture Search) 正是为了解决这个问题而诞生的——它让 CNN 和 Transformer 在同一个搜索空间内互相竞争,通过自监督的方式自动演化出最优的混合架构。这篇发表在 ICCV 2021 的论文,为神经架构搜索(NAS)领域提供了一种全新的解法。
自 2017 年 Transformer 问世以来,视觉领域掀起了一场「Transformer 化」浪潮:ViT、Swin Transformer、DINO 等模型相继刷新 SOTA。然而,纯 Transformer 架构在高分辨率图像上计算成本极高,而 CNN 在提取局部特征方面天然高效。两者的优势恰好互补,这催生了「CNN + Transformer 混合架构」的研究方向。
但混合架构的搜索面临一个核心难题:如何高效评估海量候选网络的真实性能? 传统做法是对每个子网络做完整训练再评估(full training evaluation),这在巨大的搜索空间中简直是灾难性的算力黑洞。NAS 社区为此发展出了权重共享(weight sharing)、超网络(supernet)等技术来降低评估成本,但大多数方法在 CNN 和 Transformer 混合场景下效果不佳——两类算子的特性差异太大,共享权重会引入严重的优化偏差。
图1:带 Ensemble Bootstrapping 的孪生超网络训练框架。 两个共享权重的超网络分别处理同一张图片的不同裁剪视图,通过对比学习目标联合优化。
BossNAS 提出的核心洞察是:与其做有监督的完整评估,不如用自监督学习来训练超网络,使其学会区分不同架构的「表达能力」,从而在搜索阶段无需完整训练即可预测子网络的真实性能。
BossNAS 定义了一个名为 HyTra(Hybrid Transformer) 的搜索空间,允许 CNN 算子(如 MBConv、ResNet 残差块)和 Transformer 算子(如 MHSA 多头自注意力、Bottleneck Attention)在网络的每一层自由组合。这个搜索空间的特点是「结构灵活」——每个搜索阶段的下采样位置(down-sampling position)也是可选的,从而覆盖了从 ResNet 到 Swin 风格的多种架构拓扑。
图2:HyTra 搜索空间结构。 类似织物(fabric)般交织的 CNN-Transformer 混合连接,允许灵活的下采样位置。
每个子架构由一个编码向量(encoding vector)表示,孪生超网络读取这个编码,在每个阶段选择相应的算子构建子网络。两个结构相同的超网络分别处理同一图片的两个随机裁剪视图,共享所有权重,但接收不同的 encoding——这构成了一个天然的对比学习场景。
训练初期,由于超网络处于随机状态,对比学习的目标可能产生不一致的梯度信号。BossNAS 引入了 Ensemble Bootstrapping:维护一个指数滑动平均的集成预测器,用它的输出作为训练目标的稳定锚点。具体来说,论文使用了 SimCLR 风格的自监督损失函数,并在投影头(projection head)中引入了非线性设计来增强表示能力。
超网络训练完成后,BossNAS 不直接搜索最优架构,而是通过评估候选网络在孪生超网络上的输出相关性(ranking correlation)来排序。实验表明,这种自监督方式学到的排名与真实有监督训练后的性能高度相关(Kendall tau = 0.65 on ImageNet MBConv space),从而避免了昂贵的完整训练评估。
图3:MBConv 搜索空间中,不同方法的架构排名相关性对比。 BossNAS 在 ImageNet 和 NATS-Bench 上均取得了领先的排名精度。
搜索完成后,BossNAS 产出了一个名为 BossNet-T 的混合 CNN-Transformer 架构系列:
这些架构在搜索阶段没有使用任何有标签数据,完全依靠自监督学习发现,却在 ImageNet 上取得了有竞争力的结果——这本身就说明自监督 NAS 是一条可行的技术路径。
BossNAS 的代码完全基于 PyTorch,核心依赖包括:
torchvision 之外的图像模型库,提供预训练权重、骨架网络和丰富的 API代码仓库按功能分为四个模块:
searching/bossnas/:超网络定义、训练配置、孪生网络架构(siamese_supernets/)、操作算子定义(operations/)retraining_hytra/:搜索完成后对 BossNet-T 进行完整训练的代码,基于 DeiT 训练框架ranking_mbconv/ / ranking_nats/:架构排名精度评估脚本retraining_hytra/boss_candidates/:BossNet-T 的核心模块定义,包含自定义的 ResAtt(Residual Attention)和 ResConv 算子核心模型类 SiameseSupernetsHyTra 组合了以下关键组件:
NonLinearNeckSimCLRProject:非线性投影头,对比学习的核心SupernetHyTra:HyTra 搜索空间的超网络实现Attention(多头注意力)和 PEG(Positional Encoding Generator)模块BossNAS 本质上是纯研究代码,面向 NAS 研究者和学术实验室。 其部署复杂度较高:
对于想要使用已训练好的 BossNet-T 模型的开发者,可以直接下载 GitHub Releases 中提供的预训练权重(.pth 文件),在 retraining_hytra/ 目录下运行评估命令。这部分相对友好,只需配置好 PyTorch 环境即可。
BossNAS 的局限性值得关注:
license: null),使用前需联系作者确认授权BossNAS 是 NAS 领域的一次重要创新——它证明了在自监督学习的框架下,CNN 和 Transformer 可以在同一个超网络内和谐共存,并通过孪生网络结构高效地评估架构排名。搜索得到的 BossNet-T 系列在 ImageNet 上达到了 80-82% Top-1 的精度,验证了混合架构搜索的实际价值。
对于普通 AI 开发者,BossNAS 的直接使用价值有限——它更像一把「研究级工具」。但其孪生超网络 + 自监督排名的技术思路,对后续 AutoML++、HAT、GLiT 等混合架构搜索工作产生了深远影响。如果你正在研究 NAS 或混合架构设计,BossNAS 的代码实现(尤其是 siamese_supernets/ 和 hytra_supernet.py)值得深入阅读。