# CLIP-Adapter 論文對話總結 ## 🎯 論文核心是什麼? ### 名詞解釋 Contrastive Language-Image Pre-Training(CLIP) A Larger-scale Image and Noisy-text embedding(ALIGN) 殘差連接(residual connection) 好啦!以下正文 這篇論文提出了一個叫 **CLIP-Adapter** 的方法,主要解決一個問題:**如何用極少的標註資料(Few-Shot Learning),讓強大的 CLIP 模型在特定任務上表現得更好**。 它沒有用當時流行的「提示詞調優(Prompt Tuning)」方法,而是回歸傳統的「特徵微調(Feature Adaptation)」,但加上了一個非常巧妙的設計,讓它又快又好。 --- ## related work-CLIP 首先,CLIP 本身**不是一個傳統的分類器**,它是一個**視覺-語言特徵比對引擎**。 * **輸入**:一張圖片 + 一段文字描述 * **輸出**:圖片和文字的特徵向量 * **怎麼做分類**?我們把每個類別名稱(如 "狗")變成一句話(如 `"一張 狗 的照片"`),讓 CLIP 生出所有類別的**文字特徵**。然後把待分類的圖片送進 CLIP 生出**圖片特徵**,最後看圖片特徵跟哪個文字特徵最像,就分到哪一類。 * **特點**:**零樣本(Zero-Shot)** 能力超強,不用訓練就能分類。 CLIP 的核心概念是「把 text 跟 image 映射到同一個空間」。這邊的「空間」可以把他想成就是一種抽象概念。每一個我們的想法,都會是這個空間當中的某一點,就代表一個抽象概念。當我們講出「狗」的時候,我們心中想的是一隻狗,當然我們看到一張狗的圖片的時候,我們心中想的也是「狗」。那個狗,就是 CLIP 嘗試把 text 跟 image 都映射過去的那個點。 ### CLIP Training 而 CLIP 訓練的方法,就是有兩個 encoder: 1. 一個 text encoder (transformer)用來把一段文字映射到空間當中的某一點 2. 一個 image encoder (U-Net)用來把一張圖片映射到空間當中的某一點  ### CLIP TEST  在訓練完畢以後,這個空間就同時表達了文字與圖片的抽象意義。今天給定 一組文字 一張圖片 我們只要把文字通通透過 text encoder 映射到空間中,也把一張圖映射到空間中,然後看看這張圖距離哪個文字最接近,那就是那一類。至於哪個最近,能透過內積(現在都用正規化再cosin,超級快)計算得到結果。 --- ## ⚔️ 兩大門派:CoOp vs. CLIP-Adapter 當時大家想提升 CLIP,主流做法是像 CoOp 那樣去「調提示詞」。這篇論文則開了另一條路:「調特徵」。 | 特性 | CoOp (Context Optimization) | CLIP-Adapter (本篇論文主角) | | :--- | :--- | :--- | | **核心思想** | **提示調優 (Prompt Tuning)** <br> 學習更好的「輸入」 | **特徵調適 (Feature Adaptation)** <br> 調整模型的「輸出」 | | **怎麼做** | 把人工寫的提示詞換成**可學習的向量**<br>(軟提示 Soft Prompts) | **不動提示詞**,用原始的就好<br>在特徵輸出後加個**輕量適配器** | | **修改對象** | **輸入空間 (Input Space)** | **特徵空間 (Feature Space)** | | **訓練開銷** | **大** <br> (需反向傳播通過文本編碼器) | **小** <br> (只需計算適配器的梯度) | | **實際數據** | Train Time: ~14h <br> GPU Mem: ~7.2 GB | Train Time: ~**50min** <br> GPU Mem: ~**2.2 GB** | | **效果** | 比 Zero-Shot CLIP 好很多 | **比 CoOp 更好一點**,還更快更省資源 | --- ## 🔧 CLIP-Adapter 技術細節 ### 1. 整體架構 它非常簡單,就只是在凍結的 CLIP 模型後面,幫圖像和文本特徵各加一個小網路(Adapter),再用一個神奇的比例把新舊特徵混起來。 ```mermaid graph LR A[輸入圖像] --> B["凍結的<br/>Visual Encoder"] C["類別提示詞<br/>e.g., "a photo of a dog""] --> D["凍結的<br/>Text Encoder"] B -- 原始圖像特徵 f --> E[Visual Adapter] --> F{特徵融合} D -- 原始文本特徵 W --> G[Text Adapter] --> H{特徵融合} F -- 融合後圖像特徵 f* --> I[相似度計算<br/>與分類] H -- 融合後文本特徵 W* --> I ``` ### 2. 靈魂所在:Residual-style Feature Blending 這不是普通的 Residual Connection (`y = F(x) + x`),而是一個**可調式的混合閥**: | | 公式 | 說明 | | :--- | :--- | :--- | | **視覺特徵融合** | $f^* = \alpha \cdot A_v(f) + (1-\alpha) \cdot f$ | 調節圖片特徵要多少新知識 | | **文本特徵融合** | $\mathbf{W}^* = \beta \cdot A_t(\mathbf{W}) + (1-\beta) \cdot \mathbf{W}$ | 調節文字特徵要多少新知識 | * **$f$, $\mathbf{W}$**: 凍結的 CLIP 編碼器產生的**原始特徵**,代表強大的通用知識。 * **$A_v(f)$, $A_t(\mathbf{W})$**: 輕量的**適配器**產生的新特徵,從少量樣本學來的任務知識。 * **$\alpha$, $\beta$**: **殘差比例 (Residual Ratio)**,一個超參數或可學習參數,**控制新舊知識的混合比例**。 * `α=0`: 完全相信原始 CLIP (Zero-Shot) * `α=1`: 完全相信適配器 (容易過擬合) * `0<α<1`: 新舊知識的加權平均 (最佳選擇!) ### 3. 為什麼這個設計這麼厲害? 1. **對抗過擬合 (Anti-Overfitting)**:強制模型輸出錨定在強大的原始特徵附近,等於一個超強的正則化(Regularization),確保模型不會學歪。 2. **穩定訓練 (Training Stability)**:適配器只需要學習一個小小的「殘差偏移」,而不是從頭學整個特徵,所以收斂又快又穩。 3. **動態知識融合 (Dynamic Fusion)**:論文中發現,不同任務需要不同的 $\alpha$。 * **細粒度任務**(如衛星影像):和預訓練資料差很多,需要多學新東西 → **$\alpha$ 較大 (~0.8)** * **通用任務**(如 ImageNet):和預訓練資料很像,多相信原始知識 → **$\alpha$ 較小 (~0.2)** --- ## 💡 重點總結與心得 * **別忘了微調特徵這條路**:當大家都在瘋 Prompt Tuning 時,這篇論文證明回頭做特徵微調,加上好設計(殘差混合),效果可能更好、更高效。 * **Residual Connection 的新用法**:這裡的 Residual 主要目的不是解決梯度消失,而是**對抗過擬合**和**進行可控的知識融合**,是一個「特徵混合閥」。 * **實務優勢巨大**:**訓練速度快 16 倍以上,顯存占用少 3 倍**,這在資源有限的情況下簡直是福音。 * **簡單即強大**:方法本身非常簡潔優雅,就是凍結主幹 -> 特徵提取 -> 適配器轉換 -> 殘差混合,沒有複雜的魔法,但效果驚人。 這篇論文給我們的啟發是:**有時最好的創新不是發明新東西,而是用一個聰明的設計,把舊方法的核心價值重新發揮出來。**
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up