類神經網路:結構

如果您從 Feature Crosses 單元中記得,以下分類問題為非線性:

笛卡兒的情節。傳統的 x 軸會標示 'x1'。傳統的 Y 軸標有 'x2'。藍點代表西北方和東南方象限;黃色圓點則代表西南方和東北方象限。

圖 1. 非線性分類問題。

「非線性」是指若使用模型形式,就無法準確預測標籤 \(b + w_1x_1 + w_2x_2\) 。換句話說,「決策表面」並非線條,我們先前介紹的功能交集是模擬非線性問題的一種可能方法。

現在,請考慮下列資料集:

資料集包含許多橘色和許多藍點。很難判斷一致模式,但橙點點點點構成螺旋,而且藍點可能形成不同的螺旋。

圖 2. 非線性分類問題較為困難。

圖 2 中顯示的資料集無法透過線性模型解決。

如要瞭解類神經網路如何協助處理非線性問題,讓我們先將線性模型表示為圖形:

一列中的三個圓圈以箭頭連結一個綠色圓圈

圖 3. 線形圖。

每個藍色圓形代表輸入特徵,綠色圓圈代表輸入的加權總和。

我們該如何修改這個模型,才能改善處理非線性問題的能力?

隱藏的圖層

在以下圖表所示的模型中,我們新增了中介屬性值「隱藏層」。隱藏層中的每個黃色節點是藍色輸入節點值的加權總和。輸出結果為黃色節點的加權總和。

一列中的三個藍色圓圈

圖 4. 雙層模型的圖表。

這個模型是否線性?是的,輸出內容仍是輸入內容的線性組合。

在以下圖表所示的模型中,我們新增了第二個含有加權總和的隱藏層。

一列中的三個藍色圓圈

圖 5. 三層模型的圖表。

這個模型是否線性?是的。如果您將輸出內容表示為輸入的函式並簡化函式,則輸入的另一個加權總和。這個總和無法有效模擬圖 2 中非線性問題。

啟用函式

如要模擬非線性問題,可以直接導入非線性。我們可透過非線性函式來輸出每個隱藏層節點。

在以下圖表表示的模型中,「隱藏層 1」中每個節點的值都會先由非線性函式轉換,然後再傳遞到下一個圖層的加權總和。這個非線性函式稱為啟用函式。

與上圖相同,但兩個隱藏層之間新增了一個標示「'非線性轉換層'」的粉紅色圓圈。

圖 6. 含啟用函式的三層模型圖表。

現在我們新增了一個啟用函式,加入圖層會發揮更大的影響力。 運用非線性方式堆疊非線性方式,可讓模型和輸入輸出內容之間產生極為複雜的關係。簡單來說,每一層實際上都會比原始輸入學習更複雜、更高的層級函式。如果您想進一步探究這樣的運作原理,請參閱 Chris Olah' 出色的網誌文章

常見啟用函式

以下 sigmoid 啟用函式會將加權總值轉換成介於 0 至 1 之間的值。

$$F(x)=\frac{1} {1+e^{-x}}$$

以下為情節圖:

Sigmoid 函式

圖 7. Sigmoid 啟用函式。

下列經過修改的線性單位啟用函式 (簡稱 ReLU) 通常比 sigmoid 這類流暢函式略好一些,但運算作業也明顯容易。

$$F(x)=max(0,x)$$

ReLU 的優越性是基於實際發現,可能是由 ReLU 驅動的實用回應範圍。Sigmoid' 的反應速度在兩邊很快下降。

ReLU 啟用函式

圖 8. ReLU 啟用函式。

事實上,任何數學函式都可以當做啟用函式。假設 \(\sigma\) 代表我們的啟動函式 (Relu、Sigmoid 或其他)。因此,網路中的節點值是由以下公式提供:

$$\sigma(\boldsymbol w \cdot \boldsymbol x+b)$$

TensorFlow 支援許多啟用函式。您可以在 TensorFlow'原始類神經網路作業的包裝函式清單中找到這些啟用函式。儘管如此,我們仍建議從 ReLU 開始。

摘要

現在,我們的模型會以「類神經網路」來代表使用者的一般意義所有標準元件:

  • 一組節點與神經元相似,並以圖層分類。
  • 一組權重,代表每個類神經網路層與其圖層之間的連線。下方圖層可以是其他類神經網路層,或其他類型的圖層。
  • 一組偏誤,每個節點一個。
  • 可啟動圖層中每個節點輸出的啟用函式。不同圖層可有不同的啟用函式。

注意事項:類神經網路不一定比功能交叉更適合,但類神經網路確實提供了彈性,可在許多情況下派上用場。