AI-For-Beginners/translations/zh-TW/lessons/3-NeuralNetworks/04-OwnFramework
localizeflow[bot] d01d40ddb2 chore(i18n): sync translations with latest source changes (chunk 5/8, 92 changes) 2026-01-30 01:25:00 +00:00
..
lab chore(i18n): sync translations with latest source changes (chunk 5/8, 92 changes) 2026-01-30 01:25:00 +00:00
OwnFramework.ipynb chore(i18n): sync translations with latest source changes (chunk 5/8, 92 changes) 2026-01-30 01:25:00 +00:00
README.md chore(i18n): sync translations with latest source changes (chunk 5/8, 92 changes) 2026-01-30 01:25:00 +00:00

README.md

神經網路簡介:多層感知器

在上一節中,你學習了最簡單的神經網路模型——單層感知器,一種線性二分類模型。

在本節中,我們將擴展這個模型,構建一個更靈活的框架,使我們能夠:

  • 除了二分類之外,還能執行多分類任務
  • 除了分類之外,還能解決回歸問題
  • 區分那些非線性可分的類別

我們還將在 Python 中開發自己的模組化框架,這將使我們能夠構建不同的神經網路架構。

課前測驗

機器學習的形式化

讓我們從形式化機器學習問題開始。假設我們有一個訓練數據集 X 和標籤 Y,我們需要構建一個模型 f,以實現最準確的預測。預測的質量由損失函數 來衡量。以下是常用的損失函數:

  • 對於回歸問題(需要預測一個數值),我們可以使用絕對誤差i|f(x(i))-y(i)|,或平方誤差i(f(x(i))-y(i))2
  • 對於分類問題,我們使用0-1損失(本質上與模型的準確率相同),或者邏輯損失

對於單層感知器,函數 f 被定義為一個線性函數 f(x)=wx+b(其中 w 是權重矩陣,x 是輸入特徵向量,b 是偏置向量)。對於不同的神經網路架構,這個函數可以採用更複雜的形式。

在分類的情況下,通常希望網路輸出對應類別的概率。為了將任意數字轉換為概率(例如對輸出進行歸一化),我們通常使用softmax 函數 σ,此時函數 f 變為 f(x)=σ(wx+b)

在上述 f 的定義中,wb 被稱為參數 θ=⟨w,b⟩。給定數據集 ⟨X,Y⟩,我們可以將整個數據集上的總體誤差表示為參數 θ 的函數。

神經網路訓練的目標是通過調整參數 θ 來最小化誤差

梯度下降優化

有一種著名的函數優化方法叫做梯度下降。其核心思想是,我們可以計算損失函數相對於參數的導數(在多維情況下稱為梯度),並調整參數以減少誤差。這可以形式化為以下步驟:

  • 用一些隨機值初始化參數 w(0), b(0)
  • 重複以下步驟多次:
    • w(i+1) = w(i)-η∂ℒ/∂w
    • b(i+1) = b(i)-η∂ℒ/∂b

在訓練過程中,優化步驟應該基於整個數據集計算(記住損失是通過所有訓練樣本的總和計算的)。然而,在實際操作中,我們會取數據集的小部分,稱為小批量minibatches,並基於數據子集計算梯度。由於每次隨機選取子集,這種方法被稱為隨機梯度下降SGD

多層感知器與反向傳播

如上所述,單層網路能夠對線性可分的類別進行分類。為了構建更豐富的模型,我們可以將多層網路結合起來。數學上,這意味著函數 f 將具有更複雜的形式,並通過以下幾個步驟計算:

  • z1=w1x+b1
  • z2=w2α(z1)+b2
  • f = σ(z2)

這裡,α 是一個非線性激活函數σ 是 softmax 函數,參數為 θ=<w1,b1,w2,b2>。

梯度下降算法保持不變,但計算梯度會更加困難。根據鏈式求導法則,我們可以計算導數如下:

  • ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2)
  • ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1)

鏈式求導法則用於計算損失函數相對於參數的導數。

注意,所有這些表達式的最左部分是相同的,因此我們可以從損失函數開始,沿著計算圖“向後”有效地計算導數。因此,多層感知器的訓練方法被稱為反向傳播backpropagation簡稱“backprop”。

計算圖

TODO: 圖片引用

我們將在筆記本範例中更詳細地介紹反向傳播。

結論

在本課中,我們構建了自己的神經網路庫,並將其用於一個簡單的二維分類任務。

🚀 挑戰

在隨附的筆記本中,你將實現自己的框架來構建和訓練多層感知器。你將能夠詳細了解現代神經網路的運作方式。

請前往 OwnFramework 筆記本並完成相關內容。

課後測驗

複習與自學

反向傳播是人工智慧和機器學習中常用的算法,值得深入學習

作業

在本次實驗中,你需要使用本課中構建的框架來解決 MNIST 手寫數字分類問題。