---
# System prepended metadata

title: 【機器學習2021】18~21 自監督式學習
tags: [機器學習]

---

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

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


今天影片內容

[【機器學習2021】自監督式學習 (Self-supervised Learning) (一) – 芝麻街與進擊的巨人](https://youtu.be/e422eloJ0W4?si=wlow3_mbqwlj2tMn)


[【機器學習2021】自監督式學習 (Self-supervised Learning) (二) – BERT簡介](https://youtu.be/gh0hewYkjgo?si=FVlhV4Wa1Huq1rXK)

[【機器學習2021】自監督式學習 (Self-supervised Learning) (三) – BERT的奇聞軼事](https://youtu.be/ExXA05i8DEQ?si=mVD0O4NKBGe-8wPY)

[【機器學習2021】自監督式學習 (Self-supervised Learning) (四) – GPT的野望](https://youtu.be/WY_E0Sd4K80?si=8o03OhTNdaNYRaP0)



### 【機器學習2021】自監督式學習 (Self-supervised Learning) (一) – 芝麻街與進擊的巨人大綱


**I. Self-Supervised Learning 模型的命名慣例**
A.Self-Supervised Learning 模型的命名多來自芝麻街的角色。

**II. 芝麻街角色模型的介紹**
A. ELMO (Embeddings from Language Model)。
B. BERT (Bidirectional Encoder Representation from Transformer)。
C. ERNIE (Enhance Representation from Knowledge Integration)。
D. Big Bird (Big Bird Transformer)。

**III. 巨型模型 BERT 的規模與比喻**
A. BERT 的參數規模。
B. 規模對比：與作業四模型的參數比較。
C. 聯想：《進擊的巨人》的比喻。
D. BERT 與「超巨大巨人」控制者貝爾托特（Bertolt）的命名巧合。

**IV. 巨型模型時代與參數規模的演進**
A. 時代比喻：「被發動的地鳴」。
B. 模型參數規模比較（以身高具象化）。
C. 最大模型的介紹：Switch。

### 一、 Self-Supervised Learning 模型介紹與命名

1.  接下來的主題是 **Self-Supervised Learning**
2.  Self-Supervised Learning 的模型名稱通常以**芝麻街**的人物命名。

#### 芝麻街模型列表：

| 模型名稱 | 芝麻街角色 | 縮寫全稱 |
| :--- | :--- | :--- | 
| **ELMO** | 紅色怪物 Elmo | **E**mbeddings **f**rom **L**anguage **Mo**del |
| **BERT** | Bert | **B**idirectional **E**ncoder **R**epresentation **f**rom **T**ransformer |
| **ERNIE** | Bert 最好的朋友 Ernie | **E**nhance **R**epresentation **f**rom **K**nowledge **I**ntegration | 
| **Big Bird** | 大鳥 Big Bird | Big Bird Transformer |

### 二、 BERT 的規模與《進擊的巨人》比喻

1.  **BERT 模型的規模：**
    *   BERT 是一個**非常巨大的模型**。
    *   它擁有 **340 個 Million (M)** 的參數。
2.  **規模對比：**
    *   以「作業四」的模型為例，它是一個 Transformer 模型，但只有 **0.1 個 M** 參數。
    *   BERT 是作業四模型的 **3000 倍**那麼大。
3.  **進擊的巨人：**
    *   提到 BERT 時，會聯想到**超巨大的巨人**，可以一腳踢破瑪利亞之牆的那種。
    *   剛好超巨大巨人的控制者**貝爾托特**（Bertolt）的名字中含有 **B E R T**。

### 三、 巨型模型的時代與參數演進

1.  雖然 BERT 已經很大，但還有**更多更巨大的模型**。
2.  這個時代的發展就像是**被發動的地鳴**，有許多超巨大的巨人在湧出。

#### 模型的參數規模比較（M=Million，B=Billion，T=Trillion）：

| 模型名稱 | 參數數量 | 規模描述 (相對 BERT) | 備註/類比 |
| :--- | :--- | :--- | :--- |
| **ELMO** | 94 M | - | - |
| **BERT** | 340 M | 基準 | 類比為**一公尺高**。 |
| **GPT-2** | 1500 M (1.5 B) | 約 BERT 的 4.4 倍 | - |
| **Megatron** | 8 B | 約 GPT-2 的 5.3 倍 | - |
| **T5** | 11 B | - | - |
| **T-NLG** | 17 B | - | - |
| **GPT-3** | T-NLG 的 10 倍 | 遠大於 T-NLG | 若 BERT 是一人高，GPT-3 就是**臺北 101 高**。 |
| **Switch** | 1.6 T | 比 GPT-3 又再大 10 倍 | 講者 2021 看到**最大的模型**，由 Google 製作。 |


### 【機器學習2021】自監督式學習 (Self-supervised Learning) (二) – BERT簡介大綱


**I. Self-Supervised Learning (SSL) 的定義與區別**
A. 監督式學習 (Supervised Learning) 依賴標註資料 (Label)。
B. 自我監督式學習利用未標註資料自製標籤，進行學習。
C. 自我監督式學習可視為一種非監督式學習 (Unsupervised Learning) 方法，但詞彙上更為明確。

**II. BERT 模型的預訓練任務 (Pre-training)**
A. BERT 模型架構：Transformer Encoder。
B. 任務一：遮蓋語言模型 (Masked Language Model)。

    1. 隨機遮蓋（蓋住）輸入句子中的詞彙。
    2. 遮蓋方式：替換成特殊符號 `[M]` 或隨機替換成字典中的其他字。
    3. 訓練目標：預測被遮蓋住的原始詞彙（分類問題）。
C. 任務二：下一句預測 (Next Sentence Prediction)。

    1. 拿取兩個句子，預測它們是否為連續相接的句子（二元分類）。
    2. 訓練時會在句子前加上 `[CLS]` 符號，中間加入分隔符號。
    3. 下一句預測的效用討論：後續研究多認為其用處不大，任務可能過於簡單。
    4. 替代方案：句子順序預測 (Sentence Order Prediction, SOP) 被認為較為有用。

**III. BERT 的使用與遷移學習 (Transfer Learning)**
A. 兩階段流程：

    1. 預訓練 (Pre-training)：Self-Supervised Learning，學會填空題。
    2. 微調 (Fine-tuning)：將 BERT 用於下游（Downstream）任務。
B. BERT 的角色比喻：具備無限潛能的**幹細胞** (Stem Cell)。
C. 預訓練參數的重要性：使用 BERT 預訓練的參數初始化（權重）比隨機初始化結果更好，訓練收斂速度更快、Loss 更低。

**IV. BERT 在下游任務的應用案例 (Downstream Tasks)**
A. **案例一：序列分類 (Sequence Classification)**，例如：情感分析 (Sentiment Analysis)。
    
    1. 方法：使用輸入序列最前方的 `[CLS]` token 所對應的輸出向量進行分類。
B. **案例二：逐詞分類 (Token-Level Classification)**，例如：詞性標註 (POS Tagging)。
    
    1. 方法：使用序列中每個 token 對應的輸出向量進行分類。
C. **案例三：成對序列分類 (Pairwise Sequence Classification)**，例如：自然語言推論。
    
    1. 方法：輸入兩個句子（中以分隔符號區隔），使用 `[CLS]` 輸出向量進行分類。
D. **案例四：片段預測 (Span Prediction)**，例如：問答系統。
    
    1. 任務：假設答案出現在文章中，需預測答案片段的起始 (S) 與結束 (E) 位置（索引）。
    2. 方法：訓練兩個向量（代表 S 和 E），與文章中每個 token 的輸出向量做內積，選出分數最高的作為起始點和結束點。

**V. BERT 訓練的規模與挑戰**
A. 輸入長度限制：BERT 理論上無限制，但實際上受限於硬體，約只能處理 512 個 Token。
B. 預訓練資料量：3 億（Billion）個詞彙，約為《哈利波特全集》的 3000 倍。
C. 訓練資源：訓練 BERT-base 版本需使用 4 塊 TPU 跑 8 天。

**VI. 處理 Sequence-to-Sequence (Seq2Seq) 任務**
A. 預訓練方法：故意將 Encoder 輸入的句子弄壞，讓 Decoder 輸出還原後的原始句子。
B. T5 模型的貢獻：探討了各種弄壞方法的組合，訓練在巨大的 C4 (Colossal Clean Crawled Corpus) 資料集上。

---

### 一、 Self-Supervised Learning 的定義

*   **Supervised Learning**：模型輸入 $X$，輸出 $Y$。需要 Label 資料，例如在情感分析（Sentiment Analysis）中，需要文章和其標註的正負面標籤。作業 1, 2, 3, 4, 5 都是監督式學習。
*   **Self-Supervised Learning**：在沒有外部標註（Label）資料的情況下，**自己想辦法做 Supervise**。
*   方法：將未標註的資料 $X$ 分成兩部分 $X_a$ 和 $X_b$，讓 $X_a$ 作為模型的輸入，而 $X_b$ 作為模型的標準（Label）。模型訓練目標是讓輸出 $Y$ 盡量接近 $X_b$。
*   **Self-Supervised Learning vs. Unsupervised Learning**：
*   Unsupervised Learning 是指沒有使用標註資料的方法。Self-Supervised Learning 是 Unsupervised Learning 下面的一個更精確的分類，因為 Unsupervised Learning 包含許多不同方法（例如 CycleGAN），而 Self-Supervised Learning 在更明確地說明其從自身資料中產生標籤的性質。

### 二、 BERT 的預訓練任務 (Pre-training)

BERT 是一個 **Transformer Encoder**，主要用於處理序列數據，輸入一排向量，輸出另一排等長的向量。BERT 的預訓練同時進行兩個任務：

#### 1. 遮蓋語言模型 (Masked Language Model)

*   **操作步驟**：將輸入的字串中**隨機**選擇一些部分（例如中文的方塊字）將其蓋住。
*   **蓋住的方式 (兩種)**：
    1. 換成一個特殊的符號 `[M]`（Mask），代表「蓋住」的意義。
    2. 隨機換成詞彙表（Vocabulary）中的**另外一個字**。
    *   *註*：訓練時會隨機決定要蓋住哪些詞彙，以及用哪種方式蓋住。
*   **訓練目標 (Label)**：模型輸出一個分佈，目標是讓這個分佈去預測**被蓋住的位置原本應該是哪個字**。
*   **實現方式**：這是一個**分類問題**。類別的數量就是所有感興趣的中文詞彙的數量（例如 4000 個類別）。模型需成功預測被蓋住的地方屬於哪個類別。
*   **訓練組件**：訓練時，BERT 本體（Transformer Encoder 的參數）與後面的 **Linear Model**（一個矩陣）一起訓練。Linear Model 的參數相對於 BERT 非常小。

#### 2. 下一句預測 (Next Sentence Prediction)

*   **操作步驟**：從資料庫中拿出兩個句子。
    *   將兩個句子合併成一個長序列，中間用一個**分隔符號**隔開。
    *   在整個序列的最前面加上一個特殊符號 **[CLS]**。
*   **訓練目標**：BERT 需預測這兩個句子是否**相接**（Yes/No 的二元分類）。
    *   訓練相接的句子輸出 "Yes"，不相接的句子輸出 "No"。
    *   *註*：只有取 `[CLS]` 符號對應的輸出向量，用這個向量來做二元分類。
*   **效用討論**：Next Sentence Prediction 後來被發現對後續任務（Downstream Task）的幫助不大，而且任務本身可能太簡單。
*   **替代方案**：句子順序預測 (Sentence Order Prediction)。該方法找出來的 Sentence 1 和 Sentence 2 本來就接在一起，但模型可能會把兩者對調，然後問模型「這是哪一種情況」。Sentence Order Prediction 被認為比 Next Sentence Prediction 難，且在文獻上看起來較為有用（例如被用於 ALBERT 模型）。

### 三、 BERT 的應用架構與評估

#### 1. Pre-training (預訓練) 與 Fine-tuning (微調)

*   **預訓練 (Pre-training)**：BERT 只學會做填空題和預測句子是否相接。這個階段屬於 Self-Supervised Learning。
*   **微調 (Fine-tuning)**：將預訓練好的 BERT（即其參數）拿來應用於各種**下游任務 (Downstream Tasks)**。
    *   BERT 就像**胚胎裡的幹細胞**，具有無限潛能。給它少量的**標註資料**，它就能學會（分化成）各種感興趣的任務。


#### 2. 模型評估與權重初始化

*   **GLUE 基準測試 (Benchmark)**：General Language Understanding Evaluation 的縮寫。
    *   包含九個 NLP 任務。
    *   評估方式：將 BERT 分別微調在這九個任務上，取平均正確率來代表 Self-Supervised Learning 模型的效能。
*   **Fine-tuning 的實作細節**：
    *   在訓練下游任務時，BERT 本體的部分的參數**不使用隨機初始化**。
    *   而是直接將**學會做填空題的 BERT 參數**拿來作為初始化的參數。
    *   **優勢**：結果會比隨機初始化好。圖表顯示，使用 BERT 參數初始化的訓練 Loss 下降更快，最終 Loss 也更低。

### 四、 BERT 在下游任務的四個案例

在下游任務中，仍需要標註資料才能訓練模型。

#### 案例一：序列分類 (Sequence Classification)

*   **任務範例**：情感分析（判斷文章正面或負面）。
*   **BERT 用法**：
    1. 輸入要判斷的句子，前面放上 **[CLS]** token。
    2. 取 `[CLS]` 輸出對應的向量。
    3. 將此向量透過一個 Linear Model 和 Softmax，輸出分類結果。

#### 案例二：逐詞分類 (Token-Level Classification)

*   **任務範例**：詞性標註 (POS Tagging)。
*   **BERT 用法**：
    1. 輸入句子。
    2. 輸出句子中**每個 token** 對應的向量。
    3. 將每個向量分別透過 Linear Model 和 Softmax，預測該詞彙的類別（例如詞性）。
*   *註*：這類任務的輸入序列和輸出序列長度一樣。

#### 案例三：成對序列分類 (Pairwise Sequence Classification)

*   **任務範例**：自然語言推論判斷兩個句子（前提 Premise 與假說 Hypothesis）的關係（例如：矛盾或非矛盾）。
*   **BERT 用法**：
    1. 輸入兩個句子，中間放一個**分隔符號**，最前放 `[CLS]`。
    2. 取 `[CLS]` 輸出對應的向量。
    3. 將此向量透過 Linear Model，輸出二元或多元分類結果。

#### 案例四：片段預測 (Span Prediction)

*   **任務範例**：問答系統 (QA)。這裡指 **Extraction Base** 的問答，即答案必定出現在文章中的一個片段。
*   **輸入**：文章（Passage, P）與問題（Question, Q），兩者皆為序列。
*   **輸出目標**：兩個正整數 $S$（起始位置）和 $E$（結束位置），表示答案是文章中第 $S$ 個字到第 $E$ 個字。
*   **BERT 用法**：
    1. **模型輸入**：將問題 $Q$、分隔符號以及文章 $P$ 合併成一個序列，最前放 `[CLS]`。
    2. **預測 S**：訓練一個**起始向量**（$V_S$，橙色）。將 $V_S$ 與文章部分（P）的**每個輸出向量**做內積（Dot Product）。做 Softmax 後，分數最高的位置就是預測的起始位置 $S$。
    3. **預測 E**：訓練一個**結束向量**（$V_E$，藍色）。將 $V_E$ 與文章部分（P）的**每個輸出向量**做內積，分數最高的位置就是預測的結束位置 $E$。
    4. *註*：只有 $V_S$ 和 $V_E$ 這兩個向量需要從頭開始訓練（隨機初始化）。

### 五、 訓練規模與 Seq2Seq 處理

*   **輸入長度限制**：
    *   BERT 理論上可以處理很長的序列（因為是 Transformer）。
    *   但實際計算量非常大，通常只能處理最多 **512 個 Token**。
    *   對於長文章，通常會將其切成小段，每次只拿一小段出來訓練。
*   **訓練成本**：
    *   Google 最早訓練的 BERT-base 版本使用了 3 億個詞彙的資料（是哈利波特全集的 3000 倍）。
    *   訓練過程需要 8 塊 TPU 跑 **8 天**。在個人設備上從頭訓練非常困難。
    *   微調 (Fine-tuning) 則相對快速，大約只需半小時到一小時。
*   **Seq2Seq 預訓練**：
    *   BERT 的架構是 Encoder-only。要預訓練 Sequence-to-Sequence Model（有 Encoder 和 Decoder）。
    *   方法：故意對 Encoder 的輸入做**破壞**，例如 Masking、刪除詞彙、打亂順序。然後要求 Decoder 輸出**還原**弄壞前的原始句子。
    *   **T5 (Text-to-Text Transfer Transformer)**：Google 的一篇論文，系統性地比較了各種破壞方式，訓練在巨大的 C4 (Colossal Clean Crawled Corpus) 資料集上。
### 【機器學習2021】自監督式學習 (Self-supervised Learning) (三) – BERT的奇聞軼事大綱

**I. BERT 輸出向量的語義表示能力**
A. 向量的意義：代表輸入詞彙的意義。
B. 上下文相關嵌入（Contextualized Embeddings）：向量隨上下文不同而變化。
C. 實驗驗證：中文「果」的相似度矩陣分析。
D. 理論基礎：分佈假說（Distributional Hypothesis）。

**II. BERT 神奇能力的非語義解釋**
A. 實驗設定：將 BERT 應用於非自然語言任務（DNA、蛋白質、音樂分類）。
B. 輸入轉換：隨機將非語言序列（如 ATCG）對應到英文字彙。
C. 結果：預訓練的 BERT 參數初始化優於隨機初始化。
D. 推論：BERT 提供了優良的參數初始化或模型架構。

**III. Multi- BERT 的 Zero shot 學習**
A. Multi- BERT 預訓練：使用 104 種語言的資料進行填空題訓練。
B. Zero shot 實例：僅使用英文 QA 資料微調，卻能回答中文 QA 問題。
C. 原理解釋：Multi- BERT 學習了跨語言詞彙對齊（Alignment）。
D. 規模要求：Alignment 能力需在足夠大的資料量下（例如 1000K 詞彙）才能開啟。

**IV. Multi- BERT 中語言資訊的保留與向量操作**
A. 語言資訊的發現：Multi- BERT 仍保留語言資訊，不會將不同語言完全抹除。
B. 語言差異向量：計算中英語言嵌入的平均差異（藍色向量）。
C. 跨語言轉換實驗：將英文句子的嵌入向量加上語言差異向量。
D. 結果：模型輸出變為中文答案，實現 Token-level 翻譯。

---

### 一、 BERT 輸出向量的語義表示能力

1.  **輸出向量的意義與命名**：BERT 輸入一串文字，輸出的向量（Embeddings）代表了該輸入字的**意義**。
2.  **上下文相關性**：這些向量是**上下文相關的**（Context-dependent）。同一個字（例如「果」），在不同上下文中其向量會不一樣。
    *   **例子**：「吃蘋果的果」和「蘋果手機的果」（指蘋果電腦）雖然都是「果」字，但根據上下文，它們的向量會非常不一樣。
3.  **實驗驗證（相似度矩陣）**：
    *   講者收集了十個包含「果」的句子，前五個指**可食用的蘋果**，後五個指**蘋果電腦**。
    *   計算它們兩兩之間的相似度（Cosine Similarity），結果顯示：前五個句子之間的「果」相似度較高，後五個句子之間的「果」相似度較高，但前五個和後五個之間的相似度則較低。
    *   這證明了 BERT 的向量確實能夠區分同一詞彙在不同上下文中的意義。
4.  **理論基礎**：BERT 的學習是基於語言學的**分佈假說**（Distributional Hypothesis）。該假說認為詞彙的意義在於其上下文，即從它經常出現的詞彙中可以看出來。
    *   BERT 在訓練填空題時，必須依靠上下文 $W_1, W_3, W_4$ 等來預測被遮蓋的詞彙 $W_2$，因此輸出的向量就是**上下文資訊的精華**。
5.  **與舊技術的對比**：過去的技術如 Word2Vec 裡面的 Skip-gram 也能給詞彙一個向量，但 BERT 是上下文相關的，因此稱為 Contextualized Embeddings。

### 二、 BERT 神奇能力的非語義解釋

1.  **非語言實驗**：研究者嘗試將預訓練在**英文填空題**上的 BERT 拿來做非自然語言的分類，例如 **DNA 序列分類**、**蛋白質序列分類**、以及**音樂分類**。
2.  **輸入轉換方法**：
    *   以 DNA 為例（由 ATCG 組成）。
    *   研究者將 ATCG 隨機對應到**四個不相干的英文字彙**，形成一串不知所云的字串。
    *   將這些無意義的字串輸入到 BERT 進行分類。
3.  **結果對比**：
    *   **(Scratch 藍線)**：模型參數從頭隨機初始化訓練。
    *   **(Fine-tuning 紅線)**：使用**學會做英文填空題的 BERT 參數**來初始化模型。
    *   結果顯示，即使輸入的是亂七八糟的字串，**紅線的 Fine-tuning 模型表現仍優於藍線的 Scratch 模型**。
4.  **推論**：BERT 的能力並不完全來自於它看懂了語言（因為輸入是亂七八糟的字串）。其成功可能來自於它提供了一組**比較好的初始化參數**（權重），或者是一個優良的**模型架構**，成為深度模型的序列處理的良好起點。

### 三、 Multi- BERT 與 Zero-shot 學習

1.  **Multi- BERT 訓練**：Multi- BERT 在訓練時使用了 **104 種不同語言**的資料去做填空題。
2.  **Zero-shot**：Multi- BERT 展現出 Zero-shot 的能力，即使**從未看過中文的問答資料**，卻能回答中文問答問題。
3.  **實驗實例**：
    *   將 M-BERT 僅使用**英文 QA 資料**（SQuAD）進行微調（Fine-tuning）。
    *   直接測試在**中文 QA 資料**。
    *   **結果**：Multi- BERT 達到了 **78% 的 F1 分數**，這與 BERT 出現前最頂尖的中文 QA 模型的準確率相當。
4.  **對齊（Alignment）解釋**：一種解釋是，對  Multi- BERT 而言，不同語言之間沒有什麼差異。它在預訓練過程中自動學會將**意義相同**的不同語言詞彙（例如「褲子」與 "Pants"）的嵌入向量**對齊**，使其距離接近。
5.  **資料量的重要性**：研究顯示，Multi- BERT 的 Alignment 能力需要**足夠大的資料量**（例如超過 1000K 個詞彙）才能開啟。在資料量不足時，Alignment 效果很差，但一旦資料量足夠，效果會突然出現。

### 四、 M-BERT 中語言資訊的保留與向量操作

1.  **語言資訊未被抹除**：雖然 M-BERT 會對齊意義相同的詞彙，但它仍然知道輸入的詞彙是哪種語言（例如給它英文句子，它會做英文填空）。這表示**語言的資訊仍隱藏在 M-BERT 內部**。
2.  **語言差異向量**：研究者計算了所有**英文詞彙平均嵌入**減去所有**中文詞彙平均嵌入**，得到一個代表中英語言差異的向量（被稱為「藍色向量」）。
3.  **跨語言轉換**：
    *   輸入一個英文句子（例如 "Nobody is watching"）給 BERT。
    *   將該句子所得到的嵌入向量**加上**這個「藍色語言差異向量」。
    *   讓 BERT 進行填空題。
4.  **結果**：原本讀入的是英文句子，加上藍色向量後，BERT 的輸出變成了**中文句子**（例如："Nobody is watching" 的輸出變成了「無人看管」）。
5.  **結論**：這個實驗證明，透過這種向量操作，BERT 可以在**某種程度上做到 Self-Supervised 的 Token-level Translation**（逐詞翻譯）。

### 【機器學習2021】自監督式學習 (Self-supervised Learning) (四) – GPT的野望大綱


**I. GPT 系列模型的預訓練任務**
A. 預訓練目標：預測下一個 Token (Next Token Prediction)。
B. 訓練方法：基於前面已出現的 tokens 預測下一個 token。
C. 模型架構：Transformer Decoder (僅 Encoder，但拿掉 Encoder-Decoder Attention 部分)。
D. 關鍵限制：模型在預測時會進行 Masking，無法看到後續的詞彙。
E. 形象與能力：以獨角獸為形象，主要能力是連續生成文本。

**II. GPT 的使用方法：In-Context Learning (上下文學習)**
A. 目的：因模型巨大，避免傳統的 Fine-tuning (微調) 耗費資源與時間。
B. 方法類型：Few-shot (給予少量範例)、One-shot (給予一個範例)、Zero-shot (不給範例)。
C. 實施流程：將任務描述和範例直接寫在輸入的 Prompt 中，讓模型生成後續內容。
D. 核心特點：此過程**不涉及模型參數的調整** (沒有 Gradient Descent)，因此被稱為 In-context Learning 。
E. GPT-3 的表現：在 42 個任務上的平均正確率（例如 Few-shot 平均約 50% 幾），表現依賴於任務類型，例如簡單加減法表現較好，邏輯任務表現較差。

**III. Self-Supervised Learning 概念的擴展**
A. 跨領域應用：Self-Supervised Learning 概念不只用於文字 (NLP)，也可用於語音 (Speech) 和影像 (Computer Vision, CV)。
B. 語音領域 (Speech) 的 Self-Supervised Learning 任務：可應用類似 BERT 的 Masking 任務，或類似 GPT 的預測下一個聲音內容 (Next Content Prediction)。

**IV. 語音處理的基準測試 (Benchmark)**
A. 領域現狀：語音領域缺乏像 NLP 領域中 **GLUE** (General Language Understanding Evaluation) 那樣的通用基準資料庫。
B. 解決方案：由講者的實驗室與其他團隊共同開發了**語音版的 GLUE**。
C. 基準名稱：**Superb** (Speech processing Universal PERformance Benchmark)。
D. 任務內容：包含 10 個不同的分類任務，用於檢測 SSL 模組在語音的各個面向的能力，包括：
    1. **內容** (說了什麼)。
    2. **說話者** (誰說的)。
    3. **語氣/風格** (怎麼說的)。
    4. **意圖/背後資訊** (語音背後的含義)。

---

### 一、 GPT 模型的預訓練任務

1.  **GPT 簡介**：GPT 系列模型是頂頂有名的模型。
2.  **訓練任務**：GPT 的核心任務是**預測接下會出現的 Token**。
    *   例如，給定 "Of sentence" 和 "台"，模型應預測下一個是 "灣"。
3.  **架構**：GPT 的模型架構像是一個 **Transformer Decoder**，但在上課時，通常只稱其為 Transformer Encoder/Decoder。
    *   它拿掉了 Decoder 的某些部分（即 **Encoder-Decoder Attention** 部分）。
4.  **因果關係 (Causal Masking)**：在預測時，模型**不能夠**看到接下要出現的詞彙。例如，在預測 "灣" 時，它不能看到 "大" 或 "學"。
5.  **訓練細節**：這是一個**分類問題**，模型輸出一個分佈 (Distribution)，目標是讓這個分佈與正確答案（下一個詞彙）的機率越小越好。
6.  **能力與形象**：GPT 最知名的是其**生成能力**，可以不斷預測下一個 Token 來產生完整的句子。其形象通常是一隻**獨角獸**，因為 GPT 系列最著名的例子是用它寫了一篇關於獨角獸的假新聞。

### 二、 GPT 的應用方式：In-Context Learning

1.  **傳統 BERT Fine-tuning 對比**：BERT 模式是取出 BERT 向量後，接上一個簡單的 Linear Classifier，然後用標註資料進行微調 (Fine-tuning)。
2.  **GPT 採取新策略的原因**：
    *   GPT 模型**太過巨大**（最大的有 175 Billion 參數）。
    *   即使是微調 (Fine-tuning) 也需要花費大量的時間。
    *   論文中想要提出一個比 Fine-tuning 更創新的方法。
3.  **In-Context Learning (上下文學習)**：GPT 使用的方式是**不進行梯度下降 (No Gradient Descent)**，直接在輸入（Prompt）中提供任務資訊。
    *   **Few-shot Learning**：在輸入中給予模型幾個範例，讓模型學習任務模式。
    *   **Zero-shot Learning**：直接給予任務描述，讓 GPT 自己判斷要做什麼。
4.  **應用範例**：若想讓 GPT 做翻譯，可以在輸入中先寫上任務描述 "Translate English to French"，然後提供幾個範例（如 "sea otter" -> "loutre de mer"）。
5.  **效果**：GPT-3 測試了 42 個任務。在模型規模增大（從 0.1B 到 175B 參數）時，平均正確率會提高。
    *   在 Few-shot 模式下，平均正確率約 50% 幾。
    *   有些任務（例如簡單的加減法）可以答對，但與邏輯規律有關的任務表現就非常差。

### 三、 Self-Supervised Learning 的跨領域延伸

1.  **普遍性**：Self-Supervised Learning  概念不只用在 NLP，也可以用在**語音 (Speech)** 和**影像 (Computer Vision)** 等領域。
2.  **語音領域**：
    *   語音也可以訓練類似 **BERT** 的模型：對語音片段進行**遮蓋 (Mask)**，然後讓機器預測被蓋起來的內容。
    *   語音也可以訓練類似 **GPT** 的模型：讓模型預測接下會出現的聲音。

### 四、 語音處理的基準測試 (Superb)

1.  **NLP 基準**：自然語言處理領域有一個著名的基準資料庫 **GLUE**，它包含九個 NLP 任務。
2.  **語音領域缺乏**：語音處理領域目前缺乏類似 GLUE 的技術資料庫，來評估 Self-Supervised Learning  模型的優劣。
3.  **Superb 介紹**：李宏毅的實驗室與其他團隊共同開發了**語音版的 GLUE**，稱為 **Superb** (Speech processing Universal PERformance Benchmark)。
4.  **Superb 的任務**：Superb 包含 10 個不同的任務，旨在全方位檢測 Self-Supervised Learning  模型的能力，因為語音包含豐富的資訊，不只是內容。這些任務涵蓋：
    *   **內容 (Content)**：模型能否識別「你說了什麼」。
    *   **說話者 (Speaker Identity)**：模型能否識別「這句話是誰說的」。
    *   **語氣 (Style)**：模型能否識別「這個人說這句話時的語氣是什麼樣」。
    *   **意圖/背後含義 (Intent)**：模型能否識別「這句話背後到底有什麼樣的意圖」。

[【機器學習2021】01~02 機器學習和深度學習基本概念簡介](https://hackmd.io/@JuitingChen/SyoNXkdslx)
[【機器學習2021】03~08 機器學習任務攻略和最佳化技巧](https://hackmd.io/@JuitingChen/BJ6mXy_slg)
[【機器學習2021】09~11 CNN 和 Self attention](https://hackmd.io/@JuitingChen/r1ahLgUngl)
[【機器學習2021】12~13 Transformer](https://hackmd.io/@JuitingChen/H1tfXy_ige)
[【機器學習2021】14~17 GAN](https://hackmd.io/@JuitingChen/S1adiwvhxg)
[【機器學習2021】18~21 自監督式學習](https://hackmd.io/@JuitingChen/ryQG7J_sgl)
[【機器學習2021】22~23 Auto-encoder](https://hackmd.io/@JuitingChen/r1sLPr92ge)
[【機器學習2021】24~25 Adversarial Attack ](https://hackmd.io/@JuitingChen/HJ6jJIq3ge)
[【機器學習2021】26~28 Explainable ML 和 Domain Adaptation](https://hackmd.io/@JuitingChen/SJZzQkdslg)
[【機器學習2021】29-30 強化學習-1](https://hackmd.io/@JuitingChen/HJYziZR3gx)
[【機器學習2021】31~33 強化學習-2](https://hackmd.io/@JuitingChen/Sy5DoWA3xl)
[【機器學習2021】34~35 機器終身學習](https://hackmd.io/@JuitingChen/BytWmyuilg)
[【機器學習2021】36~37 神經網路壓縮 ](https://hackmd.io/@JuitingChen/Bk7-m1_jlx)
[【機器學習2021】37~40 Meta Learning](https://hackmd.io/@JuitingChen/SkkC6rT2gl)
