每一個(gè)神經(jīng)元里面都有一個(gè)激活函數(shù)譬圣,如下圖所示:
那么為什么人工神經(jīng)網(wǎng)絡(luò)需要激活函數(shù)尤其是非線性激活函數(shù)呢躺苦?
我們用人工神經(jīng)網(wǎng)絡(luò)來(lái)表述輸入X與輸出Y之間復(fù)雜的關(guān)系身腻,用數(shù)學(xué)語(yǔ)言來(lái)說(shuō),就是用人工神經(jīng)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)復(fù)雜的函數(shù)匹厘;使用線性激活函數(shù)嘀趟,神經(jīng)網(wǎng)絡(luò)只是把輸入線性組合再輸出,所以無(wú)法實(shí)現(xiàn)對(duì)復(fù)雜函數(shù)的逼近愈诚。
非線性激活函數(shù)可以使神經(jīng)網(wǎng)絡(luò)隨意逼近復(fù)雜函數(shù)她按,類似非線性的Sine函數(shù)隨意逼近各種復(fù)雜函數(shù)一樣牛隅。
沒(méi)有激活函數(shù)帶來(lái)的非線性,多層神經(jīng)網(wǎng)絡(luò)和單層無(wú)異酌泰。非線性激活函數(shù)對(duì)深層神經(jīng)網(wǎng)絡(luò)的函數(shù)逼近能力起著至關(guān)重要的作用
另外:激活函數(shù)對(duì)于將神經(jīng)網(wǎng)絡(luò)的輸出壓縮進(jìn)特定邊界內(nèi)也非常關(guān)鍵媒佣。神經(jīng)元
的輸出值可以非常大。該輸出在未經(jīng)修改的情況下饋送至下一層神經(jīng)元時(shí)陵刹,可以被轉(zhuǎn)換成更大的值默伍,這樣過(guò)程就需要極大算力。激活函數(shù)的一個(gè)任務(wù)就是將神經(jīng)元的輸出映射到有界的區(qū)域(如衰琐,0 到 1 之間)也糊。
由此,不能在隱藏層用線性激活函數(shù)
總結(jié)一下人工神經(jīng)網(wǎng)絡(luò)需要非線性激活函數(shù)的原因:
1碘耳,逼近復(fù)雜函數(shù)显设;
2,將神經(jīng)元的輸出壓縮進(jìn)特定邊界辛辨。
參考文獻(xiàn):《Understanding Activation Functions in Deep Learning》
對(duì)于深度學(xué)習(xí)來(lái)說(shuō)捕捂,深層神經(jīng)網(wǎng)絡(luò)使用反向傳播法(Back propagation)進(jìn)行訓(xùn)練,反向傳播法使用梯度下降法更新權(quán)重斗搞,梯度下降法要求激活函數(shù)可微分
從另外的一個(gè)角度理解:神經(jīng)網(wǎng)絡(luò)的功能指攒,就是用一組基函數(shù)的組合去逼近一個(gè)目標(biāo)函數(shù),實(shí)際上和泰勒級(jí)數(shù)僻焚,傅立葉級(jí)數(shù)允悦,小波變換的思想是一樣的。以一個(gè)二維曲線為例虑啤,如果沒(méi)有非線性的激活函數(shù)隙弛,那么實(shí)際上就是一組直線矢量相加,我們知道再多的直線加起來(lái)還是一條直線狞山,所以必須要用非線性的基相加全闷。從泰勒級(jí)數(shù)可以知道,任何函數(shù)可以分解為x的冪級(jí)數(shù)萍启,而一個(gè)非線性函數(shù)总珠,比如sin,cos,又或者sigmoid,都可以分解為x的無(wú)窮次冪級(jí)數(shù)勘纯。根據(jù)線性方程理論局服,取n個(gè)基,比如sin(nx)和cos(nx),就可以逼近目標(biāo)函數(shù)的泰勒分解的前n項(xiàng)驳遵,那么如果取的項(xiàng)夠多淫奔,就可以通過(guò)一個(gè)組合來(lái)逼近目標(biāo)函數(shù)的泰勒分解的前任意項(xiàng)。
理論是這樣堤结,但實(shí)際中各種基的效果是不一樣的搏讶,如果用泰勒分解的話佳鳖,我們知道在接近0點(diǎn)的時(shí)候效果好,離0點(diǎn)越遠(yuǎn)誤差越大媒惕,由于x的n次冪在x越大時(shí),值發(fā)散的越快来庭,更主要的是它的定義域是無(wú)限的妒蔚,所以需要用大量的小系數(shù)高次項(xiàng)來(lái)給低次項(xiàng)擦屁股,所以這種全域作用月弛,且越遠(yuǎn)影響越大的基效果很不好肴盏。
在工程上用的更多的是分段低次擬合的方法,效果比全域高次擬合要好的多帽衙,小波變換菜皂,樣條差值等等都是這種思想,實(shí)際上神經(jīng)網(wǎng)絡(luò)的激活函數(shù)也是這樣厉萝,sigmoid可以認(rèn)為就是一個(gè)定義域有限的非線性函數(shù)恍飘,雖然它名義上定義域是無(wú)限的,但實(shí)際上超過(guò)一定范圍后值就不變了谴垫,可以用一個(gè)階躍函數(shù)充分抵消其在不期望的范圍外的影響章母。但是sigmoid的問(wèn)題在于,第一翩剪,其影響的范圍還是比較長(zhǎng)(衰減緩慢)乳怎,第二,它的形狀是個(gè)s形前弯,且對(duì)稱蚪缀,很多時(shí)候目標(biāo)函數(shù)就是個(gè)凸的,你來(lái)個(gè)大S總有一半對(duì)不齊恕出,第三询枚,也是我覺(jué)得最重要的,我需要一個(gè)干脆的階躍來(lái)截?cái)喾秶獾挠绊懱旮莝igmoid提供不了哩盲。
在工程上分段低次擬合用得最多的是幾次?實(shí)際上是最簡(jiǎn)單的一次線段狈醉!有限元分析里面就是大量的直線廉油,三角形,計(jì)算簡(jiǎn)單苗傅,只要分段夠多精度也不錯(cuò)抒线。Relu實(shí)現(xiàn)的就是分段一次擬合,仔細(xì)看就可以發(fā)現(xiàn)其實(shí)一對(duì)Relu就可以確定一條線段渣慕。還是以二維曲線逼近為例嘶炭,可以從最左端開(kāi)始在每個(gè)分段點(diǎn)用一個(gè)帶系數(shù)的relu來(lái)完成一系列折線從而逼近目標(biāo)函數(shù)抱慌。因此Relu比sigmoid方便的多。
因此從分段逼近的角度來(lái)考慮眨猎,relu是純直線線段抑进,其它的一些類relu是帶點(diǎn)曲線的,而且不像Sigmoid一樣有個(gè)畫蛇添足的大S睡陪,真的需要S形時(shí)完全可以用兩個(gè)凸曲線去拼寺渗。
至于其它的0均值,1方差之類的屬于錦上添花兰迫,減少訓(xùn)練偏置參數(shù)的時(shí)間信殊。