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





