神經(jīng)網(wǎng)絡(luò)與激活函數(shù)神經(jīng)網(wǎng)絡(luò)從數(shù)學(xué)上來說,就是用來擬合一個函數(shù)。把數(shù)據(jù)扔進去,得到一個預(yù)測結(jié)果,以此來解決分類和回歸等問題。但是針對不同的問題,需要擬合不同的函數(shù),包括線性函數(shù)和非線性函數(shù)。神經(jīng)網(wǎng)絡(luò)中常常會見到各種激活函數(shù),當需要擬合非線性函數(shù)時就需要激活函數(shù)登場了。 對于每個神經(jīng)元來說,都是先進行線性變換,再將線性變換的結(jié)果通過激活函數(shù)來進行激活。注意,這里的有效激活函數(shù)必須是非線性函數(shù)。如果采用線性激活函數(shù),則在前向傳播的過程中,相當于一直做線性變換,這樣的話,無論多少隱藏層,都是線性變換,也就是隱藏層在這里沒有發(fā)生作用,仍然是一個單層的感知機。當然對于最后一層的輸出層則沒有這個要求,可以選擇線性或者非線性的激活函數(shù)。 常用激活函數(shù)總結(jié)這里主要介紹非線性激活函數(shù),線性的激活函數(shù)也就是恒等函數(shù),在坐標軸表示為一條直線,通常使用較少。常見的非線性激活函數(shù)通常可以分為兩類,一種是輸入單個變量輸出單個變量,如sigmoid函數(shù),Relu函數(shù);還有一種是輸入多個變量輸出多個變量,如Softmax函數(shù),Maxout函數(shù)。 1.Sigmoid函數(shù)Sigmoid函數(shù),也叫做S函數(shù)將值限定在 \((0,1)\) 之間,能夠很好的作為概率來解釋算法得到的結(jié)果。目前在計算機視覺中不常用,只適用于二分類等問題。 缺點是當輸入較大的正數(shù)或者負數(shù)時,導(dǎo)數(shù)就會變?yōu)?,這時候采用梯度下降方法就會下降很慢,使得神經(jīng)網(wǎng)絡(luò)不能正常更新。同時不是以0為對稱,容易在更新時產(chǎn)生 zigzag 路徑。 函數(shù)定義為 2.tanh函數(shù)thah函數(shù)能夠?qū)⒅迪薅ㄔ?\((-1,1)\) 之間,比sigmoid函數(shù)更為常用。但是也存在與sigmoid函數(shù)一樣的缺點,當在z值較大或者較小時,斜率接近0,這時優(yōu)化速度很慢,這種情況下可以考慮采用ReLU函數(shù)。 函數(shù)定義為 求導(dǎo)結(jié)果為 3. ReLU函數(shù)及其變體ReLU函數(shù),也叫做線性整流函數(shù),能夠解決在值較大時產(chǎn)生的梯度為0的問題,能夠正常的更新,并且沒有復(fù)雜的指數(shù)計算,使得性能較好,收斂較快,是目前在視覺領(lǐng)域最為常見的激活函數(shù)。 ReLU函數(shù)為 其導(dǎo)數(shù)為 LeakyReLU是為了防止ReLU函數(shù)在負數(shù)時,斜率為0的情況,但在實際情況中,很難到負數(shù)那邊去,所以基本采用ReLU就足夠了,不過也建議采用交叉驗證來試試這個函數(shù)。 Leaky ReLU為 此外,還有幾種激活函數(shù)由算法來學(xué)習(xí)負數(shù)區(qū)域的學(xué)習(xí)率,如PReLU函數(shù)和ELU函數(shù),原理與ReLU函數(shù)類似。 4.Softmax函數(shù)softmax函數(shù)與sigmoid函數(shù)很相似,也是將值變換到 \((0,1)\) 之間。但是可以針對多個類別,預(yù)測出每個類別的歸一化概率,所以通常softmax函數(shù)是在分類器的輸出層使用。 其函數(shù)表達式為 如何選擇激活函數(shù)選擇激活函數(shù)沒有固定的規(guī)則,每個激活函數(shù)適用于不同的應(yīng)用,比如分類和回歸,多分類和二分類任務(wù)。但根據(jù)每個激活函數(shù)的性質(zhì),也存在一些基本的規(guī)律
|
|