20250929 筆記,內容可能有錯,請參考來源影片。
[李宏毅機器學習2021影片](https://www.youtube.com/playlist?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J)
今天影片內容
[【機器學習2021】Transformer (上)](https://youtu.be/n9TlOhRjYoc?si=laVhU--mWLrzleSr)
[【機器學習2021】Transformer (下)](https://youtu.be/N6aRv06iv2g?si=0DCTfrD5TSr5yoLH)
### 【機器學習2021】Transformer (上) 大綱
### I. Transformer 模型與 Sequence-to-Sequence (Seq2Seq) 簡介
A. Transformer 的背景與關聯
B. Seq2Seq 模型的定義與特點
C. 與其他模型類型的區別
### II. Sequence-to-Sequence 模型的應用
A. 語音相關任務
1. 語音辨識 (Speech Recognition)
2. 機器翻譯 (Machine Translation)
3. 語音翻譯 (Speech Translation)
4. 語音合成 (Text-to-Speech)
B. 自然語言處理 (NLP) 任務
1. 聊天機器人 (Chatbots)
2. 將 NLP 任務視為問答 (QA) 問題
3. 文法剖析 (Grammar Parsing)
4. 多標籤分類 (Multi-Label Classification)
5. 物件偵測 (Object Detection) (簡單提及)
C. Seq2Seq 作為通用模型的限制
### III. Seq2Seq 模型架構:Encoder-Decoder
A. 模型的起源
B. Transformer 的核心架構
### IV. Transformer Encoder 詳細結構
A. Encoder 的功能
B. Encoder 的構成單元 (Block)
C. 核心設計細節
1. Self-Attention 與 Positional Encoding
2. Residual Connection (殘差連接)
3. Layer Normalization (層歸一化)
D. 架構優化與討論
### I. Transformer 模型與 Sequence-to-Sequence (Seq2Seq) 簡介
* **Transformer 背景與關聯**
* Transformer 與之後會提到的 BERT 有非常強烈的關係。
* **Seq2Seq 模型的定義與特點**
* Transformer 是一種 **Sequence-to-Sequence** 的模型。
* Seq2Seq 模型的特點是:輸入是一個序列 (sequence),輸出也是一個序列 (sequence)。
* **關鍵特點:** 由機器自己決定輸出的長度。
* **與其他模型類型的區別**
* 在處理輸入序列的情況中,有幾種可能性:
* 輸入和輸出的長度一樣(如作業二)。
* 輸出只有一個東西(如作業四)。
* 輸入和輸出皆為序列,但輸出的長度由機器自己決定(即 Seq2Seq,用於作業五)。
### II. Sequence-to-Sequence 模型的應用
#### A. 語音相關任務
1. **語音辨識 (Speech Recognition)**
* 輸入是聲音訊號,實質上是一串 Feature。
* 輸出是聲音訊號所對應的文字(例如中文的方塊字)。
* 輸入長度 (T) 與輸出長度 (N) 雖然有關係,但沒有絕對的關係,長度由機器自行決定。
2. **機器翻譯 (Machine Translation)**
* 輸入是一個語言的句子(長度 $n$),輸出是另一個語言的句子(長度 $n'$)。
* $n$ 和 $n'$ 之間的關係需由機器自己決定(例如「機器學習」是四個字,輸出「machine learning」是兩個英文詞彙)。
3. **語音翻譯 (Speech Translation)**
* 輸入是聲音訊號(例如英文),直接輸出翻譯後的另一種語言的文字(例如中文,如輸入 "machine learning" 輸出「機器學習」)。
* **為何需要語音翻譯:** 世界上有超過 7000 種語言,其中超過半數沒有文字。對於這些沒有文字的語言,無法直接進行語音辨識。語音翻譯可以直接將其翻譯成有辦法閱讀的文字。
* **臺語翻譯範例:** 雖然臺語有文字,但普及度不高,一般人難以看懂。可以訓練模型,輸入臺語聲音訊號,直接輸出同意識的中文句子。
* **訓練資料:** 可利用 YouTube 上的鄉土劇(臺語語音,中文字幕),收集臺語聲音訊號與中文字之間的對應關係。
* **訓練方法:** 採用「**硬 train 一發**」(不進行過多考慮,直接將資料倒進去訓練模型)。
4. **語音合成 (Text-to-Speech)**
* 與語音辨識相反,輸入是文字,輸出是聲音訊號。
* 在臺語語音合成的例子中,模型會先將中文文字轉成臺語音標(類似臺語的 KK 標),再將音標轉成聲音訊號。音標轉聲音訊號這段就是一個 sequence model,例如 Tacotron (TLE model)。
#### B. 自然語言處理 (NLP) 任務
1. **聊天機器人 (Chatbots)**
* 輸入是文字序列(使用者說的話),輸出是文字序列(機器的回應)。
* 訓練方式:收集大量對話資料(如電視劇、電影台詞),將一個人的話作為輸入,另一個人的話作為輸出。
2. **將 NLP 任務視為問答 (QA) 問題**
* 許多 NLP 任務都可以被視為 Question Answering (QA)。
* QA 定義:給機器讀一段文字,問一個問題,期待得到正確答案。
* **翻譯轉 QA:** 給英文句子(文章),問這個句子的德文翻譯(問題),輸出德文(答案)。
* **摘要轉 QA:** 給一篇長文章(文章),問這段文字的摘要是什麼(問題),輸出摘要。
* **情感分析 (Sentiment Analysis) 轉 QA:** 給判斷正負面的文章(文章),問這個句子是正面還是負面的(問題),輸出答案。
* **Seq2Seq 解決 QA:** 將問題與文章接在一起作為輸入 sequence,輸出就是答案 sequence。
3. **文法剖析 (Grammar Parsing)**
* 輸入是一段文字(例如 "deep learning is very powerful"),輸出是一個**文法剖析樹** (parse tree)。
* 雖然輸出看起來是樹狀結構,但可以硬是將其看作一個序列。
* 方法:將樹狀結構轉成一個帶有括號的 sequence,然後用 Seq2Seq 模型訓練讀取句子並輸出此序列。
* 此概念來自論文《Grammar as a Foreign Language》(2014年底),該文將文法剖析當作翻譯問題來解決。
4. **多標籤分類 (Multi-Label Classification)**
* 與多類別分類 (Multi-Class Classification) 不同,多標籤分類允許同一個東西屬於多個類別。
* 每篇文章對應的類別數目不同,因此無法用傳統分類器(例如直接取分數最高的前三名)解決。
* **Seq2Seq 解決方法:** 輸入一篇文章,輸出就是 class 序列,由機器自己決定要輸出幾個 class(即輸出的序列長度)。
5. **物件偵測 (Object Detection)**
* 物件偵測(在圖片中框出物件並標示類別)看起來與 Seq2Seq 無關,但也可以用 Seq2Seq硬解。
#### C. Seq2Seq 作為通用模型的限制
* 雖然 Seq2Seq 模型很強大而且有用,但如果為特定任務特製模型,往往可以得到更好的結果。
* 將所有問題都用 Seq2Seq 解決,就像所有事情都用瑞士刀一樣,雖然可用,但不見得是最好用的工具。
* **特製模型範例:** Google Pixel 4 的語音辨識使用的是 End-to-End 神經網路,但它採用的是 **RNN Transducer** 模型,而不是 Seq2Seq,因為該模型是針對語音的某些特性所設計,表現可能更好。
### III. Seq2Seq 模型架構:Encoder-Decoder
* **一般 Seq2Seq 模型結構**
* 通常分為兩塊:**Encoder** 和 **Decoder**。
* Encoder 負責處理輸入 sequence。
* Decoder 負責決定要輸出什麼樣的 sequence。
* **Seq2Seq 的起源**
* Seq2Seq 模型的起源非常早,最早在 2014 年 9 月就有用於翻譯的論文發佈。
* **Transformer 架構**
* 現今提到 Seq2Seq 模型,大家第一個想到的是 **Transformer**。
* Transformer 採用 Encoder-Decoder 架構,內部包含許多元件。
### IV. Transformer Encoder 詳細結構
#### A. Encoder 的功能
* Encoder 接受一排向量作為輸入,輸出另外一排向量。
* 輸入和輸出的向量序列長度相同。
#### B. Encoder 的構成單元 (Block)
* Encoder 內部由許多個 Block 組成,每個 Block 都是輸入一排向量,輸出另一排向量。
* 這些 Block 會重複堆疊,最終輸出最終的 vector sequence。
* 每個 Block 並不是神經網路的一層 (layer),而是包含好幾個 layer 的運算。
* **Block 內部的基本運作(簡化)**:
1. 輸入向量序列。
2. 執行 **Self-Attention**,考慮整個 sequence 的資訊。
3. 輸出向量序列。
4. 將輸出丟到 **Fully Connected Feedforward Network**。
5. 得到 Block 的最終輸出向量。
#### C. 核心設計細節(原始論文的複雜架構)
1. **Positional Encoding (位置編碼)**
* 在 Self-Attention 之前,需要加上 positional information (位置的資訊)。
* 單純使用 Attention 結構本身缺乏位置資訊。
2. **Self-Attention Block (Multi-Head Attention)**
* 使用 Multi-Head Attention (mad attention)。
* **殘差連接 (Residual Connection, real connection):** 將 Self-Attention 輸出的向量,**加上**它的原始輸入向量,得到新的輸出(A+B)。這是一種被廣泛使用的神經網路設計架構。
* **Layer Normalization:**
* Layer Normalization 會在 Residual Connection 之後進行 (Add & Norm)。
* Layer Normalization 不需考慮 Batch 資訊。
* Layer Normalization 的計算方式:對**同一個向量**、**同一個範例**裡面的**不同維度**去計算平均 (mean) 和標準差 (standard deviation)。
* **步驟:** (輸入向量的每個維度 - mean) / standard deviation = Normalization 的輸出。
3. **Feedforward Block**
* 這個 Block 之後也會採用 Residual 架構。
* 將 Fully Connected Network 的輸入與輸出加起來。
* 在 Residual 之後,再做**一次** Layer Normalization。
* **BERT 關係:** BERT 實質上就是 Transformer 的 Encoder。
#### D. 架構優化與討論
* 原始 Transformer 論文的設計不一定是最佳的。
* 有研究質疑 Layer Normalization 的位置:原始架構是先做 Residual (相加) 再做 Normalization。
* 文獻《Unlayer normalization in the transform architecture》提出將 Normalization 順序更換(將 Normalization 放在 Block 較前端),發現結果會更好。
* 也有研究探討 Layer Normalization 是否比 Batch Normalization 更適合 Transformer,並提出 Power Normalization (p refinization transformer) 作為替代方案。
### 【機器學習2021】Transformer (下) 大綱
### I. Transformer Decoder 簡介與運作模式
A. Decoder 的目標:產生輸出序列
B. Auto-Regressive Decoder
1. 運作流程:Start Token (BOS) 與詞彙表
2. 輸出機制:向量、Softmax 與 Greedy Decoding
3. 關鍵特點:使用自身的輸出作為下一時間點的輸入
4. 序列終止:End of Sentence (EOS) 符號
### II. Transformer Decoder 架構細節
A. 結構比較:與 Encoder 的相似與差異
B. **Masked Self-Attention**
1. 功能與必要性:限制對右側(未來)資訊的參考
### III. Non-Auto-Regressive (NAT) Decoder
A. NAT 模型的概念與優點
1. 平行化與速度優勢
B. 輸出長度的處理方式
C. 效能與研究趨勢
### IV. Encoder 與 Decoder 的互動:Cross-Attention
A. Cross-Attention 的作用:連接 Encoder 與 Decoder 的橋樑
B. 運作機制:Q、K、V 的來源
C. 應用範例:語音辨識中的 Attention 效果展示
D. 結構討論:Cross-Attention 的連接方式
### V. Seq2Seq 模型訓練 (Training)
A. 訓練資料準備:聲音訊號與對應的文字
B. 損失函數與目標:Cross Entropy
C. **Teacher Forcing** 技巧
1. 定義:訓練時使用正確答案作為 Decoder 輸入
### VI. 訓練與解碼的進階技巧與挑戰
A. 挑戰:訓練/測試不一致 (Exposure Bias)
B. 解決方法:Schedule Sampling
C. 訓練/評估指標不一致:Cross Entropy vs. BLEU Score
D. 技巧 1:Copy Mechanism
E. 技巧 2:**Guided Attention** (處理漏字或亂序問題)
F. 技巧 3:Decoding Strategies
1. **Greedy Decoding**
2. **Beam Search**
3. 隨機性的應用與重要性
### I. Transformer Decoder 簡介與運作模式
* **Decoder 的目標**:Decoder 負責產生輸出序列。
* **Decoder 的類型**:Decoder 其實有兩種。本次將花較多時間介紹常見的 **Auto-Regressive** Decoder 。
* **Auto-Regressive 運作流程(以語音辨識為例)**:
1. **Encoder 處理輸入**:將輸入聲音訊號(Sequence)輸入給 Encoder,Encoder 輸出另一排向量序列(sequence)。
2. **Start Token (BOS)**:首先必須給 Decoder 一個特殊的符號,代表**開始 (begin)**。在教材影片中,該符號的縮寫是 BOS (Begin of Sentence)。這個符號是一個特殊的 Token。
3. **Decoder 輸出向量**:Decoder 讀入 BOS 符號後,會吐出一個向量。
4. **Vocabulary Size**:這個輸出向量的長度與 **Vocabulary Size** 相同。詞彙表大小取決於希望 Decoder 輸出哪些單位的數量,例如中文方塊字的數目(常用約 2,000 至 3,000 個)。英文則可能選擇輸出詞彙、字母或字根 (sub-words) 作為單位。
5. **Softmax 與 Distribution**:在產生這個向量之前,通常會跑一次 **Softmax**,使得向量內所有數值加總為 1(形成一個機率分佈)。
6. **Greedy Decoding**:這個向量會給每個字一個分數,**分數最高的那個中文字**就是 Decoder 的最終輸出(例如,如果「機」的分數最高,就輸出「機」)。這種每次都選擇分數最高 Token 的做法稱為 **Greedy Decoding**。
7. **Auto-Regressive**:將這個輸出的字(例如「機」)當作 **Decoder 新的 Input**。Decoder 會將自己的輸出作為接下來的輸入,並反覆持續這個過程
(例如:先看見 [Begin],輸出「機」;再看見 [Begin] 和「機」,輸出「器」;以此類推)。
* **Error Propagation**:由於 Decoder 看到的是自己前一個時間點的輸出,如果辨識錯誤(例如將「機器」的「器」錯辨成「天氣」的「氣」),接下來的 Decoder 就會看到錯誤的輸入,這可能導致**一步錯、步步錯**的問題。
* **Stopping Condition**:Decoder 必須自己決定輸出的序列長度。為了讓 process 停下來,必須準備一個特殊的符號,稱為 **(End of Sentence, EOS)** 符號。當 Decoder 輸出這個 EOS 符號時,表示語音辨識的結果已經結束,整個運作過程就停止了。
### II. Transformer Decoder 架構細節
* **結構比較**:Transformer Decoder 的結構看起來比 Encoder 還稍微複雜一點。但如果將 Decoder 中間連接 Encoder 的區塊(Cross-Attention)蓋起來,Encoder 與 Decoder 其實沒有非常大的差別(都有 Attention Block、Add & Norm、Feedforward Block)。
* **Masked Self-Attention**:Decoder 的 Multi-Head Attention Block 上方還加了一個 **Mask**。
* **Encoder 的 Self-Attention**:每個輸出 $B_i$ 都要看過**完整**的輸入 $A_1$ 到 $A_4$ 才能做決定。
* **Decoder 的 Masked Self-Attention**:這是因為 Auto-Regressive Decoder 的輸出是**一個一個產生的**。當產生 $B_i$ 時,你**不能**考慮 $A_{i+1}, A_{i+2}, \dots$ 的資訊。因此,當計算 $B_2$ 時,只能考慮 $A_1$ 和 $A_2$ 的資訊,不能考慮 $A_3$ 和 $A_4$。
* **運作方式**:當要計算 Attention 時,它只會拿當前位置 $Q$ 去跟它左邊所有位置的 $K$ 和 $V$ 計算 Attention,不能看右邊的部分。
### III. Non-Auto-Regressive (NAT) Decoder
* **NAT 概念**:與 Auto-Regressive 模型不同,NAT (Non-Auto-Regressive Model) **不是**一次產生一個字,而是**一次把整個句子都產生出來**。
* **運作方式**:它可能吃一整排的 [Begin] Token,讓它一次產生一排字,只需一個步驟就能完成句子生成。
* **輸出長度處理**:由於不知道輸出長度是多少,有兩種做法:
1. **另外訓練一個 Classifier**:這個 Classifier 吃 Encoder 的輸入/輸出,輸出一個數字(代表應輸出的長度,例如 4),然後 Decoder 就會吃四個 [Begin] Token。
2. **固定長度**:假設一個最大長度(例如 300 個字),給它 300 個 [Begin] Token,讓它輸出 300 個字,然後再看哪個地方輸出了「斷」符號,右邊的輸出就當作沒輸出。
* **NAT 的優點**:
1. **平行化 (Parallelization)**:AR Decoder 產生 100 個字的句子需要 100 次 Decoder 步驟。NAT Decoder 不管長度如何,都是**一個步驟**產生完整句子,因此速度比 Auto-Regressive Decoder 快。
2. **長度控制**:NAT 較能控制輸出長度。例如在語音合成 (TTS) 中,可以調整預測的長度,讓系統講話速度變快或變慢。
* **NAT 的挑戰**:
* NAT Decoder 的效能往往不如 Auto-Regressive Decoder。要讓 NAT 達到與 Auto-Regressive 接近的效能,需要非常多的技巧。
* NAT 存在 **Modality** 的問題。
### IV. Encoder 與 Decoder 的互動:Cross-Attention
* **Cross-Attention**:這是連接 Encoder 跟 Decoder 之間的**橋樑**。
* **輸入組成**:Cross-Attention 模組有三個輸入箭頭:兩個來自 Encoder (提供 K, V),一個來自 Decoder (提供 Q)。
* **運作機制**:
1. **Decoder 產生 Q**:Decoder 處理輸入(例如 [Begin] 或「機」)後,會將其向量經過轉換,得到一個 **Query (Q)**。
2. **Encoder 產生 K, V**:Encoder 的輸出 $A_1, A_2, A_3$ 也會轉換成 Key (K) 和 Value (V)。
3. **計算 Attention**:將 Q 跟 $K_1, K_2, K_3$ 計算 Attention 分數 $\alpha_1, \alpha_2, \alpha_3$。
4. **加權求和**:將 $\alpha_i$ 乘上對應的 $V_i$ 並加總,得到一個向量 $v$,此 $v$ 包含了從 Encoder 輸出的序列中提取出的資訊。
5. **後續處理**:這個 $v$ 隨後會丟到 Fully Connected Feedforward Network 進行處理。
* **總結**:Decoder 藉由產生 Q,從 Encoder 抽取資訊 (V) 出來。
* **實際範例**:早期的 Seq2Seq 模型(例如 Listen, Attend and Spell, 2016 年)就已經有 Cross-Attention 機制。該機制展示了在產生一個字(例如 H)時,Decoder 會專注於 Encoder 輸出中**對應 H 聲音訊號**的區域,Attention 分數高的區域會從左上到右下移動,符合聲音訊號由左向右產生的機制。
* **層級連接討論**:在原始論文的實作中,Decoder 不論哪一層,都是拿 **Encoder 最後一層的輸出**來進行 Cross-Attention。但研究者可以嘗試不同的連接方式。
### V. Seq2Seq 模型訓練 (Training)
* **訓練目標**:讓 Transformer 學到聽到一段聲音訊號(例如「機器學習」),其輸出就是對應的四個中文字。
* **損失函數 (Loss Function)**:
1. 正確答案(例如「機」)被表示成一個 **One-Hot Vector**。
2. Decoder 的輸出是一個機率分佈。
3. 我們希望這個機率分佈跟 One-Hot Vector 越接近越好,因此計算兩者之間的 **Cross Entropy**,並希望其值越小越好。
4. **訓練本質**:每產生一個中文字,其實就是做了一次分類(例如 4000 個類別的分類問題)。
5. **總損失**:在訓練時,所有輸出(例如「機、器、學、習、斷」共五個輸出)都會與其對應的正確 One-Hot Vector 計算 Cross Entropy,並將其總和最小化。
* **Teacher Forcing**:
* **定義**:在訓練時,**我們將正確答案當作 Decoder 的輸入**。例如,我們會告訴 Decoder:在有 [Begin] 和「機」的情況下,你就要輸出「器」。
* **問題**:訓練時 Decoder 偷看到正確答案,但在測試時,卻沒有正確答案可以給 Decoder 看,這造成了訓練與測試之間的不一致。
### VI. 訓練與解碼的進階技巧與挑戰
#### A. Mismatch 與 Exposure Bias
* **Exposure Bias**:指訓練時 Decoder 永遠只看過正確的 Token,一旦測試時產生一個錯誤的 Token,就可能一步錯步步錯。
* **Schedule Sampling**:為了解決這個問題,一種直覺的做法是給 Decoder 的輸入**加一些錯誤的東西**。Schedule Sampling 就是一種方法,它會偶爾給 Decoder 看錯的答案,讓它學得更好。
#### B. Decoding 策略
* **Greedy Decoding**:每次都選擇分數最高的 Token 作為輸出。
* **Beam Search**:它是一種比 Greedy Decoding 更有效率的方法,用於尋找整體機率較高(但非完全精準)的路徑。它允許在局部步驟中選擇分數較低的選項(例如 $A=0.6, B=0.4$ 時,仍選擇 $B$),以避免錯過後續潛在更好的序列。
* **Beam Search 的限制**:有時 Beam Search 沒有用。例如在需要發揮**創造力**的任務(如故事補完 Sentence Completion),使用 Beam Search 會導致機器不斷陷入**鬼打牆**、講重複的話或無窮迴圈。
* **隨機性的重要性**:對於**非單一答案**或需要創造力的任務(如語音合成/TTS、句子補完),**在 Decoder 中加入隨機性** 反而會得到比較好的結果。例如,在 TTS 測試時需要加入雜訊,聲音品質才會好,就像英文諺語 Accept that nothing is perferct. True beauty lies in the cracks of imperfection . 有時候美是存在有一點缺陷。
#### C. 其他訓練技巧
* **Copy Mechanism**:對於某些任務(如聊天機器人、摘要),機器不需要自己創造詞彙,而是需要直接從輸入的句子中**複製**一些詞彙出來。具備複製能力的模型,例如 Pointer Network 或 Copying Network,可以解決這類問題。
* **Guided Attention**:
* **問題**:在語音辨識或語音合成 (TTS) 任務中,機器可能出現漏字或 Attention 顛三倒四的低級錯誤。
* **解決方法**:Guided Attention 目的在於**強迫 Attention 過程有固定的模式**,例如要求機器學到 Attention 應該由左向右移動 (Monotonic Attention 或 Location Attention),以確保輸入的每一個元素都被完整看到。
* **訓練與評估指標 Mismatch**:訓練時最小化 Cross Entropy,但評估標準通常是 **BLEU score**。兩者並不直接相關。
* **優化 BLEU 的困難**:BLEU score 本身是**不可微分的 (non-differentiable)**。
* **解決方向**:遇到無法用優化方法解決的 Loss Function,可以將其當作 **Reinforcement Learning (強化學習, RL)** 的 **Reward**,將 Decoder 當作 Agent 來處理。
[【機器學習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)