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