---
# System prepended metadata

title: 【機器學習2021】01-02 機器學習和深度學習基本概念簡介
tags: [機器學習]

---


20250926 筆記，內容可能有錯，請參考來源影片。

[李宏毅機器學習2021影片](https://www.youtube.com/playlist?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J)


[【機器學習2021】預測本頻道觀看人數 (上) - 機器學習基本概念簡介](https://www.youtube.com/watch?v=Ye018rCVvOo&list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&index=1)

[【機器學習2021】預測本頻道觀看人數 (下) - 深度學習基本概念簡介](https://www.youtube.com/watch?v=bHcJCp2Fyxs&list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&index=2)




### 【機器學習2021】預測本頻道觀看人數 (上) - 機器學習基本概念簡介大綱

一、 機器學習 (Machine Learning, ML) 與深度學習 (Deep Learning) 的基本概念
    A. 機器學習的定義
    B. 機器學習的三大任務類別
    
        1. Regression (數值預測)
        2. Classification (分類)
        3. Structured Learning (結構化物件產生)
        
二、 機器學習找函式的三個步驟 (以 YouTube 觀看人數預測為例)
A. 步驟一：定義帶有未知參數的函式（Model）
    
        1. 模型參數與名詞定義
        2. Domain Knowledge (領域知識) 的作用

B. 步驟二：定義損失函式 (Loss Function)
    
        1. 損失的計算依據與目標
        2. 衡量誤差的方式
        3. 誤差曲面 (Error Surface)
        
C. 步驟三：優化 (Optimization)
    
        1. 梯度下降法 (Gradient Descent)
        2. 學習率 (Learning Rate) 與超參數 (Hyperparameter)
        3. 梯度下降法的潛在問題
        
        
三、 模型的訓練、測試與改良

A. 訓練 (Training) 與測試 (Testing) 差異
B. 初始線性模型分析與領域知識應用
C. 模型改良與線性模型定義



### 一、 機器學習 (Machine Learning, ML) 與深度學習 (Deep Learning) 的基本概念

#### A. 機器學習的定義
*   機器學習是讓機器具備**找一個函式的能力**。
*   這個函式通常**非常複雜**，無法由人類手寫出來的方程式。
*   機器學習的目標是**憑藉著機器的力量，把這個函式自動找出來**。
*   函式的功能舉例：
    *   **語音辨識**：輸入是聲音訊號，輸出是對應的文字。
    *   **影像辨識**：輸入是一張圖片，輸出是圖片的內容。
    *   **AlphaGo (下圍棋)**：輸入是棋盤上黑子跟白子的位置，輸出是機器下一步應該落子的位置。

#### B. 機器學習的三大任務類別
1.  **Regression (數值預測)**
    *   定義：要找的函式，其**輸出是一個數值** (scalar)。
    *   範例：預測未來某個時間的 PM2.5 數值。
    *   函式 $f$ 的輸入可能是今天的 PM2.5 數值、平均溫度、臭氧濃度等。
2.  **Classification (分類)**
    *   定義：要找的函式，其**輸出是從預先設定好的選項類別中選擇一個**。
    *   範例：
        *   **垃圾郵件偵測**：輸入是一封電子郵件，選項是「是垃圾郵件」或「不是垃圾郵件」（Yes/No）。
        *   **AlphaGo**：也是一個分類問題，選項是 $19 \times 19$ 個棋盤上可落子的位置。
3.  **Structured Learning (結構化物件產生)**
    *   定義：機器不只是做選擇題或輸出一個數字，而是要**產生一個有結構的物件**。
    *   範例：叫機器畫一張圖或寫一篇文章。
    *   擬人化的說法：叫機器學會**創造**這件事情。
    *   備註：許多教科書僅介紹 Regression 和 Classification 兩大類任務，
    *   Structured Learning 被比喻為機器學習領域中的「黑暗大陸」。

### 二、 機器學習找函式的三個步驟

以預測 YouTube 頻道隔天總點閱率為例：輸入是 YouTube 後台資訊，輸出是隔天的觀看總次數。

#### A. 步驟一：定義帶有未知參數的函式（Model, 模型）
1.  **模型參數與名詞定義**
    *   初始猜測函式（模型）：$y = b + w \times x_l$。
    *   $y$：準備要預測的數值（例如今天的總觀看人數）。
    *   $x_l$：**Feature**（特徵）：已知的資訊（例如前一天的總觀看人數）。
    *   $w$ 和 $b$：**Unknown Parameters**（未知的參數），需透過資料找出。
    *   **Model (模型)**：就是一個帶有未知參數的 Function。
    *   **Weight ($w$)**：與 Feature 相乘的未知參數。
    *   **Bias ($b$)**：沒有與 Feature 相乘，直接加下去的參數。
2.  **Domain Knowledge (領域知識) 的作用**
    *   對問題本質上的了解（Domain Knowledge）通常用於設定帶有未知數的函式。
    *   例如，猜測今天的點閱次數總是會跟昨天的點閱次數有點關聯，因此將昨天的點閱次數乘上 $w$ 再加上 $b$ 作為修正。

#### B. 步驟二：定義損失函式 (Loss Function, L)
1.  **損失的計算依據與目標**
    *   Loss 是一個 Function，其**輸入是 Model 裡的參數** ($b$ 和 $w$)。
    *   Loss 輸出的值代表這組參數設定的好壞。
    *   計算 Loss 需使用**訓練資料 (Training Data)**，例如頻道過去三年的點閱次數 (2017-2020)。
    *   **Label** ($\hat{y}$)：訓練資料中正確的數值。
    *   目標：計算估測的值 ($y$) 與真實的值 ($\hat{y}$) 之間的差距 ($e$)。
    *   **Loss ($L$)**：是所有訓練資料的誤差 ($e$) 加總後的平均值。
    *   $L$ 越大，代表該組參數越不好；$L$ 越小，代表該組參數越好。
2.  **衡量誤差的方式**
    *   **MAE (Mean Absolute Error)**：計算 $y$ 與 $\hat{y}$ 之間絕對值的差距。
    *   **MSE (Mean Square Error)**：計算 $y$ 與 $\hat{y}$ 之間相減後平方的差距。
    *   對於機率分佈的任務，可能會選擇 **Cross-entropy**。
3.  **誤差曲面 (Error Surface)**
    *   定義：嘗試調整不同的 $w$ 和 $b$ 組合，並計算其 Loss，將結果繪製成的等高線圖。
    *   顏色解釋：越偏紅色系代表 Loss 越大（參數組合越差）；越偏藍色系代表 Loss 越小（預測越精準）。

#### C. 步驟三：優化 (Optimization)
1.  **目標**
    *   解一個最佳化問題：**找到一組 $w$ 和 $b$ ($w^*, b^*$)，使 Loss 的值最小**。
2.  **梯度下降法 (Gradient Descent)**
    *   簡化情況（只有 $w$ 一個參數）：誤差曲面為 1D 曲線。
    *   首先：隨機選取一個初始點 $w^0$。
    *   接著：計算 Loss 對 $w$ 的**微分**（即切線斜率）。
    *   判斷：如果斜率是負的，代表右邊較低，應把 $w$ 的值變大；如果斜率是正的，代表左邊較低，應把 $w$ 的值變小。
    *   比喻：想像一個人站在曲線上，左右環視後，往比較低的地方跨出一步。
3.  **學習率 (Learning Rate) 與超參數 (Hyperparameter)**
    *   **步伐大小**取決於兩件事：斜率大小（微分項）和 **Learning Rate ($\eta$)**（學習速率）。
    *   **Hyperparameters (超參數)**：在機器學習過程中，需要自己設定的東西。$\eta$ 就是其中之一。
    *   參數更新公式：$w^1 = w^0 - \eta \times (\text{微分的結果})$。
    *   **停止條件**：
        *   達到設定的最大計算次數（此為 Hyperparameter）。
        *   微分的值算出來正好是 0，參數不再移動。
4.  **梯度下降法的潛在問題**
    *   如果訓練在微分值為 0 的地方停住，該點可能是 **Local Minima (局部最小值)**，而非讓 Loss 最小的 **Global Minima (全域最小值)**。
    *   但有經驗者認為，在深度學習中，Local Minima 往往是假議題。
5.  **多參數的梯度下降**
    *   對於 $w$ 和 $b$ 兩個參數：隨機初始化 $w^0$ 和 $b^0$。
    *   計算 $L$ 對 $w$ 的偏微分 ($\partial L / \partial w$) 和對 $b$ 的偏微分 ($\partial L / \partial b$)。
    *   更新參數：$w^1 = w^0 - \eta \times (\partial L / \partial w)$；$b^1 = b^0 - \eta \times (\partial L / \partial b)$。
    *   註：在 Deep Learning 的框架中（如 PyTorch），微分計算通常由程式自動完成。
    *   不斷重複此步驟，直到找到 $w^*$ 和 $b^*$。

### 三、 模型的訓練、測試與改良

#### A. 訓練 (Training) 與測試 (Testing) 差異
*   機器學習的三個步驟合起來稱為**訓練**。
*   在訓練資料 (2017-2020 年) 上計算 Loss 僅是「自 high」。
*   真正要在意的是**未來看過的資料（測試資料）的預測準確度。
*   初始模型 ($y=0.1k + 0.97 \times x_l$ 的結果)：
    *   訓練 Loss ($L$): $0.48k$。
    *   測試 Loss ($L'$，2021 年資料): $0.58k$。
    *   結果顯示訓練資料上的誤差值較小，未看過的資料上誤差值較大。

#### B. 初始線性模型分析與領域知識應用
*   初始模型預測結果（藍線）幾乎只是將真實資料（紅線）**往右平移一天**。
*   對真實數據（紅線）的分析發現其具有**週期性**。
*   觀看人數每隔七天一個循環，每週五和週六的觀看人數特別少。
*   因此，模型應根據 Domain Knowledge 進行修正：既然有七天循環，應考慮**前七天的觀看人次**。

#### C. 模型改良與線性模型定義
1.  **七天特徵模型**
    *   模型修改為：$y = b + \sum_{j=1}^{7} w_j x_j$，考慮前七天的觀看人次 $x_j$。
    *   結果：訓練 Loss $0.38k$ (優於 0.48k)；測試 Loss $0.49k$ (優於 0.58k)。
    *   最佳權重 $w_j^*$ 顯示 $w_1^*$（前一天）的權重仍最高（0.79），但部分權重（如 $w_2^*, w_4^*, w_5^*$）為負值。
2.  **更多天數模型**
    *   考慮 28 天：訓練 Loss $0.33k$；測試 Loss $0.46k$。
    *   考慮 56 天：訓練 Loss $0.32k$；測試 Loss $0.46k$。
    *   結論：考慮更多天數的進步空間已達極限。
3.  **線性模型 (Linear Model) 定義**
    *   將輸入的 Feature ($x$) 乘上 Weight ($w$) 再加上 Bias ($b$) 得到預測結果的這類模型，統稱為 **Linear Model**。


### 預測本頻道觀看人數（下）- 深度學習基本概念簡介大綱

一、線性模型（Linear Model）的限制
A. 模型偏差（Model Bias）

二、構建複雜函數的方法
A. 藍色函數（藍方）與分段線性曲線（Piecewise Linear Curves）
B. 逼近連續曲線

三、神經元與模型的建構
A. Sigmoid 函數的引入
B. 調整 Sigmoid 函數的參數
C. 更有彈性的 Function 結構

四、多特徵與線性代數表示
A. 多特徵模型的擴展
B. 向量與矩陣的簡潔表示

五、模型訓練步驟
A. 未知參數（Unknown Parameters $\theta$）的定義
B. 損失函數 $L(\theta)$
C. 優化（Optimization）：梯度下降法（Gradient Descent）
D. 實作細節：批量（Batch）與週期（Epoch）
E. 超參數（Hyper Parameter）

六、模型變形與深度學習
A. 啟動函數（Activation Function）：ReLU
B. 深度神經網路的結構與命名
C. 模型的層數與參數增加

七、實驗結果與模型選擇
A. 過度擬合（Overfitting）問題
B. 模型選擇原則
C. 實際預測與觀察

---


### 一、線性模型（Linear Model）的限制

*   **線性模型的特性：** 對於線性模型而言，輸入 $x_1$ 與輸出 $y$ 之間的關係永遠是一條直線。
*   **參數影響：** 無論怎麼調整權重 $w$（斜率）和偏差 $b$（與 $y$ 軸的交叉點），模型結果永遠是直線，即 $x_1$ 越大，$y$ 就越大（或越小，取決於 $w$）。
*   **現實與模型不符：** 現實中的 $x_1$ 與 $y$ 關係可能更為複雜，例如可能存在一個峰值 (Peak)，在 $x_1$ 過高後，$y$ 反而會變少（例如：前一天觀看人數太多，隔天觀看人數可能變少）。
*   **模型偏差（Model Bias）：** 這種來自於模型本身的限制，使其無法模擬真實的複雜狀況（例如紅色的曲線關係），稱為 **Model Bias**。
    *   *注意：* Model Bias 與線性模型中的參數 $b$ (Bias) 在用詞上有所不同，需區分開來。

### 二、構建複雜函數的方法

*   **需求：** 需要寫一個更複雜、更有彈性、帶有未知參數的函數，因為線性模型顯然不夠。
*   **藍色函數（藍方）：** 紅色複雜曲線可以看作是一個常數項，再加上一群特定的「藍色函數」組合而成。
    *   **藍色函數的特性：** 當輸入 $x$ 軸的值小於某個門檻（threshold）時，它是某個定值（水平）；大於另一個門檻時，又是另一個定值（水平）；中間則是一個斜坡。
*   **分段線性曲線（Piecewise Linear Curves）：** 複雜的曲線（如紅色曲線）可以看作是由許多鋸齒狀線段組成的 **Piecewise Linear Curves**。
*   **組合方法：** 任何 Piecewise Linear Curves 都可以用一個常數項加上一大堆藍色函數組合出來。
    *   藍色函數的斜坡起點和終點可以透過調整來配合紅色曲線的轉角處。
    *   常數項 (0) 加上第一個藍色函數 (1)，可以得到紅色曲線第一個轉折點之前的部分。
    *   透過不斷疊加設計好的藍色函數（例如 $0 + 1 + 2 + 3$），最終可以得到整個紅色曲線。
    *   曲線越複雜（轉折點越多），需要的藍色函數就越多。
*   **逼近連續曲線：** 即使 $x$ 跟 $y$ 的關係不是 Piecewise Linear Curves，而是連續曲線，我們也可以透過在曲線上取足夠多的點並將其連接起來，形成一個非常接近原曲線的 Piecewise Linear Curves。
    *   因此，只要有足夠的藍色函數疊加起來，就可以逼近**任何連續的曲線**。

### 三、神經元與模型的建構

*   **藍色函數的近似：** 藍色函數（後來被稱為 **Hard Sigmoid**）的式子難以直接寫出，但可以用 **Sigmoid 函數**來逼近它。
*   **Sigmoid 函數（S 型函數）：**
    *   Sigmoid 函數長得有點像是 S 型，故得名。
    *   Sigmoid 函數的輸入 $x_1$ 經過 $w$ 和 $b$ 運算後，代入特定公式：$y = c \cdot \frac{1}{1 + e^{-(b + w x_1)}}$。
    *   當 $x_1$ 趨近於無窮大時，輸出 $y$ 趨近於 $c$。
    *   當 $x_1$ 負的趨近於無窮大時，輸出 $y$ 趨近於 $0$。
*   **調整參數：** 調整 $w, b, c$ 可以製造出各種不同形狀的 Sigmoid Function：
    *   **改變 $w$：** 改變斜坡的坡度（斜率）。
    *   **改變 $b$：** 左右移動 Sigmoid Function。
    *   **改變 $c$：** 改變它的高度。
*   **疊加與逼近：** 將不同的 Sigmoid Function 疊加起來，就可以逼近各種不同的 Piecewise Linear Function，進而近似各種不同的連續函數（Continuous Function）。
*   **新的函數結構：** 為了減少 Model Bias，我們寫出了一個更有彈性、帶有未知參數的函數。
    *   該函數結構為：一個常數項（$b$）加上一系列 Sigmoid 函數的總和。
    *   數學式表示：$y = b + \sum_{i} c_i \cdot \text{Sigmoid}(b_i + w_i x_1)$。
    *   其中，不同的 $c_i, b_i, w_i$ 代表著不同的藍色函數（Sigmoid Function）。

### 四、多特徵與線性代數表示

*   **多特徵擴展：** 模型可以擴展到使用多個特徵（Feature），例如考慮前 28 天或前 56 天的觀看人數。
    *   用 $j$ 來代表特徵（Feature）的編號。
    *   擴展後的 Sigmoid 括號內部變為：$b_i + \sum_{j} w_{ij} x_j$。
    *   最終的 $y$ 輸出為：$y = b + \sum_{i} c_i \cdot \text{Sigmoid}(b_i + \sum_{j} w_{ij} x_j)$。
        *   $i$ 代表了每一個 Sigmoid Function（或藍色函數）的編號。
        *   $w_{ij}$ 代表在第 $i$ 個 Sigmoid 中，乘給第 $j$ 個 Feature 的權重（Weight）。
*   **線性代數表示（以 3 個特徵為例）：** 為了簡化複雜的數學式，可以使用矩陣和向量相乘的方式來表示運算。
    1.  **特徵到隱藏層輸入：** 將輸入特徵向量 $\mathbf{x} = [x_1, x_2, x_3]$ 乘上權重矩陣 $\mathbf{W}$，再加上偏差向量 $\mathbf{b}$，得到隱藏層的輸入向量 $\mathbf{r} = [r_1, r_2, r_3]$。
        *   $\mathbf{r} = \mathbf{W} \mathbf{x} + \mathbf{b}$。
        *   $\mathbf{W}$ 矩陣包含了所有的權重 $w_{ij}$。
    2.  **啟動函數應用：** 向量 $\mathbf{r}$ 的每個元素分別通過 Sigmoid 函數，得到輸出向量 $\mathbf{a} = [a_1, a_2, a_3]$。
        *   $\mathbf{a} = \text{Sigmoid}(\mathbf{r})$。
    3.  **輸出計算：** 向量 $\mathbf{a}$ 乘上權重向量 $\mathbf{c}$ 的轉置（Transpose，即 $\mathbf{c}^T$），再加上一個常數偏差 $b$，最終得到輸出 $y$。
        *   $y = \mathbf{c}^T \mathbf{a} + b$。
    *   **整體表示：** 整個更有彈性的函數可以簡潔地表示為：$y = \mathbf{c}^T \cdot \text{Sigmoid}(\mathbf{W} \mathbf{x} + \mathbf{b}) + b$。

### 五、模型訓練步驟

*   **A. 未知參數（Unknown Parameters $\theta$）的定義**
    *   模型中所有待學習的參數，包括 $\mathbf{W}, \mathbf{b}, \mathbf{c}$ 以及純量 $b$，都被統稱為未知的參數（Unknown Parameters）。
    *   這些參數被拉直並拼接成一個很長的向量 $\theta$。
    *   由於參數數量會變得非常多（例如可能有上千個），無法使用暴力搜尋（爆搜）的方法來優化。
*   **B. 損失函數 $L(\theta)$**
    *   損失函數（Loss Function）定義的方法與只有兩個參數時（$w$ 和 $b$）是一樣的。
    *   Loss Function 現在表示為 $L(\theta)$，用來衡量給定一組 $\theta$ 數值時，模型的表現有多好或多不好。
    *   計算方法：將特徵 $\mathbf{x}$ 帶入，估算出 $y$，然後計算與真實標籤（Label）之間的差距 $e$，將所有誤差加總得到 Loss。
*   **C. 優化（Optimization）：梯度下降法（Gradient Descent）**
    *   優化的目標是找到一組 $\theta^*$，能讓 $L(\theta)$ 最小。
    *   **初始值：** 首先隨機選取一組初始參數 $\theta^0$。
    *   **計算梯度（Gradient）：** 接著需要計算 Loss $L$ 對於每一個未知參數（$\theta_1, \theta_2, \theta_3...$）的微分。
        *   所有這些微分值集合起來的向量稱為 **Gradient**，通常用 $\nabla L$（倒三角形）來表示。
    *   **參數更新：** 根據 Gradient 來更新參數。
        *   更新方法：新的參數 $\theta^1$ 等於舊的參數 $\theta^0$ 減去學習率（learning rate）乘以梯度向量 $g$。
        *   $\theta^1 = \theta^0 - \text{learning rate} \times g$。
    *   **迭代：** 重複計算 Gradient，並更新參數（$\theta^0 \rightarrow \theta^1 \rightarrow \theta^2...$），直到停止或 Gradient 趨近於零向量。
*   **D. 實作細節：批量（Batch）與週期（Epoch）**
    *   **批量（Batch）：** 實作中通常不會用所有 $N$ 筆資料來計算 Loss $L$，而是將 $N$ 筆資料隨機分成多個 Batch，每個 Batch 有 $B$ 筆資料。
    *   **更新方式：** 每次只拿一個 Batch 的資料出來計算 Loss $L_1$。根據這個 Batch Loss $L_1$ 計算 Gradient，並用這個 Gradient 來更新參數。
    *   **Update：** 每更新一次參數（即使用一個 Batch 算 Loss 並更新一次 $\theta$），叫做一次 **Update**。
    *   **Epoch：** 把所有的 Batch 都看過一次（即所有資料都被用來計算過一次 Loss），叫做一個 **Epoch**。
    *   *關係：* 一個 Epoch 中包含多次 Update。例如，10000 筆資料，Batch Size 設為 10，則一個 Epoch 中會更新參數 1000 次 ($10000/10=1000$)。
*   **E. 超參數（Hyper Parameter）**
    *   超參數是**人為設定**的，而不是機器自己找出來的。
    *   已知的超參數包括：**學習率**（Learning rate）、**Sigmoid 的數目**（或 Neuron 的數目）、**批量大小**（Batch Size）、**模型的層數**。

### 六、模型變形與深度學習

*   **A. 啟動函數（Activation Function）：ReLU**
    *   **ReLU (Rectified Linear Unit)：** 藍色函數（Hard Sigmoid）不一定只能用 Sigmoid 來逼近，也可以用 Rectified Linear Unit (ReLU)。
    *   **ReLU 的特性：** 有一條水平線，走到某個地方有一個轉折點，變成斜坡。
    *   **ReLU 的公式：** $y = c \cdot \max(0, b + w x_1)$。
        *   $\max$ 函式表示取 0 與 $b + w x_1$ 之間較大的值作為輸出。
    *   **組合：** 兩個 ReLU 疊加起來可以變成一個 Hard Sigmoid。
    *   **統稱：** Sigmoid 和 ReLU 在機器學習中統稱為 **Activation Function**（啟動函數）。
*   **B. 深度神經網路的結構與命名**
    *   **神經元（Neuron）：** Sigmoid 或 ReLU 被稱為 Neuron。
    *   **神經網路（Neural Network）：** 許多的 Neuron 串起來就叫做 Neural Network。
    *   **深度學習（Deep Learning）：** 每一排 Neuron 稱為一個 **Layer**（層），它們被稱為 **Hidden Layer**（隱藏層）。
        *   有很多個 Hidden Layer 就叫做 **Deep**。
        *   整套技術就稱為 **Deep Learning**。
    *   *背景：* Neural Network 並非新技術，但在 80、90 年代被過度吹捧導致名聲變差，後來為了重振旗鼓，改用 Deep Learning 這個新名字。
*   **C. 模型的層數與參數增加**
    *   **加深結構：** 可以將 $x \rightarrow a$ 的運算（乘 $w$ 加 $b$ 再通過啟動函數）反覆多做幾次。
        *   $\mathbf{x} \rightarrow \mathbf{a} \rightarrow \mathbf{a}'$。
        *   每次重複都會增加更多的未知參數（例如 $w'$ 和 $b'$），因為這些參數與前一層的 $w$ 和 $b$ 不是同一個。
    *   **層數：** 模型的層數也是一個需要自己決定的超參數。

### 七、實驗結果與模型選擇

*   **實驗結果觀察：**
    *   使用 Linear Model 時，訓練 Loss 為 0.32k，測試 Loss 為 0.46k。
    *   使用 10 個 ReLU 效果與 Linear Model 差不多。
    *   使用 100 個 ReLU 效果顯著，訓練 Loss 降到 0.28k。
    *   使用 1000 個 ReLU，訓練 Loss 更低，但測試 Loss 改善不大。
    *   增加模型深度（從 1 層 ReLU 到 3 層 ReLU），訓練 Loss 顯著下降（0.28k 降到 0.14k），測試 Loss 也有所改善（0.43k 降到 0.38k）。
*   **過度擬合（Overfitting）：**
    *   當繼續增加到 4 層時，訓練 Loss 降到 0.1k，比 3 層更好。
    *   但 4 層模型在沒看過的資料（2021 年資料）上的 Loss 卻上升到 0.44k，比 3 層的 0.38k 差。
    *   這種「在訓練資料上有變好，但在沒看過的資料上沒有變好」的狀況，就稱為 **Overfitting**。
*   **模型選擇：**
    *   選擇模型時，不應該只在意訓練資料上的結果。
    *   應該選擇在**沒有看過的資料**上表現最好的模型。
    *   在該實驗中，雖然 4 層在訓練 Loss 上較優，但 3 層在測試 Loss 上較優，因此應該選擇 3 層的 Neural Network 來預測未知的資料（例如 2 月 26 號）。
*   **實際預測觀察：**
    *   模型的預測結果在低點處（例如每週的低點）相當準確。
    *   模型難以預測**除夕**等特殊事件造成的低谷，因為它只依賴前 56 天的數值，不知道除夕是什麼。
*   **後續技術：** 深度學習的訓練會用到 Backpropagation，這是一種更有效率計算 Gradients 的方法。


[【機器學習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)
