神經(jīng)網(wǎng)絡(luò)

一、神經(jīng)網(wǎng)絡(luò)介紹(Neural network)

? ? ? ??神經(jīng)網(wǎng)絡(luò)是一種人類由于受到生物神經(jīng)細(xì)胞結(jié)構(gòu)啟發(fā)而研究出的一種算法體系。

經(jīng)典的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)

????????經(jīng)典的神經(jīng)網(wǎng)絡(luò)。這是一個(gè)包含三個(gè)層次的神經(jīng)網(wǎng)絡(luò)。我們稱圖中的圓圈為神經(jīng)元,左邊三個(gè)神經(jīng)元組成的一列為輸入層,中間神經(jīng)元列為隱藏層,右邊神經(jīng)元列為輸出層,神經(jīng)元之間的箭頭為權(quán)重(或參數(shù))。權(quán)重具體的值需要通過神經(jīng)網(wǎng)絡(luò)的訓(xùn)練才能獲得。

? ? ? ?我們實(shí)際生活中的學(xué)習(xí)體現(xiàn)在大腦中就是一系列神經(jīng)網(wǎng)絡(luò)回路的建立與強(qiáng)化,多次重復(fù)的學(xué)習(xí)能讓回路變得更加粗壯,使得信號(hào)的傳遞速度加快,最后對(duì)外表現(xiàn)為“深刻”的記憶。人工神經(jīng)網(wǎng)絡(luò)的訓(xùn)練也借鑒于此,如果某種映射關(guān)系出現(xiàn)很多次,那么在訓(xùn)練過程中就相應(yīng)調(diào)高其權(quán)重。

1、感知器(單層神經(jīng)網(wǎng)絡(luò)):

感知器是一種二元分類器,它是神經(jīng)網(wǎng)絡(luò)的基石。感知器是對(duì)神經(jīng)細(xì)胞的模擬:

神經(jīng)細(xì)胞

????????一個(gè)神經(jīng)元通常具有多個(gè)樹突 ,主要用來接受傳入信息,而軸突只有一條,軸突尾端有許多軸突末梢,可以給其他多個(gè)神經(jīng)元傳遞信息。軸突末梢跟其他神經(jīng)元的樹突產(chǎn)生連接,從而傳遞信號(hào)。

感知器

?????????神經(jīng)元是計(jì)算單元,相當(dāng)于神經(jīng)元細(xì)胞的細(xì)胞核,利用輸入的數(shù)據(jù)進(jìn)行計(jì)算,然后輸出,一般由一個(gè)線性計(jì)算部分和一個(gè)非線性計(jì)算部分組成;輸入層和輸出層實(shí)現(xiàn)數(shù)據(jù)的輸入輸出,相當(dāng)于細(xì)胞的樹突和軸突末梢;隱藏層指既不是輸入也不是輸出的神經(jīng)元層,一個(gè)神經(jīng)網(wǎng)絡(luò)可以有很多個(gè)隱藏層。

用感知器表示“與”門,激活函數(shù)為線性的

????????輸入以向量的形式表示x=(x0,x1, x2),你可以把它們理解為不同的特征維度,其中的x0是偏置單元(bias unit),相當(dāng)于線性回歸中的常數(shù)項(xiàng)。在經(jīng)過“神經(jīng)元”(激活函數(shù))的計(jì)算后,感知器會(huì)輸出一個(gè)大于0或小于0的數(shù)。箭頭上的數(shù)字代表每個(gè)特征的權(quán)量(weights),相當(dāng)于線性回歸模型的參數(shù),是收集信息的神經(jīng)突觸。


用感知器表示“與”門,激活函數(shù)是Sigmoid函數(shù)

總結(jié):?jiǎn)螌拥纳窠?jīng)網(wǎng)絡(luò)其實(shí)就是一個(gè)邏輯回歸函數(shù)。


2、多層神經(jīng)網(wǎng)絡(luò)

????????單層感知器雖然可以建立與門、或門、非門等,但無法建立更為復(fù)雜的異或門(XOR),即兩個(gè)輸入相同時(shí)輸出1,否則輸出0。

????????為了更為直觀地理解這個(gè)問題,我們可以看下圖:

????????模型有兩個(gè)輸入(input1和input2),我們可以線性地區(qū)分或門的兩類情況:即同時(shí)為0時(shí)在左下角,其它情況在右上角;與門的情況也可以線性地區(qū)分,即輸出同時(shí)為1時(shí)在右上角,其它情況在左下角。但異或門呢?這種情況是無法作出線性區(qū)分的,也就是說,單層感知器無法實(shí)現(xiàn)異或門。

? ??????我們?cè)谳斎雽雍洼敵鰧又g加入兩個(gè)單元的隱藏層:對(duì)于隱藏層的a_1單元(上標(biāo)2代表這是第2層)來說,它實(shí)際上是且門(都為1時(shí)才輸出1);對(duì)a_2單元來說,它的邏輯是(not x_1) and (not x_2),即同時(shí)為0時(shí)才輸出1。而從隱藏層到輸出層,是邏輯或。如下圖所示:

用神經(jīng)網(wǎng)絡(luò)如何實(shí)現(xiàn)異或門?

線性激活函數(shù)下的神經(jīng)網(wǎng)絡(luò)??

?因?yàn)樯厦娓兄鞯募せ詈瘮?shù)是線性函數(shù)。這種情況下,神經(jīng)網(wǎng)絡(luò)的輸出也只是輸入的某種線性函數(shù),只不過是通過網(wǎng)絡(luò)的形式來進(jìn)行加權(quán)。線性函數(shù)的線性組合仍然是線性函數(shù)。也就是說,即便是多層的感知器,激活函數(shù)為線性時(shí)也無法實(shí)現(xiàn)輸入00和輸入11時(shí)的輸出比輸入01和10時(shí)大,即非線性。

把激活函數(shù)換為Sigmoid函數(shù):

Sigmoid激活函數(shù)下的神經(jīng)網(wǎng)絡(luò)

總結(jié):?多層神經(jīng)網(wǎng)絡(luò)其實(shí)就是一組神經(jīng)元連接在一起的集合。

????????神經(jīng)網(wǎng)絡(luò)的第一層是輸入層,值為xi,最后一層是輸出層,如果作為分類算法訓(xùn)練則有多少個(gè)類別就應(yīng)該有多少個(gè)對(duì)應(yīng)的輸出單元,對(duì)應(yīng)的輸出單元被激活代表著分類的結(jié)果。隱藏層可以有多層,每層可以有多個(gè)單元,規(guī)模越大訓(xùn)練的模型越復(fù)雜。而對(duì)于隱藏層中的每個(gè)單元本身都是一個(gè)邏輯回歸的過程,也就是說每個(gè)隱藏單元都訓(xùn)練出了一個(gè)比前一層更加復(fù)雜的特征,這樣一層接一層我們就可以訓(xùn)練出越來越復(fù)雜的特征,直到得到結(jié)果。一般憑經(jīng)驗(yàn)來確定隱藏層到底應(yīng)該有多少個(gè)節(jié)點(diǎn),在測(cè)試的過程中也可以不斷調(diào)整節(jié)點(diǎn)數(shù)以取得最佳效果。

雙層神經(jīng)網(wǎng)絡(luò)模型

二、為什么需要神經(jīng)網(wǎng)絡(luò)

????????首先,神經(jīng)網(wǎng)絡(luò)應(yīng)用在分類問題中效果很好。 工業(yè)界中分類問題居多。LR或者linear SVM更適用線性分割。如果數(shù)據(jù)非線性可分(現(xiàn)實(shí)生活中多是非線性的),LR通常需要靠特征工程做特征映射,增加高斯項(xiàng)或者組合項(xiàng);SVM需要選擇核。 而增加高斯項(xiàng)、組合項(xiàng)會(huì)產(chǎn)生很多沒有用的維度,增加計(jì)算量。GBDT可以使用弱的線性分類器組合成強(qiáng)分類器,但維度很高時(shí)效果可能并不好。

? ??????從邏輯回歸看,單層感知器只能解決線性問題。要解決非線性問題,需要引入多層感知器(加入隱層)。

三、神經(jīng)網(wǎng)絡(luò)的發(fā)展歷程

三起三落的神經(jīng)網(wǎng)絡(luò)

????????從單層神經(jīng)網(wǎng)絡(luò)(感知器)開始,到包含一個(gè)隱藏層的兩層神經(jīng)網(wǎng)絡(luò),再到多層的深度神經(jīng)網(wǎng)絡(luò),一共有三次興起過程。神經(jīng)網(wǎng)絡(luò)為什么能這么火熱?簡(jiǎn)而言之,就是其學(xué)習(xí)效果的強(qiáng)大。隨著神經(jīng)網(wǎng)絡(luò)的發(fā)展,其表示性能越來越強(qiáng)。

  從單層神經(jīng)網(wǎng)絡(luò),到兩層神經(jīng)網(wǎng)絡(luò),再到多層神經(jīng)網(wǎng)絡(luò),下圖說明了,隨著網(wǎng)絡(luò)層數(shù)的增加,以及激活函數(shù)的調(diào)整,神經(jīng)網(wǎng)絡(luò)所能擬合的決策分界平面的能力。

隨著層數(shù)增加,其非線性分界擬合能力不斷增強(qiáng)

快速發(fā)展的外因:更強(qiáng)的計(jì)算性能,更多的數(shù)據(jù),以及更好的訓(xùn)練方法。

四、前向傳播

????????在已經(jīng)訓(xùn)練好權(quán)值的神經(jīng)網(wǎng)絡(luò)上,預(yù)測(cè)的工作是通過前向傳播來實(shí)現(xiàn)的,所謂的“前向”就是從輸入層到輸出層的方向。整個(gè)傳播過程就是沿著神經(jīng)網(wǎng)絡(luò)的方向在每個(gè)神經(jīng)元上做邏輯回歸,不斷訓(xùn)練出更加復(fù)雜的特征,最后得到輸出。以下圖的神經(jīng)網(wǎng)絡(luò)為例:

五、代價(jià)函數(shù)與正則化

六、后向傳播(bp算法)

????????BP算法是一種計(jì)算偏導(dǎo)數(shù)的有效方法,它的基本原理是:利用前向傳播最后輸出的結(jié)果來計(jì)算誤差的偏導(dǎo)數(shù),再用這個(gè)偏導(dǎo)數(shù)和前面的隱藏層進(jìn)行加權(quán)求和,如此一層一層的向前傳下去,直到輸入層(不計(jì)算輸入層),最后利用每個(gè)節(jié)點(diǎn)求出的偏導(dǎo)數(shù)來更新權(quán)重。

????????BP的思想就是:利用輸出后的誤差來估計(jì)輸出層前一層的誤差,再用這層誤差來估計(jì)更前一層誤差,如此獲取所有各層誤差估計(jì)。這里的誤差估計(jì)可以理解為某種偏導(dǎo)數(shù),我們就是根據(jù)這種偏導(dǎo)數(shù)來調(diào)整各層的連接權(quán)值,再用調(diào)整后的連接權(quán)值重新計(jì)算輸出誤差。直到輸出的誤差達(dá)到符合的要求或者迭代次數(shù)溢出設(shè)定值。

BP網(wǎng)絡(luò)的數(shù)學(xué)原理:

激活函數(shù)的求導(dǎo):

????????用什么方法最小化L?用隨機(jī)梯度下降。也就是對(duì)每個(gè)訓(xùn)練樣本都使權(quán)重往其負(fù)梯度方向變化?,F(xiàn)在的任務(wù)就是求L對(duì)連接權(quán)重w的梯度。

這樣反向傳播得到所有的δ以后,就可以更新權(quán)重了。??

直觀的BP神經(jīng)網(wǎng)絡(luò)的工作過程總結(jié)如下:

實(shí)例:

學(xué)習(xí)率是一個(gè)預(yù)先設(shè)置好的參數(shù),用于控制每次更新的幅度。??

此后,對(duì)全部數(shù)據(jù)都反復(fù)進(jìn)行這樣的計(jì)算,直到輸出的誤差達(dá)到一個(gè)很小的值為止。

????????這里介紹的是計(jì)算完一條記錄,就馬上更新權(quán)重,以后每計(jì)算完一條都即時(shí)更新權(quán)重。實(shí)際上批量更新的效果會(huì)更好,方法是在不更新權(quán)重的情況下,把記錄集的每條記錄都算過一遍,把要更新的增值全部累加起來求平均值,然后利用這個(gè)平均值來更新一次權(quán)重,然后利用更新后的權(quán)重進(jìn)行下一輪的計(jì)算,這種方法叫批量梯度下降(Batch Gradient Descent)。

七、隨機(jī)初始化權(quán)重參數(shù)

????????在神經(jīng)網(wǎng)絡(luò)中訓(xùn)練初始化時(shí),要特別注意不能使Θ中的值都相同,這樣會(huì)使每一層的神經(jīng)元都訓(xùn)練出完全相同的特征,神經(jīng)網(wǎng)絡(luò)就完全無法工作了。因此,在訓(xùn)練開始前,應(yīng)該對(duì)Θ進(jìn)行隨機(jī)的初始化。

? ? ? ? 對(duì)每一個(gè)Θ值(權(quán)重參數(shù))隨機(jī)初始化為一個(gè)[ -ε , ε?]范圍的值:

八、梯度檢測(cè)

當(dāng)Θ為實(shí)數(shù)時(shí):[ J(Θ+ε)- J(Θ - ε)] / 2 給出圖像在改點(diǎn)的導(dǎo)數(shù)的近似值。

當(dāng)Θ是一個(gè)n維向量時(shí):

????????反向傳播是計(jì)算代價(jià)函數(shù)關(guān)于所有參數(shù)的導(dǎo)數(shù)或偏導(dǎo)數(shù)的一種有效方法。

????????用梯度檢測(cè)得到的導(dǎo)數(shù)值與反向傳播所計(jì)算出的導(dǎo)數(shù)值進(jìn)行比較,如果一樣或者數(shù)值相近,就可以確定反向傳播的實(shí)現(xiàn)是正確的。

總結(jié):

神經(jīng)網(wǎng)絡(luò)的整個(gè)過程:

1、選擇網(wǎng)絡(luò)架構(gòu):多少個(gè)隱藏層(默認(rèn)一個(gè)最合理),每層多少個(gè)隱藏單元(越多越好)

2、構(gòu)建網(wǎng)絡(luò),隨機(jī)初始化權(quán)重參數(shù)

3、計(jì)算出代價(jià)函數(shù)(損失函數(shù))

4、反向傳播計(jì)算出代價(jià)函數(shù)J(Θ)關(guān)于所有參數(shù)的導(dǎo)數(shù)或偏導(dǎo)數(shù)

5、梯度檢測(cè)方法計(jì)算出導(dǎo)數(shù)值,把反向傳播計(jì)算得到的導(dǎo)數(shù)值與其進(jìn)行比較,看是否相等或相近。

6、比較后,值相近,以后停用梯度檢測(cè)

7、用最優(yōu)化算法,如梯度下降算法來最小化J(Θ)

參考:

神經(jīng)網(wǎng)絡(luò)淺講:從神經(jīng)元到深度學(xué)習(xí)

BP神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)原理及其算法實(shí)現(xiàn)

【深度學(xué)習(xí)】神經(jīng)網(wǎng)絡(luò)入門(最通俗的理解神經(jīng)網(wǎng)絡(luò))

如何簡(jiǎn)單形象又有趣地講解神經(jīng)網(wǎng)絡(luò)是什么

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原文地址:http://www.cnblogs.com/subconscious/p/5058741.html 神...
    Albert陳凱閱讀 5,587評(píng)論 0 48
  • 假如你將遠(yuǎn)走 請(qǐng)不要悄然離去, 可否與我再把酒杯斟滿醉一次, 青山月下多少事 林間綠水多少詩(shī), 初見若似恍夢(mèng) 再見...
    鯨魚飛上天閱讀 1,225評(píng)論 0 1
  • 問蒼蒼,幾回寒暑?值此還同病樹。翰林如若精魂在,應(yīng)有百千詞賦。君莫語(yǔ),道染濁,流落紅塵無歸路。笑人堪住,恐詞仙嫌恥...
    宗定法師閱讀 469評(píng)論 0 3
  • 倒映的垂柳婀娜 落日的余暉羞紅的臉 綠荷流淌著生命的顏色 蓮花綻放著熱情的火焰 離別后的重聚 一樣的笑語(yǔ)不一樣的沉...
    香自苦寒閱讀 253評(píng)論 2 3

友情鏈接更多精彩內(nèi)容