精读笔记

Problem Setting

论文标题:Boosting Few-Shot Visual Learning with Self-Supervision(ICCV 2019)。

这篇论文实际瞄准的是 few-shot visual classification 中被低估的瓶颈:base-stage 表征学习质量。很多 few-shot 工作把重点放在 novel-stage 如何用 1/5-shot 支持集快速构造分类器、metric 或 adaptation rule,但在标准 benchmark 上,真正决定上限的往往是 backbone 在 base classes 上学到的 embedding 是否足够 transferable。

困难点不在于如何定义 N-way K-shot,也不在于 prototype 怎么算,而在于 base labels 提供的监督非常窄:它只要求区分 base 类别,并不要求保留对 novel 类别有用的视觉因素。类别监督会把表示推向当前 label partition 的最优判别方向,容易丢掉姿态、局部结构、空间关系、形状等未被 base labels 显式要求的因素。few-shot 的关键矛盾因此是:second-stage 数据太少,几乎无法修正 first-stage 表示偏差;但 first-stage 监督又可能过拟合 base semantic partition。

Motivation

已有 few-shot 路线不够的地方在于,它们通常默认 base-stage 的 supervised representation 已经足够好,然后主要改进 adaptation machinery:metric learning、memory、weight generation、gradient-based meta-learning 等。作者的判断是:如果 embedding 本身缺少可迁移的视觉结构,再复杂的 few-shot head 也只能在贫弱表示上做局部补救。

作者的核心观察是 few-shot learning 和 self-supervised learning 都是两阶段迁移范式:先从某种替代任务中获得 representation,再迁移到目标任务。二者的互补点在于 few-shot 有少量标注和明确目标,自监督有大量无标注信号和更宽的视觉约束。缺口是:few-shot 的 base-stage 缺少一种不依赖 base labels、但能迫使 backbone 学到更通用视觉因素的监督源。

Core Idea

论文真正的核心不是“用 rotation prediction”,而是把 self-supervision 作为 base-stage 的辅助约束注入 few-shot pipeline。也就是说,feature extractor 不再只被训练成 base-class classifier 的前端,而是同时要服务于一个 annotation-free pretext task。这个改变重新组织了信息流:标签监督提供语义判别,pretext supervision 提供几何/空间/结构因素约束,二者共享 backbone,最终 novel-stage 只继承 backbone,而不继承自监督 head。

本质区别在于它没有设计新的 few-shot 推理器,而是提升表示的任务覆盖度。它引入的 inductive bias 是:对旋转、patch 相对位置这类任务有用的视觉因素,与细粒度/未见类区分所需的因素部分重合。相比专门为某个 episode 设计 adaptation rule,这种方式更 scalable,因为它可以直接吃无标签数据,也更 generalizable,因为监督不绑定到 base label set。

Method

方法层面的必要机制可以压缩为三点。

第一,共享 backbone 的多任务训练。对 PN 或 CC 这样的 few-shot 方法,原始 first-stage loss 只来自 base-class few-shot episodes 或 base-class classification。作者额外加入 self-supervised loss,并让它作用在同一个 Fθ 上。它解决的是 base supervision 过窄的问题,核心变化是 backbone 被迫保留更多非类别标签直接决定的视觉信息。

第二,自监督任务只作为 training-time auxiliary task。rotation classifier 或 patch-location classifier 在 novel-stage 不使用,因此这不是 test-time compute,也不是额外推理模块。它的作用更像 representation regularizer / task augmentation,而不是 few-shot classifier 的一部分。

第三,利用无标签数据扩展 first-stage 训练分布。因为 self-supervised loss 不需要 y,可以把额外 unlabeled images 加入训练,即使它们不属于 base classes。这里解决的是 base data coverage 不足的问题,核心变化是 few-shot representation 的训练分布可以超出标注类别集合。

Key Insight / Why It Works

最可能的有效原因是 representation alignment + regularization,而不是新的 few-shot learning principle。base-class 分类监督倾向于学习足够区分 base labels 的 shortcut;自监督任务迫使模型解释图像中与类别标签不完全重合的结构,从而减少 embedding 对 base taxonomy 的过拟合。对于 novel classes,支持集极少,分类器几乎只能依赖 embedding 的几何结构;因此只要辅助任务让 embedding 的局部邻域、类内紧致性或跨类可分性更稳,就会直接反映到 few-shot accuracy。

rotation prediction 的效果尤其值得注意。它可能带来的不是简单的旋转不变性,反而是让模型学习 orientation-sensitive object/part configuration,再在分类 embedding 中形成更丰富的形状和布局特征。作者用“旋转增强但不预测旋转”的 baseline 试图区分 augmentation 与 self-supervised objective,这一点是必要的;结果说明增益不只是看到更多 rotated images。不过,增益来源仍不完全清楚:它可能来自更强数据增强、更难 auxiliary classification 带来的 regularization、或者由于四倍变换样本导致的 optimization/scaling 效应。

relative patch location 的增益较小也说明不是任意自监督都有效。pretext 与下游 few-shot 分类的因素重合度很关键。patch task 需要额外 aggressive color augmentation 和 patch-level auxiliary classification,机制更脏,收益更难归因。这里可能有 engineering 成分。

semi-supervised 部分更像 data coverage 的收益。额外 unlabeled data 通过自监督 loss 扩大视觉分布,确实合理,但这已经从“更好的 few-shot algorithm”转向“更好的 representation pretraining with more data”。如果 unlabeled data 与 novel classes 在 ImageNet 层级上有视觉重叠,提升并不意外。文中没有充分隔离 distribution overlap、dataset scale 与 self-supervised objective 各自的贡献。

Relation To Prior Work

它最接近三条谱系的交叉:metric/prototype-based few-shot、cosine classifier / weight imprinting 式低样本分类,以及 self-supervised representation learning。与 MAML、RelationNet、GNN、weight generation 等 few-shot 方法相比,它不试图学习更复杂的 adaptation procedure;它的立场是先把 embedding 学好,novel-stage 用简单 classifier 即可。

与传统 self-supervised pretraining 的区别在于它不是先纯自监督预训练再监督微调,而是在 few-shot base-stage 联合优化 supervised + self-supervised objectives。论文也比较了 rotation pretraining 再 CC,联合训练更好,这说明同时对齐类别判别和 pretext structure 比串行迁移更适合 few-shot embedding。

看似新颖的部分其实是已有思想的重组:multi-task auxiliary loss、自监督 pretext、semi-supervised use of unlabeled data 都不是新概念。实质创新在于把它们放进 few-shot 的 first-stage,并明确指出 few-shot 的瓶颈可以被看作 representation transfer 问题,而不是只看 episode-level adaptation。这在 2019 年 few-shot literature 中是有推动意义的。

Dataset / Evaluation

评估覆盖 MiniImageNet、CIFAR-FS、tiered-MiniImageNet 和 ImageNet-FS,基本覆盖当时 few-shot image classification 的主流离线 benchmark。作者也在 PN/CC、不同 backbone 容量、两种自监督任务、带/不带额外无标签数据上做了较多交叉验证,足以支持“这个 trick 比较稳定”而不是单点偶然。

但这些 benchmark 仍主要是 ImageNet/CIFAR 派生的闭集图像分类,不能证明真实 domain shift 下的泛化。尤其 MiniImageNet、tiered-MiniImageNet、ImageNet-FS 都共享 ImageNet 生态,半监督实验中额外 unlabeled data 来自 tiered-MiniImageNet,虽然去掉了显式重叠类,但视觉分布和类别层级仍高度接近。它验证的是 in-distribution 或 near-distribution few-shot transfer,不是开放世界少样本学习。

实验支持核心 claim:自监督辅助 loss 能提升 few-shot 表示。但它没有完全回答机制归因:是 pretext semantic structure 有效,还是额外训练信号、增强、容量利用率、无标签数据规模共同作用。没有真实世界部署、跨模态、跨域或 long-tail industrial setting 的证据。

Limitation

第一,方法的上限受 pretext task 和数据分布强烈限制。rotation/patche-location 对自然物体图像有用,不代表对医学图像、遥感、纹理分类、方向语义特殊的任务同样成立。若 pretext bias 与下游类别判别冲突,辅助任务可能伤害表示。

第二,它没有改变 novel-stage 的样本效率机制。第二阶段仍是冻结 backbone 后做 prototype/cosine classifier,本质上依赖 embedding 已经把 novel classes 线性或度量可分。所谓 few-shot 能力主要前移到了 base-stage representation learning。

第三,半监督收益可能主要来自数据覆盖。额外 unlabeled data 与目标 benchmark 同源时,提升不能简单解释为 self-supervision 的算法优势。更严格的跨域无标签数据实验缺失。

第四,增益归因不完全干净。rotation prediction 同时引入多视角变换、更强训练信号和额外分类头;patch location 又需要 patch-level classification loss 来稳定训练。文中未充分说明这些工程选择各自贡献。

第五,方法依赖高容量 backbone 时收益更明显,这既可以解释为大模型更能吸收辅助任务,也可能说明部分结果来自 capacity/scaling,而不是 few-shot-specific insight。

Takeaway

  • 1. few-shot 的核心瓶颈之一是 base-stage representation,而不是 novel-stage classifier;简单 classifier + 更好的 embedding 往往比复杂 meta-learner 更可靠。
  • 2. 自监督辅助任务的价值在于扩大监督因素集合,使 backbone 不只服务于 base label partition。
  • 这一 insight 后续可以迁移到 long-tail、domain generalization、incremental learning 等低标注场景。
  • 3. 对 few-shot 来说,unlabeled data 的使用不一定要伪标签或半监督分类;也可以通过 pretext objective 扩大视觉覆盖。

一句话总结

这篇论文在 few-shot 方向中的位置是:把问题从“设计更聪明的少样本适配器”部分拉回到“用自监督扩大 base-stage 表征监督”,贡献是一种简单但有效的 representation-level task augmentation 范式。