---
# System prepended metadata

title: 【機器學習 2022】07 語音與影像上的神奇自監督式學習
tags: [機器學習]

---

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

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


[【機器學習 2022】語音與影像上的神奇自督導式學習 (Self-supervised Learning) 模型](https://youtu.be/lMIN1iKYNmA?si=7M1T3R83rZTvMU4J)

### 【機器學習 2022】語音與影像上的神奇自督導式學習 (Self-supervised Learning) 模型 大綱


一、 文字自監督學習 (Self-supervised Learning) 回顧：以 BERT 為例
二、 語音上的 Self-supervised Learning 應用與成效

    1. 語音版 BERT 概念
    2. 評估基準：SUPERB 任務
三、 影像上的 Self-supervised Learning 應用與成效
四、 Self-supervised Learning 模型訓練的五大類方法

    1. Generative Methods
    2. Predictive Coding
    3. Contrastive Learning
    4. Bootstrapping
    5. Regularization

---

#### 一、 文字自監督學習 (Self-supervised Learning) 回顧

1.  **最知名模型：** 在文字 Self-supervised Learning 應用上，最知名的模型就是無人不知無人不曉的 **BERT**。
2.  **訓練資料：** BERT 的訓練過程**不需要有標註**的文字資料。只需要收集到**大堆的、沒有標註**的文字資料，例如從網路上爬取文章，就可以訓練出 BERT 模型。
3.  **模型功能：** BERT 具體而言，是給它一段文字，它會輸出一串 **representation**，輸入文字中的每一個 token 都有一個對應的 representation。
4.  **下游任務應用（Downstream Tasks）：**
    *   假設要做**情感分析 (Sentiment Analysis)**，一般需要收集標註資料來判斷文章是正面還是負面。
    *   如果今天有 BERT，你的情感分析模型（downstream model）就可以很簡單，它是把 BERT 輸出的這些向量**當作輸入**，然後輸出對應的文字是正面還是負面。
    *   **少量的標註資料**有時候只需要拿來訓練這個 BERT 以外的下游模型就好。
    *   這個下游模型在課堂的例子裡通常只是一個 **linear model**。
    *   當然，除了訓練下游模型以外，有時候也會用這些標註的資料來**微調 (fine-tune) BERT**，讓它可以適應不同的任務。
5.  **評估基準：** 在文字上，我們有 **GLUE** (General Language Understanding Evaluation) 基準，它衡量模型是否能在解**九個自然語言處理任務**上都有好的表現。

#### 二、 語音上的 Self-supervised Learning 應用與成效

把 Self-supervised Learning 用在語音上跟用在文字上的大框架其實**沒有非常不同**。

1.  **語音版 BERT 概念：**
    *   我們也可以有一個「**語音版的 BERT**」。
    *   這個模型是透過**大量沒有標註**的聲音訊號訓練出來的，不需要任何文字標註，也不需要標註是誰講的。
    *   它做的事情跟文字版 BERT 一樣：給它一段聲音訊號，它會把這段聲音訊號變成**一排向量 (representation)**。
    *   **應用於語音辨識 (ASR)：** ASR 模型可以把「語音版 BERT」輸出的結果作為輸入，然後產生語音辨識的結果。
    *   **效益：** 訓練一個好的 ASR 模型通常需要上萬個小時的有標註資料。有了語音版 BERT，很多人挑戰只用 **10 分鐘的資料**就能訓練語音辨識模型。
    *   **微調：** 語音版 BERT 微調**往往不是必要的**，通常固定住語音版 BERT 或是只微調下游模型就能得到不錯的結果。
2.  **評估基準：SUPERB (Speech processing Universal PERformance Benchmark)**
    *   在語音領域，我們有語音版的 GLUE，叫做 **SUPERB**。
    *   SUPERB 至少衡量了 **14 個**與語音相關的不同任務。
    *   這些任務涵蓋了多個面相：
        *   **理解內容：** 語音辨識 (ASR)、喚醒詞偵測 (Keyword Spotting)。
        *   **說話者相關：** 說話者辨識、說話者驗證、說話者分割 (Speaker Diarization)。
        *   **語言學/語義理解：** 情感辨識、語音翻譯（直接從中文語音輸出英文文字）。
        *   **聲音合成：** 語音轉換、語音增強、語音分離。
    *   **驚人結論：** 這些 Self-supervised Learning 模型被證實在各式各樣不同的任務上表現優異，**甚至連微調都不用**，就能直接有好的結果。

#### 三、 影像上的 Self-supervised Learning 應用與成效


1.  **應用領域：** 包括影像分類（Image Classification）、物件偵測 (Object Detection)、語義分割 (Semantic Segmentation)、以及導航 (Navigation)。
2.  **效能表現：**
    *   影像 Self-supervised Learning 模型的效能表現與文字、語音的結論很像。
    *   在許多任務上，Self-supervised Learning 模型的結果**超過了 Supervised Learning 的基準線**。
    *   這個 Supervised Learning 基準線是假設那些原本用來訓練 Self-supervised Learning 的**沒有標註的影像資料，其實是有標註的**（例如假設它們都被 ImageNet 標註了）。
    *   這證明了即使有人費心去標註這些原本未標註的影像資料，結果也不會更好，**這些標註是多餘的**。

#### 四、 Self-supervised Learning 模型訓練的五大類方法

接下來，我們看看要在影像和語音上怎麼訓練出這些 Self-supervised Learning 模型。

#### 1. Generative Methods

這類方法就是把文字上成功的 **BERT 系列**跟 **GPT 系列**拿來語音和影像上用用看。

| 方法類別 | BERT 系列 (Masking) | GPT 系列 (Autoregressive) |
| :--- | :--- | :--- |
| **概念** | 遮蓋聲音訊號的某部分（把值設為零），要求模型還原被遮蓋的部分。 | 給定一段聲音訊號，預測接下來會出現的聲音訊號。 |
| **語音代表模型** | **Mockingjay**。 | **APC** (Autoregressive Predictive Coding)。 |
| **語音特有技巧** | 1. 必須一次性 **Mask 一長串 feature**，避免機器只學到簡單的內插。 2. 可嘗試 **Mask 向量的某些 dimension**（而非時間方向），這會讓機器比較容易學到整個句子的資訊。 | 必須預測**夠遠時間之後**的向量（N 要設大於等於 3），使問題夠難，機器才能學到有用的東西。 |
| **主要限制** | 語音與影像包**含太多資訊**，要求模型完整還原或生成非常複雜的訊號是困難的事情。 |

#### 2. Predictive Coding

因為生成或還原原始訊號太複雜，所以讓機器去預測一些**比較簡單**的東西。

*   **影像上的小遊戲**：
    *   **旋轉預測 (Rotation Prediction)：** 讓機器判斷一張圖片被旋轉了多少角度 (0°, 90°, 180°, 270°)。
    *   **上下文預測 (Context Prediction)：** 給圖片中的兩個小區塊，讓機器判斷第二個區塊相對於第一個區塊的相對方向。
*   **語音上的小遊戲：** 判斷從同一句話切出來的兩段聲音訊號之間，距離有多遠。
*   **挑戰：** 什麼樣的小任務有效沒有標準答案，需要**領域知識 (domain knowledge)** 來設計。
*   **簡化生成目標：** 將原本要生成的複雜 **acoustic feature**（一排向量）透過 clustering 或 quantization，轉成**離散的 Class ID** 。
    *   訓練目標變成：模型還原被 Mask 的部分時，是預測這個離散的 ID。
    *   產生 ID 比產生複雜向量簡單得多。語音上有 **VQ-VAE** 等模型實行此概念。

##### 3. Contrastive Learning

Contrastive Learning的目標是**不產生任何東西**，而是透過定義正面例子和負面例子讓 representation 相似或分離。

*   **基本概念：**
    *   **Positive Examples (正面例子)：** 屬於同類別的圖片，輸出的向量應**越接近越好**。
    *   **Negative Examples (負面例子)：** 屬於不同類別的圖片，輸出的向量應**越遠越好**。
*   **Self-supervised Learning 應用 (SimCLR)：**
    *   在沒有標籤的情況下，Self-supervised Learning 透過**數據增強 (Data Augmentation)** 來定義正面例子與負面例子。
    *   從同一張圖片 Augmentation 出來的不同版本（例如經過 Random Cropping、顏色變化、雜訊等處理），即使長得不一樣，仍被視為 **Positive Pair**。
    *   來自不同圖片的結果則視為 Negative Example。
    *   **關鍵：** Augmentation 的難度非常重要，不能太難（可能導致同類圖片差異過大）。Random Cropping 被認為是最有效的增強手段之一。
*   **對比學習與 BERT 的聯繫：**
    *   BERT 的重建（Masked Token Prediction）其實可以被視為一種對比學習。
    *   在分類問題中，正確的類別（對應的向量）就是 Positive Example，其他的類別就是 Negative Examples。
    *   BERT 要讓輸出的 embedding 跟正確詞彙的 embedding 距離越近越好，跟其他詞彙的 embedding 距離越遠越好。
*   **語音應用 (Wav2vec 2.0 觀點)：**
    *   Wav2vec 2.0 將 BERT 的 Masking 概念與對比學習結合。
    *   它用被 Mask 起來位置的向量，去預測**同一位置的離散 Token**。
    *   目標 Token 是 Positive Example (希望產生機率越大越好)，其他 Token 則是 Negative Examples (希望機率越小越好)。

*   **Contrastive Learning 的主要問題：** 選擇 Negative Example 是一大挑戰。
    *   Negative Example 必須具有**足夠難度**（例如貓的負面例子選狗或老虎，而非天空）。
    *   若刻意選擇困難的負面例子，可能誤將應視為同類的東（如兩隻不同的貓）硬是拉遠，使模型學習過於困難。

#### 4. Bootstrapping

這是為了解決 Contrastive Learning 中選擇 Negative Sample 的難題而發展的方法。

*   **動機：** 如果只用 Positive Example 訓練，模型會發生 **Collapsing** (崩潰)，即不論輸入什麼圖片，模型總是輸出相同的向量（例如 0 向量）。
*   **Bootstrapping 的解決方法（例如 BYOL/SimSiam）：** 避免崩潰需要兩個關鍵機制。
    1.  **非對稱網路結構：** 採用左右兩條路徑，右邊的 Student Encoder 之後要多加一個 **Predictor**，而左邊的 Teacher Encoder 則不需要。
    2.  **梯度停止與參數更新：** 只計算右邊（Student 網路）路徑的梯度。計算完梯度後，將右邊更新後的參數**複製**給左邊 Teacher 網路，或是使用**移動平均 (Moving Average)** 的方式去影響 Teacher 參數。
*   **觀點：** 這可以被視為一種**知識蒸餾 (Knowledge Distillation)**：Student Encoder 從 Teacher Encoder 學習，每次學完後，**學生馬上就變成老師**，然後新的老師繼續教新的學生。
*   **語音應用：** 語音上也有類似的做法，代表模型為 **Data2vec**。

#### 5. Regularization

這是另一種**避開 Negative Sample 選擇**的方法，在只用 Positive Example 訓練的基礎上加入 Regularization 項來強制避免 Collapsing。

*   **Invariance (不變性)：** 只用 Positive Example 訓練，讓正面例子的 representation 越接近越好。
*   **關鍵 Regularization（避免崩潰）：**
    1.  **Variance Invariance：** 強制要求輸出 batch 中，representation 的**每個 dimension 必須有足夠大的 Variance**。這能避免模型總是輸出相同的常數向量。
    2.  **Covariance Invariance：** 要求輸出 representation 矩陣的 Covariance 矩陣，讓它非對角線數值接近零。才能確保了所有維度都能被充分利用。
*   **結論：** 只需要 Invariance 和 Variance 兩個條件，就足以讓模型不會崩潰，只用 Positive Example 也能訓練起來。

---

其他課程

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