在下一節(jié)中,我將介紹一個能夠很好地分類手寫數(shù)字的神經(jīng)網(wǎng)絡(luò)。作為準(zhǔn)備, 為神經(jīng)網(wǎng)絡(luò)的不同部分命名是很有幫助的。假設(shè)我們有如下的網(wǎng)絡(luò):
就像之前提到的,網(wǎng)絡(luò)中最左邊的一層被稱為輸入層,這一層中的神經(jīng)元被稱為輸入神經(jīng)元,最右邊的一層或者輸出層包含輸出神經(jīng)元,在這個例子中,只有一個輸出神經(jīng)元。中間層被稱為隱含層,因為這一層中的神經(jīng)元既不輸入也不輸出。術(shù)語“隱含”也許聽起來有些神秘——第一次我聽到這個術(shù)語的時候我認(rèn)為它一定有些哲學(xué)或者數(shù)學(xué)意味——但是它的意思真的僅僅是“既不輸入也不輸出”。上面的神經(jīng)網(wǎng)絡(luò)只有一個隱層,但是有些神經(jīng)網(wǎng)絡(luò)有多個隱層。例如,下面這個四層網(wǎng)絡(luò)有兩個隱含層:
令人有些困惑的,由于歷史原因,像上面的這種多層神經(jīng)網(wǎng)絡(luò)有時被稱為多層感知機(jī)( multilayer perceptrons)或者MLPs,盡管組成它的是sigmoid神經(jīng)元而不是感知機(jī)。在本書中,我不會使用MLP這個術(shù)語,因為我認(rèn)為它令人困惑,但是我會提醒你它任然是存在的。
網(wǎng)絡(luò)中輸入和輸出層的設(shè)計往往很簡單。例如,假設(shè)我們視圖是識別一個手寫圖片是否寫的是“9”,一種設(shè)計神經(jīng)網(wǎng)絡(luò)很自然的方式是為輸入神經(jīng)元編碼圖片像素的強(qiáng)度。 如果圖片是64 x 64的灰度圖,像素強(qiáng)度按比例映射到0到1之間,使用64 x 64 = 4096個輸入神經(jīng)元輸入。輸出層將只含有一個神經(jīng)元,輸出值小于0.5意味著“輸入照片不是9”,值大于0.5表明“輸入圖片是9”。
雖然輸入和輸出層的設(shè)計通常很簡單,但是隱含層的設(shè)計就相當(dāng)?shù)挠兴囆g(shù)了。特別是,淡出總結(jié)一些簡單的規(guī)則作為隱層的設(shè)計是不對的。取而代之的是,神經(jīng)網(wǎng)絡(luò)工作者為隱含層開發(fā)了很多啟發(fā)式設(shè)計,這使得網(wǎng)絡(luò)符合預(yù)期。例如,這種啟發(fā)式方法可以用來幫助人們在隱層層數(shù)和訓(xùn)練網(wǎng)絡(luò)所需時間這兩者之間找到平衡。接下來在這本書中可以遇到好幾處這樣的啟發(fā)式設(shè)計。
目前為止,我們討論的神經(jīng)網(wǎng)絡(luò)均是把上一層的輸出作為下一層的輸入,像這樣的網(wǎng)絡(luò)被稱為前饋神經(jīng)網(wǎng)絡(luò),這意味著在網(wǎng)絡(luò)中沒有回路——信息總是向前傳播的,用不反向反饋。如果有了回路,最終的情況就是輸入依賴于輸出。這很難立理解,所以我們不允許出現(xiàn)這種情況。
然而,反饋回路在其它的一些人工神經(jīng)網(wǎng)絡(luò)中是可能的。這些模型被稱為遞歸神經(jīng)網(wǎng)絡(luò)。這種模型的關(guān)鍵在于神經(jīng)元在變?yōu)榉羌せ顟B(tài)之前會保持激活態(tài)一段有限的時間。這種激活態(tài)可以刺其他的神經(jīng)元,被激勵的神經(jīng)元在隨后的一段時間內(nèi)也會保持激活態(tài)。這會引起更多的的神經(jīng)元被激活,一段時間后我們將得到一個級聯(lián)的神經(jīng)元激活系統(tǒng)。在這樣一個模型中,回路不會引起問題,因為神經(jīng)元的輸出在一段時間之后才會影響到它的輸入,它不是實(shí)時的。
遞歸神經(jīng)網(wǎng)絡(luò)比前饋神經(jīng)網(wǎng)絡(luò)的影響小,部分原因是遞歸神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)算法不夠強(qiáng)大(至少目前為止)。但是遞歸神經(jīng)網(wǎng)絡(luò)任然是非常有趣的。他們比前饋神經(jīng)網(wǎng)絡(luò)更接近我們的大腦的工作方式。并且可以解決一些只能通過極度復(fù)雜的前饋神經(jīng)網(wǎng)絡(luò)解決的復(fù)雜問題。然而,限于本書的范圍,在本書中,我們會集中在使用更廣泛的前饋神經(jīng)網(wǎng)絡(luò)。