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)