激活函數(shù)

日常 coding 中,我們會(huì)很自然的使用一些激活函數(shù)顶捷,比如:sigmoid挂绰、ReLU等等。不過好像忘了問自己一(n)件事:

為什么需要激活函數(shù)服赎?

激活函數(shù)都有哪些葵蒂?都長(zhǎng)什么樣?有哪些優(yōu)缺點(diǎn)重虑?

怎么選用激活函數(shù)刹勃?

本文正是基于這些問題展開的,歡迎批評(píng)指正嚎尤!

(此圖并沒有什么卵用荔仁,純屬為了裝x …)

Why use activation functions?

激活函數(shù)通常有如下一些性質(zhì):

非線性:?當(dāng)激活函數(shù)是線性的時(shí)候,一個(gè)兩層的神經(jīng)網(wǎng)絡(luò)就可以逼近基本上所有的函數(shù)了芽死。但是乏梁,如果激活函數(shù)是恒等激活函數(shù)的時(shí)候(即f(x)=x),就不滿足這個(gè)性質(zhì)了关贵,而且如果MLP使用的是恒等激活函數(shù)遇骑,那么其實(shí)整個(gè)網(wǎng)絡(luò)跟單層神經(jīng)網(wǎng)絡(luò)是等價(jià)的。

可微性:?當(dāng)優(yōu)化方法是基于梯度的時(shí)候揖曾,這個(gè)性質(zhì)是必須的落萎。

單調(diào)性:?當(dāng)激活函數(shù)是單調(diào)的時(shí)候亥啦,單層網(wǎng)絡(luò)能夠保證是凸函數(shù)。

f(x)≈x:?當(dāng)激活函數(shù)滿足這個(gè)性質(zhì)的時(shí)候练链,如果參數(shù)的初始化是random的很小的值翔脱,那么神經(jīng)網(wǎng)絡(luò)的訓(xùn)練將會(huì)很高效;如果不滿足這個(gè)性質(zhì)媒鼓,那么就需要很用心的去設(shè)置初始值届吁。

輸出值的范圍:?當(dāng)激活函數(shù)輸出值是?有限?的時(shí)候,基于梯度的優(yōu)化方法會(huì)更加?穩(wěn)定绿鸣,因?yàn)樘卣鞯谋硎臼苡邢迿?quán)值的影響更顯著疚沐;當(dāng)激活函數(shù)的輸出是?無限?的時(shí)候,模型的訓(xùn)練會(huì)更加高效潮模,不過在這種情況小亮蛔,一般需要更小的learning rate.

這些性質(zhì),也正是我們使用激活函數(shù)的原因!

Activation Functions.

Sigmoid

Sigmoid 是常用的非線性的激活函數(shù),它的數(shù)學(xué)形式如下:

f(x)=11+e?x

正如前一節(jié)提到的象踊,它能夠把輸入的連續(xù)實(shí)值“壓縮”到0和1之間。

特別的梯嗽,如果是非常大的負(fù)數(shù),那么輸出就是0沽损;如果是非常大的正數(shù)灯节,輸出就是1.

sigmoid 函數(shù)曾經(jīng)被使用的很多,不過近年來绵估,用它的人越來越少了炎疆。主要是因?yàn)樗囊恍?缺點(diǎn):

Sigmoids saturate and kill gradients.?(saturate 這個(gè)詞怎么翻譯?飽和国裳?)sigmoid

有一個(gè)非常致命的缺點(diǎn)形入,當(dāng)輸入非常大或者非常小的時(shí)候(saturation),這些神經(jīng)元的梯度是接近于0的缝左,從圖中可以看出梯度的趨勢(shì)亿遂。所以,你需要尤其注意參數(shù)的初始值來盡量避免saturation的情況渺杉。如果你的初始值很大的話蛇数,大部分神經(jīng)元可能都會(huì)處在saturation的狀態(tài)而把gradient

kill掉,這會(huì)導(dǎo)致網(wǎng)絡(luò)變的很難學(xué)習(xí)是越。

Sigmoid 的 output 不是0均值.?這是不可取的耳舅,因?yàn)檫@會(huì)導(dǎo)致后一層的神經(jīng)元將得到上一層輸出的非0均值的信號(hào)作為輸入。

產(chǎn)生的一個(gè)結(jié)果就是:如果數(shù)據(jù)進(jìn)入神經(jīng)元的時(shí)候是正的(e.g.x>0elementwise inf=wTx+b)倚评,那么w計(jì)算出的梯度也會(huì)始終都是正的浦徊。

當(dāng)然了馏予,如果你是按batch去訓(xùn)練,那么那個(gè)batch可能得到不同的信號(hào)盔性,所以這個(gè)問題還是可以緩解一下的霞丧。因此,非0均值這個(gè)問題雖然會(huì)產(chǎn)生一些不好的影響纯出,不過跟上面提到的 kill gradients 問題相比還是要好很多的蚯妇。

tanh

tanh 是上圖中的右圖敷燎,可以看出暂筝,tanh 跟sigmoid還是很像的,實(shí)際上硬贯,tanh 是sigmoid的變形:

tanh(x)=2sigmoid(2x)?1

與 sigmoid 不同的是焕襟,tanh 是0均值的。因此饭豹,實(shí)際應(yīng)用中鸵赖,tanh 會(huì)比 sigmoid 更好(畢竟去粗取精了嘛)。

ReLU

近年來拄衰,ReLU 變的越來越受歡迎它褪。它的數(shù)學(xué)表達(dá)式如下:

f(x)=max(0,x)

很顯然,從圖左可以看出翘悉,輸入信號(hào)<0時(shí)茫打,輸出都是0,>0的情況下妖混,輸出等于輸入老赤。w是二維的情況下,使用ReLU之后的效果如下:

ReLU 的優(yōu)點(diǎn):

Krizhevsky et al.發(fā)現(xiàn)使用 ReLU 得到的SGD的收斂速度會(huì)比 sigmoid/tanh 快很多(看右圖)制市。有人說這是因?yàn)樗莑inear抬旺,而且 non-saturating

相比于 sigmoid/tanh,ReLU 只需要一個(gè)閾值就可以得到激活值祥楣,而不用去算一大堆復(fù)雜的運(yùn)算开财。

ReLU 的缺點(diǎn):?當(dāng)然 ReLU 也有缺點(diǎn),就是訓(xùn)練的時(shí)候很”脆弱”误褪,很容易就”die”了. 什么意思呢床未?

舉個(gè)例子:一個(gè)非常大的梯度流過一個(gè) ReLU 神經(jīng)元,更新過參數(shù)之后振坚,這個(gè)神經(jīng)元再也不會(huì)對(duì)任何數(shù)據(jù)有激活現(xiàn)象了薇搁。

如果這個(gè)情況發(fā)生了,那么這個(gè)神經(jīng)元的梯度就永遠(yuǎn)都會(huì)是0.

實(shí)際操作中渡八,如果你的learning rate 很大啃洋,那么很有可能你網(wǎng)絡(luò)中的40%的神經(jīng)元都”dead”了传货。

當(dāng)然,如果你設(shè)置了一個(gè)合適的較小的learning rate宏娄,這個(gè)問題發(fā)生的情況其實(shí)也不會(huì)太頻繁问裕。

Leaky-ReLU、P-ReLU孵坚、R-ReLU

Leaky ReLUs:?就是用來解決這個(gè)?“dying ReLU”?的問題的粮宛。與 ReLU 不同的是:

f(x)=αx,(x<0)

f(x)=x卖宠,(x>=0)

這里的α是一個(gè)很小的常數(shù)巍杈。這樣,即修正了數(shù)據(jù)分布扛伍,又保留了一些負(fù)軸的值筷畦,使得負(fù)軸信息不會(huì)全部丟失。

關(guān)于Leaky ReLU 的效果刺洒,眾說紛紜鳖宾,沒有清晰的定論。有些人做了實(shí)驗(yàn)發(fā)現(xiàn) Leaky ReLU 表現(xiàn)的很好逆航;有些實(shí)驗(yàn)則證明并不是這樣鼎文。

Parametric ReLU:?對(duì)于 Leaky ReLU 中的α,通常都是通過先驗(yàn)知識(shí)人工賦值的因俐。

然而可以觀察到拇惋,損失函數(shù)對(duì)α的導(dǎo)數(shù)我們是可以求得的,可不可以將它作為一個(gè)參數(shù)進(jìn)行訓(xùn)練呢女揭?

Kaiming He的論文《Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification》指出蚤假,不僅可以訓(xùn)練,而且效果更好吧兔。

公式非常簡(jiǎn)單磷仰,反向傳播至未激活前的神經(jīng)元的公式就不寫了,很容易就能得到境蔼。對(duì)α的導(dǎo)數(shù)如下:

δyiδα=0灶平,(ifyi>0),else=yi

原文說使用了Parametric ReLU后箍土,最終效果比不用提高了1.03%.

Randomized ReLU:

Randomized Leaky ReLU 是 leaky ReLU 的random 版本 (α是random的).

它首次試在 kaggle 的NDSB 比賽中被提出的逢享。

核心思想就是,在訓(xùn)練過程中吴藻,α是從一個(gè)高斯分布U(l,u)中 隨機(jī)出來的瞒爬,然后再測(cè)試過程中進(jìn)行修正(有點(diǎn)像dropout的用法)。

數(shù)學(xué)表示如下:

在測(cè)試階段,把訓(xùn)練過程中所有的αij取個(gè)平均值侧但。NDSB 冠軍的α是從U(3,8)中隨機(jī)出來的矢空。那么,在測(cè)試階段禀横,激活函數(shù)就是就是:

yij=xijl+u2

看看 cifar-100 中的實(shí)驗(yàn)結(jié)果:

Maxout

Maxout出現(xiàn)在ICML2013上屁药,作者Goodfellow將maxout和dropout結(jié)合后,號(hào)稱在MNIST, CIFAR-10, CIFAR-100, SVHN這4個(gè)數(shù)據(jù)上都取得了start-of-art的識(shí)別率柏锄。

Maxout 公式如下:

fi(x)=maxj∈[1,k]zij

假設(shè)w是2維酿箭,那么有:

f(x)=max(wT1x+b1,wT2x+b2)

可以注意到,ReLU 和 Leaky ReLU 都是它的一個(gè)變形(比如趾娃,w1,b1=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ù)喊崖,請(qǐng)看下表:

How to choose a activation function?

怎么選擇激活函數(shù)呢?

我覺得這種問題不可能有定論的吧雇逞,只能說是個(gè)人建議荤懂。

如果你使用 ReLU,那么一定要小心設(shè)置 learning rate塘砸,而且要注意不要讓你的網(wǎng)絡(luò)出現(xiàn)很多 “dead” 神經(jīng)元节仿,如果這個(gè)問題不好解決,那么可以試試 Leaky ReLU掉蔬、PReLU 或者 Maxout.

友情提醒:最好不要用 sigmoid廊宪,你可以試試 tanh,不過可以預(yù)期它的效果會(huì)比不上 ReLU 和 Maxout.

還有女轿,通常來說箭启,很少會(huì)把各種激活函數(shù)串起來在一個(gè)網(wǎng)絡(luò)中使用的。

Reference

[1].http://www.faqs.org/faqs/ai-faq/neural-nets/part2/section-10.html

[2].http://papers.nips.cc/paper/874-how-to-choose-an-activation-function.pdf

[3].https://en.wikipedia.org/wiki/Activation_function

[4].http://cs231n.github.io/neural-networks-1/


原文參考:http://blog.csdn.net/cyh_24/article/details/50593400

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末荐操,一起剝皮案震驚了整個(gè)濱河市大猛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌淀零,老刑警劉巖挽绩,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異驾中,居然都是意外死亡肩民,警方通過查閱死者的電腦和手機(jī)唠亚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來持痰,“玉大人割卖,你說我怎么就攤上這事』汲” “怎么了鹏溯?”我有些...
    開封第一講書人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)淹仑。 經(jīng)常有香客問我丙挽,道長(zhǎng),這世上最難降的妖魔是什么匀借? 我笑而不...
    開封第一講書人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任颜阐,我火速辦了婚禮,結(jié)果婚禮上吓肋,老公的妹妹穿的比我還像新娘凳怨。我一直安慰自己,他們只是感情好蓬坡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開白布猿棉。 她就那樣靜靜地躺著,像睡著了一般屑咳。 火紅的嫁衣襯著肌膚如雪萨赁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評(píng)論 1 299
  • 那天兆龙,我揣著相機(jī)與錄音杖爽,去河邊找鬼敲董。 笑死,一個(gè)胖子當(dāng)著我的面吹牛慰安,可吹牛的內(nèi)容都是我干的腋寨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼化焕,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼萄窜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起撒桨,我...
    開封第一講書人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤查刻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后凤类,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體穗泵,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年谜疤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了佃延。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡夷磕,死狀恐怖履肃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情企锌,我是刑警寧澤榆浓,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布于未,位于F島的核電站撕攒,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏烘浦。R本人自食惡果不足惜抖坪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望闷叉。 院中可真熱鬧擦俐,春花似錦、人聲如沸握侧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽品擎。三九已至埋合,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間萄传,已是汗流浹背甚颂。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人振诬。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓蹭睡,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親赶么。 傳聞我的和親對(duì)象是個(gè)殘疾皇子肩豁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容