5分鐘搞定ReLU:最受歡迎的激活功能
本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)。
神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)中的激活函數(shù)在激發(fā)隱藏節(jié)點(diǎn)以產(chǎn)生更理想的輸出方面起著重要作用,激活函數(shù)的主要目的是將非線(xiàn)性特性引入模型。
在人工神經(jīng)網(wǎng)絡(luò)中,給定一個(gè)輸入或一組輸入,節(jié)點(diǎn)的激活函數(shù)定義該節(jié)點(diǎn)的輸出。可以將標(biāo)準(zhǔn)集成電路視為激活功能的控制器,根據(jù)輸入的不同,激活功能可以“打開(kāi)”(ON)或“關(guān)閉(OFF)”。
圖1:Sigmoid;圖2:tanh
Sigmoid和tanh是單調(diào)、可微的激活函數(shù),在RELU出現(xiàn)前比較流行。然而,隨著時(shí)間的推移,這些函數(shù)會(huì)飽和,導(dǎo)致梯度消失。另一種常用的激活函數(shù)可以解決這一問(wèn)題:直線(xiàn)修正單元(ReLU)。
上圖中,藍(lán)線(xiàn)表示直線(xiàn)單元(ReLU),而綠線(xiàn)是ReLU的變體,稱(chēng)為Softplus。ReLU的其他變體包括LeakyReLU、ELU、SiLU等,用于提高某些任務(wù)的性能。
本文只考慮直線(xiàn)單元(ReLU)。因?yàn)槟J(rèn)情況下,它仍然是執(zhí)行大多數(shù)深度學(xué)習(xí)任務(wù)最常用的激活函數(shù)。在用于特定目的時(shí),其變體可能有輕微的優(yōu)勢(shì)。
在2000年, Hahnloser等人首次將具有很強(qiáng)的生物學(xué)動(dòng)機(jī)和數(shù)學(xué)證明的激活函數(shù)引入到一個(gè)動(dòng)態(tài)網(wǎng)絡(luò)。相比于2011年之前廣泛使用的激活函數(shù),如logistic sigmoid(靈感來(lái)自于概率理論和logistic回歸)及其更實(shí)用的tanh(對(duì)應(yīng)函數(shù)雙曲正切)相比,這首次證明了該函數(shù)能夠更好地訓(xùn)練更深層次的網(wǎng)絡(luò)。
截止2017年,整流器是深度神經(jīng)網(wǎng)絡(luò)中最受歡迎的激活函數(shù)。采用整流器的單元也稱(chēng)為整流線(xiàn)性單元(ReLU)。
RELU的最大問(wèn)題是在點(diǎn)0處是不可微。而研究人員傾向于使用sigmoid和tanh這種可微函數(shù)。但是在0點(diǎn)可微畢竟是特殊情況,所以到目前為止,ReLU還是深度學(xué)習(xí)的最佳激活功能,需要的計(jì)算量是非常小,計(jì)算速度卻很快。
在除0以外的所有點(diǎn)上,ReLU激活函數(shù)上都是可微的。對(duì)于大于0的值,僅考慮函數(shù)的最大值??梢赃@樣寫(xiě):
- f(x) = max{0, z}
簡(jiǎn)單來(lái)說(shuō),也可以這樣:
- if input > 0: returninputelse: return 0
所有負(fù)數(shù)默認(rèn)為0,并考慮正數(shù)的最大值。
對(duì)于神經(jīng)網(wǎng)絡(luò)的反向傳播計(jì)算而言,ReLU的判別相對(duì)容易。唯一要做的假設(shè)是,在點(diǎn)0處的導(dǎo)數(shù)也被認(rèn)為是0。這通常問(wèn)題不大,而且在大多數(shù)情況下都o(jì)k。函數(shù)的導(dǎo)數(shù)就是斜率的值。負(fù)值的斜率是0.0,正值的斜率是1.0。
ReLU激活函數(shù)的主要優(yōu)點(diǎn)是:
- 卷積層和深度學(xué)習(xí):它們是卷積層和深度學(xué)習(xí)模型訓(xùn)練中最常用的激活函數(shù)。
- 計(jì)算簡(jiǎn)單:整流函數(shù)實(shí)現(xiàn)起來(lái)很簡(jiǎn)單,只需要一個(gè)max()函數(shù)。
- 代表性稀疏性:整流器函數(shù)的一個(gè)重要優(yōu)點(diǎn)是它能夠輸出一個(gè)真正的零值。
- 線(xiàn)性行為:當(dāng)神經(jīng)網(wǎng)絡(luò)的行為是線(xiàn)性或接近線(xiàn)性時(shí),它更容易被優(yōu)化。
然而,經(jīng)過(guò)RELU單元的主要問(wèn)題是所有的負(fù)值會(huì)立即變?yōu)?,這降低了模型對(duì)數(shù)據(jù)正確擬合或訓(xùn)練的能力。
這意味著任何給ReLU激活函數(shù)的負(fù)輸入都會(huì)立即將圖中的值變?yōu)?。由于沒(méi)有適當(dāng)?shù)赜成湄?fù)值,這反過(guò)來(lái)會(huì)影響結(jié)果圖。不過(guò),使用ReLU激活函數(shù)的不同變體(如LeakyReLU和前面討論的其他函數(shù)),可以輕松解決這個(gè)問(wèn)題。
這是一個(gè)簡(jiǎn)短的介紹,幫你在深度學(xué)習(xí)技術(shù)時(shí)代了解整流線(xiàn)性單元及其重要性。畢竟,它比所有其他激活函數(shù)更受歡迎肯定是有原因的。