如下圖,在神經(jīng)元中,輸入的 inputs 通過加權(quán),求和后,還被作用了一個(gè)函數(shù),這個(gè)函數(shù)就是激活函數(shù) Activation Function。
如果不用激勵(lì)函數(shù),每一層輸出都是上層輸入的線性函數(shù),無論神經(jīng)網(wǎng)絡(luò)有多少層,輸出都是輸入的線性組合。
如果使用的話,激活函數(shù)給神經(jīng)元引入了非線性因素,使得神經(jīng)網(wǎng)絡(luò)可以任意逼近任何非線性函數(shù),這樣神經(jīng)網(wǎng)絡(luò)就可以應(yīng)用到眾多的非線性模型中。
每個(gè)激活函數(shù)的輸入都是一個(gè)數(shù)字,然后對(duì)其進(jìn)行某種固定的數(shù)學(xué)操作。激活函數(shù)給神經(jīng)元引入了非線性因素,如果不用激活函數(shù)的話,無論神經(jīng)網(wǎng)絡(luò)有多少層,輸出都是輸入的線性組合。
激活函數(shù)的發(fā)展經(jīng)歷了Sigmoid -> Tanh -> ReLU -> Leaky ReLU -> Maxout這樣的過程,還有一個(gè)特殊的激活函數(shù)Softmax,因?yàn)樗粫?huì)被用在網(wǎng)絡(luò)中的最后一層,用來進(jìn)行最后的分類和歸一化。本文簡(jiǎn)單來梳理這些激活函數(shù)是如何一步一步演變而來的。
總結(jié)如下:
sigmoid非線性函數(shù)的數(shù)學(xué)公式是
函數(shù)圖像如下圖所示。它輸入實(shí)數(shù)值并將其“擠壓”到0到1范圍內(nèi),適合輸出為概率的情況,但是現(xiàn)在已經(jīng)很少有人在構(gòu)建神經(jīng)網(wǎng)絡(luò)的過程中使用sigmoid。
存在問題:
數(shù)學(xué)公式:
Tanh非線性函數(shù)的數(shù)學(xué)公式是
Tanh非線性函數(shù)圖像如下圖所示,它將實(shí)數(shù)值壓縮到[-1,1]之間。
存在問題:
Tanh解決了Sigmoid的輸出是不是零中心的問題,但仍然存在飽和問題。
為了防止飽和,現(xiàn)在主流的做法會(huì)在激活函數(shù)前多做一步batch normalization,盡可能保證每一層網(wǎng)絡(luò)的輸入具有均值較小的、零中心的分布。
數(shù)學(xué)公式:
ReLU非線性函數(shù)圖像如下圖所示。相較于sigmoid和tanh函數(shù),ReLU對(duì)于隨機(jī)梯度下降的收斂有巨大的加速作用;sigmoid和tanh在求導(dǎo)時(shí)含有指數(shù)運(yùn)算,而ReLU求導(dǎo)幾乎不存在任何計(jì)算量。
對(duì)比sigmoid類函數(shù)主要變化是:
1)單側(cè)抑制;
2)相對(duì)寬闊的興奮邊界;
3)稀疏激活性。
存在問題:
ReLU單元比較脆弱并且可能“死掉”,而且是不可逆的,因此導(dǎo)致了數(shù)據(jù)多樣化的丟失。通過合理設(shè)置學(xué)習(xí)率,會(huì)降低神經(jīng)元“死掉”的概率。
數(shù)學(xué)公式:
函數(shù)公式是
其中 e是很小的負(fù)數(shù)梯度值,比如0.01,Leaky ReLU非線性函數(shù)圖像如下圖所示。這樣做目的是使負(fù)軸信息不會(huì)全部丟失,解決了ReLU神經(jīng)元“死掉”的問題。更進(jìn)一步的方法是PReLU,即把 e當(dāng)做每個(gè)神經(jīng)元中的一個(gè)參數(shù),是可以通過梯度下降求解的。
Maxout出現(xiàn)在ICML2013上,作者Goodfellow將maxout和dropout結(jié)合后,號(hào)稱在MNIST, CIFAR-10, CIFAR-100, SVHN這4個(gè)數(shù)據(jù)上都取得了start-of-art的識(shí)別率。
數(shù)學(xué)公式:
f i (x)=m ax j ∈[1 ,k] z i j
假設(shè) w 是2維,那么有:
Maxout是對(duì)ReLU和leaky ReLU的一般化歸納,可以注意到,ReLU 和 Leaky ReLU 都是它的一個(gè)變形(比如, w 1 ,b 1 =0 的時(shí)候,就是 ReLU).
Maxout的擬合能力是非常強(qiáng)的,它可以擬合任意的的凸函數(shù)。作者從數(shù)學(xué)的角度上也證明了這個(gè)結(jié)論,即只需2個(gè)maxout節(jié)點(diǎn)就可以擬合任意的凸函數(shù)了(相減),前提是”隱含層”節(jié)點(diǎn)的個(gè)數(shù)可以任意多.
所以,Maxout 具有 ReLU 的優(yōu)點(diǎn)(如:計(jì)算簡(jiǎn)單,不會(huì) saturation),同時(shí)又沒有 ReLU 的一些缺點(diǎn) (如:容易 go die)。不過呢,還是有一些缺點(diǎn)的嘛:就是把參數(shù)double了。
數(shù)學(xué)公式:
Softmax用于多分類神經(jīng)網(wǎng)絡(luò)輸出,目的是讓大的更大。函數(shù)公式是
示意圖如下。
Softmax是Sigmoid的擴(kuò)展,當(dāng)類別數(shù)k=2時(shí),Softmax回歸退化為Logistic回歸。
還有其他一些激活函數(shù),請(qǐng)看下表:
如果你使用 ReLU,那么一定要小心設(shè)置 learning rate,而且要注意不要讓你的網(wǎng)絡(luò)出現(xiàn)很多 “dead” 神經(jīng)元,如果這個(gè)問題不好解決,那么可以試試 Leaky ReLU、PReLU 或者 Maxout.
還有,通常來說,很少會(huì)把各種激活函數(shù)串起來在一個(gè)網(wǎng)絡(luò)中使用的。
參考資料:
https://zhuanlan.zhihu.com/p/32610035
https://juejin.im/entry/5a2a3a786fb9a044fa19c5e9
聯(lián)系客服