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)