ReLu函數(shù)

修正線性單元(Rectified linear unit,ReLU)是神經(jīng)網(wǎng)絡(luò)中最常用的激活函數(shù)。它保留了 step 函數(shù)的生物學(xué)啟發(fā)(只有輸入超出閾值時神經(jīng)元才激活),不過當(dāng)輸入為正的時候,導(dǎo)數(shù)不為零,從而允許基于梯度的學(xué)習(xí)(盡管在 x=0 的時候,導(dǎo)數(shù)是未定義的)。使用這個函數(shù)能使計算變得很快,因為無論是函數(shù)還是其導(dǎo)數(shù)都不包含復(fù)雜的數(shù)學(xué)運(yùn)算。然而,當(dāng)輸入為負(fù)值的時候,ReLU 的學(xué)習(xí)速度可能會變得很慢,甚至使神經(jīng)元直接無效,因為此時輸入小于零而梯度為零,從而其權(quán)重?zé)o法得到更新,在剩下的訓(xùn)練過程中會一直保持靜默。
綜上可知,ReLu激活函數(shù)的優(yōu)點(diǎn)是:
1,相比Sigmoid/tanh函數(shù),使用梯度下降(GD)法時,收斂速度更快
2,相比Sigmoid/tanh函數(shù),Relu只需要一個門限值,即可以得到激活值,計算速度更快
缺點(diǎn)是:
Relu的輸入值為負(fù)的時候,輸出始終為0,其一階導(dǎo)數(shù)也始終為0,這樣會導(dǎo)致神經(jīng)元不能更新參數(shù),也就是神經(jīng)元不學(xué)習(xí)了,這種現(xiàn)象叫做“Dead Neuron”。
為了解決Relu函數(shù)這個缺點(diǎn),在Relu函數(shù)的負(fù)半?yún)^(qū)間引入一個泄露(Leaky)值,所以稱為Leaky Relu函數(shù),如下圖所示:

帶泄露修正線性單元(Leaky ReLU)函數(shù)是經(jīng)典(以及廣泛使用的)的ReLu激活函數(shù)的變體,該函數(shù)輸出對負(fù)值輸入有很小的坡度。由于導(dǎo)數(shù)總是不為零,這能減少靜默神經(jīng)元的出現(xiàn),允許基于梯度的學(xué)習(xí)(雖然會很慢),解決了Relu函數(shù)進(jìn)入負(fù)區(qū)間后,導(dǎo)致神經(jīng)元不學(xué)習(xí)的問題。
Andrew Ng說:
1,Leaky ReLU函數(shù)比ReLU函數(shù)效果好,但實(shí)際中Leaky ReLU并沒有ReLU用的多。
2,除了輸出層是一個二元分類問題外,基本不用Sigmoid函數(shù)
3,Relu是最常用的默認(rèn)激活函數(shù),若不確定用哪個激活函數(shù),就使用Relu或者Leaky Relu