---
# System prepended metadata

title: 【機器學習 2022】12~13 Bert 三個故事 和 各種 Meta Learning 用法
tags: [機器學習]

---

20251016 筆記，內容可能有錯，請參考來源影片。

[李宏毅機器學習2022影片](https://www.youtube.com/playlist?list=PLJV_el3uVTsPM2mM-OQzJXziCGJa8nJL8)

[【機器學習 2022】惡搞自督導式學習模型 BERT 的三個故事](https://youtu.be/Pal2DbmiYpk?si=cnd288z2oVZ9pDzH)


[【機器學習2022】各種奇葩的Meta Learning  (Meta Learning) 用法](https://youtu.be/QNfymMRUg3M?si=nDOw_EddkQWlK4iB)

### 【機器學習 2022】惡搞自督導式學習模型 BERT 的三個故事 大綱

1.  **第一個故事：Bert 模型的跨語言能力**。
    *   即使模型只使用英文 QA 資料進行微調，也能自動解決中文 QA 問題。
    *   模型能夠將不同語言中意義相同的符號對應起來。
    *   訓練資料的數量和模型本身對於觀察到這種跨語言能力至關重要。
2.  **第二個故事：Bert 模型的跨學科能力**。
    *   在人類語言上預訓練的模型，可應用於與人類語言完全無關的任務，例如 DNA、蛋白質分類及音樂分類，並帶來顯著幫助。
    *   預訓練強化了模型的**優化**和**舉一反三**能力。
    *   應用：可實現端到端語音問答，無需依賴語音辨識。
3.  **第三個故事：在人造資料上訓練 Bert**。
    *   探討預訓練是否必須使用人類語言，以及何種能力對於 NLP 任務重要。
    *   **隨機生成**的資料沒有幫助，但具有**週期性**或**打亂順序** 結構的人造資料對 NLP 任務有顯著幫助。
    *   發現在預訓練時，讓模型學習看待較長範圍的能力（較長的連續數字序列）似乎是重要的因素。

***

### 故事一：Bert 模型的跨語言能力 

#### 核心發現與實驗
*   **多語言訓練 (Multilingual Training)**：在訓練 BERT 時，可以輸入各種語言的資料，讓模型執行多種語言的填空題訓練。
*   **跨語言 QA 轉移**：訓練好的 Multi-BERT（多語言 BERT）展現出驚人的效果。若目標是解決中文 QA任務，**不需要提供中文 QA 的訓練資料**，只需要提供英文 QA 的訓練資料（英文文章、問題、答案），模型就能自動舉一反三，解決中文 QA 問題。
*   **實驗結果**：在中文 QA 測試資料上，若使用在 104 種語言上預訓練的 Multi-BERT，並只使用**英文 QA** 資料進行微調，它的 F1 Score 為 **78.8%**。這個結果與使用中文 QA 資料進行微調的結果幾乎一樣好，甚至更好一點。如果沒有預訓練，僅使用中文資料微調，F1 Score 僅 78.1%；若預訓練後再用中文資料微調，F1 Score 可達 89%。
*   **現狀**：這種跨語言能力已經在自然語言處理（NLP）領域成為一種**共識**。有一個名為 XTREME 的基準資料集，專門用於測驗多語言模型是否具有跨語言能力，要求模型只用英文資料訓練，然後在其他 30 種語言上進行測試。

#### 跨語言能力成因分析
*   **常見猜想**：Multi-BERT 可以無視語言差異，將不同語言中**同樣意思的符號給予一樣的表示。例如，對於 Multi-BERT 來說，「魚」和「fish」看起來差不多。
*   **驗證對應關係 (Alignment)**：透過計算中文字與英文單字 Representation 之間的相似度，並利用字典關係來計算 **Mean Rank Net (MNR)** 分數。MNR 值越高，代表模型將同義的中英文詞彙對應得越好。
*   **影響因素**：
    1.  **訓練資料的重要性**：如果將每種語言的訓練資料從 1000K 降至 200K，**跨語言能力會顯著下降**。資料量足夠多才能觀察到跨語言能力。
    2.  **模型的重要性**：傳統的 Word Embedding 模型（非 BERT 時代），即使給予與 Multi-BERT 相同多的資料，也無法觀察到單字對應關係。這顯示出需要一個**大的模型**並經過足夠的資料訓練，才能展現出跨語言能力。

#### 語言資訊的儲存與應用
*   **語言資訊的存在**：儘管 Multi-BERT 具有跨語言能力，但它在執行填空題時，仍能區分輸入是中文句子還是英文句子，並填入對應的中文或英文詞彙。這意味著 Multi-BERT **並未完全抹去所有語言間的差異**；語言資訊仍然存在，只是被藏起來了。
*   **語言差異向量 (Difference Vector)**：將所有英文 Embedding 平均後減去所有中文 Embedding 的平均，可以得到一個「英文與中文之間的差距向量」。
*   **向量平移與翻譯**：將一個英文詞彙的 Embedding 加上這個差距向量，得到的結果會與中文中意思相同的詞彙 Embedding 很接近（例如 fish + 差距 $\approx$ 魚）。
*   **跨語言轉換應用**：可以將英文句子丟入 Multi-BERT 取得 Representation，然後**將這些 Representation 加上英文與中文的差異向量**，使它看起來像中文的 Representation，再讓 Multi-BERT 還原，結果可以得到一個粗略的中文翻譯。例如，輸入 "there is no one who can help you"，平移後還原得到「無人能助我」。
*   **修正跨語言轉移的表現**：利用語言差異向量可以修正在跨語言任務中模型表現的落差。當模型在英文上訓練，但測試在中文上時，由於 Multi-BERT 仍存有語言資訊，中英文的 Representation 略有差異。可以透過將中文的 Representation **減掉**英中之間的差異向量，使其看起來更像英文 Representation，從而幫助模型得到更好的結果。

### 故事二：Bert 模型的跨學科能力 

#### 核心發現與實驗
*   **跨學科任務**：探討在人類語言上預訓練的 BERT 模型，能否幫助解決與人類語言完全無關的任務，如 DNA 或蛋白質分類。
    *   **方法**：由於模型只看得懂人類語言（英文單字），因此將 DNA 序列（由 ATCG 四種去氧核醣核酸構成）透過**隨機對應表**轉換成一串不知所云的英文單字序列。
*   **結果**：在蛋白質分類、DNA 分類和音樂分類等任務中，使用在英文上預訓練的 BERT 進行初始化，與從頭訓練相比，**正確率都有顯著提升**。
*   **結論**：模型不只學到人類語言的語意，還學到了一些更通用的能力，讓它能把所有分類任務或機器學習任務做得更好。
*   **通用性**：不只是英文 BERT 有此能力，其他在人類語言上預訓練的模型對於這些無關任務也都有幫助。

#### 預訓練的價值：優化與泛化
*   **優化**：觀察訓練過程中的 Loss Function 變化。使用預訓練 BERT 初始化的模型，它的 Loss 下降得比從頭訓練的模型  **更多、更快**，卡住的機率較低。
*   **舉一反三**：即使將預訓練模型和從頭訓練模型在訓練資料上都訓練到非常低的 Loss（結果一樣好），但在 Development Set（測驗舉一反三能力）上，**預訓練模型的準確率仍然更高**。

#### 應用：端到端語音問答 (End-to-End Speech QA)
*   **挑戰**：目標是訓練一個模型，完全不使用語音辨識（ASR），也不使用語音與文字成對的資料，只根據語音問題和語音文章，找出答案在聲音檔案中的起始與結束位置。
*   **過去嘗試的限制**：
    1.  傳統方式是 ASR 模型接文字處理模型（但受 ASR 錯誤率影響大）。
    2.  單純使用像 HuBERT 這樣的語音預訓練模型進行初始化，無法成功解決 QA 問題，因為語音模型沒有學到足夠的**語義資訊**。
*   **跨學科解決方案**：結合兩種預訓練模型：
    1.  語音預訓練模型（如 HuBERT）：用來提取聲音內容（Discret Token/ID 序列）。
    2.  文字預訓練模型（如 Text BERT）：負責理解語義。
*   **關鍵步驟**：由於 HuBERT 輸出的 ID 序列與人類文字無關，因此需要將這些 ID **隨機對應**到英文單字，然後將其丟給文字 BERT 進行初始化和微調。
*   **結果**：如果沒有使用文字 BERT 進行預訓練（初始化），F1 Score 只有 6%（等於沒做起來）。但若使用文字模型來 Pre-train 這個處理語義的模組，F1 Score **顯著提升到 54%**。
*   **優勢**：這個端到端（End-to-end）的藍色線模型基本上**不受語音辨識錯誤率的影響**。當語音辨識錯誤率超過 25% 時，這個端到端模型（藍線）的準確率甚至可以超越傳統的 ASR+NLP 模組（綠線）。

### 故事三：在人造資料上訓練 Bert 

#### 核心問題與方法
*   **動機**：探討是否真的需要人類文字來做預訓練，以及模型需要具備什麼樣的能力才能在人類語言相關任務（如 GLUE benchmark）上表現良好。
*   **方法**：使用簡單規則產生人造的 Token 序列資料。用這些假資料訓練一個 BERT 模型（它只讀得懂 ID）。測試時，將人類語言的詞彙**隨機對應**到這些 ID，然後測試模型在 NLP 任務（如情感分析 sentiment analysis）上的表現。

#### 人造資料的效果
*   **基準線 (Baseline)**：使用英文資料進行預訓練，在 GLUE 任務上平均可得到 **20%** 的進步。
*   **隨機資料**：若人造資料是**隨機生成，沒有規律**，則預訓練**完全沒有幫助**。這證明了資料本身的內容還是重要的。
*   **週期性資料**：如果生成的 Token 序列是**週期性**的（例如連續出現 5, 5, 3, 3, 0, 0），則這種資料進行預訓練**非常有效**，可達到接近 **15%** 的進步，大約是英文預訓練結果的四分之三。這可能是因為人類語言中也存在類似的共現或週期性結構。
*   **打亂順序資料**：先產生一串連續編號的序列（如 1 到 64），然後將其**隨機打亂**順序，並在這個打亂的序列上做填空訓練。這種資料對預訓練也**非常有幫助**。

#### 關鍵能力：長範圍依賴性
*   **長度影響**：觀察 Shuffle 實驗的結果，若一次只產生四個連續數字的 Token 進行打亂訓練（4 個為單位），進步量不大。但若產生 **64 個連續數字**的序列進行打亂訓練（64 個為單位），則進步量非常可觀。
*   **推論**：這結果暗示，如果強迫預訓練模型學習**看一個比較長的範圍**，它就能夠在 NLP 任務上做得比較好。學習處理比較長範圍的資訊，可能是模型具備解 NLP 任務所需的重要能力之一。


### 【機器學習2022】各種奇葩的Meta Learning  (Meta Learning) 用法

1.  **Meta Learning 與自監督式學習 (Self-supervised learning)**：兩者目標相似（尋找好的初始化參數），但可以互補。Bert 訓練出的參數可作為 Meta Learning 的初始化。
2.  **Meta Learning 與知識蒸餾 (Knowledge Distillation)**：利用 Meta Learning 概念，訓練老師模型學習**如何教學**，讓產生的學生模型效果更好。
3.  **Meta Learning 與領域泛化 (Domain Generalization)**：利用 Meta Learning 方法，學習一種學習演算法 (learning algorithm)，讓它能夠在未知的目標領域 (target domain) 上表現良好。
4.  **Meta Learning 和 Lifelong Learning**：利用 Meta Learning 來學習更好的正規化 (regularization) 策略或其他學習機制，以避免災難性遺忘。

***

### 一、 Meta Learning 與自監督式學習

#### 共同目標與關係
*   **自監督式學習的目標**：最具代表性的技術如 **Bert** 和相關模型，所做的事情是尋找一組好的**初始化參數 ($\theta_0$)**。
*   **Meta Learning 的目標**：在Meta Learning 中，也有一系列的技術 MAML 專門在尋找參數的初始化，執行「**學習初始化 (learn to initialize)**」的任務。
    *   **關係**：儘管 Bert 和 MAML 有共同的目標，但它們並非互相取代，而是可以**互相結合**來使用。

#### 結合與優勢
*   **Bert 初始化 MAML**：當 MAML 需要初始化時，在自然語言處理（NLP）相關任務中，常常使用 Bert 或透過自監督式學習學到的參數作為 MAML 的**初始化參數**。隨後，再透過 MAML 技術尋找更好的初始化參數。
*   **優勢：彌補目標差異**：
    *   Bert 雖然在任務上表現良好，但自監督式學習訓練目標（如填空題）與最終的下游任務之間存在**目標差異**。
    *   MAML 在尋找初始化參數時，其目標就是為了在我們關心的**目標任務上**獲得好的表現，因此更有**保障**。
    *   將 Meta-learning (如 Reptile) 加到 Bert 之後，可以得到更好的結果（例如圖表顯示為綠色線優於藍色線），尤其是在**訓練資料特別少**（Few-shot learning）的情況下，更有優勢。

#### 挑戰與現狀
*   **訓練資料的差異**：Bert 的訓練可使用**無標註**的大量資料。但 MAML 需要收集一系列**有標註**的訓練任務，這涉及到人工標註，且 MAML 本身的計算量非常龐大。
*   **文獻趨勢**：多數文獻在執行 MAML 或相關技術時，會使用 Bert 或其變體 (如 RoBERTa) 來做初始化，而**完全從隨機初始化**的 MAML 文章相對較少。

### 二、 Meta Learning 與知識蒸餾 (Knowledge Distillation)

*   **傳統知識蒸餾挑戰**：在知識蒸餾中，一個在分類任務上表現特別好的大型模型（Teacher Model）**不見得擅長教學**。文獻指出，正確率最高的老師教出來的學生不一定是最強的；有時表現較差的老師反而能教出更強的學生。
*   **Meta-learning 介入**：可以使用Meta Learning 的概念，讓 Teacher Network 學習**如何教學**。
*   **Meta Learning 目標的改變**：Teacher Network 更新參數的目標**不再是自己的分類正確率**，而是讓 Student Model 在完成知識蒸餾後的**正確率** 或 **損失值** 變好。
*   **應用實例**：在知識蒸餾中，輸出通常會加上一個 **Temperature** 參數。過去這個參數是超參數，需要人工調整；現在可以透過「學習蒸餾 (learn to distill)」的方法，利用Meta Learning 來自動學習這個 Temperature 應該有多大。

### 三、 Meta Learning 與領域泛化 (Domain Generalization)

*   **Domain Generalization 定義**： Domain Generalization 的目標是，在面對一堆不同的訓練領域時，訓練出一個模型，即使在**從未見過的目標領域** 上，也能有好的泛化能力。
*   **Meta Learning 應用**：將Meta Learning 應用在 Domain Generalization 上，即是學習一種學習演算法 (learning algorithm)，讓這個演算法能從不同的訓練領域中學習出一個模型，此模型可被應用在新領域上。
*   **Domain Generalization 的特殊 Meta-learning 做法**：
    *   由於訓練階段無法取得目標領域的資料，因此採用**模擬** 的方式。
    *   將訓練領域中的其中一個領域拿出來，**假扮成目標領域**。
    *   使用 Meta-learning 方法，在剩下的領域上進行訓練，但其最終目標是讓在**假扮目標領域**上的正確率越高越好。
    *   這樣，每一個訓練領域都可以輪流扮演目標領域，形成不同的訓練任務，用來訓練出一個學習演算法，使其能夠泛化到最終未見過的測試領域。
*   **Meta-learning 的更高層次挑戰**：Meta Learning 可以幫助 DG，但Meta Learning 本身也可能遇到「訓練任務和測試任務分佈不相似」的狀況，此時需要更高層次的領域遷移處理。

### 四、 Meta Learning 與 Lifelong Learning

*   **Lifelong Learning 挑戰**：處理「災難性遺忘 (Catastrophic Forgetting)」，即模型學習新任務時，會遺忘在舊任務上學到的東西。
*   **Meta Learning 介入**：Meta Learning 可以強化現有的連續學習方法，例如基於正規化 (regularization base) 的方法（如 EWC、LwF 等）。
*   **Meta Learning 目標的改變**：不再是由人來設計正規化項。Meta Learning 的目標被修改為：學習一種學習演算法，使其在學習新的資料（如 Data 2）後，**不只學會 Data 2，也能夠記住 Data 1** 的知識。
*   **Meta-learning 的更高層次挑戰**：如同領域泛化，Meta Learning 本身也可能遇到連續學習的問題。如果訓練任務是依序到來的（例如先是訓練任務組 1，接著是任務組 2），模型仍可能在看到後續任務時，**遺忘**早期任務的學習結果。因此，Meta Learning 本身也可能需要處理連續學習的問題。


---

其他課程

[【機器學習 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)
