最近學(xué)習(xí)BP神經(jīng)網(wǎng)絡(luò),網(wǎng)上文章比較參差不齊,對于初學(xué)者還是很困惑,本文做一下筆記和總結(jié),方便以后閱讀學(xué)習(xí)。
一、BP神經(jīng)網(wǎng)絡(luò)的概念
BP神經(jīng)網(wǎng)絡(luò)是一種多層的前饋神經(jīng)網(wǎng)絡(luò),其主要的特點(diǎn)是:信號是前向傳播的,而誤差是反向傳播的。具體來說,對于如下的只含一個(gè)隱層的神經(jīng)網(wǎng)絡(luò)模型:輸入向量應(yīng)為n個(gè)特征
BP神經(jīng)網(wǎng)絡(luò)的過程主要分為兩個(gè)階段,第一階段是信號的前向傳播,從輸入層經(jīng)過隱含層,最后到達(dá)輸出層;第二階段是誤差的反向傳播,從輸出層到隱含層,最后到輸入層,依次調(diào)節(jié)隱含層到輸出層的權(quán)重和偏置,輸入層到隱含層的權(quán)重和偏置。
1. 神經(jīng)元:神經(jīng)元,或稱神經(jīng)單元/神經(jīng)節(jié)點(diǎn),是神經(jīng)網(wǎng)絡(luò)基本的計(jì)算單元,其計(jì)算函數(shù)稱為激活函數(shù)(activation function),用于在神經(jīng)網(wǎng)絡(luò)中引入非線性因素,可選擇的激活函數(shù)有:Sigmoid函數(shù)、雙曲正切函數(shù)(tanh)、ReLu函數(shù)(Rectified Linear Units),softmax等。
1.1 Sigmoid函數(shù),也就是logistic函數(shù),對于任意輸入,它的輸出范圍都是(0,1)。公式如下:
Sigmoid的函數(shù)圖如上所示,很像平滑版的階躍函數(shù)。但是,sigmoid 有很多好處,例如:
(1)它是非線性的
(2)不同于二值化輸出,sigmoid 可以輸出0到 1 之間的任意值。對,跟你猜的一樣,這可以用來表示概率值。
( 3)與 2 相關(guān),sigmoid 的輸出值在一個(gè)范圍內(nèi),這意味著它不會輸出無窮大的數(shù)。但是,sigmoid 激活函數(shù)并不完美: 梯度消失。如前面的圖片所示,當(dāng)輸入值 z 趨近負(fù)無窮時(shí),sigmoid 函數(shù)的輸出幾乎為0 . 相反,當(dāng)輸入 z 趨近正無窮時(shí),輸出值幾乎為 1 . 那么這意味著什么?在這兩個(gè)極端情況下,對應(yīng)的梯度很小,甚至消失了。梯度消失在深度學(xué)習(xí)中是一個(gè)十分重要的問題,我們在深度網(wǎng)絡(luò)中加了很多層這樣的非線性激活函數(shù),這樣的話,即使第一層的參數(shù)有很大的變化,也不會對輸出有太大的影響。換句話講,就是網(wǎng)絡(luò)不再學(xué)習(xí)了,通常訓(xùn)練模型的過程會變得越來越慢,尤其是使用梯度下降算法時(shí)。
1.2 Tanh函數(shù)
Tanh 或雙曲正切是另一個(gè)深度神經(jīng)網(wǎng)絡(luò)中常用的激活函數(shù)。類似于 sigmoid 函數(shù),它也將輸入轉(zhuǎn)化到良好的輸出范圍內(nèi)。具體點(diǎn)說就是對于任意輸入,tanh 將會產(chǎn)生一個(gè)介于-1 與 1 之間的值。
Tanh函數(shù)圖
如前面提及的,tanh 激活函數(shù)有點(diǎn)像 sigmoid 函數(shù)。非線性且輸出在某一范圍,此處為(-1, 1)。不必意外,它也有跟 sigmoid 一樣的缺點(diǎn)。從數(shù)學(xué)表達(dá)式就可以看出來,它也有梯度消失的問題,以及也需要進(jìn)行開銷巨大的指數(shù)運(yùn)算。
1.3
ReLU
終于講到了 Relu,人們起初并不覺得它的效果會好過 sigmoid 和 tanh。但是,實(shí)戰(zhàn)中它確實(shí)做到了。事實(shí)上,cs231n 課程甚至指出,應(yīng)該默認(rèn)使用 Relu 函數(shù)。
ReLU 從數(shù)學(xué)表達(dá)式來看,運(yùn)算十分高效。對于某一輸入,當(dāng)它小于0時(shí),輸出為0,否則不變。下面是 ReLU 的函數(shù)表達(dá)式。Relu(z) = max(0,z)
那么你可能會問,「它是線性函數(shù)吧?為何我們說它是非線性函數(shù)?」
在線代中,線性函數(shù)就是兩個(gè)向量空間進(jìn)行向量加和標(biāo)量乘的映射。
給定上面的定義,我們知道 max(0, x)是一個(gè)分段線性函數(shù)。之所以說是分段線性,是因?yàn)樗??∞, 0]或[0,+∞)上符合線性函數(shù)的定義。但是在整個(gè)定義域上并不滿足線性函數(shù)的定義。例如f(?1)+ f(1)≠f (0)
所以 Relu 就是一個(gè)非線性激活函數(shù)且有良好的數(shù)學(xué)性質(zhì),并且比 sigmoid 和 tanh 都運(yùn)算得快。除此以外,Relu 還因避免了梯度消失問題而聞名。然而,ReLU 有一個(gè)致命缺點(diǎn),叫「ReLU 壞死」。ReLu 壞死是指網(wǎng)絡(luò)中的神經(jīng)元由于無法在正向傳播中起作用而永久死亡的現(xiàn)象。
更確切地說,當(dāng)神經(jīng)元在向前傳遞中激活函數(shù)輸出為零時(shí),就會出現(xiàn)這個(gè)問題,導(dǎo)致它的權(quán)值將得到零梯度。因此,當(dāng)我們進(jìn)行反向傳播時(shí),神經(jīng)元的權(quán)重將永遠(yuǎn)不會被更新,而特定的神經(jīng)元將永遠(yuǎn)不會被激活。
還有件事值得一提。你可能注意到,不像 sigmoid 和 tanh,Relu 并未限定輸出范圍。這通常會成為一個(gè)很大的問題,它可能在另一個(gè)深度學(xué)習(xí)模型如遞歸神經(jīng)網(wǎng)絡(luò)(RNN)中成為麻煩。具體而言,由 ReLU 生成的無界值可能使 RNN 內(nèi)的計(jì)算在沒有合理的權(quán)重的情況下發(fā)生數(shù)值爆炸。因此反向傳播期間權(quán)重在錯(cuò)誤方向上的輕微變化都會在正向傳遞過程中顯著放大激活值,如此一來學(xué)習(xí)過程可能就非常不穩(wěn)定。我會嘗試在下一篇博客文章中詳細(xì)介紹這一點(diǎn)。(摘自https://my.oschina.net/amui/blog/1633904)
1.4 softmax簡介
Softmax回歸模型是logistic回歸模型在多分類問題上的推廣,在多分類問題中,待分類的類別數(shù)量大于2,且類別之間互斥。比如我們的網(wǎng)絡(luò)要完成的功能是識別0-9這10個(gè)手寫數(shù)字,若最后一層的輸出為[0,1,0, 0, 0, 0, 0, 0, 0, 0],則表明我們網(wǎng)絡(luò)的識別結(jié)果為數(shù)字1。
Softmax的公式為
,可以直觀看出如果某一個(gè)zj大過其他z,那這個(gè)映射的分量就逼近于1,其他就逼近于0,并且對所有輸入數(shù)據(jù)進(jìn)行歸一化。
2.權(quán)重:
3.偏置
偏置單元(bias unit),在有些資料里也稱為偏置項(xiàng)(bias term)或者截距項(xiàng)(intercept term),它其實(shí)就是函數(shù)的截距,與線性方程 y=wx+b 中的 b 的意義是一致的。在 y=wx+b中,b表示函數(shù)在y軸上的截距,控制著函數(shù)偏離原點(diǎn)的距離,其實(shí)在神經(jīng)網(wǎng)絡(luò)中的偏置單元也是類似的作用。
因此,神經(jīng)網(wǎng)絡(luò)的參數(shù)也可以表示為:(W, b),其中W表示參數(shù)矩陣,b表示偏置項(xiàng)或截距項(xiàng)。
2.反向傳播調(diào)節(jié)權(quán)重和偏置
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4772瀏覽量
100807 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4332瀏覽量
62666
原文標(biāo)題:一文淺談神經(jīng)網(wǎng)絡(luò)(非常適合初學(xué)者)
文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論