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