關(guān)鍵詞:神經(jīng)網(wǎng)絡(luò)、激活函數(shù) Activiation Function、設(shè)置層數(shù)和神經(jīng)元數(shù)
兩層的神經(jīng)網(wǎng)絡(luò)

對于輸入x,進(jìn)行矩陣計(jì)算 w1 * x??
輸入隱藏層:使用激活函數(shù)(Activation Function) h = max ( 0, s)??
輸出層:s =? w2? * h 矩陣計(jì)算得到最終得分?

第9行和第10行是Score Function,第11行是Loss Funciton,
14-17行,則是使用鏈?zhǔn)椒▌t求解梯度,17行就用到了sigmoid函數(shù)的導(dǎo)數(shù) h * (1 - h)?
生物神經(jīng)網(wǎng)絡(luò)簡介
輸入:樹突:接受信號
計(jì)算:軸突釋放的化學(xué)物質(zhì)使該神經(jīng)產(chǎn)生電位差形成電流傳遞信息
輸出:神經(jīng)末梢傳遞計(jì)算后的信號給其他神經(jīng)元

生物神經(jīng)元的特別之處
有很多不同的類型的神經(jīng)元
樹突可以執(zhí)行復(fù)雜的非線性計(jì)算(我們目前算法中的單個神經(jīng)元執(zhí)行的都是線性運(yùn)算)
突觸所處理的不是單一的權(quán)重,它是一個復(fù)雜的非線性動力學(xué)系統(tǒng)
我們并不確定大腦是否使用 比率/ 概率 進(jìn)行編碼的

激活函數(shù)
具體的每一個函數(shù)的簡介可參照該文>>

神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)是神經(jīng)元互相連接構(gòu)成的一個非循環(huán)的圖(graph,有方向的),也就是說一些神經(jīng)元的輸出會作為其他神經(jīng)元的輸入。
環(huán)路是不允許的因?yàn)檫@會使得神經(jīng)網(wǎng)絡(luò)的前向傳播陷入無止盡的循環(huán)中

全連接層(fully-connected layer)
表示的是相鄰兩層之間的神經(jīng)元兩兩連接,同層的神經(jīng)元則互不連接。如上圖
命名習(xí)慣:平時(shí)說N層神經(jīng)網(wǎng)絡(luò),是不把輸入層計(jì)算在內(nèi)的。一個單層神經(jīng)網(wǎng)絡(luò)表示的是輸入層接輸出層,沒有隱含層的網(wǎng)絡(luò)結(jié)構(gòu)。
輸出層:和神經(jīng)網(wǎng)絡(luò)其他的層不同,最后的輸出層通常情況下沒有activation function,這是因?yàn)樽詈笠粚拥妮敵鐾ǔS脕肀硎绢悇e的score(特別是分類),score通常是實(shí)值的數(shù)。?
神經(jīng)網(wǎng)絡(luò)的大小:衡量某個神經(jīng)網(wǎng)絡(luò)有多大,通常有兩種方法,1是神經(jīng)元的數(shù)目,2是參數(shù)的數(shù)目,相比之下第二種更常用。比如說以上圖為例:?
- 上圖左的網(wǎng)絡(luò)共包含(4+2=6)個神經(jīng)元(不包括輸入層),參數(shù)則有[3*4]+[4*2]=20個weights還有[4+2=6]個bias,也就是總共26個可學(xué)習(xí)的參數(shù)。
- 上圖右的網(wǎng)絡(luò)共包含(4+4+1=9)個神經(jīng)元,參數(shù)則有[3*4]+[4*4]+[4*1]=12+16+4=32個weights還有[4+4+1=9]個bias,也就是總共41個可學(xué)習(xí)的參數(shù)。?
實(shí)際上,現(xiàn)在所有的卷積網(wǎng)絡(luò)通常都包含億級的參數(shù),并且由10-20層網(wǎng)絡(luò)組成(因此說是deep learning)。
前饋神經(jīng)網(wǎng)絡(luò)

如何設(shè)置神經(jīng)網(wǎng)絡(luò)的層數(shù)和神經(jīng)元數(shù)?
如果是為了最終的準(zhǔn)確性,那么越多越好。無論是增加層數(shù)、還是增加神經(jīng)元數(shù)目,神經(jīng)網(wǎng)絡(luò)的性能都會有所提升。因?yàn)樯窠?jīng)元可以協(xié)同作用表達(dá)出不同的函數(shù)來對數(shù)據(jù)進(jìn)行表示。
比如:假設(shè)在二維空間中有一個二值的分類問題,我們可以訓(xùn)練3個不同的神經(jīng)網(wǎng)絡(luò),每個神經(jīng)網(wǎng)絡(luò)都包含一個隱含層,但是隱含層中包含的神經(jīng)元數(shù)目不一樣(3個、6個、20個),分類器的分類效果如下圖:
上圖結(jié)論:同樣層數(shù)的情況下,神經(jīng)元越多的神經(jīng)網(wǎng)絡(luò)對現(xiàn)有的數(shù)據(jù)擬合越好,因?yàn)樗鼈兏軌虮磉_(dá)更加復(fù)雜的函數(shù)。
優(yōu)點(diǎn):可以對更復(fù)雜的數(shù)據(jù)進(jìn)行分類
缺點(diǎn):容易對訓(xùn)練數(shù)據(jù)過擬合(overfitting)。比如,
隱層包含20個神經(jīng)元的圖,它雖然把所有的數(shù)據(jù)都分對了,但把整個平面分成了紅綠相間、相互脫節(jié)的小區(qū)域,看上去很不平滑。而3個神經(jīng)元的圖,它能夠從大方向上去分類數(shù)據(jù),而把一些被綠色點(diǎn)包圍的紅色點(diǎn)看成是異常值、噪聲(outliers)。實(shí)際中這能夠使得模型在測試數(shù)據(jù)上有更好的泛化能力。?
基于上述討論,貌似當(dāng)數(shù)據(jù)不太復(fù)雜的時(shí)候,可以選用小一點(diǎn)的神經(jīng)網(wǎng)絡(luò)來預(yù)防overfitting?
No!我們可以選擇其他更好的方法來避免過擬合(比如L2正則化,dropout,增加噪聲等)。實(shí)際中用這些方法避免過擬合,比減少神經(jīng)元的個數(shù)要更好。
比如:可以觀察不同的正則強(qiáng)度是如何控制20個隱含神經(jīng)元的過擬合的,見下圖
當(dāng)λ(lambda) = 0.001 時(shí)(較?。傻那€彎曲程度很高,有過擬合的嫌疑。
λ = 0.01時(shí),生成的分類曲線已經(jīng)相對圓滑,已經(jīng)基本可以劃分紅綠點(diǎn),認(rèn)為在綠色區(qū)域的是哪個紅點(diǎn)屬于噪音數(shù)據(jù)。
λ = 0.1時(shí),生成的分類曲線已經(jīng)相對很接近直線,相較于λ = 0.01時(shí),認(rèn)為紅色區(qū)域中1個綠色點(diǎn)也是異常值了。
關(guān)于正則化,可以點(diǎn)擊鏈接,進(jìn)行簡單回顧下,核心的表現(xiàn)形式如下:

用λ(lambda)來約束權(quán)重系數(shù)w,讓它盡可能簡單。如果 λ 比較大,則說明我們更看重正則化損失,如果比較 小 ,就說明更看重?cái)?shù)據(jù)損失。λ 過大了會造成欠擬合問題,過小會造成過擬合問題。
總結(jié):不能因?yàn)閾?dān)心過擬合就使用小一點(diǎn)的神經(jīng)網(wǎng)絡(luò),相反如果你的計(jì)算機(jī)性能允許,你應(yīng)該用大的神經(jīng)網(wǎng)絡(luò),并通過一些正則化的方法來控制過擬合(over-fitting).
總結(jié)
向量(vector)運(yùn)算會更加高效
