多層感知器
多層感知器(Multi Layer Perceptron,即 MLP)包括至少一個(gè)隱藏層(除了一個(gè)輸入層和一個(gè)輸出層以外)。單層感知器只能學(xué)習(xí)線性函數(shù),而多層感知器也可以學(xué)習(xí)非線性函數(shù)。

圖 4:有一個(gè)隱藏層的多層感知器
圖 4 表示了含有一個(gè)隱藏層的多層感知器。注意,所有的連接都有權(quán)重,但在圖中只標(biāo)記了三個(gè)權(quán)重(w0,,w1,w2)。
輸入層:輸入層有三個(gè)節(jié)點(diǎn)。偏置節(jié)點(diǎn)值為 1。其他兩個(gè)節(jié)點(diǎn)從 X1 和 X2 取外部輸入(皆為根據(jù)輸入數(shù)據(jù)集取的數(shù)字值)。和上文討論的一樣,在輸入層不進(jìn)行任何計(jì)算,所以輸入層節(jié)點(diǎn)的輸出是 1、X1 和 X2 三個(gè)值被傳入隱藏層。
隱藏層:隱藏層也有三個(gè)節(jié)點(diǎn),偏置節(jié)點(diǎn)輸出為 1。隱藏層其他兩個(gè)節(jié)點(diǎn)的輸出取決于輸入層的輸出(1,X1,X2)以及連接(邊界)所附的權(quán)重。圖 4 顯示了隱藏層(高亮)中一個(gè)輸出的計(jì)算。其他隱藏節(jié)點(diǎn)的輸出計(jì)算同理。需留意 *f *指代激活函數(shù)。這些輸出被傳入輸出層的節(jié)點(diǎn)。
輸出層:輸出層有兩個(gè)節(jié)點(diǎn),從隱藏層接收輸入,并執(zhí)行類似高亮出的隱藏層的計(jì)算。這些作為計(jì)算結(jié)果的計(jì)算值(Y1 和 Y2)就是多層感知器的輸出。
給出一系列特征 X = (x1, x2, ...) 和目標(biāo) Y,一個(gè)多層感知器可以以分類或者回歸為目的,學(xué)習(xí)到特征和目標(biāo)之間的關(guān)系。
為了更好的理解多層感知器,我們舉一個(gè)例子。假設(shè)我們有這樣一個(gè)學(xué)生分?jǐn)?shù)數(shù)據(jù)集:

兩個(gè)輸入欄表示了學(xué)生學(xué)習(xí)的時(shí)間和期中考試的分?jǐn)?shù)。最終結(jié)果欄可以有兩種值,1 或者 0,來(lái)表示學(xué)生是否通過(guò)的期末考試。例如,我們可以看到,如果學(xué)生學(xué)習(xí)了 35 個(gè)小時(shí)并在期中獲得了 67 分,他 / 她就會(huì)通過(guò)期末考試。
現(xiàn)在我們假設(shè)我們想預(yù)測(cè)一個(gè)學(xué)習(xí)了 25 個(gè)小時(shí)并在期中考試中獲得 70 分的學(xué)生是否能夠通過(guò)期末考試。
這是一個(gè)二元分類問(wèn)題,多層感知器可以從給定的樣本(訓(xùn)練數(shù)據(jù))進(jìn)行學(xué)習(xí),并且根據(jù)給出的新的數(shù)據(jù)點(diǎn),進(jìn)行準(zhǔn)確的預(yù)測(cè)。在下面我們可以看到一個(gè)多層感知器如何學(xué)習(xí)這種關(guān)系。
訓(xùn)練我們的多層感知器:反向傳播算法
反向傳播誤差,通常縮寫為「BackProp」,是幾種訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)的方法之一。這是一種監(jiān)督學(xué)習(xí)方法,即通過(guò)標(biāo)記的訓(xùn)練數(shù)據(jù)來(lái)學(xué)習(xí)(有監(jiān)督者來(lái)引導(dǎo)學(xué)習(xí))。
簡(jiǎn)單說(shuō)來(lái),BackProp 就像「從錯(cuò)誤中學(xué)習(xí)」。監(jiān)督者在人工神經(jīng)網(wǎng)絡(luò)犯錯(cuò)誤時(shí)進(jìn)行糾正。
一個(gè)人工神經(jīng)網(wǎng)絡(luò)包含多層的節(jié)點(diǎn);輸入層,中間隱藏層和輸出層。相鄰層節(jié)點(diǎn)的連接都有配有「權(quán)重」。學(xué)習(xí)的目的是為這些邊緣分配正確的權(quán)重。通過(guò)輸入向量,這些權(quán)重可以決定輸出向量。
在監(jiān)督學(xué)習(xí)中,訓(xùn)練集是已標(biāo)注的。這意味著對(duì)于一些給定的輸入,我們知道期望 / 期待的輸出(標(biāo)注)。
反向傳播算法:最初,所有的邊權(quán)重(edge weight)都是隨機(jī)分配的。對(duì)于所有訓(xùn)練數(shù)據(jù)集中的輸入,人工神經(jīng)網(wǎng)絡(luò)都被激活,并且觀察其輸出。這些輸出會(huì)和我們已知的、期望的輸出進(jìn)行比較,誤差會(huì)「?jìng)鞑ァ够厣弦粚?。該誤差會(huì)被標(biāo)注,權(quán)重也會(huì)被相應(yīng)的「調(diào)整」。該流程重復(fù),直到輸出誤差低于制定的標(biāo)準(zhǔn)。
上述算法結(jié)束后,我們就得到了一個(gè)學(xué)習(xí)過(guò)的人工神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)被認(rèn)為是可以接受「新」輸入的。該人工神經(jīng)網(wǎng)絡(luò)可以說(shuō)從幾個(gè)樣本(標(biāo)注數(shù)據(jù))和其錯(cuò)誤(誤差傳播)中得到了學(xué)習(xí)。
現(xiàn)在我們知道了反向傳播的原理,我們回到上面的學(xué)生分?jǐn)?shù)數(shù)據(jù)集。

圖 5:多層感知器的前向傳播
圖 5 中的多層感知器(修改自 Sebastian Raschka 漂亮的反向傳播算法圖解:https://github.com/rasbt/python-machine-learning-book/blob/master/faq/visual-backpropagation.md)的輸入層有兩個(gè)節(jié)點(diǎn)(除了偏置節(jié)點(diǎn)以外),兩個(gè)節(jié)點(diǎn)分別接收「學(xué)習(xí)小時(shí)數(shù)」和「期中考試分?jǐn)?shù)」。感知器也有一個(gè)包含兩個(gè)節(jié)點(diǎn)的隱藏層(除了偏置節(jié)點(diǎn)以外)。輸出層也有兩個(gè)節(jié)點(diǎn)——上面一個(gè)節(jié)點(diǎn)輸出「通過(guò)」的概率,下面一個(gè)節(jié)點(diǎn)輸出「不通過(guò)」的概率。
電子發(fā)燒友App












評(píng)論