一. 什么是激活函數(shù)
神經(jīng)網(wǎng)絡(luò)中,輸入神經(jīng)元線性組合后,傳入的非線性函數(shù)就是激活函數(shù)(大多是非線性的)。
二. 激活函數(shù)的主要功能
給神經(jīng)網(wǎng)絡(luò)引入非線性元素,使神經(jīng)網(wǎng)絡(luò)可以完成非線性映射。如果不使用激活函數(shù),無(wú)論神經(jīng)網(wǎng)絡(luò)有多少層,都只是線性組合而已。
三. 常見激活函數(shù)特點(diǎn)分析
1. sigmoid函數(shù)
曾經(jīng)最主流的激活函數(shù),現(xiàn)在很少用了,函數(shù)公式和圖像如下圖所示:


sigmoid函數(shù)輸入一個(gè)實(shí)值的數(shù),然后將其壓縮到0~1的范圍內(nèi)。特別地,大的負(fù)數(shù)被映射成0,大的正數(shù)被映射成1,數(shù)值絕對(duì)值越大,梯度越平坦,敏感度越低。也正是這個(gè)特點(diǎn),為它的失寵埋下了伏筆。
- 缺點(diǎn):
- Sigmoid容易飽和,當(dāng)輸入非常大或者非常小的時(shí)候,函數(shù)曲線非常平坦,梯度就接近于0,從圖中可以看出梯度的趨勢(shì)。而反向傳播中,我們需要使用sigmoid的導(dǎo)數(shù)來(lái)更新權(quán)重,如果導(dǎo)數(shù)都基本為0,會(huì)導(dǎo)致權(quán)重基本沒什么更新,我們就無(wú)法遞歸地學(xué)習(xí)到輸入數(shù)據(jù)了,這種現(xiàn)象也可以叫做梯度彌散。
- Sigmoid 的輸出不是0均值的,這是我們不希望的,因?yàn)檫@會(huì)導(dǎo)致后層的神經(jīng)元的輸入是非0均值的信號(hào),這會(huì)對(duì)梯度產(chǎn)生影響:假設(shè)后層神經(jīng)元的輸入都為正,那么對(duì)w求局部梯度則都為正,這樣在反向傳播的過(guò)程中w要么都往正方向更新,要么都往負(fù)方向更新,導(dǎo)致有一種捆綁的效果,使得收斂緩慢。
- 計(jì)算量大,sigmod函數(shù)要進(jìn)行指數(shù)運(yùn)算,這個(gè)對(duì)于計(jì)算機(jī)來(lái)說(shuō)是比較慢的。
- 優(yōu)點(diǎn):
將所有數(shù)據(jù)映射成了(0,1)之間的數(shù),很好的表達(dá)神經(jīng)元的激活與未激活的狀態(tài),適合二分類。
2. tanh函數(shù)
tanh是在sigmoid基礎(chǔ)上的改進(jìn),將壓縮范圍調(diào)整為(-1,1)。


Tanh和Sigmoid是一對(duì)姐妹花,圖形基本是相似的,不同的是它把輸入壓縮到(-1,1)的范圍,因此它基本是0均值的。
- 優(yōu)點(diǎn):
它是0均值的,解決了上述Sigmoid缺點(diǎn)中的第二個(gè),所以實(shí)際中tanh會(huì)比sigmoid更常用。 - 缺點(diǎn):
- 它還是存在梯度彌散的問(wèn)題。
- 計(jì)算量大,函數(shù)要進(jìn)行指數(shù)運(yùn)算,這個(gè)對(duì)于計(jì)算機(jī)來(lái)說(shuō)是比較慢的。
3. relu函數(shù)
relu函數(shù)是目前主流的激活函數(shù),它的公式很簡(jiǎn)單,輸入小于0的時(shí)候?yàn)?,大于0的時(shí)候是本身。


- 優(yōu)點(diǎn):
- 正方向上,梯度不變,也就不會(huì)發(fā)生梯度彌散。
- 正方向上是線性函數(shù),相比于 sigmoid/tanh需要計(jì)算指數(shù)等,ReLU 只需要一個(gè)閾值就可以得到激活值。
- 缺點(diǎn):
只要輸入是負(fù)值,那么輸出就為0,這可能導(dǎo)致后面的網(wǎng)絡(luò)輸入都是0,造成網(wǎng)絡(luò)大面積壞死。
4. 改進(jìn)的relu


ELU函數(shù)是針對(duì)ReLU函數(shù)的一個(gè)改進(jìn)型,相比于ReLU函數(shù),在輸入為負(fù)數(shù)的情況下,是有一定的輸出的,而且這部分輸出還具有一定的抗干擾能力。這樣可以消除ReLU死掉的問(wèn)題,不過(guò)還是有梯度飽和和指數(shù)運(yùn)算的問(wèn)題。


PReLU也是針對(duì)ReLU的一個(gè)改進(jìn)型,在負(fù)數(shù)區(qū)域內(nèi),PReLU有一個(gè)很小的斜率,這樣也可以避免ReLU死掉的問(wèn)題。相比于ELU,PReLU在負(fù)數(shù)區(qū)域內(nèi)是線性運(yùn)算,斜率雖然小,但是不會(huì)趨于0,這算是一定的優(yōu)勢(shì)吧。
四. 神經(jīng)網(wǎng)絡(luò)的輸入為什么要0均值化
這樣做的優(yōu)點(diǎn)是為了在反向傳播中加快網(wǎng)絡(luò)中每一層權(quán)重參數(shù)的收斂。為什么0均值化就會(huì)加快收斂呢?

在梯度下降的時(shí)候,假設(shè)圖中藍(lán)色箭頭方向理想最優(yōu)向量,根據(jù)上述公式,我們可以想一想:
當(dāng)x全為正或者全為負(fù)時(shí),每次返回的梯度都只會(huì)沿著一個(gè)方向發(fā)生變化,這樣就會(huì)使得權(quán)重收斂效率很低。
但當(dāng)x正負(fù)數(shù)量“差不多”時(shí),那么梯度的變化方向就會(huì)不確定,這樣就能達(dá)到上圖中的變化效果,加速了權(quán)重的收斂。
參考:
https://blog.csdn.net/kangyi411/article/details/78969642
https://blog.csdn.net/mooneve/article/details/81943904