【筆記】李沐影片:大模型時代下做科研的四個思路

bringlu發表於2023-03-25

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

本篇是做影片動作識別(影片理解)

摘要、介紹、相關工作、結論

之前的影片理解的工作,粗略地可以被分為兩類:

  • 時間上和空間上地處理儘量分開
  • 時間上和空間上一起做

image-20230324192152191

比如這裡的左圖,先預訓練好一個圖片模型,接下來地步驟大致分為:

  • 在已經與訓練好的圖片模型之上,單獨地增加一個時序處理地模組
  • 3D 網路,時間空間特徵一起學

雖然效果很好,但是計算代價實在太大,這些模型都需要 Full Fine Tune,尤其是影片資料集非常大的時候很難受。

本文研究動機來自於 CLIP,證明了它自己即使直接 zero-shot 就會很好,而且它也說明了在影片方面的任務上:

  1. 訓練的很好的影像模型可以直接拉過來,且越來越具有泛化性,因此可能不需要 finetune 的部分了。
  2. 防止災難性遺忘,如果有一個大模型,下游沒有很好的資料集(或者說沒有很多的資料),硬要 finetune 這個大模型的話,往往會做不好。

於是本文拿到一個好的影像模型後,直接把其引數鎖住。然後透過修改周邊的方式,來讓這個模型具備時序建模的能力,來讓這個模型能夠直接做影片理解任務。

而 PEFT 有兩個簡單的方式:

  • Adapter
  • prompt tuning

Adapter

Adapter 論文:Parameter-Efficient Transfer Learning for NLP

image-20230324195942638

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

image-20230324201335693

  • hard prompt(手工 prompt):由於手工寫的 prompt 一旦寫出來就寫死了,這會隱含一個先驗知識,可能會對最後的效果產生影響。比如上圖中前三個藍色的部分。
  • soft prompt:讓論文自己學習 prompt。比如上圖中綠色的部分。

image-20230324201538387

上面是文字的分支,和預測的 [CLASS] 一起進入文字編碼器,得到文字的特徵。

下面圖片進入圖片編碼器,得到一個影像特徵。然後這一個影像特徵和文字特徵做相似度,看哪個最高選哪個。

這裡和 CLIP 的區別在於:prompt 變成了一個可以學習的上下文。

透過這種方式把原來的模型鎖住,只學習 prompt,減少計算量。

純視覺也可以用 prompt,例如論文:Visual Prompt Tuning

image-20230324204944649

上圖是 Visual Prompt Tuning 模型的總覽圖。

  • 首先有個輸入(圖片),和一些已經訓練好並被凍結的層。

  • 接下來開始加 prompt。這個 prompt 加在前面。

  • 圖片打成 patch 後先透過 embedding 層。然後和學習的 prompt 一起丟盡模型裡

  • 然後整個模型只最佳化 prompt 這個 \(P_0\)

VPT deep 的意思是說,每一層的輸入輸出的時候,都加上 learnable 的 prompt。

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

方法

模型

image-20230324210119215

作者都認為自己的方法簡單。

主要思路就是鎖住模型引數,然後往模型里加 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 了。

實驗

image-20230324222427676

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,於是還有提升

image-20230324224901146

上表是在 AIM 在 K400 資料集上的表現。比之前的方法要高。

image-20230324225623244

上表是 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 卡機就能跑大部分實驗

摘要、介紹、相關工作、結論

方法

image-20230325115032810

主要流程在 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

但是文字部分其實可以直接把兩個句子拼在一起就行,這樣什麼資訊也不會丟失。

方法

image-20230325154109393

比如說上圖有 \((I_1, T_1), (I_2,T_2)\) 這兩個圖片文字對,那麼我們把兩個影像直接 Mixup,然後文字把兩句話拼起來。

實驗

image-20230325154618419

可以觀察到相比於原來的方法有普遍的提升。

一些缺陷

投 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

寫的綜述論文,理解優點缺點在哪,以及分析當前的痛點。然後找到下一步的發展方向。

  • 主要考驗寫作能力
  • 還考驗你對問題的理解深度

相關文章