摘要: 本文對多層感知器和反向傳播進行入門級的介紹。 人工神經網絡是一種計算模型,啟發自人類大腦處理信息的生物神經網絡。
人工神經網絡是一種計算模型,啟發自人類大腦處理信息的生物神經網絡。人工神經網絡在語音識別、計算機視覺和文本處理領域取得了一系列突破,讓機器學習研究和產業感到了興奮。在本篇博文中,我們將試圖理解一種稱為「多層感知器(Multi Layer Perceptron)」的特定的人工神經網絡。
?
單個神經元
神經網絡中計算的基本單元是神經元,一般稱作「節點」(node)或者「單元」(unit)。節點從其他節點接收輸入,或者從外部源接收輸入,然后計算輸出。每個輸入都輔有「權重」(weight,即 w),權重取決于其他輸入的相對重要性。節點將函數 f(定義如下)應用到加權后的輸入總和,如圖 1 所示:
圖 1:單個神經元
此網絡接受 X1 和 X2 的數值輸入,其權重分別為 w1 和 w2。另外,還有配有權重 b(稱為「偏置(bias)」)的輸入 1。我們之后會詳細介紹「偏置」的作用。
神經元的輸出 Y 如圖 1 所示進行計算。函數 f 是非線性的,叫做激活函數。激活函數的作用是將非線性引入神經元的輸出。因為大多數現實世界的數據都是非線性的,我們希望神經元能夠學習非線性的函數表示,所以這種應用至關重要。
每個(非線性)激活函數都接收一個數字,并進行特定、固定的數學計算 [2]。在實踐中,可能會碰到幾種激活函數:
Sigmoid(S 型激活函數):輸入一個實值,輸出一個 0 至 1 間的值 σ(x) = 1 / (1 + exp(?x))
tanh(雙曲正切函數):輸入一個實值,輸出一個 [-1,1] 間的值 tanh(x) = 2σ(2x) ? 1
ReLU:ReLU 代表修正線性單元。輸出一個實值,并設定 0 的閾值(函數會將負值變為零)f(x) = max(0, x)
下圖 [2] 表示了上述的激活函數
圖 2:不同的激活函數。
偏置的重要性:偏置的主要功能是為每一個節點提供可訓練的常量值(在節點接收的正常輸入以外)。神經元中偏置的作用,詳見這個鏈接:
前饋神經網絡
前饋神經網絡是最先發明也是最簡單的人工神經網絡 [3]。它包含了安排在多個層中的多個神經元(節點)。相鄰層的節點有連接或者邊(edge)。所有的連接都配有權重。
圖 3 是一個前饋神經網絡的例子。
圖 3: 一個前饋神經網絡的例子
一個前饋神經網絡可以包含三種節點:
1. 輸入節點(Input Nodes):輸入節點從外部世界提供信息,總稱為「輸入層」。在輸入節點中,不進行任何的計算——僅向隱藏節點傳遞信息。
2. 隱藏節點(Hidden Nodes):隱藏節點和外部世界沒有直接聯系(由此得名)。這些節點進行計算,并將信息從輸入節點傳遞到輸出節點。隱藏節點總稱為「隱藏層」。盡管一個前饋神經網絡只有一個輸入層和一個輸出層,但網絡里可以沒有也可以有多個隱藏層。
3. 輸出節點(Output Nodes):輸出節點總稱為「輸出層」,負責計算,并從網絡向外部世界傳遞信息。
在前饋網絡中,信息只單向移動——從輸入層開始前向移動,然后通過隱藏層(如果有的話),再到輸出層。在網絡中沒有循環或回路 [3](前饋神經網絡的這個屬性和遞歸神經網絡不同,后者的節點連接構成循環)。
下面是兩個前饋神經網絡的例子:
1. 單層感知器——這是最簡單的前饋神經網絡,不包含任何隱藏層。你可以在 [4] [5] [6] [7] 中了解更多關于單層感知器的知識。
2. 多層感知器——多層感知器有至少一個隱藏層。我們在下面會只討論多層感知器,因為在現在的實際應用中,它們比單層感知器要更有用。
評論