Forward Propagation
What?
前向傳播(Forward Propagation)是一個人工神經網路中的核心運算過程,主要用於計算輸入資料經過網路後的輸出結果。簡單來說,這是資料從輸入端一路流向輸出端的過程,就像水管中的水從一端流到另一端。
在實務上,前向傳播會依序經過網路中的每一層(例如 Dense layers 或 Convolutional layers),逐步進行運算並產生下一層的中間結果。最終,我們會得到神經網路的預測值或結果。
Who?
前向傳播主要由以下角色使用或受影響:
- 模型訓練者:需要理解前向傳播以設計合適的神經網路架構。
- 機器學習工程師:在進行模型調試或部署時,常需檢查前向傳播的數值是否正常。
- 資料科學家:使用模型進行推論時,會利用前向傳播來獲得預測結果。
When?
在以下情境中會用到前向傳播:
- 模型訓練期間:每次計算損失函數時,都需要先執行一次完整的前向傳播。
- 模型推論(Inference)階段:用已訓練好的模型對新的資料進行預測時,也需要執行前向傳播。
Where?
在神經網路架構中,前向傳播通常出現在以下部分:
- 每一層的運算:例如 Dense layers、Convolutional layers 或 RNN。
- 激活函數(Activation Function)處理階段:例如 ReLU、Sigmoid 或 Tanh。
- 最後一層輸出的生成:例如分類問題中的 Softmax 或迴歸問題中的線性輸出。
Why?
前向傳播解決了「如何將輸入資料轉換為有意義的輸出」這個問題。它是神經網路能夠完成預測任務的重要基石。例如,在影像分類中,透過前向傳播可以將圖片轉換成對應的類別標籤;而在語言翻譯中,它則負責將原始句子映射到目標語言句子上。
具體來說,它提供了以下功能:
- 將原始資料逐層加工並抽取特徵。
- 計算模型對特定任務的預測結果,以便後續比較和調整參數。
How?
🛠️ 建立階段
在建立神經網路時,我們需要設計好每一層如何處理資料,以及如何串接它們。在程式邏輯上,可以按以下流程進行:
- 接收輸入資料,例如長度為 $n$ 的特徵向量 $$ X = [x_1, x_2, ..., x_n] $$。
- 依序通過每一層:
- 計算線性組合 $$ Z^{(l)} = W^{(l)} X^{(l)} + b^{(l)} $$
- 套用激活函數 $$ A^{(l)} = \text{Activation}(Z^{(l)}) $$
- 最終得到模型預測值,例如 Softmax 輸出的機率分佈。
🔍 查詢階段
查詢即推論(Inference),流程如下:
- 將新資料作為網路輸入 $$ X_{\text{new}} $$
- 重複建立階段中的所有運算步驟,但不更新權重與偏置,只執行計算操作。
- 獲得最終結果,用於決策或展示。例如,一張圖片被分類為某類別。
補充說明
📌 範例比較
以下是一個簡單範例比較不同激活函數對同一個 $Z$ 的影響:
| 激活函數 | $Z = 0.5$ 輸出值 |
|---|---|
| Sigmoid | $0.622$ |
| Tanh | $0.462$ |
| ReLU | $0.5$ |
🧠 延伸/常見誤解
誤解 1: 前向傳播只在訓練期間使用
事實上,推論期間也需要完整執行一次前向傳播,只是不涉及參數更新。
誤解 2: 激活函數無法影響性能
激活函數選擇非常重要,例如 ReLU 在多層深度學習中更高效,而 Sigmoid 在梯度消失問題上表現較差。
延伸應用
除了基本全連接層(Dense layer),卷積層(Convolutional layer)和遞歸層(Recurrent Neural Network)等也依賴相同概念進行運作。理解這部分有助於掌握更多深度學習技術,例如 Transformer 模型中的 Self Attention 屬於變形版的「加權線性組合」。