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)