跳至主要内容

Forward Propagation

What?​

前向傳播(Forward Propagation)是一個人工神經網路中的核心運算過程,主要用於計算輸入資料經過網路後的輸出結果。簡單來說,這是資料從輸入端一路流向輸出端的過程,就像水管中的水從一端流到另一端。

在實務上,前向傳播會依序經過網路中的每一層(例如 Dense layers 或 Convolutional layers),逐步進行運算並產生下一層的中間結果。最終,我們會得到神經網路的預測值或結果。

Who?​

前向傳播主要由以下角色使用或受影響:

  • 模型訓練者:需要理解前向傳播以設計合適的神經網路架構。
  • 機器學習工程師:在進行模型調試或部署時,常需檢查前向傳播的數值是否正常。
  • 資料科學家:使用模型進行推論時,會利用前向傳播來獲得預測結果。

When?​

在以下情境中會用到前向傳播:

  1. 模型訓練期間:每次計算損失函數時,都需要先執行一次完整的前向傳播。
  2. 模型推論(Inference)階段:用已訓練好的模型對新的資料進行預測時,也需要執行前向傳播。

Where?​

在神經網路架構中,前向傳播通常出現在以下部分:

  • 每一層的運算:例如 Dense layers、Convolutional layers 或 RNN。
  • 激活函數(Activation Function)處理階段:例如 ReLU、Sigmoid 或 Tanh。
  • 最後一層輸出的生成:例如分類問題中的 Softmax 或迴歸問題中的線性輸出。

Why?​

前向傳播解決了「如何將輸入資料轉換為有意義的輸出」這個問題。它是神經網路能夠完成預測任務的重要基石。例如,在影像分類中,透過前向傳播可以將圖片轉換成對應的類別標籤;而在語言翻譯中,它則負責將原始句子映射到目標語言句子上。

具體來說,它提供了以下功能:

  1. 將原始資料逐層加工並抽取特徵。
  2. 計算模型對特定任務的預測結果,以便後續比較和調整參數。

How?​

🛠️ 建立階段​

在建立神經網路時,我們需要設計好每一層如何處理資料,以及如何串接它們。在程式邏輯上,可以按以下流程進行:

  1. 接收輸入資料,例如長度為 $n$ 的特徵向量 $$ X = [x_1, x_2, ..., x_n] $$。
  2. 依序通過每一層:
    • 計算線性組合 $$ Z^{(l)} = W^{(l)} X^{(l)} + b^{(l)} $$
    • 套用激活函數 $$ A^{(l)} = \text{Activation}(Z^{(l)}) $$
  3. 最終得到模型預測值,例如 Softmax 輸出的機率分佈。

🔍 查詢階段​

查詢即推論(Inference),流程如下:

  1. 將新資料作為網路輸入 $$ X_{\text{new}} $$
  2. 重複建立階段中的所有運算步驟,但不更新權重與偏置,只執行計算操作。
  3. 獲得最終結果,用於決策或展示。例如,一張圖片被分類為某類別。

補充說明​

📌 範例比較​

以下是一個簡單範例比較不同激活函數對同一個 $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 屬於變形版的「加權線性組合」。