20251013 筆記,內容可能有錯,請參考來源影片。
[李宏毅機器學習2022影片](https://www.youtube.com/playlist?list=PLJV_el3uVTsPM2mM-OQzJXziCGJa8nJL8)
[【機器學習 2022】如何有效的使用自督導式模型 - Data-Efficient & Parameter-Efficient Tuning (由姜成翰助教講授)](https://youtu.be/NzElV8jTNmw?si=dgz8C_BuirSn2CcZ)
### 【機器學習2022】如何有效的使用自督導式模型 - Data-Efficient & Parameter-Efficient Tuning 大綱
**I. 語言模型 (Language Model, LM) 基礎**
A. LM 的定義與訓練方式
B. 預訓練模型 (Pre-trained Models, PTMs) 的優勢與應用
**II. 實際應用中的挑戰**
A. 挑戰一:資料稀缺性(標註資料不足)
B. 挑戰二:模型規模過大(部署與儲存問題)
**III. 解決資料稀缺性的方法**
A. 提示學習 (Prompting)
B. 示範學習 (Demonstration)
C. 半監督學習 (Semi-supervised learning)
D. 零樣本學習 (Zero-shot learning)
**IV. 解決模型規模與部署問題的方法**
A. Parameter-Efficient Fine-Tuning
1. Adapter
2. LoRA
3. Prefix Tuning
4. Soft prompts
B. 動態推論 (Dynamic Inference)
**V. 結論與未來研究方向**
---
### I. 語言模型 (LM) 基礎
#### A. LM 的定義與訓練方式
1. **語言模型 (LM) 的定義:** 語言模型是一個神經網路,用於預測一個句子出現的機率。例如,對於「電腦聽聲音」和「電老天呻吟」兩個句子,LM 會判斷前者出現的機率大於後者。
2. **LM 的訓練:** 訓練方式是給予模型一個不完整的句子,要求它預測剩下的部分,例如給定「今天天氣」預測出後面的「真好」。
3. **訓練分類:** 根據句子構造方式,LM 訓練大致可分為兩種:
* **Auto-regressive Language Model:** 學習在給定前半段例子的情況下,完成後半段的例子。
* 例如:給定第一個字,模型會預測第二個字,並產生一個機率分佈。這個分佈中的每個條目代表出現特定下一個字的機率。
* 代表模型:像 GPT、GPT-2、GPT-3。
* **Auto-encoding Language Model / Masked Language Model:** 學習預測被遮住的中間部分,給定句子的其他部分。
* 例如:將句子中的第四個字遮住,讓模型預測被遮住的單字。
* 代表模型:像 BERT。
#### B. 預訓練模型 (PTMs) 的優勢與應用
1. **預訓練模型的優勢:** 當將句子丟入模型時,模型會抽出許多表示。這些表示(模型內部產生的輸出)中藏有很多知識。
2. **遷移學習 (Transfer Learning):** 利用預訓練模型抽出的表示並將其應用於下游任務 (downstream tasks, e.g., Classification) 時,任務可以表現得很好。
3. **具體應用方式 (Fine-tuning):** 在預訓練模型的基礎上,捨棄原有的 Language Model Head,然後在最後一層表示後加上一個分類器。
* 分類器的功能是吃模型最後的表示,然後輸出分類結果(例如:正面或負面評論)。
* 在 fine-tuning 時,模型的所有參數(包括預訓練的參數和新加分類器的參數)都會被更新。
4. **PTMs 的效果與應用範圍:** PTMs(如 BERT)在許多資料集上表現非常優異。它們可以應用於多種情境,包括情感分析 (sentiment analysis)、問答 (question answering)、文本摘要 (summarization) 和醫學領域的應用等。
### II. 實際應用中的挑戰
1. **挑戰一:有限的標註資料 (Low-Resource Labeling):** 雖然 PTMs 在大型資料集上表現出色(資料量至少數千筆),但在現實中,用戶感興趣的內部資料往往非常少,難以大規模收集。
2. **挑戰二:模型規模過大:** 語言模型的規模越來越大。例如,GPT-3 擁有 1750 億個參數。大模型在實際部署時,會面臨空間不足和時間耗費大的問題。
3. **挑戰三:部署空間與時間成本:** 傳統上,每個下游任務都需要一個相同大小的模型來微調,導致需要的儲存空間是任務數量的倍數(例如:四個任務需要四倍的空間)。此外,大型模型(如 BERT Base 有 96 層)在推論時需要花費大量的時間通過每一層。
### III. 解決資料稀缺性的方法 (Low-Resource Learning)
#### A. 提示學習 (Prompting)
1. **核心概念:** 設計一些東西讓語言模型知道它要做什麼。
2. **機制:** 將標註資料點轉換成自然語言的格式 (Prompt),使 LM 更容易理解任務。
* 例如,在自然語言推論任務中,將「前提」和「假設」結合,用自然語言連接詞(如「代表」)判斷它們的關係。
3. **提示的組成:**
* **Prompt Template:** 將輸入資料轉換為自然語言輸入的方式,例如將兩個句子用「因此」連接起來。
* **Mask:** 在提示模板中,需要讓模型預測的特定位置。
* **Verbalizer:** 將類別標籤轉換為單字表中特定單字的方法。例如,將自然語言推論任務的三個類別 (entailment, neutral, contradiction) 對應到特定的單字,然後讓 LM 預測遮罩處的單字。
4. **Prompting 的優勢:** 當資料量非常稀少時,Prompting 的表現顯著優於標準微調。它保留了原模型的知識,並且不需要新增參數給分類器,所以更容易學習。
#### B. 示範學習 (Demonstration) / 情境學習 (In-Context Learning)
1. **核心概念:** 除了 Prompting 之外,還可以在輸入中增加少數的例子示範來引導模型。
* 例如,在情感分析中,除了輸入待分析的句子,還會加上一個正面和一個負面的評論範例,讓模型學習應對方式。
2. **Few-Shot/In-Context Learning:** 這種方法在極少量資料(例如 12 個資料點)的情況下,能比直接微調(甚至使用自動化找到的 Verbalizer)取得更好的表現。
#### C. 半監督學習 (Semi-supervised learning)
1. **背景:** 擁有少量標註資料和大量未標註資料時,Semi-supervised learning 利用大量未標註資料來提升模型效能。
2. **操作方式:** 設計多種不同的 Prompt,用這些 Prompt 來對未標註資料進行標註 (labeling)。然後將不同提示所預測的結果結合起來(例如單純相加),作為最終的假標籤 (pseudo label),最後在包含假標籤資料的資料集上進行標準微調。
3. **優勢:** 即使沒有標註資料,Semi-supervised learning 也可以做到準確的預測。
#### D. 零樣本學習 (Zero-shot learning)
1. **背景:** 在沒有任何標註資料的情況下,期望模型能完成任務。
2. **模型能力:** 像 GPT-3 這樣的大型模型具有零樣本學習的能力。這種能力隨著模型規模的增大而提升。
3. **預訓練即提示 (Pre-training as Prompting):** 假設大型模型在預訓練時見過類似提示的情境,因此學會了在情境中學習 (In-Context Learning) 的能力。研究發現,將預訓練任務轉化成提示的格式(例如將分類任務轉換成翻譯任務),然後進行預訓練,模型就能夠應用零樣本學習。這種方法在 Zero-shot learning 上,即使是較小的模型,也能超越標準的微調模型 (BERT)。
### IV. 解決模型規模與部署問題的方法
如果直接使用較小的模型,其表現會與大模型有所差距。因此,更可行的方式是想辦法降低 fine-tuning 時所需的資源量。
#### A. Parameter-Efficient Fine-Tuning
1. **核心理念:** 對每個任務,只微調原模型一小部分的專屬參數,其他大部分參數量共用。這大大減少了儲存多個任務模型時所需的空間。
2. **Adapter:**
* **機制:** 在 Transformer 的模組內插入一些小的、可訓練的子網路。Adapter 通常插入在 Self-Attention 和 Feed-Forward Networks 之後。
* **子網路結構:** Adapter 通過線性層將輸入向量先降維到低維空間,經過一個非線性轉換,然後再升維回去。
* **微調:** 在微調時,只更新 Adapter 模組內的參數,原 Transformer 的所有參數保持不動。每個任務只需要儲存自己的 Adapter 參數。
3. **LoRA:**
* **機制:** 在 Transformer 的線性層旁,平行地插入一個 Low-Rank decomposition 的結構。這個結構由兩個線性層組成,先將高維向量降到一個極低的維度,再升維回去。
* **效果:** LoRA 的輸出與原線性層的輸出相加,從而改變原始 Transformer 產生的表示。
* **與 Adapter 的比較:** LoRA 是平行插入,不影響推論時間;Adapter 是序列插入,推論時間會稍有增加。LoRA 通常會將降維的維度 $r$ 設定得非常小(例如 1、2),因此參數量通常比 Adapter 更少。
4. **Prefix Tuning:**
* **核心概念:** 增加一個小的、可訓練的「前綴」(prefix) 來改變 Self-Attention 的運算。
* **機制:** 在 Self-Attention 機制計算 Query (Q)、Key (K)、Value (V) 時,在 K 和 V 的前面插入可訓練的虛擬 Key 和 Value 向量 (prefix key/value)。
* **結果:** 在計算 Attention Score 時,模型不只對原始輸入的 K/V 進行 Attention,還會對這些 Prefix K/V 進行 Attention。這使模型產生的表示得到調整。
* **儲存:** 每個任務只需儲存對應的 Prefix K/V 向量。
5. **Soft prompts:**
* **核心概念:** 插入可訓練的 soft prompts 在輸入的詞嵌入 (input embedding) 序列前面。
* **機制:** 僅在輸入詞嵌入的前面插入一串可訓練的向量。在微調時,只訓練這些軟提示的參數,其他模型參數不動。
* **優勢:** Soft prompts 的參數量最少,因為它不用像 Adapter 和 Prefix Tuning 那樣在每一層都插入參數。
6. **Parameter-Efficient Fine-Tuning 方法的總結比較:**
* Parameter-Efficient Fine-Tuning 方法(Adapter, LoRA, Prefix Tuning, Soft prompts)可以極大地減少每個任務需要微調和儲存的參數數量,有時甚至只佔整體模型參數的 0.1% 到 10%。
* 減少參數量的好處包括:更容易部署、在超參數搜尋上更有效率。
#### B. 動態推論 (Dynamic Inference)
1. **核心概念:** 由於大模型執行推論需要許多計算過程,Dynamic Inference 在動態地減少推論時所需的計算量。
2. **機制:** 假設簡單的資料點可能在模型的前面幾層計算中就能獲得答案,因此不需要等到最後一層。
3. **實作:** 在模型的每一層都加入一個分類器,同時訓練一個「信賴度預測器 (confidence predictor/critic)」。
* 信賴度預測器根據當前層的表示,判斷該層輸出的結果是否足夠可信。
* 一旦信賴度足夠高,則可以停止後續層次的計算。
4. **效果:** 這種方法可以在減少 3% 到 16% 的計算層數的情況下,依然保持極高的準確度。
### V. 結論與未來研究方向
1. **總結:** 解決低資源資料問題的方法包括 Prompting, Demonstration, Semi-supervised learning 等,它們透過特殊設計來充分利用模型知識;解決模型過大問題的方法主要有(Adapter, LoRA, Prefix Tuning, Soft prompts) 和 Dynamic Inference,在減少部署時的空間和計算時間。
2. **未解決的問題與挑戰:**
* **Explainability:** 如何讓使用者知道模型做出特定決策的原因。
* **Domain Shift:** 模型在特定領域訓練後,如何應用於有許多差異的不同領域。
* **知識更新:** 如何讓模型得知訓練時間點之後的最新資訊,因為模型知識通常停留在訓練資料截止的時間點(例如 GPT-3 訓練在 2020 年以前)。
* **安全與隱私:** 雖然模型很強大,但資料中可能包含個人基本資料,如何確保模型在安全運作,避免洩露隱私。
---
其他課程
[【機器學習 2022】01~04 機器學習原理介紹](https://hackmd.io/@JuitingChen/Sk_VtIJaeg)
[【機器學習 2022】05 各式各樣神奇的自注意力機制](https://hackmd.io/@JuitingChen/rJeNpFIpxl)
[【機器學習 2022】06 如何有效的使用自監督式模型](https://hackmd.io/@JuitingChen/BJXeLKD6xx)
[【機器學習 2022】07 語音與影像上的神奇自監督式學習](https://hackmd.io/@JuitingChen/r1q-N1uagg)
[【機器學習 2022】08-09 自然語言處理上的對抗式攻擊-1](https://hackmd.io/@JuitingChen/B14i61uTxx)
[【機器學習 2022】10~11 自然語言處理上的對抗式攻擊-2](https://hackmd.io/@JuitingChen/HkLRoFOTgx)
[【機器學習 2022】12~13 Bert 三個故事 和 各種 Meta Learning 用法](https://hackmd.io/@JuitingChen/HyjfTptTel)