20251010 筆記,內容可能有錯,請參考來源影片。
[李宏毅機器學習2022影片](https://www.youtube.com/playlist?list=PLJV_el3uVTsPM2mM-OQzJXziCGJa8nJL8)
今天影片內容
[【機器學習2022】開學囉~ 又要週更了~](https://youtu.be/7XZR0-4uS5s?si=bOnuc4M4bLd62KRp)
[【機器學習 2022】再探寶可夢、數碼寶貝分類器 — 淺談機器學習原理](https://youtu.be/_j9MVVcvyZI?si=XWd6-rEjGdtl0qKC)
[【機器學習 2022】為什麼用了驗證集 (validation set) 結果卻還是過擬合(overfitting)了呢?](https://youtu.be/xQXh3fSvD1A?si=ZilXlHjzvZg3ANhe)
[【機器學習 2022】魚與熊掌可以兼得的深度學習](https://youtu.be/yXd2D5J0QDU?si=DJZQr3wxnraHt_VN)
### 【機器學習2022】開學囉~ 又要週更了~ 大綱
**I. 課程安排與學習步調**
**II. 機器學習與深度學習核心概念**
A. 機器學習的定義:尋找函式
B. 深度學習與類神經網路
C. 函式的輸入與輸出類型及任務
D. 前六講作業範例
**III. 主要學習種類**
A. 監督式學習 (Supervised Learning)
B. 自我監督式學習 (Self-Supervised Learning) 與基礎模型 (Foundation Model)
C. 生成對抗網路 (Generative Adversarial Networks, GAN)
D. 強化學習 (Reinforcement Learning, RL)
**IV. 進階課題 (Advanced Topics)**
A. 異常檢測 (Anomaly Detection)
B. 可解釋性 AI (Explainable AI)
C. 模型攻擊與防禦 (Model Attack/Defense)
D. 領域適應 (Domain Adaptation)
E. 模型壓縮 (Model Compression)
F. 機器終身學習 (Lifelong Learning)
G. 元學習 (Meta Learning)
---
### I. 課程安排與學習步調
本課程總共有 **15 講**。課程錄影目前都已放在課程網頁上,學習可以立即開始,學生可以自行決定學習步調,也可以花一個週末把所有課程看完。
每講都有一個對應的作業。上課時間除了助教講解作業之外,今年還會講述一些**與作業無關的新內容**,但學生可以自行決定是否要來聽講。
### II. 機器學習與深度學習核心概念
#### A. 機器學習的定義:尋找函式
機器學習 (Machine Learning, ML) **具體而言就是叫機器幫我們找到一個函式**。
這個函式通常是**人類寫不出來的複雜函式**。
* **舉例:**
* **語音辨識:** 函式的輸入是**聲音訊號**,輸出是**對應的文字**。
* **影像辨識:** 函式的輸入是**一張圖片**,輸出是**圖片裡的內容**。
* **圍棋 (如 AlphaGo):** 函式的輸入是**棋盤上黑子跟白子的位置**,輸出是**下一部要落子的位置**。
#### B. 深度學習與類神經網路
本課程會特別著重在機器學習中的一個關鍵技術,稱為**深度學習 (Deep Learning)**。 當談論深度學習時,意指機器要找到的函式是用**類神經網路**來表示的。
#### C. 函式的輸入與輸出類型及任務
* **輸入類型:**
* **向量 (Vector)**
* **矩陣 (Matrix):** 例如在做影像辨識時,圖片通常用矩陣表示。
* **序列 (Sequence):** 例如語音辨識、翻譯,輸入是一段聲音訊號、一句話或一段文字。
* **輸出類型及對應任務:**
* **數值 (Value):** 這種任務稱為**迴歸 (Regression)**。
* **類別 (Category):** 機器從提供的選項中選擇一個,稱為**分類 (Classification)**。
* **更複雜的輸出:** 例如讓機器寫一段話、寫一篇文章,甚至**畫圖**。
#### D. 前六講作業範例
* **第 1 個作業:** COVID-19 確診率的預測。輸入是**向量**,輸出是**數值** (Regression)。
* **第 2 個作業:** Phoneme (音素) 分類。輸入是**向量**,輸出是**類別** (Classification)。
* **第 3 個作業:** 影像辨識。輸入是**圖片**(向量),輸出是**類別**。
* **第 4 個作業:** 說話者辨識 (Speaker Verification/Diarization)。輸入是**序列**(一段聲音),輸出是**類別**。
* **第 5 個作業:** 機器翻譯。輸入是一個**序列**(如中文),輸出是另一個**序列**(如英文)。
* **第 6 個作業:** 動漫人物人臉的生成。
### III. 主要學習種類
#### A. 監督式學習 (Supervised Learning)
這是第 1 到第 5 個作業採用的方法。
* **執行方式:** 必須收集大量訓練資料,且每筆資料都需要有**標記 (label)**。
* **範例:** 訓練寶可夢與數碼寶貝分類器。需收集動物並標記它是寶可夢還是數碼寶貝。
* **問題:** 標記資料是**非常耗費人工**的。為了每個新任務都收集足夠標記資料非常麻煩。
#### B. 自我監督式學習 (Self-Supervised Learning) 與基礎模型 (Foundation Model)
* **動機:** 解決監督式學習中標記資料不足且耗時的問題。
* **概念:** 模型在訓練新任務之前,先透過**預訓練 (pre-training)** 練成一些「基本功」。
* **基本功訓練:** 針對影像辨識,預訓練不需任何標註,只需要網路上**大量未標註的影像資料**。機器會學會一些基本任務,例如分辨左右反轉或變色的圖片是否為同一物體。
* **應用:** 一旦練好基本功,就可以在下游任務 (downstream tasks) 上取得好結果,例如分類寶可夢/數碼寶貝或蘋果/橘子。
* **基礎模型 (Foundation Model):** 預訓練模型被稱為基礎模型。擁有好的預訓練模型,就像擁有好的作業系統(如 Android 或 iOS),能處理困難部分,讓開發新任務變得簡單。
* **BERT 範例:** **BERT** 是最知名的 Foundation Model 之一。BERT 在大眾印象中是龐大的怪物,因為它有 **3.4 億個參數**。
#### C. 生成對抗網路 (Generative Adversarial Networks, GAN)
* **用途:** 允許在**沒有成對** $x$ 和 $y$ 關聯資料的情況下,讓機器自動找出它們之間的關聯。
* **範例:** 語音辨識。傳統上需收集聲音訊號並標註對應的文字。使用 GANs 技術,只需讓機器**聽大量聲音訊號,並閱讀大量文字**(不需要來自相同來源),機器就有辦法自動學會語音辨識。
#### D. 強化學習 (Reinforcement Learning, RL)
* **適用情境:** 當**不知道如何標註資料**,但**可以判斷好壞**時使用。
* **範例:** 訓練機器下圍棋。人類不知道看到某盤式時,最佳的落子位置在哪(無法標註),但知道下贏了是好、輸了是不好(可定義成功)。
### IV. 進階課題 (Advanced Topics)
#### A. 異常檢測 (Anomaly Detection) (第8講)
目的是讓機器具備**回答「我不知道」的能力**。例如,如果分類器只訓練過寶可夢和數碼寶貝,當它看到一隻真正的暴龍時,應該能夠識別出這是一個異常,而不是被迫回答它是寶可夢或數碼寶貝之一。
#### B. 可解釋性 AI (Explainable AI) (第9講)
要求模型不只是回答正確答案,還要**告訴我們為什麼**。
* **可解釋性 AI 的重要性:** 避免模型學到錯誤的或虛假的關聯性。
* **實例:** 在寶可夢/數碼寶貝分類器實驗中,模型達到了 98.4% 的高正確率,但檢查後發現,模型是根據圖片檔案格式(寶可夢是 PNG 檔,數碼寶貝是 JPG 檔,導致背景不同)進行分類,**機器實際上什麼都沒學到**。
#### C. 模型攻擊 (Model Attack/Defense) (第10課)
即使影像辨識系統號稱與人類相當,但仍存在弱點。**攻擊方式:** 在貓的圖片中加入**人眼看不到的微小雜訊**,機器可能會以高信心地將其誤判為海星,會探討攻擊技術和防禦的可能性。
#### D. 領域適應 (Domain Adaptation) (第11講)
處理訓練資料與測試資料**分佈不相似 (distribution mismatch)** 的情況。例如,模型用黑白手寫數字訓練,但用彩色數字測試時,正確率會從 99.5% **暴跌至 57.5%**。
#### E. 模型壓縮 (Model Compression) (第13課)
由於模型(如 BERT)非常巨大,在運算資源有限時(如手機或智慧手錶)難以運行,模型壓縮可以讓模型變小,減少計算量和記憶體儲存空間。
#### F. 終身學習 (Lifelong Learning) (第14課)
探討邁向「天網」的挑戰,即為何機器無法不斷學習新技術。
#### G. 元學習 (Meta Learning) (第15課)
**學習如何學習 (Learn to Learn)**。
* **核心:** 機器從大量任務中**自己發明新的學習演算法**,不再使用人設計的演算法。
* **與小樣本學習 (Few-shot Learning) 的關係:** Meta Learning 與 Few-shot Learning (用少量標註資料學習) 非常相關。由於人設計的演算法無法讓機器只看一兩個範例就學會,因此需要 Meta Learning 來發明新演算法,實現小樣本學習。
### 【機器學習 2022】再探寶可夢、數碼寶貝分類器 — 淺談機器學習原理 大綱
**I. 機器學習基礎與過度擬合 (Overfitting) 的理論探討**
A. 機器學習三步驟回顧
B. 參數數量與過度擬合的關係
**II. 寶可夢與數碼寶貝分類器案例研究**
A. 資料觀察與函式 (Function) 定義
B. 模型複雜度與參數空間 ($\mathcal{H}$)
C. 損失函式 (Loss Function) 定義與誤差率
**III. 理想 (Ideal) 與現實 (Reality) 的差距分析**
A. 理想狀態 ($H^o$ 與 $\mathcal{D}^o$)
B. 現實狀態 ($H^{train}$ 與 $\mathcal{D}^{train}$) 與隨機取樣的影響
C. 數學邊界:壞訓練資料的出現機率
**IV. 機器學習的兩難困境 (The Dilemma)**
A. 模型複雜度 (Capacity) 對結果的影響
B. 深度學習 (Deep Learning) 如何克服兩難
---
### I. 機器學習基礎與過度擬合 (Overfitting) 的理論探討
#### A. 機器學習三步驟回顧
機器學習的目標是**找到一個函式**。這個過程包含三個步驟:
1. **定義一個有未知參數的函式** (function)。
2. **決定損失函式** (loss function, $\mathcal{L}$)。
3. **執行最佳化** (optimization),找到能讓 $\mathcal{L}$ 最小化的參數。
#### B. 參數數量與過度擬合的關係
為什麼參數越多,越容易發生**過度擬合 (overfitting)**。
過度擬合意味著:在訓練資料上觀察到的損失(L)**與**實際測試時觀察到的損失(L ) 之間的差距會變大。
### II. 寶可夢與數碼寶貝分類器案例研究
#### A. 資料觀察與函式定義
* **任務困難點:** 寶可夢(Pokémon)與數碼寶貝(Digimon)兩群生物長相非常相似(例如,都有類似暴龍的生物,像是 小火龍/亞古獸)。
* **特徵觀察:** 兩者在**畫風**上有顯著差異。數碼寶貝多為**人型**,線條較**複雜**。寶可夢則走**圓潤**的兒童路線,線條較**簡單**。
* **函式假設:** 透過**邊線偵測 (Edge Detection)** 來量化線條的複雜程度。複雜度以**白色像素點的數量**表示。
* 觀察結果:數碼寶貝的白色點平均而言比寶可夢多。
* **分類函式 ($f_H$):** 定義一個函式 $f$,輸入一張圖片,計算其線條複雜度。如果複雜度**超過某個閾值 ($H$)**,則判斷為數碼寶貝;反之則為寶可夢。
* **未知參數:** 閾值 $H$。
#### B. 模型複雜度與參數空間 ($\mathcal{H}$)
* **參數集合 ($\mathcal{H}$):** 假設線條複雜度範圍為 1 到 10,000,則 $H$ 的所有可能整數值組成了集合 $\mathcal{H}$。
* **模型複雜度:** $\mathcal{H}$ 的絕對值 $|\mathcal{H}|$(即可能選擇的函數數量)稱為**模型複雜度**。模型複雜度越高,可選擇的函數越多。
#### C. 損失函式 (Loss Function) 定義與誤差率
* **訓練資料 ($\mathcal{D}$):** 包含成對的 (圖像 $x$, 正確標籤 $y$)。
* **單筆損失 ($l$):** 如果函式 $f_H$ 的輸出與正確答案 $y$ **不一致**,則 $l$ 為 1;**一致**則為 0。
* **總體損失 ($\mathcal{L}$):** $\mathcal{L}$ 是所有單筆損失的平均值,實質上就是**錯誤率 (error rate)**。雖然錯誤率不可微,但在此處比交叉熵 (cross entropy) 更為直觀,且不影響後續的討論。
### III. 理想 (Ideal) 與現實 (Reality) 的差距分析
#### A. 理想狀態 ($H^o$ 與 $\mathcal{D}^o$)
* **理想資料集 ($\mathcal{D}^o$):** 假設可以收集到**全宇宙所有**寶可夢和數碼寶貝的資料。
* **最佳參數 ($H^o$):** 能夠在 $\mathcal{D}^o$ 上將損失 $\mathcal{L}$ 降到最低的參數 $H$。這是**最理想的狀態**。
* **模擬結果:** 假設 $\mathcal{D}^o$ 包含 819 隻寶可夢和 971 隻數碼寶貝。計算得出 $H^o = 4824$,理想錯誤率 $\mathcal{L}(H^o, \mathcal{D}^o) = 0.28$。
#### B. 現實狀態 ($H^{train}$ 與 $\mathcal{D}^{train}$) 與隨機取樣的影響
* **訓練資料集 ($\mathcal{D}^{train}$):** 現實中我們只能從 $\mathcal{D}^o$ 中**取樣**出部分資料,稱為 $\mathcal{D}^{train}$。
* **現實參數 ($H^{train}$):** 在 $\mathcal{D}^{train}$ 上將損失降到最低的參數 $H$。
* **目標:** 期望現實結果($H^{train}$ 在 $\mathcal{D}^o$ 上的表現)與理想結果($H^o$ 在 $\mathcal{D}^o$ 上的表現)**差距越小越好**。
* **取樣影響:**
* **情境一(好取樣):** 即使 $H^{train}$ 在 $\mathcal{D}^{train}$ 上的損失 $\mathcal{L}(H^{\text{train}}, \mathcal{D}^{\text{train}}) = 0.27$ 低於理想損失 $0.28$,它在理想資料集上的表現 $\mathcal{L}(H^{\text{train}}, \mathcal{D}^o) = 0.28$,與理想狀態**接近**。
* **情境二(壞取樣):** 由於取樣分佈與 $\mathcal{D}^o$ 差異大,儘管它在 $\mathcal{D}^{train}$ 上的損失 $\mathcal{L}(H^{\text{train}, 2}, \mathcal{D}^{\text{train}, 2}) = 0.20$ 很好,但它在理想資料集上的表現 $\mathcal{L}(H^{\text{train}, 2}, \mathcal{D}^o) = 0.37$,**差距遙遠**。
#### C. 數學邊界:壞訓練資料的出現機率
* **好訓練資料的條件:** 若要讓 $H^{train}$ 在 $\mathcal{D}^o$ 上的表現接近 $H^o$,則需要 $\mathcal{D}^{train}$ 是一個好的樣本。
* **好的 $\mathcal{D}^{train}$:** 對於**所有**可能的 $H \in \mathcal{H}$ 來說,其在 $\mathcal{D}^{train}$ 上的損失 $\mathcal{L}(H, \mathcal{D}^{train})$ 與在 $\mathcal{D}^o$ 上的損失 $\mathcal{L}(H, \mathcal{D}^o)$ 的差異必須很小。
* **壞訓練資料的機率:** 抽樣到壞的訓練資料的機率存在一個上界 (upper bound):
$$P(\mathcal{D}^{\text{train}} \text{ is bad}) \le |\mathcal{H}| \times 2 \exp(-2N\epsilon^2)$$
* 其中 $N$ 是訓練資料的數量。
* $|\mathcal{H}|$ 是模型複雜度(可選擇函數的數目)。
* $\epsilon$ 決定了可接受的理想與現實的差距程度。
* **控制機率:**
1. **增加 $N$:** 增加訓練資料的數量 $N$ 可以顯著降低抽到壞資料集的機率。
2. **減少 $|\mathcal{H}|$:** 降低模型複雜度 $|\mathcal{H}|$。
* **連續參數問題:** 如果模型參數是**連續**的(如一般類神經網路),則 $|\mathcal{H}|$ 應為**無窮大**。這會導致數學上推導出的機率上界大於 1 甚至無窮大,失去實用性。
* *VC Dimension* 是一種處理連續參數模型複雜度的指標,但本課程不深入討論。
### IV. 機器學習的兩難困境 (The Dilemma)
我們陷入一個兩難困境:
* **模型複雜度大 (大 $|\mathcal{H}|$):** 理論上可以找到一個接近完美(損失 $\mathcal{L}$ 很低)的 $H^o$(**好理想**,低偏差/Bias)。但抽樣到壞資料的機率高,現實結果與理想結果差距大(**高變異/Variance**)。
* **模型複雜度小 (小 $|\mathcal{H}|$):** 現實結果與理想結果差距小(**低變異**)。但因為可選函數少,找到的最佳 $H^o$ 可能損失仍很高(**壞理想**,高偏差)。
我們需要找到一個方法,使 $H^o$ 在 $\mathcal{D}^o$ 上的損失很低,**同時** $H^{train}$ 在 $\mathcal{D}^o$ 上的結果又接近 $H^o$。
**結論預告:** 深度學習 (Deep Learning) 是一種能讓這個「魚與熊掌可以兼得」的方法。
### 【機器學習 2022】為什麼用了驗證集 (validation set) 結果卻還是過擬合(overfitting)了呢? 大綱
**I. 驗證集 (Validation Set) 概念與用途回顧**
A. 傳統機器學習三步驟回顧
B. 驗證集在模型選擇中的角色
**II. 驗證 (Validation) 過程的訓練視角**
A. 驗證過程與模型的集合 ($H_{val}$)
B. 驗證等同於在 $D_{val}$ 上進行訓練
**III. 驗證集上發生過度擬合 (Overfitting) 的原因分析**
A. 理論基礎回顧
B. 影響驗證集好壞的兩大因素
C. $H_{val}$ 複雜度過高的情境
---
### I. 驗證集 (Validation Set) 概念與用途回顧
#### A. 傳統機器學習三步驟回顧
在開始探討之前,需要先理解許多同學在使用驗證集 (validation set, $D_{val}$) 後,在測試集 (testing set) 上仍然發生過度擬合 (overfeitting) 的原因。
#### B. 驗證集在模型選擇中的角色
假設有三個模型 $H_1, H_2, H_3$。
1. 首先,使用訓練資料 ($D_{train}$) 找出每個模型類別中最好的函式候選者,分別為 $h_1^*, h_2^*, h_3^*$。
2. **目的:** 不會直接用 $D_{train}$ 來決定哪個 $h^*$ 比較好。
3. **執行:** 必須在**驗證集** ($D_{val}$) 上評估這些候選者 ($h_1^*, h_2^*, h_3^*$) 的好壞。這涉及計算它們在 $D_{val}$ 上的**損失函式 (loss)**。
4. **選取:** 選擇在 $D_{val}$ 上損失最低的那個函式 ($H$)。
5. **應用:** 將選定的函式用於測試集 (testing set),該測試集代表了所有可能的資料 ($D^o$)。
### II. 驗證 (Validation) 過程的訓練視角
#### A. 驗證過程與模型的集合 ($H_{val}$)
我們可以將整個「使用驗證集來挑選模型」的過程視為一種訓練。
這個過程可以寫成:我們有一個由 $h_1^*, h_2^*, h_3^*$ 組成的集合,稱之為 $\mathcal{H}_{val}$。
#### B. 驗證等同於在 $D_{val}$ 上進行訓練
在做驗證時,我們實際上是在 $\mathcal{H}_{val}$ 集合中找到某一個函式 $H$,使其在驗證集 ($D_{val}$) 上的損失 (L) 最小。
* **本質:** 這等同於在 $D_{val}$ 上做訓練 (training)。
* **區別:** 只是 $\mathcal{H}_{val}$ 裡的候選函式數量**非常少**(在範例中只有三個)。
### III. 驗證集上發生過度擬合 (Overfitting) 的原因分析
#### A. 理論基礎回顧
在前面的課程中提到,現實結果(在訓練集上觀察到的損失)與理想結果(在測試集上觀察到的損失)之間的差距過大,是因為抽樣到**不好的訓練資料**。抽到壞資料的機率取決於兩個主要因素:訓練資料的大小,以及模型的複雜度 (model complexity)。
#### B. 影響驗證集好壞的兩大因素
當我們將驗證集 ($D_{val}$) 視為訓練資料時,其結果(在 $D_{val}$ 上看到的損失)與理想結果(在 $D^o$ 或 testing set 上的表現)之間的差距大小,取決於兩個因素:
1. **$D_{val}$ 的大小**。
2. **對應模型的複雜度**,即 $\mathcal{H}_{val}$ 集合的複雜度。
當抽到的驗證集是「不好」的資料集時,你在驗證集上看到的現狀,就會與你的理想狀態(實際在測試集上的表現)差距非常大。
#### C. $H_{val}$ 複雜度過高的情境
雖然 $\mathcal{H}_{val}$(候選模型集合)通常比深度網路的可選函式數量(無限多)小很多,但在某些情況下,$\mathcal{H}_{val}$ 可能會變得非常大:
* **超參數 (Hyperparameter) 決定:** 如果你使用驗證集來決定模型的超參數(例如,網路架構的層數或每層神經元的數量)。
* **複雜的搜索空間:** 假設你決定搜索 1 到 10 層的網路架構,且每層有 1 到 1000 個神經元。如果你決定要測試 $1000^{10}$ 個模型,那麼你的 $\mathcal{H}_{val}$ 集合就會變得非常巨大。
* **結論:** 當 $\mathcal{H}_{val}$ 變得很大時,你就很有可能發生**在驗證集上過度擬合** (overfeitting) 的情況。即使使用了驗證集來選擇模型,如果選擇的範圍太廣(模型複雜度太高),仍可能導致你在 $D_{val}$ 上看到的結果與真正在測試集上的結果相差太大。
### 【機器學習 2022】魚與熊掌可以兼得的深度學習 大綱
**I. 深度學習的優勢與兩難困境的解決**
A. 兩難困境的回顧 (The Dilemma Review)
B. 深度學習 (Deep Learning) 的承諾:魚與熊掌兼得
**II. 深度學習的結構效率證明**
A. 隱藏層 (Hidden Layer) 的功能回顧
B. 結構效率的類比說明
1. 邏輯電路 (Logic Circuit) 的效率
2. 程式設計 (Programming) 的結構
3. 剪紙窗花 (Paper Cutting) 的比喻
C. 具體案例:網路深度對函式複雜度的影響
1. 淺層網路的 V 字形函式
2. 疊加層數與線段數量的關係
**III. 核心結論:深度學習的真正優勢**
A. 參數數量與效率的指數級差異
B. 深度學習與過度擬合 (Overfitting)
---
### I. 深度學習的優勢與兩難困境的解決
#### A. 兩難困境的回顧 (The Dilemma Review)
在先前的課程中,我們陷入了一個兩難困境:
* 如果選擇**比較大的模型**(可選擇的函式 $H$ 較多),理想狀態下,$L(H^o)$(理想的損失值)可以壓得很低(**低偏差/Bias**)。但現實與理想的差距會比較大(**高變異/Variance**)。
* 如果選擇**比較小的模型**,雖然現實與理想會比較接近(**低變異**),但因為可選擇的函式少,找到的最佳理想狀態 $H^o$ 可能損失仍較大(**高偏差**),即「理想崩壞了」。
#### B. 深度學習 (Deep Learning) 的承諾:魚與熊掌兼得
本課程的目標是探討如何讓「魚與熊掌可以兼得」。
我們期待找到一個模型 $\mathcal{H}$,它本身**成員不多** (H 小),但其成員都是**精英**,可以讓損失 $L$ 壓得很低。
* 如果 $H$ 很小,且 $L$ 很低,我們就能夠同時擁有**好的理想**(低損失),**同時**讓現實跟理想很接近(低變異)。
* 深度學習 (Deep Learning) 就是能夠做到「魚與熊掌兼得」的方法。
### II. 深度學習的結構效率證明
#### A. 隱藏層 (Hidden Layer) 的功能回顧
* 透過**一個隱藏層**的類神經網路,理論上可以製造出**所有可能的函式**。
* 任何函式都可以被分解成足夠多線段的**分段線性函式 (piecewise linear function)** 來逼近。
* 一個分段線性函式可以看作是**一個長數項**加上**一堆階梯型的函式**組合而成。
* 如果神經元 (neuron) 使用 **Sigmoid** 函式 或 **ReLU** 函式 作為啟用函式 (activation function),就可以產生階梯型或類似的函式。
* 只要有**足夠多的神經元**,一個隱藏層的網路就可以產生任何函式。
#### B. 結構效率的類比說明
雖然一個胖的淺層網路(單一隱藏層,很多神經元)理論上可以完成任何任務,但實驗證明深的網路效果更好。當兩者**參數數量相同**時,深的網路表現更優異。深的結構帶來優勢的原因,可以透過以下類比理解:
1. **邏輯電路 (Logic Circuit) 的效率:**
* 任何邏輯電路只用**兩層邏輯閘**都可以建構出任合函式。
* 例如,若要建構一個 **Parity Check** 模組(檢查輸入序列中 1 的次數是奇數還是偶數),如果只用兩層邏輯閘,你需要 $2^D$ 個閘(D 是輸入長度)。
* 但如果將 Ex-NOR 閘排成**深層的結構**(串連),只需 $D$ 個閘就可以達成相同的複雜功能。深的結構用較少的資源做到了較複雜的事情。
2. **程式設計 (Programming) 的結構:**
* 在寫程式時,你不會把所有東西都放在主函式 (main function) 裡。
* 使用模組或子函式 (subfunction) 這種深層結構,可以避免程式碼冗長,增加可讀性,並在重複使用相同功能時讓程式更簡潔。
3. **剪紙窗花 (Paper Cutting) 的比喻:**
* 複雜的圖案若直接剪會非常麻煩。
* 透過**折紙**(相當於增加層次/layer)再剪幾刀,就可以有效地剪出複雜的圖案。
#### C. 具體案例:網路深度對函式複雜度的影響
以一個輸入 $x$ 和輸出 $A_k$ 的網路為例,展示深度如何指數級地增加函式複雜度:
1. **淺層網路的 V 字形函式 (1 層):**
* 一個只有一個隱藏層的網路(由兩個 ReLU 神經元組成),可以產生一個 **V 字形**的輸入-輸出關係 (X 與 A1 的關係)。
2. **疊加層數與線段數量的關係 (K 層):**
* 如果再串聯第二層(總共兩層),每層有兩個神經元。當輸入 X 從 0 變到 1 時,輸出 $A_2$ 會經歷兩次 V 字形輪迴(從 1 到 0 再到 1,再從 1 到 0 再到 1)。X 與 $A_2$ 的關係將形成一個 **W 字形**,這包含了**四個線段** (pieces)。
* 如果繼續串聯到 **K 層**,每層只有兩個神經元(總共 $2K$ 個神經元),則輸出的函式 $Y$ 將會有 **$2^K$ 個線段**。
### III. 核心結論:深度學習的真正優勢
#### A. 參數數量與效率的指數級差異
* 要產生一個具有 $2^K$ 個線段的函式:
* **深層網路 (Deep Network)** 需要 **$K$ 層**,約 **$2K$ 個神經元**。
* **淺層網路 (Shallow Network)** 由於每個神經元只能產生一個線段,需要 **$2^K$ 個神經元**。
* 兩者在參數數量上存在**指數級 (exponential) 的差別**。
* 結論:深度網路的優勢在於,當目標函式是**複雜且有規律**的時候,它能用**比較少的參數量**(較小的模型)來實現相同的函式能力。
#### B. 深度學習與過度擬合 (Overfitting)
* 深層網路能用較小的參數量(較小的模型複雜度 $|\mathcal{H}|$) 實現複雜函式,這意味著它**比較不容易發生過度擬合 (overfeit)**。
* 這與坊間的印象(深度學習需要大資料、容易過度擬合)是**相反的**。
* 因為複雜的模型比較容易過度擬合,所以若不使用深度網路,反而需要**更大、更大量的資料**才能達成同樣的任務。
* 深度學習的優勢在於:在比較少的參數量情況下,可以得到比較低的損失值 (loss),這就是實現「魚與熊掌兼得」的方法。
---
其他課程
[【機器學習 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)