StatQuest 筆記分享: 人工神經網路2 — 反向傳播法

DigNo Ape 數遊原人
IMU Framework Design
6 min readDec 30, 2022

承接上篇,輸入節點(Input Node)數值在權重(Weight)、偏誤(Bias)以及活化函數(Activation Function)的放大、縮小、轉置和調整下來得到輸出值。

Josh在本影片要來談談在反向傳播法(Backpropagation)中,權重、偏誤是如何被優化的? 本影片會概述反向傳播法的主要概念:

  1. 使用連鎖法則(Chain Rule)來計算導數(Derivatives)。

2. 使用得到的導數搭配梯度下降法(Gradient descent)得到優化的參數

首先,Josh先命名每個權重(w1, w2, w3 and w4) 和偏誤 (b1, b2 and b3)。通常來說,反向傳播法會從最後的參數開始進行。然而,由於此影片旨在討論反向傳播法的主要概念,因此Josh將討論如何在已知其他所有最佳解的情況下估算b3。(此影片中,綠色數值是優化後的,紅色則為尚未優化過的數值。)

如同Part1影片所教的,將劑量0至1的輸入值一一乘上w1 (3.34)後加上b1(-1.43),並代入Softplus活化函數,最後乘上w3 (-1.22)後得到以下的藍色曲線。

依照相同的步驟處理w2、b2和w4得到橘色曲線。

將藍色和橘色曲線合併後可得到以下綠色曲線(預測曲線)。

由於我們還尚未知道b3的數值,Josh先賦予其一個初始值b3 = 0。

我們可以計算出殘差平方(Squared Residuals)的總和來量化並評估目前的模型的優劣。殘差(Residual)是實際值和預測值之間的差異。

以b3 = 0為例,這時的殘差平方和為SSR = 20.4。

我們可以手動微調b3且算出不同情況的SSR,並將數值描點出來。

手動描點看似直白簡單但卻很耗時間,因此我們要借助上述的梯度下降法得到能優化SSR的b3。

回到原本SSR的公式,我們知道SSR = (observed1 — predicted1)² + (observed2 — predicted2)² + (observed3 — predicted3)²。我們可以將其簡化為以下的summation notation。

接著,我們要將預測值(predicted1, predicted2…,也就是綠色曲線)拆解成藍色曲線+橘色曲線+b3。

由於我們要用梯度下降法得到最佳的b3,我們必須對b3進行偏微分。由於SSR裡的predicted裡有b3的元素,我們會需要利用連鎖法則來解SSR對b3的偏微分。

我們可以將SSR對b3的偏微分拆解為: SSR對predicted的偏微分 *predicted對b3的偏微分。

  • SSR對predicted的偏微分: 利用連鎖法則能得到以下結果。
  • predicted對b3的偏微分: predicted = 藍色曲線+橘色曲線+b3;藍色曲線和橘色曲線可視為已知常數且與b3互相獨立,因此對b3為分會得到0。b3對b3為分會得到1。

依此邏輯可得到SSR對b3的偏微分的結果為下。

回到範例,在b3 = 0的情況,SSR對b3的偏微分為 -2 * (0 — -2.6) * 1 + -2 * (0 — -1.6) * 1 + -2 * (0 — -2.6) * 1 = -15.7。而這數值也是原本粉紅曲線的在b3 = 0這點的斜率(Slope) 。

在逐步調整的過程中,可以設定學習率(Learning Rate),以調整學習步長(Step Size)。在學習過程中,如果學習率太小,會造成學習步長小,容易訓練緩慢,學習率太大又容易造成學習步長太大而學習無法收斂。Josh在此影片中設定學習率為0.1,學習步長 = 0.1 * -15.7 = — 1.57。

這裡的學習步長是用來調b3,新的b3 = 目前的b3 — 學習步長。因此,新的b3 = 0 — (-1.57) = 1.57。得到新的b3後,也能調整原本的綠色曲線(預測曲線)往X軸移動。

獲得新的預測曲線後,就可以進行下一階段的偏微分,流程一樣

  1. 求SSR對b3的偏微分: -2 * (0 — -1.03) * 1 + -2 * (0 — -0.03) * 1 + -2 * (0 — -1.03) * 1 = -6.26 (粉紅曲線的在b3 = 1.5 這點的斜率(Slope) )。
  2. 求新的學習步長 = — 6.26 * 0.1 = -0.626。
  3. 求新的b3 = 1.57 — (-0.626) = 2.19。

反覆上述操作直到學習步長接近0。以此範例而言,在b3 = +2.61時學習步長會最接近0。

Thank you! Enjoy it :)

--

--