1 深度前饋網(wǎng)絡(luò)
深度前饋網(wǎng)絡(luò)(deep?feedforward?network),也叫作前饋神經(jīng)網(wǎng)絡(luò)(feedforward?neural?network)或者多層感知機(jī)(multilayer?perceptron,MLP)。對(duì)深度前饋網(wǎng)絡(luò)的理解,從感知機(jī)的角度可能更易。感知機(jī)又被成為最簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò),顧名思義,多層感知機(jī)就是在感知機(jī)的基礎(chǔ)上設(shè)計(jì)添加了更多層。
前饋網(wǎng)絡(luò)的目標(biāo)是近似一個(gè)函數(shù),意思是說對(duì)于目標(biāo)函數(shù)
,網(wǎng)絡(luò)學(xué)習(xí)的最終目標(biāo)是輸出一個(gè)函數(shù)
,并且
盡可能接近
。舉個(gè)例子,一個(gè)二分類器
會(huì)將輸入
映射到一個(gè)類別
,前饋網(wǎng)絡(luò)會(huì)定義一個(gè)新的映射
,然后通過學(xué)習(xí)參數(shù)
的值,使得新的映射能夠得到最佳的函數(shù)映射。
對(duì)于深度前饋網(wǎng)絡(luò),如圖1.1,由輸入層、隱藏層、輸出層和各層之間的連接組成,其中隱藏層根據(jù)模型的大小和復(fù)雜程度可以設(shè)計(jì)成數(shù)量任意的多層,各層之間的連接一般實(shí)際表示特征的權(quán)重。“深度”是指一個(gè)神經(jīng)網(wǎng)絡(luò)模型通常是由不止一層組成的,設(shè)計(jì)的層數(shù)越多,深度就越大,模型也越復(fù)雜。對(duì)于前饋網(wǎng)絡(luò)中的“前饋”,因?yàn)榫W(wǎng)絡(luò)中的數(shù)據(jù)流向是單向的,?只會(huì)按照輸入層-隱藏層-輸出層的順序流動(dòng),即數(shù)據(jù)流經(jīng)當(dāng)前一層處理后,只會(huì)作為下一層的輸入流入,而不會(huì)對(duì)上一層有任何影響和反饋。如果當(dāng)前層會(huì)對(duì)前面一層給出反饋或影響,這樣的網(wǎng)絡(luò)模型叫做循環(huán)神經(jīng)網(wǎng)絡(luò)。
神經(jīng)網(wǎng)絡(luò)之所以被成為“網(wǎng)絡(luò)”,是因?yàn)槲覀兛梢哉J(rèn)為這樣的一個(gè)模型是由許多不同的函數(shù)復(fù)合在一起組成的,也就是說神經(jīng)網(wǎng)絡(luò)的每一層可以認(rèn)為是一個(gè)函數(shù),加上層與層之間的連接,就表示了多個(gè)函數(shù)復(fù)合在一起的過程。例如,對(duì)于一組輸入,我們希望得到的輸出是
,現(xiàn)在有三個(gè)函數(shù)
,那么經(jīng)過
的復(fù)合,就能產(chǎn)生近似的輸出,其中每一個(gè)函數(shù)就可以認(rèn)為是神經(jīng)網(wǎng)絡(luò)的一層。我們只關(guān)注模型的輸入和輸出,而對(duì)于具體的復(fù)合過程,也就是層與層之間的連接細(xì)節(jié)并不關(guān)注,因此將這層處理的層成為“隱藏層”。
2?從感知機(jī)到多層感知機(jī)
深度前饋網(wǎng)絡(luò)又叫多層感知機(jī),那么從很早就被提出的感知機(jī)模型到多層感知機(jī),有怎樣的區(qū)別和變化呢?
感知器(英語(yǔ):Perceptron)是Frank Rosenblatt在1957年就職于康奈爾航空實(shí)驗(yàn)室(Cornell Aeronautical Laboratory)時(shí)所發(fā)明的一種人工神經(jīng)網(wǎng)絡(luò)。它可以被視為一種最簡(jiǎn)單形式的前饋神經(jīng)網(wǎng)絡(luò),是一種二元線性分類器。
感知機(jī)最大的局限是只能處理線性的樣本空間,如圖2.1左,而對(duì)于線性不可分的數(shù)據(jù)無(wú)能為力。為了將線性不可分的樣本空間變換到線性可分,從而可以利用線性函數(shù)近似,就引入了隱藏層,即通
過隱藏層的處理,原有的樣本空間就變成了新的可以使用線性模型處理的樣本空間。
3?XOR問題
異或問題是指對(duì)于給定的兩個(gè)二進(jìn)制輸入,通過異或邏輯門得到一個(gè)預(yù)測(cè)輸出,當(dāng)輸入不相等時(shí)輸出1,否則輸出0。圖3.1展示了異或函數(shù)所有可能結(jié)果。
為什么這里是解決異或問題,而不是與、或問題?前者的樣本空間是非線性的,而與、或問題的樣本空間都是線性可分的,即通過引入一個(gè)線性函數(shù)就能解決,如圖3.2。
本問題的全部樣本空間是四個(gè)樣本點(diǎn):(0,0)(0,1)(1,0)(1,1),首先需要選取損失函數(shù),這里我們使用均方誤差函數(shù)(MSE)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)模型與其他機(jī)器學(xué)習(xí)算法一樣,一般都需要三個(gè)步驟:選擇一個(gè)優(yōu)化模型、確定代價(jià)函數(shù)和輸出單元的形式。那么,我們應(yīng)該怎樣選取優(yōu)化模型呢?一般說來,線性模型是優(yōu)先被考慮的,假如是線性函數(shù),
包含
和
,那么模型可以定義為:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
使用正規(guī)方程,可以解得。我們發(fā)現(xiàn)線性模型在任意一點(diǎn)都輸出0.5,所以線性模型不能用來表示XOR函數(shù)。根據(jù)已有經(jīng)驗(yàn),我們總是希望能夠通過使用一個(gè)線性模型來解決問題,但XOR問題的特征空間不允許這樣做,如果能夠使用一個(gè)模型來學(xué)習(xí)一個(gè)不同的特征空間,在這個(gè)新學(xué)得的空間上線性模型能夠表示這個(gè)解,那么問題就能得到解決,這樣的思路正是神經(jīng)網(wǎng)絡(luò)隱藏層的設(shè)計(jì)需要達(dá)到的目的。
為了學(xué)的一個(gè)新的特征空間,我們引入一個(gè)非常簡(jiǎn)單的前饋神經(jīng)網(wǎng)絡(luò),如圖3.3。該神經(jīng)網(wǎng)絡(luò)含
有一層隱藏層,包含兩個(gè)單元,對(duì)于輸入,神經(jīng)網(wǎng)絡(luò)將其變換到一個(gè)新的特征空間
,在新學(xué)得的空間中,使用一個(gè)線性模型就能得到期望的輸出
。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
完整的模型是
現(xiàn)在是明確的使用線性模型,那么
應(yīng)該是那種函數(shù)呢?
如果是線性的,那么前饋網(wǎng)絡(luò)作為一個(gè)整體對(duì)于輸入依然是線性的,因此
必須是非線性的。
神經(jīng)網(wǎng)絡(luò)通過仿射變換之后緊跟一個(gè)被成為激活函數(shù)的固定非線性函數(shù)來實(shí)現(xiàn)。定義:
,其中
是權(quán)重矩陣,
是偏置。
現(xiàn)代神經(jīng)網(wǎng)絡(luò)中,默認(rèn)推薦使用定義的整流線性單元作為激活函數(shù)。那么我們問題的整體模型就是:
? ? ? ? ? ? ? ? ? ? ? ? ? ?
至此,我們已經(jīng)導(dǎo)出了使用含有一層隱藏層的前饋神經(jīng)網(wǎng)絡(luò)解決異或問題的完整模型。最后給出XOR問題的一個(gè)解。