類神經網路:節點和隱藏層

要建構一個學習非線性的神經網絡,首先從以下熟悉的模型結構開始:形如 $y' = b + w_1x_1 + w_2x_2 + w_3x_3$ 的線性模型

我們可以將這個方程式視覺化如下圖所示,其中 $x_1$、$x_2$ 和 $x_3$ 是我們的三個輸入節點(藍色),$y'$ 是我們的輸出節點(綠色)。

練習1

在上圖中,權重偏差值已隨機初始化。請完成以下任務,熟悉介面並探索線性模型。您可以暫時忽略「啟動函數」下拉式選單;我們將在本模組的後續部分討論此主題。

  1. 點選網路上方的播放(▶️)按鈕,計算輸入值 $x_1 = 1.00$、$x_2 = 2.00$ 和 $x_3 = 3.00$ 時輸出節點的值。

  2. 點選輸入層中的第二個節點,並將數值從 2.00 增加到 2.50。請注意,輸出節點的值會改變。選擇輸出節點(綠色),然後查看「計算」面板,以了解輸出值的計算方式。

  3. 點選輸出節點(綠色),查看權重($w_1$、$w_2$、$w_3$)和偏差($b$)參數值。降低權重 $w_3$ 的值(請注意,輸出節點的值和下面的計算結果已變更)。然後,增加偏差值。觀察這些變更對模型輸出的影響。

為網路添加層

請注意,在練習 1中調整網路權重和偏移值時,輸入和輸出之間的整體數學關係並沒有改變。我們的模型仍然是一個線性模型。

但是,如果我們在輸入層和輸出層之間再增加一層呢?在神經網路術語中,輸入層和輸出層之間的額外層稱為隱藏層,這些層中的節點稱為神經元

隱藏層中每個神經元的值計算方式與線性模型的輸出相同:將其所有輸入(前一層網路神經元的值)與一個唯一的權重參數相乘,然後求和,再加上偏壓項。類似地,下一層(此處為輸出層)神經元的值也是以隱藏層神經元的值作為輸入計算的。

這個新的隱藏層允許我們的模型使用另一組參數重新組合輸入資料。這能幫助我們的模型學習非線性關係嗎?

練習 2

我們在模型中加入了一個包含四個神經元的隱藏層。

點選網路上方的播放(▶️)按鈕,計算輸入值 $x_1 = 1.00$、$x_2 = 2.00$ 和 $x_3 = 3.00$ 時四個隱藏層節點和輸出節點的值。

然後探索該模型,並用它來回答下列問題。

這個神經網路模型有多少個參數(權重和偏差)?
4
我們在練習 1中的原始模型有四個參數: w11w21w31和 b。由於模型包含一個隱藏層,因此參數更多。
12
請注意,參數總數包括用於根據輸入值計算隱藏層節點值的參數,以及用於根據隱藏層節點值計算輸出值的參數。
16
請注意,參數總數包括權重參數和偏差參數。
21
隱藏層中每個節點的值都需要用到 4 個參數來計算:3 個權重(每個輸入值對應一個權重)和一個偏移項,總共 16 個參數。輸出值則需要用到 5 個參數:4 個權重(隱藏層中每個節點對應一個權重)和一個偏壓項。因此,此神經網路總共有 21 個參數。

嘗試修改模型參數,並觀察對隱藏層節點值和輸出值的影響(您可以查看下面的「計算」面板,以了解這些值是如何計算的)。

這個模型能學習非線性嗎?

是的
點擊隱藏層中的每個節點和輸出節點,並查看下面的計算過程。你注意到這些計算過程有什麼共同點嗎?

如果您點擊隱藏層中的每個節點並查看下面的計算,您會發現它們都是線性的(包括乘法和加法運算)。

如果您點擊輸出節點並查看下面的計算,您會發現該計算也是線性的。對線性計算的輸出進行線性計算仍然是線性的,這意味著模型無法學習非線性關係。