摘要:神經(jīng)網(wǎng)絡(luò)是一門重要的機(jī)器學(xué)習(xí)技術(shù)。它是目前最為火熱的研究方向–深度學(xué)習(xí)的基礎(chǔ)。
神經(jīng)網(wǎng)絡(luò)是一門重要的機(jī)器學(xué)習(xí)技術(shù)。它是目前最為火熱的研究方向–深度學(xué)習(xí)的基礎(chǔ)。學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)不僅可以讓你掌握一門強(qiáng)大的機(jī)器學(xué)習(xí)方法,同時(shí)也可以更好地幫助你理解深度學(xué)習(xí)技術(shù)。
本文以一種簡(jiǎn)單的,循序的方式講解神經(jīng)網(wǎng)絡(luò)。適合對(duì)神經(jīng)網(wǎng)絡(luò)了解不多的同學(xué)。本文對(duì)閱讀沒有一定的前提要求,但是懂一些機(jī)器學(xué)習(xí)基礎(chǔ)會(huì)更好地幫助理解本文。
神經(jīng)網(wǎng)絡(luò)是一種模擬人腦的神經(jīng)網(wǎng)絡(luò)以期能夠?qū)崿F(xiàn)類人工智能的機(jī)器學(xué)習(xí)技術(shù)。人腦中的神經(jīng)網(wǎng)絡(luò)是一個(gè)非常復(fù)雜的組織。成人的大腦中估計(jì)有1000億個(gè)神經(jīng)元之多。
那么機(jī)器學(xué)習(xí)中的神經(jīng)網(wǎng)絡(luò)是如何實(shí)現(xiàn)這種模擬的,并且達(dá)到一個(gè)驚人的良好效果的?通過(guò)本文,你可以了解到這些問(wèn)題的答案,同時(shí)還能知道神經(jīng)網(wǎng)絡(luò)的歷史,以及如何較好地學(xué)習(xí)它。
圖1 人腦神經(jīng)網(wǎng)絡(luò)
由于本文較長(zhǎng),為方便讀者,以下是本文的目錄:
一.前言
二.神經(jīng)元
三.單層神經(jīng)網(wǎng)絡(luò)(感知器)
四.兩層神經(jīng)網(wǎng)絡(luò)(多層感知器)
五.多層神經(jīng)網(wǎng)絡(luò)(深度學(xué)習(xí))
六.回顧
七.展望
八.總結(jié)
九.后記
十.備注
一、前言
讓我們來(lái)看一個(gè)經(jīng)典的神經(jīng)網(wǎng)絡(luò)。這是一個(gè)包含三個(gè)層次的神經(jīng)網(wǎng)絡(luò)。紅色的是輸入層,綠色的是輸出層,紫色的是中間層(也叫隱藏層)。輸入層有3個(gè)輸入單元,隱藏層有4個(gè)單元,輸出層有2個(gè)單元。后文中,我們統(tǒng)一使用這種顏色來(lái)表達(dá)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)。
圖2 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
在開始介紹前,有一些知識(shí)可以先記在心里:
設(shè)計(jì)一個(gè)神經(jīng)網(wǎng)絡(luò)時(shí),輸入層與輸出層的節(jié)點(diǎn)數(shù)往往是固定的,中間層則可以自由指定;
神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖中的拓?fù)渑c箭頭代表著預(yù)測(cè)過(guò)程時(shí)數(shù)據(jù)的流向,跟訓(xùn)練時(shí)的數(shù)據(jù)流有一定的區(qū)別;
結(jié)構(gòu)圖里的關(guān)鍵不是圓圈(代表“神經(jīng)元”),而是連接線(代表“神經(jīng)元”之間的連接)。每個(gè)連接線對(duì)應(yīng)一個(gè)不同的權(quán)重(其值稱為權(quán)值),這是需要訓(xùn)練得到的。
除了從左到右的形式表達(dá)的結(jié)構(gòu)圖,還有一種常見的表達(dá)形式是從下到上來(lái)表示一個(gè)神經(jīng)網(wǎng)絡(luò)。這時(shí)候,輸入層在圖的最下方。輸出層則在圖的最上方,如下圖:
圖3 從下到上的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
從左到右的表達(dá)形式以Andrew Ng和LeCun的文獻(xiàn)使用較多,Caffe里使用的則是從下到上的表達(dá)。在本文中使用Andrew Ng代表的從左到右的表達(dá)形式。
下面從簡(jiǎn)單的神經(jīng)元開始說(shuō)起,一步一步介紹神經(jīng)網(wǎng)絡(luò)復(fù)雜結(jié)構(gòu)的形成。
二、神經(jīng)元
1.引子
對(duì)于神經(jīng)元的研究由來(lái)已久,1904年生物學(xué)家就已經(jīng)知曉了神經(jīng)元的組成結(jié)構(gòu)。
一個(gè)神經(jīng)元通常具有多個(gè)樹突,主要用來(lái)接受傳入信息;而軸突只有一條,軸突尾端有許多軸突末梢可以給其他多個(gè)神經(jīng)元傳遞信息。軸突末梢跟其他神經(jīng)元的樹突產(chǎn)生連接,從而傳遞信號(hào)。這個(gè)連接的位置在生物學(xué)上叫做“突觸”。
人腦中的神經(jīng)元形狀可以用下圖做簡(jiǎn)單的說(shuō)明:
圖4 神經(jīng)元
1943年,心理學(xué)家McCulloch和數(shù)學(xué)家Pitts參考了生物神經(jīng)元的結(jié)構(gòu),發(fā)表了抽象的神經(jīng)元模型MP。在下文中,我們會(huì)具體介紹神經(jīng)元模型。
圖5 Warren McCulloch
Walter Pitts
2.結(jié)構(gòu)
神經(jīng)元模型是一個(gè)包含輸入,輸出與計(jì)算功能的模型。輸入可以類比為神經(jīng)元的樹突,而輸出可以類比為神經(jīng)元的軸突,計(jì)算則可以類比為細(xì)胞核。
下圖是一個(gè)典型的神經(jīng)元模型:包含有3個(gè)輸入,1個(gè)輸出,以及2個(gè)計(jì)算功能。
注意中間的箭頭線。這些線稱為“連接”。每個(gè)上有一個(gè)“權(quán)值”。
圖6 神經(jīng)元模型
連接是神經(jīng)元中最重要的東西。每一個(gè)連接上都有一個(gè)權(quán)重。
一個(gè)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練算法就是讓權(quán)重的值調(diào)整到最佳,以使得整個(gè)網(wǎng)絡(luò)的預(yù)測(cè)效果最好。
我們使用a來(lái)表示輸入,用w來(lái)表示權(quán)值。一個(gè)表示連接的有向箭頭可以這樣理解:在初端,傳遞的信號(hào)大小仍然是a,端中間有加權(quán)參數(shù)w,經(jīng)過(guò)這個(gè)加權(quán)后的信號(hào)會(huì)變成a*w,因此在連接的末端,信號(hào)的大小就變成了a*w。
在其他繪圖模型里,有向箭頭可能表示的是值的不變傳遞。而在神經(jīng)元模型里,每個(gè)有向箭頭表示的是值的加權(quán)傳遞。
圖7 連接(connection)
如果我們將神經(jīng)元圖中的所有變量用符號(hào)表示,并且寫出輸出的計(jì)算公式的話,就是下圖。
圖8 神經(jīng)元計(jì)算
可見z是在輸入和權(quán)值的線性加權(quán)和疊加了一個(gè)函數(shù)g的值。在MP模型里,函數(shù)g是sgn函數(shù),也就是取符號(hào)函數(shù)。這個(gè)函數(shù)當(dāng)輸入大于0時(shí),輸出1,否則輸出0。
下面對(duì)神經(jīng)元模型的圖進(jìn)行一些擴(kuò)展。首先將sum函數(shù)與sgn函數(shù)合并到一個(gè)圓圈里,代表神經(jīng)元的內(nèi)部計(jì)算。其次,把輸入a與輸出z寫到連接線的左上方,便于后面畫復(fù)雜的網(wǎng)絡(luò)。最后說(shuō)明,一個(gè)神經(jīng)元可以引出多個(gè)代表輸出的有向箭頭,但值都是一樣的。
神經(jīng)元可以看作一個(gè)計(jì)算與存儲(chǔ)單元。計(jì)算是神經(jīng)元對(duì)其的輸入進(jìn)行計(jì)算功能。存儲(chǔ)是神經(jīng)元會(huì)暫存計(jì)算結(jié)果,并傳遞到下一層。
圖9 神經(jīng)元擴(kuò)展
當(dāng)我們用“神經(jīng)元”組成網(wǎng)絡(luò)以后,描述網(wǎng)絡(luò)中的某個(gè)“神經(jīng)元”時(shí),我們更多地會(huì)用“單元”(unit)來(lái)指代。同時(shí)由于神經(jīng)網(wǎng)絡(luò)的表現(xiàn)形式是一個(gè)有向圖,有時(shí)也會(huì)用“節(jié)點(diǎn)”(node)來(lái)表達(dá)同樣的意思。
3.效果
神經(jīng)元模型的使用可以這樣理解:
我們有一個(gè)數(shù)據(jù),稱之為樣本。樣本有四個(gè)屬性,其中三個(gè)屬性已知,一個(gè)屬性未知。我們需要做的就是通過(guò)三個(gè)已知屬性預(yù)測(cè)未知屬性。
具體辦法就是使用神經(jīng)元的公式進(jìn)行計(jì)算。三個(gè)已知屬性的值是a1,a2,a3,未知屬性的值是z。z可以通過(guò)公式計(jì)算出來(lái)。
這里,已知的屬性稱之為特征,未知的屬性稱之為目標(biāo)。假設(shè)特征與目標(biāo)之間確實(shí)是線性關(guān)系,并且我們已經(jīng)得到表示這個(gè)關(guān)系的權(quán)值w1,w2,w3。那么,我們就可以通過(guò)神經(jīng)元模型預(yù)測(cè)新樣本的目標(biāo)。
4.影響
1943年發(fā)布的MP模型,雖然簡(jiǎn)單,但已經(jīng)建立了神經(jīng)網(wǎng)絡(luò)大廈的地基。但是,MP模型中,權(quán)重的值都是預(yù)先設(shè)置的,因此不能學(xué)習(xí)。
1949年心理學(xué)家Hebb提出了Hebb學(xué)習(xí)率,認(rèn)為人腦神經(jīng)細(xì)胞的突觸(也就是連接)上的強(qiáng)度上可以變化的。于是計(jì)算科學(xué)家們開始考慮用調(diào)整權(quán)值的方法來(lái)讓機(jī)器學(xué)習(xí)。這為后面的學(xué)習(xí)算法奠定了基礎(chǔ)。
圖10 Donald Olding Hebb
盡管神經(jīng)元模型與Hebb學(xué)習(xí)律都已誕生,但限于當(dāng)時(shí)的計(jì)算機(jī)能力,直到接近10年后,第一個(gè)真正意義的神經(jīng)網(wǎng)絡(luò)才誕生。
三、單層神經(jīng)網(wǎng)絡(luò)(感知器)
1.引子
1958年,計(jì)算科學(xué)家Rosenblatt提出了由兩層神經(jīng)元組成的神經(jīng)網(wǎng)絡(luò)。他給它起了一個(gè)名字–“感知器”(Perceptron)(有的文獻(xiàn)翻譯成“感知機(jī)”,下文統(tǒng)一用“感知器”來(lái)指代)。
感知器是當(dāng)時(shí)首個(gè)可以學(xué)習(xí)的人工神經(jīng)網(wǎng)絡(luò)。Rosenblatt現(xiàn)場(chǎng)演示了其學(xué)習(xí)識(shí)別簡(jiǎn)單圖像的過(guò)程,在當(dāng)時(shí)的社會(huì)引起了轟動(dòng)。
人們認(rèn)為已經(jīng)發(fā)現(xiàn)了智能的奧秘,許多學(xué)者和科研機(jī)構(gòu)紛紛投入到神經(jīng)網(wǎng)絡(luò)的研究中。美國(guó)軍方大力資助了神經(jīng)網(wǎng)絡(luò)的研究,并認(rèn)為神經(jīng)網(wǎng)絡(luò)比“原子彈工程”更重要。這段時(shí)間直到1969年才結(jié)束,這個(gè)時(shí)期可以看作神經(jīng)網(wǎng)絡(luò)的第一次高潮。
圖11 Rosenblat與感知器
2.結(jié)構(gòu)
下面來(lái)說(shuō)明感知器模型。
在原來(lái)MP模型的“輸入”位置添加神經(jīng)元節(jié)點(diǎn),標(biāo)志其為“輸入單元”。其余不變,于是我們就有了下圖:從本圖開始,我們將權(quán)值w1, w2, w3寫到“連接線”的中間。
圖12 單層神經(jīng)網(wǎng)絡(luò)
在“感知器”中,有兩個(gè)層次。分別是輸入層和輸出層。輸入層里的“輸入單元”只負(fù)責(zé)傳輸數(shù)據(jù),不做計(jì)算。輸出層里的“輸出單元”則需要對(duì)前面一層的輸入進(jìn)行計(jì)算。
我們把需要計(jì)算的層次稱之為“計(jì)算層”,并把擁有一個(gè)計(jì)算層的網(wǎng)絡(luò)稱之為“單層神經(jīng)網(wǎng)絡(luò)”。有一些文獻(xiàn)會(huì)按照網(wǎng)絡(luò)擁有的層數(shù)來(lái)命名,例如把“感知器”稱為兩層神經(jīng)網(wǎng)絡(luò)。但在本文里,我們根據(jù)計(jì)算層的數(shù)量來(lái)命名。
假如我們要預(yù)測(cè)的目標(biāo)不再是一個(gè)值,而是一個(gè)向量,例如[2,3]。那么可以在輸出層再增加一個(gè)“輸出單元”。
下圖顯示了帶有兩個(gè)輸出單元的單層神經(jīng)網(wǎng)絡(luò),其中輸出單元z1的計(jì)算公式如下圖。
圖13 單層神經(jīng)網(wǎng)絡(luò)(Z1)
可以看到,z1的計(jì)算跟原先的z并沒有區(qū)別。
我們已知一個(gè)神經(jīng)元的輸出可以向多個(gè)神經(jīng)元傳遞,因此z2的計(jì)算公式如下圖。
圖14 單層神經(jīng)網(wǎng)絡(luò)(Z2)
可以看到,z2的計(jì)算中除了三個(gè)新的權(quán)值:w4,w5,w6以外,其他與z1是一樣的。
整個(gè)網(wǎng)絡(luò)的輸出如下圖。
圖15 單層神經(jīng)網(wǎng)絡(luò)(Z1和Z2)
目前的表達(dá)公式有一點(diǎn)不讓人滿意的就是:w4,w5,w6是后來(lái)加的,很難表現(xiàn)出跟原先的w1,w2,w3的關(guān)系。
因此我們改用二維的下標(biāo),用wx,y來(lái)表達(dá)一個(gè)權(quán)值。下標(biāo)中的x代表后一層神經(jīng)元的序號(hào),而y代表前一層神經(jīng)元的序號(hào)(序號(hào)的順序從上到下)。
例如,w1,2代表后一層的第1個(gè)神經(jīng)元與前一層的第2個(gè)神經(jīng)元的連接的權(quán)值(這種標(biāo)記方式參照了Andrew Ng的課件)。根據(jù)以上方法標(biāo)記,我們有了下圖。
圖16 單層神經(jīng)網(wǎng)絡(luò)(擴(kuò)展)
如果我們仔細(xì)看輸出的計(jì)算公式,會(huì)發(fā)現(xiàn)這兩個(gè)公式就是線性代數(shù)方程組。因此可以用矩陣乘法來(lái)表達(dá)這兩個(gè)公式。
例如,輸入的變量是[a1,a2,a3]T(代表由a1,a2,a3組成的列向量),用向量a來(lái)表示。方程的左邊是[z1,z2]T,用向量z來(lái)表示。
系數(shù)則是矩陣W(2行3列的矩陣,排列形式與公式中的一樣)。
于是,輸出公式可以改寫成:
g(W*a) =z;
這個(gè)公式就是神經(jīng)網(wǎng)絡(luò)中從前一層計(jì)算后一層的矩陣運(yùn)算。
3.效果
與神經(jīng)元模型不同,感知器中的權(quán)值是通過(guò)訓(xùn)練得到的。因此,根據(jù)以前的知識(shí)我們知道,感知器類似一個(gè)邏輯回歸模型,可以做線性分類任務(wù)。
我們可以用決策分界來(lái)形象的表達(dá)分類的效果。決策分界就是在二維的數(shù)據(jù)平面中劃出一條直線,當(dāng)數(shù)據(jù)的維度是3維的時(shí)候,就是劃出一個(gè)平面,當(dāng)數(shù)據(jù)的維度是n維時(shí),就是劃出一個(gè)n-1維的超平面。
下圖顯示了在二維平面中劃出決策分界的效果,也就是感知器的分類效果。
圖17 單層神經(jīng)網(wǎng)絡(luò)(決策分界)
4.影響
感知器只能做簡(jiǎn)單的線性分類任務(wù)。但是當(dāng)時(shí)的人們熱情太過(guò)于高漲,并沒有人清醒的認(rèn)識(shí)到這點(diǎn)。于是,當(dāng)人工智能領(lǐng)域的巨擘Minsky指出這點(diǎn)時(shí),事態(tài)就發(fā)生了變化。
Minsky在1969年出版了一本叫《Perceptron》的書,里面用詳細(xì)的數(shù)學(xué)證明了感知器的弱點(diǎn),尤其是感知器對(duì)XOR(異或)這樣的簡(jiǎn)單分類任務(wù)都無(wú)法解決。
Minsky認(rèn)為,如果將計(jì)算層增加到兩層,計(jì)算量則過(guò)大,而且沒有有效的學(xué)習(xí)算法。所以,他認(rèn)為研究更深層的網(wǎng)絡(luò)是沒有價(jià)值的。
圖18 Marvin Minsky
由于Minsky的巨大影響力以及書中呈現(xiàn)的悲觀態(tài)度,讓很多學(xué)者和實(shí)驗(yàn)室紛紛放棄了神經(jīng)網(wǎng)絡(luò)的研究。神經(jīng)網(wǎng)絡(luò)的研究陷入了冰河期。這個(gè)時(shí)期又被稱為“AI winter”。
接近10年以后,對(duì)于兩層神經(jīng)網(wǎng)絡(luò)的研究才帶來(lái)神經(jīng)網(wǎng)絡(luò)的復(fù)蘇。
四、兩層神經(jīng)網(wǎng)絡(luò)(多層感知器)
1.引子
兩層神經(jīng)網(wǎng)絡(luò)是本文的重點(diǎn),因?yàn)檎窃谶@時(shí)候,神經(jīng)網(wǎng)絡(luò)開始了大范圍的推廣與使用。
Minsky說(shuō)過(guò)單層神經(jīng)網(wǎng)絡(luò)無(wú)法解決異或問(wèn)題。但是當(dāng)增加一個(gè)計(jì)算層以后,兩層神經(jīng)網(wǎng)絡(luò)不僅可以解決異或問(wèn)題,而且具有非常好的非線性分類效果。不過(guò)兩層神經(jīng)網(wǎng)絡(luò)的計(jì)算是一個(gè)問(wèn)題,沒有一個(gè)較好的解法。
1986年,Rumelhar和Hinton等人提出了反向傳播(Backpropagation,BP)算法,解決了兩層神經(jīng)網(wǎng)絡(luò)所需要的復(fù)雜計(jì)算量問(wèn)題,從而帶動(dòng)了業(yè)界使用兩層神經(jīng)網(wǎng)絡(luò)研究的熱潮。目前,大量的教授神經(jīng)網(wǎng)絡(luò)的教材,都是重點(diǎn)介紹兩層(帶一個(gè)隱藏層)神經(jīng)網(wǎng)絡(luò)的內(nèi)容。
這時(shí)候的Hinton還很年輕,30年以后,正是他重新定義了神經(jīng)網(wǎng)絡(luò),帶來(lái)了神經(jīng)網(wǎng)絡(luò)復(fù)蘇的又一春。
圖19 DavidRumelhart
Geoffery Hinton
2.結(jié)構(gòu)
兩層神經(jīng)網(wǎng)絡(luò)除了包含一個(gè)輸入層,一個(gè)輸出層以外,還增加了一個(gè)中間層。此時(shí),中間層和輸出層都是計(jì)算層。我們擴(kuò)展上節(jié)的單層神經(jīng)網(wǎng)絡(luò),在右邊新加一個(gè)層次(只含有一個(gè)節(jié)點(diǎn))。
現(xiàn)在,我們的權(quán)值矩陣增加到了兩個(gè),我們用上標(biāo)來(lái)區(qū)分不同層次之間的變量。
例如ax(y)代表第y層的第x個(gè)節(jié)點(diǎn)。z1,z2變成了a1(2),a2(2)。下圖給出了a1(2),a2(2)的計(jì)算公式。
圖20 兩層神經(jīng)網(wǎng)絡(luò)(中間層計(jì)算)
計(jì)算最終輸出z的方式是利用了中間層的a1(2),a2(2)和第二個(gè)權(quán)值矩陣計(jì)算得到的,如下圖。
圖21 兩層神經(jīng)網(wǎng)絡(luò)(輸出層計(jì)算)
假設(shè)我們的預(yù)測(cè)目標(biāo)是一個(gè)向量,那么與前面類似,只需要在“輸出層”再增加節(jié)點(diǎn)即可。
我們使用向量和矩陣來(lái)表示層次中的變量。a(1),a(2),z是網(wǎng)絡(luò)中傳輸?shù)南蛄繑?shù)據(jù)。W(1)和W(2)是網(wǎng)絡(luò)的矩陣參數(shù)。如下圖。
圖22 兩層神經(jīng)網(wǎng)絡(luò)(向量形式)
使用矩陣運(yùn)算來(lái)表達(dá)整個(gè)計(jì)算公式的話如下:
g(W(1)*a(1)) =a(2);
g(W(2)*a(2)) =z;
由此可見,使用矩陣運(yùn)算來(lái)表達(dá)是很簡(jiǎn)潔的,而且也不會(huì)受到節(jié)點(diǎn)數(shù)增多的影響(無(wú)論有多少節(jié)點(diǎn)參與運(yùn)算,乘法兩端都只有一個(gè)變量)。因此神經(jīng)網(wǎng)絡(luò)的教程中大量使用矩陣運(yùn)算來(lái)描述。
需要說(shuō)明的是,至今為止,我們對(duì)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)圖的討論中都沒有提到偏置節(jié)點(diǎn)(bias unit)。事實(shí)上,這些節(jié)點(diǎn)是默認(rèn)存在的。它本質(zhì)上是一個(gè)只含有存儲(chǔ)功能,且存儲(chǔ)值永遠(yuǎn)為1的單元。在神經(jīng)網(wǎng)絡(luò)的每個(gè)層次中,除了輸出層以外,都會(huì)含有這樣一個(gè)偏置單元。正如線性回歸模型與邏輯回歸模型中的一樣。
偏置單元與后一層的所有節(jié)點(diǎn)都有連接,我們?cè)O(shè)這些參數(shù)值為向量b,稱之為偏置。如下圖。
圖23 兩層神經(jīng)網(wǎng)絡(luò)(考慮偏置節(jié)點(diǎn))
可以看出,偏置節(jié)點(diǎn)很好認(rèn),因?yàn)槠錄]有輸入(前一層中沒有箭頭指向它)。有些神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)圖中會(huì)把偏置節(jié)點(diǎn)明顯畫出來(lái),有些不會(huì)。一般情況下,我們都不會(huì)明確畫出偏置節(jié)點(diǎn)。
在考慮了偏置以后的一個(gè)神經(jīng)網(wǎng)絡(luò)的矩陣運(yùn)算如下:
g(W(1)*a(1)+b(1)) =a(2);
g(W(2)*a(2)+b(2)) =z;
需要說(shuō)明的是,在兩層神經(jīng)網(wǎng)絡(luò)中,我們不再使用sgn函數(shù)作為函數(shù)g,而是使用平滑函數(shù)sigmoid作為函數(shù)g。我們把函數(shù)g也稱作激活函數(shù)(activefunction)。
事實(shí)上,神經(jīng)網(wǎng)絡(luò)的本質(zhì)就是通過(guò)參數(shù)與激活函數(shù)來(lái)擬合特征與目標(biāo)之間的真實(shí)函數(shù)關(guān)系。初學(xué)者可能認(rèn)為畫神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)圖是為了在程序中實(shí)現(xiàn)這些圓圈與線,但在一個(gè)神經(jīng)網(wǎng)絡(luò)的程序中,既沒有“線”這個(gè)對(duì)象,也沒有“單元”這個(gè)對(duì)象。實(shí)現(xiàn)一個(gè)神經(jīng)網(wǎng)絡(luò)最需要的是線性代數(shù)庫(kù)。
3.效果
與單層神經(jīng)網(wǎng)絡(luò)不同。理論證明,兩層神經(jīng)網(wǎng)絡(luò)可以無(wú)限逼近任意連續(xù)函數(shù)。
這是什么意思呢?也就是說(shuō),面對(duì)復(fù)雜的非線性分類任務(wù),兩層(帶一個(gè)隱藏層)神經(jīng)網(wǎng)絡(luò)可以分類的很好。
下面就是一個(gè)例子(此兩圖來(lái)自colah的博客),紅色的線與藍(lán)色的線代表數(shù)據(jù)。而紅色區(qū)域和藍(lán)色區(qū)域代表由神經(jīng)網(wǎng)絡(luò)劃開的區(qū)域,兩者的分界線就是決策分界。
圖24 兩層神經(jīng)網(wǎng)絡(luò)(決策分界)
可以看到,這個(gè)兩層神經(jīng)網(wǎng)絡(luò)的決策分界是非常平滑的曲線,而且分類的很好。
有趣的是,前面已經(jīng)學(xué)到過(guò),單層網(wǎng)絡(luò)只能做線性分類任務(wù)。而兩層神經(jīng)網(wǎng)絡(luò)中的后一層也是線性分類層,應(yīng)該只能做線性分類任務(wù)。為什么兩個(gè)線性分類任務(wù)結(jié)合就可以做非線性分類任務(wù)?
我們可以把輸出層的決策分界單獨(dú)拿出來(lái)看一下。就是下圖。
圖25 兩層神經(jīng)網(wǎng)絡(luò)(空間變換)
可以看到,輸出層的決策分界仍然是直線。關(guān)鍵就是,從輸入層到隱藏層時(shí),數(shù)據(jù)發(fā)生了空間變換。也就是說(shuō),兩層神經(jīng)網(wǎng)絡(luò)中,隱藏層對(duì)原始的數(shù)據(jù)進(jìn)行了一個(gè)空間變換,使其可以被線性分類,然后輸出層的決策分界劃出了一個(gè)線性分類分界線,對(duì)其進(jìn)行分類。
這樣就導(dǎo)出了兩層神經(jīng)網(wǎng)絡(luò)可以做非線性分類的關(guān)鍵–隱藏層。聯(lián)想到我們一開始推導(dǎo)出的矩陣公式,我們知道,矩陣和向量相乘,本質(zhì)上就是對(duì)向量的坐標(biāo)空間進(jìn)行一個(gè)變換。因此,隱藏層的參數(shù)矩陣的作用就是使得數(shù)據(jù)的原始坐標(biāo)空間從線性不可分,轉(zhuǎn)換成了線性可分。
兩層神經(jīng)網(wǎng)絡(luò)通過(guò)兩層的線性模型模擬了數(shù)據(jù)內(nèi)真實(shí)的非線性函數(shù)。因此,多層的神經(jīng)網(wǎng)絡(luò)的本質(zhì)就是復(fù)雜函數(shù)擬合。
下面來(lái)討論一下隱藏層的節(jié)點(diǎn)數(shù)設(shè)計(jì)。在設(shè)計(jì)一個(gè)神經(jīng)網(wǎng)絡(luò)時(shí),輸入層的節(jié)點(diǎn)數(shù)需要與特征的維度匹配,輸出層的節(jié)點(diǎn)數(shù)要與目標(biāo)的維度匹配。而中間層的節(jié)點(diǎn)數(shù),卻是由設(shè)計(jì)者指定的。因此,“自由”把握在設(shè)計(jì)者的手中。但是,節(jié)點(diǎn)數(shù)設(shè)置的多少,卻會(huì)影響到整個(gè)模型的效果。如何決定這個(gè)自由層的節(jié)點(diǎn)數(shù)呢?目前業(yè)界沒有完善的理論來(lái)指導(dǎo)這個(gè)決策。一般是根據(jù)經(jīng)驗(yàn)來(lái)設(shè)置。較好的方法就是預(yù)先設(shè)定幾個(gè)可選值,通過(guò)切換這幾個(gè)值來(lái)看整個(gè)模型的預(yù)測(cè)效果,選擇效果最好的值作為最終選擇。這種方法又叫做GridSearch(網(wǎng)格搜索)。
了解了兩層神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)以后,我們就可以看懂其它類似的結(jié)構(gòu)圖。例如EasyPR字符識(shí)別網(wǎng)絡(luò)架構(gòu)(下圖)。
圖26 EasyPR字符識(shí)別網(wǎng)絡(luò)
EasyPR使用了字符的圖像去進(jìn)行字符文字的識(shí)別。輸入是120維的向量。輸出是要預(yù)測(cè)的文字類別,共有65類。根據(jù)實(shí)驗(yàn),我們測(cè)試了一些隱藏層數(shù)目,發(fā)現(xiàn)當(dāng)值為40時(shí),整個(gè)網(wǎng)絡(luò)在測(cè)試集上的效果較好,因此選擇網(wǎng)絡(luò)的最終結(jié)構(gòu)就是120,40,65。
4.訓(xùn)練
下面簡(jiǎn)單介紹一下兩層神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。
在Rosenblat提出的感知器模型中,模型中的參數(shù)可以被訓(xùn)練,但是使用的方法較為簡(jiǎn)單,并沒有使用目前機(jī)器學(xué)習(xí)中通用的方法,這導(dǎo)致其擴(kuò)展性與適用性非常有限。從兩層神經(jīng)網(wǎng)絡(luò)開始,神經(jīng)網(wǎng)絡(luò)的研究人員開始使用機(jī)器學(xué)習(xí)相關(guān)的技術(shù)進(jìn)行神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。例如用大量的數(shù)據(jù)(1000-10000左右),使用算法進(jìn)行優(yōu)化等等,從而使得模型訓(xùn)練可以獲得性能與數(shù)據(jù)利用上的雙重優(yōu)勢(shì)。
機(jī)器學(xué)習(xí)模型訓(xùn)練的目的,就是使得參數(shù)盡可能的與真實(shí)的模型逼近。具體做法是這樣的。首先給所有參數(shù)賦上隨機(jī)值。我們使用這些隨機(jī)生成的參數(shù)值,來(lái)預(yù)測(cè)訓(xùn)練數(shù)據(jù)中的樣本。樣本的預(yù)測(cè)目標(biāo)為yp,真實(shí)目標(biāo)為y。那么,定義一個(gè)值loss,計(jì)算公式如下。
loss = (yp- y)2
這個(gè)值稱之為損失(loss),我們的目標(biāo)就是使對(duì)所有訓(xùn)練數(shù)據(jù)的損失和盡可能的小。
如果將先前的神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)的矩陣公式帶入到y(tǒng)p中(因?yàn)橛衵=yp),那么我們可以把損失寫為關(guān)于參數(shù)(parameter)的函數(shù),這個(gè)函數(shù)稱之為損失函數(shù)(loss function)。下面的問(wèn)題就是求:如何優(yōu)化參數(shù),能夠讓損失函數(shù)的值最小。
此時(shí)這個(gè)問(wèn)題就被轉(zhuǎn)化為一個(gè)優(yōu)化問(wèn)題。一個(gè)常用方法就是高等數(shù)學(xué)中的求導(dǎo),但是這里的問(wèn)題由于參數(shù)不止一個(gè),求導(dǎo)后計(jì)算導(dǎo)數(shù)等于0的運(yùn)算量很大,所以一般來(lái)說(shuō)解決這個(gè)優(yōu)化問(wèn)題使用的是梯度下降算法。梯度下降算法每次計(jì)算參數(shù)在當(dāng)前的梯度,然后讓參數(shù)向著梯度的反方向前進(jìn)一段距離,不斷重復(fù),直到梯度接近零時(shí)截止。一般這個(gè)時(shí)候,所有的參數(shù)恰好達(dá)到使損失函數(shù)達(dá)到一個(gè)最低值的狀態(tài)。
在神經(jīng)網(wǎng)絡(luò)模型中,由于結(jié)構(gòu)復(fù)雜,每次計(jì)算梯度的代價(jià)很大。因此還需要使用反向傳播算法。反向傳播算法是利用了神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)進(jìn)行的計(jì)算。不一次計(jì)算所有參數(shù)的梯度,而是從后往前。首先計(jì)算輸出層的梯度,然后是第二個(gè)參數(shù)矩陣的梯度,接著是中間層的梯度,再然后是第一個(gè)參數(shù)矩陣的梯度,最后是輸入層的梯度。計(jì)算結(jié)束以后,所要的兩個(gè)參數(shù)矩陣的梯度就都有了。
反向傳播算法可以直觀的理解為下圖。梯度的計(jì)算從后往前,一層層反向傳播。前綴E代表著相對(duì)導(dǎo)數(shù)的意思。
圖27 反向傳播算法
反向傳播算法的啟示是數(shù)學(xué)中的鏈?zhǔn)椒▌t。在此需要說(shuō)明的是,盡管早期神經(jīng)網(wǎng)絡(luò)的研究人員努力從生物學(xué)中得到啟發(fā),但從BP算法開始,研究者們更多地從數(shù)學(xué)上尋求問(wèn)題的最優(yōu)解。不再盲目模擬人腦網(wǎng)絡(luò)是神經(jīng)網(wǎng)絡(luò)研究走向成熟的標(biāo)志。正如科學(xué)家們可以從鳥類的飛行中得到啟發(fā),但沒有必要一定要完全模擬鳥類的飛行方式,也能制造可以飛天的飛機(jī)。
優(yōu)化問(wèn)題只是訓(xùn)練中的一個(gè)部分。機(jī)器學(xué)習(xí)問(wèn)題之所以稱為學(xué)習(xí)問(wèn)題,而不是優(yōu)化問(wèn)題,就是因?yàn)樗粌H要求數(shù)據(jù)在訓(xùn)練集上求得一個(gè)較小的誤差,在測(cè)試集上也要表現(xiàn)好。因?yàn)槟P妥罱K是要部署到?jīng)]有見過(guò)訓(xùn)練數(shù)據(jù)的真實(shí)場(chǎng)景。提升模型在測(cè)試集上的預(yù)測(cè)效果的主題叫做泛化(generalization),相關(guān)方法被稱作正則化(regularization)。神經(jīng)網(wǎng)絡(luò)中常用的泛化技術(shù)有權(quán)重衰減等。
5.影響
兩層神經(jīng)網(wǎng)絡(luò)在多個(gè)地方的應(yīng)用說(shuō)明了其效用與價(jià)值。10年前困擾神經(jīng)網(wǎng)絡(luò)界的異或問(wèn)題被輕松解決。神經(jīng)網(wǎng)絡(luò)在這個(gè)時(shí)候,已經(jīng)可以發(fā)力于語(yǔ)音識(shí)別,圖像識(shí)別,自動(dòng)駕駛等多個(gè)領(lǐng)域。
歷史總是驚人的相似,神經(jīng)網(wǎng)絡(luò)的學(xué)者們?cè)俅蔚巧狭恕都~約時(shí)報(bào)》的專訪。人們認(rèn)為神經(jīng)網(wǎng)絡(luò)可以解決許多問(wèn)題。就連娛樂(lè)界都開始受到了影響,當(dāng)年的《終結(jié)者》電影中的阿諾都趕時(shí)髦地說(shuō)一句:我的CPU是一個(gè)神經(jīng)網(wǎng)絡(luò)處理器,一個(gè)會(huì)學(xué)習(xí)的計(jì)算機(jī)。
但是神經(jīng)網(wǎng)絡(luò)仍然存在若干的問(wèn)題:盡管使用了BP算法,一次神經(jīng)網(wǎng)絡(luò)的訓(xùn)練仍然耗時(shí)太久,而且困擾訓(xùn)練優(yōu)化的一個(gè)問(wèn)題就是局部最優(yōu)解問(wèn)題,這使得神經(jīng)網(wǎng)絡(luò)的優(yōu)化較為困難。同時(shí),隱藏層的節(jié)點(diǎn)數(shù)需要調(diào)參,這使得使用不太方便,工程和研究人員對(duì)此多有抱怨。
90年代中期,由Vapnik等人發(fā)明的SVM(Support Vector Machines,支持向量機(jī))算法誕生,很快就在若干個(gè)方面體現(xiàn)出了對(duì)比神經(jīng)網(wǎng)絡(luò)的優(yōu)勢(shì):無(wú)需調(diào)參;高效;全局最優(yōu)解。基于以上種種理由,SVM迅速打敗了神經(jīng)網(wǎng)絡(luò)算法成為主流。
圖28 Vladimir Vapnik
神經(jīng)網(wǎng)絡(luò)的研究再次陷入了冰河期。當(dāng)時(shí),只要你的論文中包含神經(jīng)網(wǎng)絡(luò)相關(guān)的字眼,非常容易被會(huì)議和期刊拒收,研究界那時(shí)對(duì)神經(jīng)網(wǎng)絡(luò)的不待見可想而知。
五、多層神經(jīng)網(wǎng)絡(luò)(深度學(xué)習(xí))
1.引子
在被人摒棄的10年中,有幾個(gè)學(xué)者仍然在堅(jiān)持研究。這其中的棋手就是加拿大多倫多大學(xué)的Geoffery Hinton教授。
2006年,Hinton在《Science》和相關(guān)期刊上發(fā)表了論文,首次提出了“深度信念網(wǎng)絡(luò)”的概念。與傳統(tǒng)的訓(xùn)練方式不同,“深度信念網(wǎng)絡(luò)”有一個(gè)“預(yù)訓(xùn)練”(pre-training)的過(guò)程,這可以方便的讓神經(jīng)網(wǎng)絡(luò)中的權(quán)值找到一個(gè)接近最優(yōu)解的值,之后再使用“微調(diào)”(fine-tuning)技術(shù)來(lái)對(duì)整個(gè)網(wǎng)絡(luò)進(jìn)行優(yōu)化訓(xùn)練。這兩個(gè)技術(shù)的運(yùn)用大幅度減少了訓(xùn)練多層神經(jīng)網(wǎng)絡(luò)的時(shí)間。他給多層神經(jīng)網(wǎng)絡(luò)相關(guān)的學(xué)習(xí)方法賦予了一個(gè)新名詞–“深度學(xué)習(xí)”。
很快,深度學(xué)習(xí)在語(yǔ)音識(shí)別領(lǐng)域暫露頭角。接著,2012年,深度學(xué)習(xí)技術(shù)又在圖像識(shí)別領(lǐng)域大展拳腳。Hinton與他的學(xué)生在ImageNet競(jìng)賽中,用多層的卷積神經(jīng)網(wǎng)絡(luò)成功地對(duì)包含一千類別的一百萬(wàn)張圖片進(jìn)行了訓(xùn)練,取得了分類錯(cuò)誤率15%的好成績(jī),這個(gè)成績(jī)比第二名高了近11個(gè)百分點(diǎn),充分證明了多層神經(jīng)網(wǎng)絡(luò)識(shí)別效果的優(yōu)越性。
在這之后,關(guān)于深度神經(jīng)網(wǎng)絡(luò)的研究與應(yīng)用不斷涌現(xiàn)。
圖29 Geoffery Hinton
由于篇幅原因,本文不介紹CNN(Conventional Neural Network,卷積神經(jīng)網(wǎng)絡(luò))與RNN(Recurrent Neural Network,遞歸神經(jīng)網(wǎng)絡(luò))的架構(gòu),下面我們只討論普通的多層神經(jīng)網(wǎng)絡(luò)。
2.結(jié)構(gòu)
我們延續(xù)兩層神經(jīng)網(wǎng)絡(luò)的方式來(lái)設(shè)計(jì)一個(gè)多層神經(jīng)網(wǎng)絡(luò)。
在兩層神經(jīng)網(wǎng)絡(luò)的輸出層后面,繼續(xù)添加層次。原來(lái)的輸出層變成中間層,新加的層次成為新的輸出層。所以可以得到下圖。
圖30 多層神經(jīng)網(wǎng)絡(luò)
依照這樣的方式不斷添加,我們可以得到更多層的多層神經(jīng)網(wǎng)絡(luò)。公式推導(dǎo)的話其實(shí)跟兩層神經(jīng)網(wǎng)絡(luò)類似,使用矩陣運(yùn)算的話就僅僅是加一個(gè)公式而已。
在已知輸入a(1),參數(shù)W(1),W(2),W(3)的情況下,輸出z的推導(dǎo)公式如下:
g(W(1)*a(1)) =a(2);
g(W(2)*a(2)) =a(3);
g(W(3)*a(3)) =z;
多層神經(jīng)網(wǎng)絡(luò)中,輸出也是按照一層一層的方式來(lái)計(jì)算。從最外面的層開始,算出所有單元的值以后,再繼續(xù)計(jì)算更深一層。只有當(dāng)前層所有單元的值都計(jì)算完畢以后,才會(huì)算下一層。有點(diǎn)像計(jì)算向前不斷推進(jìn)的感覺。所以這個(gè)過(guò)程叫做“正向傳播”。
下面討論一下多層神經(jīng)網(wǎng)絡(luò)中的參數(shù)。
首先我們看第一張圖,可以看出W(1)中有6個(gè)參數(shù),W(2)中有4個(gè)參數(shù),W(3)中有6個(gè)參數(shù),所以整個(gè)神經(jīng)網(wǎng)絡(luò)中的參數(shù)有16個(gè)(這里我們不考慮偏置節(jié)點(diǎn),下同)。
圖31 多層神經(jīng)網(wǎng)絡(luò)(較少參數(shù))
假設(shè)我們將中間層的節(jié)點(diǎn)數(shù)做一下調(diào)整。第一個(gè)中間層改為3個(gè)單元,第二個(gè)中間層改為4個(gè)單元。
經(jīng)過(guò)調(diào)整以后,整個(gè)網(wǎng)絡(luò)的參數(shù)變成了33個(gè)。
圖32 多層神經(jīng)網(wǎng)絡(luò)(較多參數(shù))
雖然層數(shù)保持不變,但是第二個(gè)神經(jīng)網(wǎng)絡(luò)的參數(shù)數(shù)量卻是第一個(gè)神經(jīng)網(wǎng)絡(luò)的接近兩倍之多,從而帶來(lái)了更好的表示(represention)能力。表示能力是多層神經(jīng)網(wǎng)絡(luò)的一個(gè)重要性質(zhì),下面會(huì)做介紹。
在參數(shù)一致的情況下,我們也可以獲得一個(gè)“更深”的網(wǎng)絡(luò)。
圖33 多層神經(jīng)網(wǎng)絡(luò)(更深的層次)
上圖的網(wǎng)絡(luò)中,雖然參數(shù)數(shù)量仍然是33,但卻有4個(gè)中間層,是原來(lái)層數(shù)的接近兩倍。這意味著一樣的參數(shù)數(shù)量,可以用更深的層次去表達(dá)。
3.效果
與兩層層神經(jīng)網(wǎng)絡(luò)不同。多層神經(jīng)網(wǎng)絡(luò)中的層數(shù)增加了很多。
增加更多的層次有什么好處?更深入的表示特征,以及更強(qiáng)的函數(shù)模擬能力。
更深入的表示特征可以這樣理解,隨著網(wǎng)絡(luò)的層數(shù)增加,每一層對(duì)于前一層次的抽象表示更深入。在神經(jīng)網(wǎng)絡(luò)中,每一層神經(jīng)元學(xué)習(xí)到的是前一層神經(jīng)元值的更抽象的表示。例如第一個(gè)隱藏層學(xué)習(xí)到的是“邊緣”的特征,第二個(gè)隱藏層學(xué)習(xí)到的是由“邊緣”組成的“形狀”的特征,第三個(gè)隱藏層學(xué)習(xí)到的是由“形狀”組成的“圖案”的特征,最后的隱藏層學(xué)習(xí)到的是由“圖案”組成的“目標(biāo)”的特征。通過(guò)抽取更抽象的特征來(lái)對(duì)事物進(jìn)行區(qū)分,從而獲得更好的區(qū)分與分類能力。
關(guān)于逐層特征學(xué)習(xí)的例子,可以參考下圖。
圖34 多層神經(jīng)網(wǎng)絡(luò)(特征學(xué)習(xí))
更強(qiáng)的函數(shù)模擬能力是由于隨著層數(shù)的增加,整個(gè)網(wǎng)絡(luò)的參數(shù)就越多。而神經(jīng)網(wǎng)絡(luò)其實(shí)本質(zhì)就是模擬特征與目標(biāo)之間的真實(shí)關(guān)系函數(shù)的方法,更多的參數(shù)意味著其模擬的函數(shù)可以更加的復(fù)雜,可以有更多的容量(capcity)去擬合真正的關(guān)系。
通過(guò)研究發(fā)現(xiàn),在參數(shù)數(shù)量一樣的情況下,更深的網(wǎng)絡(luò)往往具有比淺層的網(wǎng)絡(luò)更好的識(shí)別效率。這點(diǎn)也在ImageNet的多次大賽中得到了證實(shí)。從2012年起,每年獲得ImageNet冠軍的深度神經(jīng)網(wǎng)絡(luò)的層數(shù)逐年增加,2015年最好的方法GoogleNet是一個(gè)多達(dá)22層的神經(jīng)網(wǎng)絡(luò)。
在最新一屆的ImageNet大賽上,目前拿到最好成績(jī)的MSRA團(tuán)隊(duì)的方法使用的更是一個(gè)深達(dá)152層的網(wǎng)絡(luò)!關(guān)于這個(gè)方法更多的信息有興趣的可以查閱ImageNet網(wǎng)站。
4.訓(xùn)練
在單層神經(jīng)網(wǎng)絡(luò)時(shí),我們使用的激活函數(shù)是sgn函數(shù)。到了兩層神經(jīng)網(wǎng)絡(luò)時(shí),我們使用的最多的是sigmoid函數(shù)。而到了多層神經(jīng)網(wǎng)絡(luò)時(shí),通過(guò)一系列的研究發(fā)現(xiàn),ReLU函數(shù)在訓(xùn)練多層神經(jīng)網(wǎng)絡(luò)時(shí),更容易收斂,并且預(yù)測(cè)性能更好。因此,目前在深度學(xué)習(xí)中,最流行的非線性函數(shù)是ReLU函數(shù)。ReLU函數(shù)不是傳統(tǒng)的非線性函數(shù),而是分段線性函數(shù)。其表達(dá)式非常簡(jiǎn)單,就是y=max(x,0)。簡(jiǎn)而言之,在x大于0,輸出就是輸入,而在x小于0時(shí),輸出就保持為0。這種函數(shù)的設(shè)計(jì)啟發(fā)來(lái)自于生物神經(jīng)元對(duì)于激勵(lì)的線性響應(yīng),以及當(dāng)?shù)陀谀硞€(gè)閾值后就不再響應(yīng)的模擬。
在多層神經(jīng)網(wǎng)絡(luò)中,訓(xùn)練的主題仍然是優(yōu)化和泛化。當(dāng)使用足夠強(qiáng)的計(jì)算芯片(例如GPU圖形加速卡)時(shí),梯度下降算法以及反向傳播算法在多層神經(jīng)網(wǎng)絡(luò)中的訓(xùn)練中仍然工作的很好。目前學(xué)術(shù)界主要的研究既在于開發(fā)新的算法,也在于對(duì)這兩個(gè)算法進(jìn)行不斷的優(yōu)化,例如,增加了一種帶動(dòng)量因子(momentum)的梯度下降算法。
在深度學(xué)習(xí)中,泛化技術(shù)變的比以往更加的重要。這主要是因?yàn)樯窠?jīng)網(wǎng)絡(luò)的層數(shù)增加了,參數(shù)也增加了,表示能力大幅度增強(qiáng),很容易出現(xiàn)過(guò)擬合現(xiàn)象。因此正則化技術(shù)就顯得十分重要。目前,Dropout技術(shù),以及數(shù)據(jù)擴(kuò)容(Data-Augmentation)技術(shù)是目前使用的最多的正則化技術(shù)。
5.影響
目前,深度神經(jīng)網(wǎng)絡(luò)在人工智能界占據(jù)統(tǒng)治地位。但凡有關(guān)人工智能的產(chǎn)業(yè)報(bào)道,必然離不開深度學(xué)習(xí)。神經(jīng)網(wǎng)絡(luò)界當(dāng)下的四位引領(lǐng)者除了前文所說(shuō)的Ng,Hinton以外,還有CNN的發(fā)明人Yann Lecun,以及《Deep Learning》的作者Bengio。
前段時(shí)間一直對(duì)人工智能持謹(jǐn)慎態(tài)度的馬斯克,搞了一個(gè)OpenAI項(xiàng)目,邀請(qǐng)Bengio作為高級(jí)顧問(wèn)。馬斯克認(rèn)為,人工智能技術(shù)不應(yīng)該掌握在大公司如Google,F(xiàn)acebook的手里,更應(yīng)該作為一種開放技術(shù),讓所有人都可以參與研究。馬斯克的這種精神值得讓人敬佩。
圖35 Yann LeCun
Yoshua Bengio
多層神經(jīng)網(wǎng)絡(luò)的研究仍在進(jìn)行中?,F(xiàn)在最為火熱的研究技術(shù)包括RNN,LSTM等,研究方向則是圖像理解方面。圖像理解技術(shù)是給計(jì)算機(jī)一幅圖片,讓它用語(yǔ)言來(lái)表達(dá)這幅圖片的意思。ImageNet競(jìng)賽也在不斷召開,有更多的方法涌現(xiàn)出來(lái),刷新以往的正確率。
六、回顧
1.影響
我們回顧一下神經(jīng)網(wǎng)絡(luò)發(fā)展的歷程。神經(jīng)網(wǎng)絡(luò)的發(fā)展歷史曲折蕩漾,既有被人捧上天的時(shí)刻,也有摔落在街頭無(wú)人問(wèn)津的時(shí)段,中間經(jīng)歷了數(shù)次大起大落。
從單層神經(jīng)網(wǎng)絡(luò)(感知器)開始,到包含一個(gè)隱藏層的兩層神經(jīng)網(wǎng)絡(luò),再到多層的深度神經(jīng)網(wǎng)絡(luò),一共有三次興起過(guò)程。詳見下圖。
圖36 三起三落的神經(jīng)網(wǎng)絡(luò)
上圖中的頂點(diǎn)與谷底可以看作神經(jīng)網(wǎng)絡(luò)發(fā)展的高峰與低谷。圖中的橫軸是時(shí)間,以年為單位??v軸是一個(gè)神經(jīng)網(wǎng)絡(luò)影響力的示意表示。如果把1949年Hebb模型提出到1958年的感知機(jī)誕生這個(gè)10年視為落下(沒有興起)的話,那么神經(jīng)網(wǎng)絡(luò)算是經(jīng)歷了“三起三落”這樣一個(gè)過(guò)程,跟“小平”同志類似。俗話說(shuō),天將降大任于斯人也,必先苦其心志,勞其筋骨。經(jīng)歷過(guò)如此多波折的神經(jīng)網(wǎng)絡(luò)能夠在現(xiàn)階段取得成功也可以被看做是磨礪的積累吧。
歷史最大的好處是可以給現(xiàn)在做參考??茖W(xué)的研究呈現(xiàn)螺旋形上升的過(guò)程,不可能一帆風(fēng)順。同時(shí),這也給現(xiàn)在過(guò)分熱衷深度學(xué)習(xí)與人工智能的人敲響警鐘,因?yàn)檫@不是第一次人們因?yàn)樯窠?jīng)網(wǎng)絡(luò)而瘋狂了。1958年到1969年,以及1985年到1995,這兩個(gè)十年間人們對(duì)于神經(jīng)網(wǎng)絡(luò)以及人工智能的期待并不現(xiàn)在低,可結(jié)果如何大家也能看的很清楚。
因此,冷靜才是對(duì)待目前深度學(xué)習(xí)熱潮的最好辦法。如果因?yàn)樯疃葘W(xué)習(xí)火熱,或者可以有“錢景”就一窩蜂的涌入,那么最終的受害人只能是自己。神經(jīng)網(wǎng)絡(luò)界已經(jīng)兩次有被人們捧上天了的境況,相信也對(duì)于捧得越高,摔得越慘這句話深有體會(huì)。因此,神經(jīng)網(wǎng)絡(luò)界的學(xué)者也必須給這股熱潮澆上一盆水,不要讓媒體以及投資家們過(guò)分的高看這門技術(shù)。很有可能,三十年河?xùn)|,三十年河西,在幾年后,神經(jīng)網(wǎng)絡(luò)就再次陷入谷底。根據(jù)上圖的歷史曲線圖,這是很有可能的。
2.效果
下面說(shuō)一下神經(jīng)網(wǎng)絡(luò)為什么能這么火熱?簡(jiǎn)而言之,就是其學(xué)習(xí)效果的強(qiáng)大。隨著神經(jīng)網(wǎng)絡(luò)的發(fā)展,其表示性能越來(lái)越強(qiáng)。
從單層神經(jīng)網(wǎng)絡(luò),到兩層神經(jīng)網(wǎng)絡(luò),再到多層神經(jīng)網(wǎng)絡(luò),下圖說(shuō)明了,隨著網(wǎng)絡(luò)層數(shù)的增加,以及激活函數(shù)的調(diào)整,神經(jīng)網(wǎng)絡(luò)所能擬合的決策分界平面的能力。
圖37 表示能力不斷增強(qiáng)
可以看出,隨著層數(shù)增加,其非線性分界擬合能力不斷增強(qiáng)。圖中的分界線并不代表真實(shí)訓(xùn)練出的效果,更多的是示意效果。
神經(jīng)網(wǎng)絡(luò)的研究與應(yīng)用之所以能夠不斷地火熱發(fā)展下去,與其強(qiáng)大的函數(shù)擬合能力是分不開關(guān)系的。
3.外因
當(dāng)然,光有強(qiáng)大的內(nèi)在能力,并不一定能成功。一個(gè)成功的技術(shù)與方法,不僅需要內(nèi)因的作用,還需要時(shí)勢(shì)與環(huán)境的配合。神經(jīng)網(wǎng)絡(luò)的發(fā)展背后的外在原因可以被總結(jié)為:更強(qiáng)的計(jì)算性能,更多的數(shù)據(jù),以及更好的訓(xùn)練方法。只有滿足這些條件時(shí),神經(jīng)網(wǎng)絡(luò)的函數(shù)擬合能力才能得已體現(xiàn),見下圖。
圖38 發(fā)展的外在原因
之所以在單層神經(jīng)網(wǎng)絡(luò)年代,Rosenblat無(wú)法制作一個(gè)雙層分類器,就在于當(dāng)時(shí)的計(jì)算性能不足,Minsky也以此來(lái)打壓神經(jīng)網(wǎng)絡(luò)。但是Minsky沒有料到,僅僅10年以后,計(jì)算機(jī)CPU的快速發(fā)展已經(jīng)使得我們可以做兩層神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,并且還有快速的學(xué)習(xí)算法BP。
但是在兩層神經(jīng)網(wǎng)絡(luò)快速流行的年代。更高層的神經(jīng)網(wǎng)絡(luò)由于計(jì)算性能的問(wèn)題,以及一些計(jì)算方法的問(wèn)題,其優(yōu)勢(shì)無(wú)法得到體現(xiàn)。直到2012年,研究人員發(fā)現(xiàn),用于高性能計(jì)算的圖形加速卡(GPU)可以極佳地匹配神經(jīng)網(wǎng)絡(luò)訓(xùn)練所需要的要求:高并行性,高存儲(chǔ),沒有太多的控制需求,配合預(yù)訓(xùn)練等算法,神經(jīng)網(wǎng)絡(luò)才得以大放光彩。
互聯(lián)網(wǎng)時(shí)代,大量的數(shù)據(jù)被收集整理,更好的訓(xùn)練方法不斷被發(fā)現(xiàn)。所有這一切都滿足了多層神經(jīng)網(wǎng)絡(luò)發(fā)揮能力的條件。
“時(shí)勢(shì)造英雄”,正如Hinton在2006年的論文里說(shuō)道的
“…providedthatcomputerswerefastenough,datasetswerebigenough,andtheinitialweightswerecloseenoughtoagoodsolution.Allthreeconditionsarenowsatisfied.”,
外在條件的滿足也是神經(jīng)網(wǎng)絡(luò)從神經(jīng)元得以發(fā)展到目前的深度神經(jīng)網(wǎng)絡(luò)的重要因素。
除此以外,一門技術(shù)的發(fā)揚(yáng)沒有“伯樂(lè)”也是不行的。在神經(jīng)網(wǎng)絡(luò)漫長(zhǎng)的歷史中,正是由于許多研究人員的鍥而不舍,不斷鉆研,才能有了現(xiàn)在的成就。前期的Rosenblat,Rumelhart沒有見證到神經(jīng)網(wǎng)絡(luò)如今的流行與地位。但是在那個(gè)時(shí)代,他們?yōu)樯窠?jīng)網(wǎng)絡(luò)的發(fā)展所打下的基礎(chǔ),卻會(huì)永遠(yuǎn)流傳下去,不會(huì)退色。
七、展望
1.量子計(jì)算
回到我們對(duì)神經(jīng)網(wǎng)絡(luò)歷史的討論,根據(jù)歷史趨勢(shì)圖來(lái)看,神經(jīng)網(wǎng)絡(luò)以及深度學(xué)習(xí)會(huì)不會(huì)像以往一樣再次陷入谷底?作者認(rèn)為,這個(gè)過(guò)程可能取決于量子計(jì)算機(jī)的發(fā)展。
根據(jù)一些最近的研究發(fā)現(xiàn),人腦內(nèi)部進(jìn)行的計(jì)算可能是類似于量子計(jì)算形態(tài)的東西。而且目前已知的最大神經(jīng)網(wǎng)絡(luò)跟人腦的神經(jīng)元數(shù)量相比,仍然顯得非常小,僅不及1%左右。所以未來(lái)真正想實(shí)現(xiàn)人腦神經(jīng)網(wǎng)絡(luò)的模擬,可能需要借助量子計(jì)算的強(qiáng)大計(jì)算能力。
各大研究組也已經(jīng)認(rèn)識(shí)到了量子計(jì)算的重要性。谷歌就在開展量子計(jì)算機(jī)D-wave的研究,希望用量子計(jì)算來(lái)進(jìn)行機(jī)器學(xué)習(xí),并且在前段時(shí)間有了突破性的進(jìn)展。國(guó)內(nèi)方面,阿里和中科院合作成立了量子計(jì)算實(shí)驗(yàn)室,意圖進(jìn)行量子計(jì)算的研究。
如果量子計(jì)算發(fā)展不力,仍然需要數(shù)十年才能使我們的計(jì)算能力得以突飛猛進(jìn)的發(fā)展,那么缺少了強(qiáng)大計(jì)算能力的神經(jīng)網(wǎng)絡(luò)可能會(huì)無(wú)法一帆風(fēng)順的發(fā)展下去。這種情況可以類比為80-90年時(shí)期神經(jīng)網(wǎng)絡(luò)因?yàn)橛?jì)算能力的限制而被低估與忽視。假設(shè)量子計(jì)算機(jī)真的能夠與神經(jīng)網(wǎng)絡(luò)結(jié)合,并且助力真正的人工智能技術(shù)的誕生,而且量子計(jì)算機(jī)發(fā)展需要10年的話,那么神經(jīng)網(wǎng)絡(luò)可能還有10年的發(fā)展期。直到那時(shí)期以后,神經(jīng)網(wǎng)絡(luò)才能真正接近實(shí)現(xiàn)AI這一目標(biāo)。
圖39 量子計(jì)算
2.人工智能
最后,作者想簡(jiǎn)單地談?wù)剬?duì)目前人工智能的看法。雖然現(xiàn)在人工智能非?;馃?,但是距離真正的人工智能還有很大的距離。就拿計(jì)算機(jī)視覺方向來(lái)說(shuō),面對(duì)稍微復(fù)雜一些的場(chǎng)景,以及易于混淆的圖像,計(jì)算機(jī)就可能難以識(shí)別。因此,這個(gè)方向還有很多的工作要做。
就普通人看來(lái),這么辛苦的做各種實(shí)驗(yàn),以及投入大量的人力就是為了實(shí)現(xiàn)一些不及孩童能力的視覺能力,未免有些不值。但是這只是第一步。雖然計(jì)算機(jī)需要很大的運(yùn)算量才能完成一個(gè)普通人簡(jiǎn)單能完成的識(shí)圖工作,但計(jì)算機(jī)最大的優(yōu)勢(shì)在于并行化與批量推廣能力。使用計(jì)算機(jī)以后,我們可以很輕易地將以前需要人眼去判斷的工作交給計(jì)算機(jī)做,而且?guī)缀鯖]有任何的推廣成本。這就具有很大的價(jià)值。正如火車剛誕生的時(shí)候,有人嘲笑它又笨又重,速度還沒有馬快。但是很快規(guī)?;茝V的火車就替代了馬車的使用。人工智能也是如此。這也是為什么目前世界上各著名公司以及政府都對(duì)此熱衷的原因。
目前看來(lái),神經(jīng)網(wǎng)絡(luò)要想實(shí)現(xiàn)人工智能還有很多的路要走,但方向至少是正確的,下面就要看后來(lái)者的不斷努力了。
圖40 人工智能
八、總結(jié)
本文回顧了神經(jīng)網(wǎng)絡(luò)的發(fā)展歷史,從神經(jīng)元開始,歷經(jīng)單層神經(jīng)網(wǎng)絡(luò),兩層神經(jīng)網(wǎng)絡(luò),直到多層神經(jīng)網(wǎng)絡(luò)。在歷史介紹中穿插講解神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),分類效果以及訓(xùn)練方法等。本文說(shuō)明了神經(jīng)網(wǎng)絡(luò)內(nèi)部實(shí)際上就是矩陣計(jì)算,在程序中的實(shí)現(xiàn)沒有“點(diǎn)”和“線”的對(duì)象。本文說(shuō)明了神經(jīng)網(wǎng)絡(luò)強(qiáng)大預(yù)測(cè)能力的根本,就是多層的神經(jīng)網(wǎng)絡(luò)可以無(wú)限逼近真實(shí)的對(duì)應(yīng)函數(shù),從而模擬數(shù)據(jù)之間的真實(shí)關(guān)系。除此之外,本文回顧了神經(jīng)網(wǎng)絡(luò)發(fā)展的歷程,分析了神經(jīng)網(wǎng)絡(luò)發(fā)展的外在原因,包括計(jì)算能力的增強(qiáng),數(shù)據(jù)的增多,以及方法的創(chuàng)新等。最后,本文對(duì)神經(jīng)網(wǎng)絡(luò)的未來(lái)進(jìn)行了展望,包括量子計(jì)算與神經(jīng)網(wǎng)絡(luò)結(jié)合的可能性,以及探討未來(lái)人工智能發(fā)展的前景與價(jià)值。
九、后記
本篇文章可以視為作者一年來(lái)對(duì)神經(jīng)網(wǎng)絡(luò)的理解與總結(jié),包括實(shí)驗(yàn)的體會(huì),書籍的閱讀,以及思考的火花等。神經(jīng)網(wǎng)絡(luò)雖然重要,但學(xué)習(xí)并不容易。這主要是由于其結(jié)構(gòu)圖較為難懂,以及歷史發(fā)展的原因,導(dǎo)致概念容易混淆,一些介紹的博客與網(wǎng)站內(nèi)容新舊不齊。本篇文章著眼于這些問(wèn)題,沒有太多的數(shù)學(xué)推導(dǎo),意圖以一種簡(jiǎn)單的,直觀的方式對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行講解。在2015年最后一天終于寫完。希望本文可以對(duì)各位有所幫助。
作者很感謝能夠閱讀到這里的讀者。如果看完覺得好的話,還請(qǐng)輕輕點(diǎn)一下贊,你們的鼓勵(lì)就是作者繼續(xù)行文的動(dòng)力。本文的備注部分是一些對(duì)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的建議,供補(bǔ)充閱讀與參考。
目前為止,EasyPR的1.4版已經(jīng)將神經(jīng)網(wǎng)絡(luò)(ANN)訓(xùn)練的模塊加以開放,開發(fā)者們可以使用這個(gè)模塊來(lái)進(jìn)行自己的字符模型的訓(xùn)練。有興趣的可以下載。
十、備注
神經(jīng)網(wǎng)絡(luò)雖然很重要,但是對(duì)于神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí),卻并不容易。這些學(xué)習(xí)困難主要來(lái)自以下三個(gè)方面:概念,類別,教程。下面簡(jiǎn)單說(shuō)明這三點(diǎn)。
1.概念
對(duì)于一門技術(shù)的學(xué)習(xí)而言,首先最重要的是弄清概念。只有將概念理解清楚,才能順暢的進(jìn)行后面的學(xué)習(xí)。由于神經(jīng)網(wǎng)絡(luò)漫長(zhǎng)的發(fā)展歷史,經(jīng)常會(huì)有一些概念容易混淆,讓人學(xué)習(xí)中產(chǎn)生困惑。這里面包括歷史的術(shù)語(yǔ),不一致的說(shuō)法,以及被遺忘的研究等。
歷史的術(shù)語(yǔ)
這個(gè)的代表就是多層感知器(MLP)這個(gè)術(shù)語(yǔ)。起初看文獻(xiàn)時(shí)很難理解的一個(gè)問(wèn)題就是,為什么神經(jīng)網(wǎng)絡(luò)又有另一個(gè)名稱:MLP。其實(shí)MLP(Multi-Layer Perceptron)的名稱起源于50-60年代的感知器(Perceptron)。由于我們?cè)诟兄髦嫌衷黾恿艘粋€(gè)計(jì)算層,因此稱為多層感知器。值得注意的是,雖然叫“多層”,MLP一般都指的是兩層(帶一個(gè)隱藏層的)神經(jīng)網(wǎng)絡(luò)。
MLP這個(gè)術(shù)語(yǔ)屬于歷史遺留的產(chǎn)物。現(xiàn)在我們一般就說(shuō)神經(jīng)網(wǎng)絡(luò),以及深度神經(jīng)網(wǎng)絡(luò)。前者代表帶一個(gè)隱藏層的兩層神經(jīng)網(wǎng)絡(luò),也是EasyPR目前使用的識(shí)別網(wǎng)絡(luò),后者指深度學(xué)習(xí)的網(wǎng)絡(luò)。
不一致的說(shuō)法
這個(gè)最明顯的代表就是損失函數(shù)lossfunction,這個(gè)還有兩個(gè)說(shuō)法是跟它完全一致的意思,分別是殘差函數(shù)errorfunction,以及代價(jià)函數(shù)costfunction。lossfunction是目前深度學(xué)習(xí)里用的較多的一種說(shuō)法,caffe里也是這么叫的。costfunction則是Ng在coursera教學(xué)視頻里用到的統(tǒng)一說(shuō)法。這三者都是同一個(gè)意思,都是優(yōu)化問(wèn)題所需要求解的方程。雖然在使用的時(shí)候不做規(guī)定,但是在聽到各種講解時(shí)要心里明白。
再來(lái)就是權(quán)重weight和參數(shù)parameter的說(shuō)法,神經(jīng)網(wǎng)絡(luò)界由于以前的慣例,一般會(huì)將訓(xùn)練得到的參數(shù)稱之為權(quán)重,而不像其他機(jī)器學(xué)習(xí)方法就稱之為參數(shù)。這個(gè)需要記住就好。不過(guò)在目前的使用慣例中,也有這樣一種規(guī)定。那就是非偏置節(jié)點(diǎn)連接上的值稱之為權(quán)重,而偏置節(jié)點(diǎn)上的值稱之為偏置,兩者統(tǒng)一起來(lái)稱之為參數(shù)。
另外一個(gè)同義詞就是激活函數(shù)active function和轉(zhuǎn)移函數(shù)transfer function了。同樣,他們代表一個(gè)意思,都是疊加的非線性函數(shù)的說(shuō)法。
被遺忘的研究
由于神經(jīng)網(wǎng)絡(luò)發(fā)展歷史已經(jīng)有70年的漫長(zhǎng)歷史,因此在研究過(guò)程中,必然有一些研究分支屬于被遺忘階段。這里面包括各種不同的網(wǎng)絡(luò),例如SOM(Self-Organizing Map,自組織特征映射網(wǎng)絡(luò)),SNN(Synergetic Neural Network,協(xié)同神經(jīng)網(wǎng)絡(luò)),ART(Adaptive Resonance Theory,自適應(yīng)共振理論網(wǎng)絡(luò))等等。所以看歷史文獻(xiàn)時(shí)會(huì)看到許多沒見過(guò)的概念與名詞。
有些歷史網(wǎng)絡(luò)甚至?xí)匦鲁蔀樾碌难芯繜狳c(diǎn),例如RNN與LSTM就是80年代左右開始的研究,目前已經(jīng)是深度學(xué)習(xí)研究中的重要一門技術(shù),在語(yǔ)音與文字識(shí)別中有很好的效果。
對(duì)于這些易于混淆以及弄錯(cuò)的概念,務(wù)必需要多方參考文獻(xiàn),理清上下文,這樣才不會(huì)在學(xué)習(xí)與閱讀過(guò)程中迷糊。
2.類別
下面談一下關(guān)于神經(jīng)網(wǎng)絡(luò)中的不同類別。
其實(shí)本文的名字“神經(jīng)網(wǎng)絡(luò)淺講”并不合適,因?yàn)楸疚牟⒉皇侵v的是“神經(jīng)網(wǎng)絡(luò)”的內(nèi)容,而是其中的一個(gè)子類,也是目前最常說(shuō)的前饋神經(jīng)網(wǎng)絡(luò)。根據(jù)下圖的分類可以看出。
圖41 神經(jīng)網(wǎng)絡(luò)的類別
神經(jīng)網(wǎng)絡(luò)其實(shí)是一個(gè)非常寬泛的稱呼,它包括兩類,一類是用計(jì)算機(jī)的方式去模擬人腦,這就是我們常說(shuō)的ANN(人工神經(jīng)網(wǎng)絡(luò)),另一類是研究生物學(xué)上的神經(jīng)網(wǎng)絡(luò),又叫生物神經(jīng)網(wǎng)絡(luò)。對(duì)于我們計(jì)算機(jī)人士而言,肯定是研究前者。
在人工神經(jīng)網(wǎng)絡(luò)之中,又分為前饋神經(jīng)網(wǎng)絡(luò)和反饋神經(jīng)網(wǎng)絡(luò)這兩種。那么它們兩者的區(qū)別是什么呢?這個(gè)其實(shí)在于它們的結(jié)構(gòu)圖。我們可以把結(jié)構(gòu)圖看作是一個(gè)有向圖。其中神經(jīng)元代表頂點(diǎn),連接代表有向邊。對(duì)于前饋神經(jīng)網(wǎng)絡(luò)中,這個(gè)有向圖是沒有回路的。你可以仔細(xì)觀察本文中出現(xiàn)的所有神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)圖,確認(rèn)一下。而對(duì)于反饋神經(jīng)網(wǎng)絡(luò)中,結(jié)構(gòu)圖的有向圖是有回路的。反饋神經(jīng)網(wǎng)絡(luò)也是一類重要的神經(jīng)網(wǎng)絡(luò)。其中Hopfield網(wǎng)絡(luò)就是反饋神經(jīng)網(wǎng)絡(luò)。深度學(xué)習(xí)中的RNN也屬于一種反饋神經(jīng)網(wǎng)絡(luò)。
具體到前饋神經(jīng)網(wǎng)絡(luò)中,就有了本文中所分別描述的三個(gè)網(wǎng)絡(luò):?jiǎn)螌由窠?jīng)網(wǎng)絡(luò),雙層神經(jīng)網(wǎng)絡(luò),以及多層神經(jīng)網(wǎng)絡(luò)。深度學(xué)習(xí)中的CNN屬于一種特殊的多層神經(jīng)網(wǎng)絡(luò)。另外,在一些Blog中和文獻(xiàn)中看到的BP神經(jīng)網(wǎng)絡(luò)是什么?其實(shí)它們就是使用了反向傳播BP算法的兩層前饋神經(jīng)網(wǎng)絡(luò)。也是最普遍的一種兩層神經(jīng)網(wǎng)絡(luò)。
通過(guò)以上分析可以看出,神經(jīng)網(wǎng)絡(luò)這種說(shuō)法其實(shí)是非常廣義的,具體在文章中說(shuō)的是什么網(wǎng)絡(luò),需要根據(jù)文中的內(nèi)容加以區(qū)分。
3.教程
如何更好的學(xué)習(xí)神經(jīng)網(wǎng)絡(luò),認(rèn)真的學(xué)習(xí)一門課程或者看一本著作都是很有必要的。
說(shuō)到網(wǎng)絡(luò)教程的話,這里必須說(shuō)一下Ng的機(jī)器學(xué)習(xí)課程。對(duì)于一個(gè)初學(xué)者而言,Ng的課程視頻是非常有幫助的。Ng一共開設(shè)過(guò)兩門機(jī)器學(xué)習(xí)公開課程:一個(gè)是2003年在Standford開設(shè)的,面向全球的學(xué)生,這個(gè)視頻現(xiàn)在可以在網(wǎng)易公開課上找到;另一個(gè)是2010年專門為Coursera上的用戶開設(shè)的,需要登陸Coursera上才能學(xué)習(xí)。
但是,需要注意點(diǎn)是,這兩個(gè)課程對(duì)待神經(jīng)網(wǎng)絡(luò)的態(tài)度有點(diǎn)不同。早些的課程一共有20節(jié)課,Ng花了若干節(jié)課去專門講SVM以及SVM的推導(dǎo),而當(dāng)時(shí)的神經(jīng)網(wǎng)絡(luò),僅僅放了幾段視頻,花了大概不到20分鐘(一節(jié)課60分鐘左右)。而到了后來(lái)的課程時(shí),總共10節(jié)的課程中,Ng給了完整的兩節(jié)給神經(jīng)網(wǎng)絡(luò),詳細(xì)介紹了神經(jīng)網(wǎng)絡(luò)的反向傳播算法。同時(shí)給SVM只有一節(jié)課,并且沒有再講SVM的推導(dǎo)過(guò)程。下面兩張圖分別是Ng介紹神經(jīng)網(wǎng)絡(luò)的開篇,可以大致看出一些端倪。
圖42 Ng與神經(jīng)網(wǎng)絡(luò)
為什么Ng對(duì)待神經(jīng)網(wǎng)絡(luò)的反應(yīng)前后相差那么大?事實(shí)上就是深度學(xué)習(xí)的原因。Ng實(shí)踐了深度學(xué)習(xí)的效果,認(rèn)識(shí)到深度學(xué)習(xí)的基礎(chǔ)–神經(jīng)網(wǎng)絡(luò)的重要性。這就是他在后面重點(diǎn)介紹神經(jīng)網(wǎng)絡(luò)的原因??傊?,對(duì)于神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)而言,我更推薦Coursera上的。因?yàn)樵谀莻€(gè)時(shí)候,Ng才是真正的把神經(jīng)網(wǎng)絡(luò)作為一門重要的機(jī)器學(xué)習(xí)方法去傳授。你可以從他上課的態(tài)度中感受到他的重視,以及他希望你能學(xué)好的期望。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4773瀏覽量
100867 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8423瀏覽量
132746 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5506瀏覽量
121255
原文標(biāo)題:CICC科普欄目|神經(jīng)網(wǎng)絡(luò)淺講:從神經(jīng)元到深度學(xué)習(xí)
文章出處:【微信號(hào):AItists,微信公眾號(hào):人工智能學(xué)家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論