---
# System prepended metadata

title: 【機器學習2021】12~13 Transformer
tags: [機器學習]

---

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)
