【笔记】李沐视频:大模型时代下做科研的四个思路


LLaMA 最近开源,分别开源了 7e9, 1.3e10, 3.3e10, 6.5e10 四个参数量的模型。但是这里有意思的是,他们管自己的模型称为 smaller models。

Google 推出了 22B 的 ViT

1. Efficient(PEFT)

简要概括

更高效,哪里慢就让它快起来

让所有的方法更 efficient 一些。

论文 1:AIM

论文:AIM: Adapting Image Models for Efficient Video Action Recognition

如何使用 parameter efficient fine-tuning

本篇是做视频动作识别(视频理解)

摘要、介绍、相关工作、结论

之前的视频理解的工作,粗略地可以被分为两类:

  • 时间上和空间上地处理尽量分开
  • 时间上和空间上一起做

比如这里的左图,先预训练好一个图片模型,接下来地步骤大致分为:

  • 在已经与训练好的图片模型之上,单独地增加一个时序处理地模块
  • 3D 网络,时间空间特征一起学

虽然效果很好,但是计算代价实在太大,这些模型都需要 Full Fine Tune,尤其是视频数据集非常大的时候很难受。

本文研究动机来自于 CLIP,证明了它自己即使直接 zero-shot 就会很好,而且它也说明了在视频方面的任务上:

  1. 训练的很好的图像模型可以直接拉过来,且越来越具有泛化性,因此可能不需要 finetune 的部分了。
  2. 防止灾难性遗忘,如果有一个大模型,下游没有很好的数据集(或者说没有很多的数据),硬要 finetune 这个大模型的话,往往会做不好。

于是本文拿到一个好的图像模型后,直接把其参数锁住。然后通过修改周边的方式,来让这个模型具备时序建模的能力,来让这个模型能够直接做视频理解任务。

而 PEFT 有两个简单的方式:

  • Adapter
  • prompt tuning

Adapter

Adapter 论文:Parameter-Efficient Transfer Learning for NLP

Adapter Layer 结构

  1. 下采样的 FC 层
  2. 非线性激活层
  3. 上采样的 FC 层
  4. 最后还有一个 residual connection

它是把 Adapter 可以随意地插入 TFM block 中,然后锁住原 TFM 的参数,只训练 Adapter。

这样由于 Adapter 相比 TFM 参数量很小,因此不是特别大。

Prompt tuning

Prompt tuning 方法简单地讲,就是给模型一个提示,让模型做要做的事。

Prompt tuning 论文:Learning to Prompt for Vision-Language Models

  • hard prompt(手工 prompt):由于手工写的 prompt 一旦写出来就写死了,这会隐含一个先验知识,可能会对最后的效果产生影响。比如上图中前三个蓝色的部分。
  • soft prompt:让论文自己学习 prompt。比如上图中绿色的部分。

上面是文本的分支,和预测的 [CLASS] 一起进入文本编码器,得到文本的特征。

下面图片进入图片编码器,得到一个图像特征。然后这一个图像特征和文本特征做相似度,看哪个最高选哪个。

这里和 CLIP 的区别在于:prompt 变成了一个可以学习的上下文。

通过这种方式把原来的模型锁住,只学习 prompt,减少计算量。

纯视觉也可以用 prompt,例如论文:Visual Prompt Tuning

上图是 Visual Prompt Tuning 模型的总览图。

  • 首先有个输入(图片),和一些已经训练好并被冻结的层。

  • 接下来开始加 prompt。这个 prompt 加在前面。

  • 图片打成 patch 后先通过 embedding 层。然后和学习的 prompt 一起丢尽模型里

  • 然后整个模型只优化 prompt 这个 \(P_0\)

VPT deep 的意思是说,每一层的输入输出的时候,都加上 learnable 的 prompt。

Deep 的效果比 Shallow 要好一些,这俩都比不用 prompt 要好。

方法

模型

作者都认为自己的方法简单。

主要思路就是锁住模型参数,然后往模型里加 Adapter。

有三种方式进行修改:

  1. Spatial Adaptation:别的都锁住,只在 Self-Attention 后面加一层 Adapter。
    • 作者认为,意义在于:
      • 不给其添加什么视频理解的能力以及时序建模的能力
      • 只给它加一些可以学习的参数,看看它能不能从图像学习到的特征迁移到视频数据集来。
      • 看看能不能解决领域之间有差距的问题。
    • 后面其实这个方法已经有用了,但是缺少了时序建模的能力,效果不尽如人意,比不上之前 full finetune 的模型。
  2. Temporal Adaptation:
    • 做了修改有:
      • 两个 self-attention 加一个 MLP
      • 两个 attention 参数一样
      • 第一个 T attention 输入的矩阵先 reshape 一下,维度为 \((N+1) \times T \times D\),是在时序这个维度上做自注意力
      • 第二个 S attention 输入的矩阵再 reshape 回来,维度为 \(T \times (N + 1) \times D\),在 sequence length 的维度上做自注意力
    • 这里有个问题,层的参数是锁住的,那么怎么确保一个学 spatial 另一个学 temporal 呢?
      • 于是在 T attention 后面加了一个 adapter,S attention 后面也加了一个
      • 这样就有两套可以学习的参数
    • 于是这样可以达到 full finetune 的模型,甚至超越
  3. Joint Adaptation
    • 修改:
      • 在 MLP 旁边加上了 Adapter
    • 目的:
      • 希望最后做一层 Spatial Temporal
      • 希望三个 Adapter 各司其职,各自学各自该学的
    • 最后这个模型结构其实就是 AIM 了。

实验

TimesFormer 做 baseline,跟 AIM 结果也很相近。

  • Frozen space-only:也是常说的 LinearProbe,整个 backbone 锁住,只去 tune 最后的 head。
  • Finetuned space-only:正常的模型 Finetune
  • Finetuned space-time:TimesFormer 本身,是一个 Video 的 FullFineTuning 的过程
  • Frozen space-only + spatial adaptation:加上了 spatial adaptation 后,可以发现和 Finetuned space-only 差不多,但是训练参数量只有 3.7 M
  • Frozen space-only + temporal adaptation:加上 temporal adaptation 后,效果直接翻一倍
    • 这里超过了 FullFinetune 的模型
  • Frozen space-only + joint adaptation adaptation:还能再提升一点点
  • AIM:再把预训练模型从 IN-21K 换成 CLIP,于是还有提升

上表是在 AIM 在 K400 数据集上的表现。比之前的方法要高。

上表是 AIM 在 Something-Something 数据集、K700 数据集和 Diving-48 数据集上的表现。

  1. Something-Something
    • 表现不是最好的
      • 可能数据集更加 Temporal Heavy,更注重时序信息,而且很细粒度
    • 但也很有竞争力
  2. 剩下两个数据集都取得了大于等于 SOTA 的结果。

大部分实验都是一台 8 卡机能完成的,短则半天,长则三四天。

2. Existing stuff (pretrained model) New directions

简要概括

能不 pretraining 就不 pretraining

能借助已有的东西,就尽量借助已有的东西,例如别人的预训练模型。

  • 没有足够多的资源,尽量不要去碰 pretraining,可选项:Zero-show、Few-show、FineTuning,所需资源从左到右上升
  • 或者做新方向,这里可能没有成熟的数据集和 Benchmark,因此数据和 Setting 都可以自己选
  • 找不到新方向的话,专心提高自己的方法

简单给几个新的 topic:

  • Causality Learning:因果学习
  • Feed forward Network(为什么这个是新方向?)
  • In-Context Learning:nlp 领域的
  • Chain-of-thought prompting

论文2:使用自监督的目标中心表示的无监督语义分割

论文:Unsupervised Semantic Segmentation with Self-supervised Object-centric Representations

做的是 Unsupervised Semantic segmentation

具体使用的方法是 Self-supervised Object-Centric Representations

  • 用已经预训练好的 DINO 网络和之前预训练好的 DeepUSP 和 BASNet 这些网络,这些抽特征的网络都是与训练好的。
  • Object-Centric Learning:一个正在蓬勃发展的 topic

训练开销很小,只是训练了一个 DeepLab v3 的一个网络,4 卡机就能跑大部分实验

摘要、介绍、相关工作、结论

方法

主要流程在 Unsupervised Object Categories Discovery 这一步。这一步是让模型在无监督的情况下找到新的物体。

  • 直接通过一个图片抽一个特征其实不太合理
    • 所以有人觉得 Object 的 learning 会比 global 的更有效。
  • 如果还能 Unsupervised,会更完美
    • 这里是人为设计了 label 或者任务然后去学习。

如果想学习一个 Segmentation 的网络,那么需要某种程度上的 Mask information。

那么最初始的 Mask information 从哪来?于是借助之前 Saliency Detection(显著性检测)的工作,比如这里直接用了 DeepUSPS 的工作,很多之前无监督 Segmentation 工作用的也是它。就可以直接给定一张图,给你显著物体的 mask。然后就可以借助这个 mask 把图片中的物体给抠出来。

把它检测出来后,还需要分类,接下来借助 DINO 这个工作去抽它的特征。

有了特征然后做聚类(Clustering),然后就能无监督地判断物体是什么 id,暂时还无法确定这些物体是什么,因此这里称作 Noisy pseudo masks。

于是这里有了图像和 label,于是就可以无监督训练了。另外一个图片可能有多个物体,所以加一个 self-training,多做几个轮回。

实验

超越了之前的 SOTA

其实也就只有 Semantic segmentation network 训练需要时间。

3. Plug-and-Play

简要概括

做通用的,能够即插即用的模块,它可能是:

  • 一种新的模型模块
  • 目标函数,一种新的 loss
  • 一种 data augmentation(数据增强)的方法

总之就是一个很简单的东西, 但是能够用到各种领域的。

好处在于,只要选一个比较好用的 baseline,然后在一个所能承受的 setting 之下,做实验。

  • 这样公平对比,可以说明你的方法的有效性。
  • 不需要证明你这个能达到 SOTA,可以刷榜
  • 只需要在很多方法上或很多数据集上都有提升即可

论文3:MixGen

论文:MixGen: A New Multi-Modal Data Augmentation

摘要、介绍、相关工作、结论

本文主要提出了一种多模态的数据增强的方法。

在研究多模态模型的时候,发现它们都没有使用数据增强。

  • 比如 CLIP 只用了基础的数据增强方法 Random Resized Crop
    • 因为图片文本对太多,所以不需要数据增强
  • ALBEF 和 BLIP,虽然用了很好的数据增强,比如 Auto Augment,但是把 Color Jittering 和 Random Flip 去掉了
    • 原因是如果修改了 Color,那么文本中颜色的描述就错了
    • 如果 Flip,那么文本中的方位词描述就错了

CV 领域中觉得数据增强还是很必要的。

也就是说在数据增强的过程中,有一些信息被破坏,或者说是丢弃掉了。

那么怎么办呢?可以一个模态一个模态来想。

  • 图像
    • Mixup:把两张图片线性地插值到一起,虽然人眼看起来比较诡异,但是信息没有丢失
  • 文本
    • Mixup
    • Random erasing
    • Random Insertion
    • Back Translation

但是文本部分其实可以直接把两个句子拼在一起就行,这样什么信息也不会丢失。

方法

比如说上图有 \((I_1, T_1), (I_2,T_2)\) 这两个图片文本对,那么我们把两个图像直接 Mixup,然后文本把两句话拼起来。

实验

可以观察到相比于原来的方法有普遍的提升。

一些缺陷

投 NeuIPS 的时候,审稿人一致认为这个方法太简单了,有一个审稿人提出了建设性的意见:数据增强是在没有那么多数据的时候才会去做的选择,但是在多模态的预训练里面,由于已经有大量的数据存在,所以预训练过程没什么用。但是在 Finetuning 过程中,由于下游数据集的数据不多,因此这个方法大概可以应用于 Finetuning 过程中。

4. Dataset, evaluation and survey

简要概括

  • 构造数据集
  • 做分析评估
  • 写综述

这个方向最不需要计算资源,同样很有影响力。

论文4:BigDetection

论文:BigDetection: A Large-scale Benchmark for Improved Object Detector Pre-training

这是一个非常大的目标检测的数据集。本论文是把 LVIS,OpenImages 和 Object 365 结合到了一起。需要重新分布数据里的类。而且根据任务的需求,也决定了物体类别有多细粒度。

600 类、3.4e6 的训练图片,且有 3.6e7 的目标检测框及注释。

由于数据集很新,刷的人很少,如果感兴趣的话,朱老师给出如下提议:

  • OOD 的分析
  • 鲁棒性分析
  • fewshot、zeroshot 分析
  • 测评

论文5: 深度视频动作识别的可理解学习

论文:A Comprehensive Study of Deep Video Action Recognition

写的综述论文,理解优点缺点在哪,以及分析当前的痛点。然后找到下一步的发展方向。

  • 主要考验写作能力
  • 还考验你对问题的理解深度