機(jī)器人2025本期導(dǎo)讀 第一版: 本文以一種簡(jiǎn)單的,循序的方式講解神經(jīng)網(wǎng)絡(luò),。 第二版: 全球“AI 100”企業(yè)發(fā)布,,4家中國(guó)公司入選(附報(bào)告) 第三版: 這篇文章覆蓋了計(jì)算機(jī)科學(xué)里面常見(jiàn)算法的時(shí)間和空間的Big-O 復(fù)雜度。 神經(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ì)閱讀沒(méi)有一定的前提要求,,但是懂一些機(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)元之多。 圖1 人腦神經(jīng)網(wǎng)絡(luò) 那么機(jī)器學(xué)習(xí)中的神經(jīng)網(wǎng)絡(luò)是如何實(shí)現(xiàn)這種模擬的,,并且達(dá)到一個(gè)驚人的良好效果的,?通過(guò)本文,你可以了解到這些問(wèn)題的答案,,同時(shí)還能知道神經(jīng)網(wǎng)絡(luò)的歷史,,以及如何較好地學(xué)習(xí)它。 由于本文較長(zhǎ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)圖 在開(kāi)始介紹前,有一些知識(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)圖,還有一種常見(jiàn)的表達(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)元開(kāi)始說(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è)樹(shù)突,,主要用來(lái)接受傳入信息,;而軸突只有一條,軸突尾端有許多軸突末梢可以給其他多個(gè)神經(jīng)元傳遞信息,。軸突末梢跟其他神經(jīng)元的樹(shù)突產(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)元的樹(shù)突,而輸出可以類比為神經(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)表示,并且寫(xiě)出輸出的計(jì)算公式的話,,就是下圖,。 圖8 神經(jīng)元計(jì)算 可見(jiàn)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寫(xiě)到連接線的左上方,,便于后面畫(huà)復(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é)家們開(kāi)始考慮用調(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)志其為“輸入單元”,。其余不變,,于是我們就有了下圖:從本圖開(kāi)始,我們將權(quán)值w1, w2, w3寫(xiě)到“連接線”的中間,。 圖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并沒(méi)有區(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列的矩陣,排列形式與公式中的一樣),。 于是,,輸出公式可以改寫(xiě)成: 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ò)于高漲,,并沒(méi)有人清醒的認(rèn)識(shí)到這點(diǎn),。于是,當(dāng)人工智能領(lǐng)域的巨擘Minsky指出這點(diǎn)時(shí),,事態(tài)就發(fā)生了變化,。 Minsky在1969年出版了一本叫《Perceptron》的書(shū),里面用詳細(xì)的數(shù)學(xué)證明了感知器的弱點(diǎn),,尤其是感知器對(duì)XOR(異或)這樣的簡(jiǎn)單分類任務(wù)都無(wú)法解決,。 Minsky認(rèn)為,如果將計(jì)算層增加到兩層,,計(jì)算量則過(guò)大,,而且沒(méi)有有效的學(xué)習(xí)算法。所以,,他認(rèn)為研究更深層的網(wǎng)絡(luò)是沒(méi)有價(jià)值的,。 圖18 Marvin Minsky 由于Minsky的巨大影響力以及書(shū)中呈現(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ò)開(kāi)始了大范圍的推廣與使用,。 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)題,,沒(méi)有一個(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 David Rumelhart 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;
由此可見(jiàn),,使用矩陣運(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)圖的討論中都沒(méi)有提到偏置節(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)槠錄](méi)有輸入(前一層中沒(méi)有箭頭指向它),。有些神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)圖中會(huì)把偏置節(jié)點(diǎn)明顯畫(huà)出來(lái),有些不會(huì),。一般情況下,,我們都不會(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ù)(active function),。 事實(shí)上,,神經(jīng)網(wǎng)絡(luò)的本質(zhì)就是通過(guò)參數(shù)與激活函數(shù)來(lái)擬合特征與目標(biāo)之間的真實(shí)函數(shù)關(guān)系。初學(xué)者可能認(rèn)為畫(huà)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)圖是為了在程序中實(shí)現(xiàn)這些圓圈與線,,但在一個(gè)神經(jīng)網(wǎng)絡(luò)的程序中,,既沒(méi)有“線”這個(gè)對(duì)象,也沒(méi)有“單元”這個(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ò)劃開(kāi)的區(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)想到我們一開(kāi)始推導(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è)界沒(méi)有完善的理論來(lái)指導(dǎo)這個(gè)決策,。一般是根據(jù)經(jīng)驗(yàn)來(lái)設(shè)置。較好的方法就是預(yù)先設(shè)定幾個(gè)可選值,,通過(guò)切換這幾個(gè)值來(lái)看整個(gè)模型的預(yù)測(cè)效果,,選擇效果最好的值作為最終選擇。這種方法又叫做Grid Search(網(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)單,并沒(méi)有使用目前機(jī)器學(xué)習(xí)中通用的方法,,這導(dǎo)致其擴(kuò)展性與適用性非常有限,。從兩層神經(jīng)網(wǎng)絡(luò)開(kāi)始,神經(jīng)網(wǎng)絡(luò)的研究人員開(kāi)始使用機(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),,那么我們可以把損失寫(xiě)為關(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算法開(kāi)始,,研究者們更多地從數(shù)學(xué)上尋求問(wèn)題的最優(yōu)解,。不再盲目模擬人腦網(wǎng)絡(luò)是神經(jīng)網(wǎng)絡(luò)研究走向成熟的標(biāo)志。正如科學(xué)家們可以從鳥(niǎo)類的飛行中得到啟發(fā),,但沒(méi)有必要一定要完全模擬鳥(niǎo)類的飛行方式,,也能制造可以飛天的飛機(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)]有見(jiàn)過(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è)界都開(kāi)始受到了影響,當(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ò)的不待見(jiàn)可想而知。 五,、多層神經(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ì)算。從最外面的層開(kāi)始,,算出所有單元的值以后,,再繼續(xù)計(jì)算更深一層。只有當(dāng)前層所有單元的值都計(jì)算完畢以后,,才會(huì)算下一層,。有點(diǎn)像計(jì)算向前不斷推進(jìn)的感覺(jué)。所以這個(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ù)界主要的研究既在于開(kāi)發(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)道,,必然離不開(kāi)深度學(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)該作為一種開(kāi)放技術(shù),讓所有人都可以參與研究,。馬斯克的這種精神值得讓人敬佩,。 圖35 Yann LeCun Yoshua Bengio 多層神經(jīng)網(wǎng)絡(luò)的研究仍在進(jìn)行中。現(xiàn)在最為火熱的研究技術(shù)包括RNN,,LSTM等,,研究方向則是圖像理解方面。圖像理解技術(shù)是給計(jì)算機(jī)一幅圖片,,讓它用語(yǔ)言來(lái)表達(dá)這幅圖片的意思,。ImageNet競(jìng)賽也在不斷召開(kāi),有更多的方法涌現(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ò)(感知器)開(kāi)始,到包含一個(gè)隱藏層的兩層神經(jīng)網(wǎng)絡(luò),,再到多層的深度神經(jīng)網(wǎng)絡(luò),,一共有三次興起過(guò)程。詳見(jiàn)下圖,。 圖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年視為落下(沒(méi)有興起)的話,那么神經(jīng)網(wǎng)絡(luò)算是經(jīng)歷了“三起三落”這樣一個(gè)過(guò)程,,跟“小平”同志類似,。俗話說(shuō),天將降大任于斯人也,,必先苦其心志,,勞其筋骨。經(jīng)歷過(guò)如此多波折的神經(jīng)網(wǎng)絡(luò)能夠在現(xiàn)階段取得成功也可以被看做是磨礪的積累吧,。 歷史最大的好處是可以給現(xiàn)在做參考,。科學(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ù)擬合能力是分不開(kāi)關(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),見(jiàn)下圖,。 圖38 發(fā)展的外在原因 之所以在單層神經(jīng)網(wǎng)絡(luò)年代,,Rosenblat無(wú)法制作一個(gè)雙層分類器,就在于當(dāng)時(shí)的計(jì)算性能不足,,Minsky也以此來(lái)打壓神經(jīng)網(wǎng)絡(luò),。但是Minsky沒(méi)有料到,僅僅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ǔ),,沒(méi)有太多的控制需求,,配合預(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ō)道的 “… provided that computers were fast enough, data sets were big enough, and the initial weights were close enough to a good solution. All three conditions are now satisfied.”,, 外在條件的滿足也是神經(jīng)網(wǎng)絡(luò)從神經(jīng)元得以發(fā)展到目前的深度神經(jīng)網(wǎng)絡(luò)的重要因素,。 除此以外,一門技術(shù)的發(fā)揚(yáng)沒(méi)有“伯樂(lè)”也是不行的,。在神經(jīng)網(wǎng)絡(luò)漫長(zhǎng)的歷史中,,正是由于許多研究人員的鍥而不舍,不斷鉆研,,才能有了現(xiàn)在的成就,。前期的Rosenblat,Rumelhart沒(méi)有見(jiàn)證到神經(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ì)算的重要性。谷歌就在開(kāi)展量子計(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)在人工智能非?;馃幔蔷嚯x真正的人工智能還有很大的距離,。就拿計(jì)算機(jī)視覺(jué)方向來(lái)說(shuō),,面對(duì)稍微復(fù)雜一些的場(chǎng)景,以及易于混淆的圖像,,計(jì)算機(jī)就可能難以識(shí)別,。因此,這個(gè)方向還有很多的工作要做,。 就普通人看來(lái),,這么辛苦的做各種實(shí)驗(yàn),以及投入大量的人力就是為了實(shí)現(xiàn)一些不及孩童能力的視覺(jué)能力,,未免有些不值,。但是這只是第一步。雖然計(jì)算機(jī)需要很大的運(yùn)算量才能完成一個(gè)普通人簡(jiǎn)單能完成的識(shí)圖工作,,但計(jì)算機(jī)最大的優(yōu)勢(shì)在于并行化與批量推廣能力,。使用計(jì)算機(jī)以后,我們可以很輕易地將以前需要人眼去判斷的工作交給計(jì)算機(jī)做,而且?guī)缀鯖](méi)有任何的推廣成本,。這就具有很大的價(jià)值,。正如火車剛誕生的時(shí)候,有人嘲笑它又笨又重,,速度還沒(méi)有馬快,。但是很快規(guī)模化推廣的火車就替代了馬車的使用,。人工智能也是如此,。這也是為什么目前世界上各著名公司以及政府都對(duì)此熱衷的原因。 目前看來(lái),,神經(jīng)網(wǎng)絡(luò)要想實(shí)現(xiàn)人工智能還有很多的路要走,,但方向至少是正確的,下面就要看后來(lái)者的不斷努力了,。 圖40 人工智能 八,、總結(jié)本文回顧了神經(jīng)網(wǎng)絡(luò)的發(fā)展歷史,從神經(jīng)元開(kāi)始,,歷經(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)沒(méi)有“點(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ì),,書(shū)籍的閱讀,以及思考的火花等,。神經(jīng)網(wǎng)絡(luò)雖然重要,,但學(xué)習(xí)并不容易。這主要是由于其結(jié)構(gòu)圖較為難懂,,以及歷史發(fā)展的原因,,導(dǎo)致概念容易混淆,一些介紹的博客與網(wǎng)站內(nèi)容新舊不齊,。本篇文章著眼于這些問(wèn)題,,沒(méi)有太多的數(shù)學(xué)推導(dǎo),意圖以一種簡(jiǎn)單的,,直觀的方式對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行講解,。在2015年最后一天終于寫(xiě)完。希望本文可以對(duì)各位有所幫助,。 作者很感謝能夠閱讀到這里的讀者,。如果看完覺(jué)得好的話,還請(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)練的模塊加以開(kāi)放,開(kāi)發(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ù)loss function,這個(gè)還有兩個(gè)說(shuō)法是跟它完全一致的意思,,分別是殘差函數(shù)error function,,以及代價(jià)函數(shù)cost function。loss function是目前深度學(xué)習(xí)里用的較多的一種說(shuō)法,,caffe里也是這么叫的,。cost function則是Ng在coursera教學(xué)視頻里用到的統(tǒng)一說(shuō)法。這三者都是同一個(gè)意思,,都是優(yōu)化問(wèn)題所需要求解的方程,。雖然在使用的時(shí)候不做規(guī)定,但是在聽(tīng)到各種講解時(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ì)看到許多沒(méi)見(jiàn)過(guò)的概念與名詞,。 有些歷史網(wǎng)絡(luò)甚至?xí)匦鲁蔀樾碌难芯繜狳c(diǎn),,例如RNN與LSTM就是80年代左右開(kāi)始的研究,目前已經(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è)有向圖是沒(méi)有回路的。你可以仔細(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一共開(kāi)設(shè)過(guò)兩門機(jī)器學(xué)習(xí)公開(kāi)課程:一個(gè)是2003年在Standford開(kāi)設(shè)的,,面向全球的學(xué)生,這個(gè)視頻現(xiàn)在可以在網(wǎng)易公開(kāi)課上找到,;另一個(gè)是2010年專門為Coursera上的用戶開(kāi)設(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é)課,,并且沒(méi)有再講SVM的推導(dǎo)過(guò)程。下面兩張圖分別是Ng介紹神經(jīng)網(wǎng)絡(luò)的開(kāi)篇,,可以大致看出一些端倪,。 圖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é)好的期望。 參考文獻(xiàn): 1.Neural Networks 2.Andrew Ng Neural Networks 3.神經(jīng)網(wǎng)絡(luò)簡(jiǎn)史 4.中科院 史忠植 神經(jīng)網(wǎng)絡(luò) 講義 5.深度學(xué)習(xí) 胡曉林 原文出處: 計(jì)算機(jī)的潛意識(shí)
|
|