作者:Mouaad B.
來源:DeepHub IMBA
如果你剛剛開始學(xué)習(xí)神經(jīng)網(wǎng)絡(luò),激活函數(shù)的原理一開始可能很難理解。但是如果你想開發(fā)強(qiáng)大的神經(jīng)網(wǎng)絡(luò),理解它們是很重要的。
但在我們深入研究激活函數(shù)之前,先快速回顧一下神經(jīng)網(wǎng)絡(luò)架構(gòu)的基本元素。如果你已經(jīng)熟悉神經(jīng)網(wǎng)絡(luò)的工作原理,可以直接跳到下一節(jié)。
神經(jīng)網(wǎng)絡(luò)架構(gòu)
神經(jīng)網(wǎng)絡(luò)由稱為神經(jīng)元的鏈接節(jié)點(diǎn)層組成,神經(jīng)元通過稱為突觸的加權(quán)連接來處理和傳輸信息。
每個(gè)神經(jīng)元從上一層的神經(jīng)元獲取輸入,對(duì)其輸入的和應(yīng)用激活函數(shù),然后將輸出傳遞給下一層。
神經(jīng)網(wǎng)絡(luò)的神經(jīng)元包含輸入層、隱藏層和輸出層。
輸入層只接收來自域的原始數(shù)據(jù)。這里沒有計(jì)算,節(jié)點(diǎn)只是簡單地將信息(也稱為特征)傳遞給下一層,即隱藏層。隱藏層是所有計(jì)算發(fā)生的地方。它從輸入層獲取特征,并在將結(jié)果傳遞給輸出層之前對(duì)它們進(jìn)行各種計(jì)算。輸出層是網(wǎng)絡(luò)的最后一層。它使用從隱藏層獲得的所有信息并產(chǎn)生最終值。
為什么需要激活函數(shù)。為什么神經(jīng)元不能直接計(jì)算并將結(jié)果轉(zhuǎn)移到下一個(gè)神經(jīng)元?激活函數(shù)的意義是什么?
激活函數(shù)在神經(jīng)網(wǎng)絡(luò)中的作用
網(wǎng)絡(luò)中的每個(gè)神經(jīng)元接收來自其他神經(jīng)元的輸入,然后它對(duì)輸入進(jìn)行一些數(shù)學(xué)運(yùn)算以生成輸出。一個(gè)神經(jīng)元的輸出可以被用作網(wǎng)絡(luò)中其他神經(jīng)元的輸入。
如果沒有激活函數(shù),神經(jīng)元將只是對(duì)輸入進(jìn)行線性數(shù)學(xué)運(yùn)算。這意味著無論我們?cè)诰W(wǎng)絡(luò)中添加多少層神經(jīng)元,它所能學(xué)習(xí)的東西仍然是有限的,因?yàn)檩敵隹偸禽斎氲暮唵尉€性組合。
激活函數(shù)通過在網(wǎng)絡(luò)中引入非線性來解決問題。通過添加非線性,網(wǎng)絡(luò)可以模擬輸入和輸出之間更復(fù)雜的關(guān)系,從而發(fā)現(xiàn)更多有價(jià)值的模式。
簡而言之,激活函數(shù)通過引入非線性并允許神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)復(fù)雜的模式,使神經(jīng)網(wǎng)絡(luò)更加強(qiáng)大。
理解不同類型的激活函數(shù)
我們可以將這些函數(shù)分為三部分:二元、線性和非線性。
二元函數(shù)只能輸出兩個(gè)可能值中的一個(gè),而線性函數(shù)則返回基于線性方程的值。
非線性函數(shù),如sigmoid函數(shù),Tanh, ReLU和elu,提供的結(jié)果與輸入不成比例。每種類型的激活函數(shù)都有其獨(dú)特的特征,可以在不同的場景中使用。
1、Sigmoid / Logistic激活函數(shù)
Sigmoid激活函數(shù)接受任何數(shù)字作為輸入,并給出0到1之間的輸出。輸入越正,輸出越接近1。另一方面,輸入越負(fù),輸出就越接近0,如下圖所示。
它具有s形曲線,使其成為二元分類問題的理想選擇。如果要?jiǎng)?chuàng)建一個(gè)模型來預(yù)測一封電子郵件是否為垃圾郵件,我們可以使用Sigmoid函數(shù)來提供一個(gè)0到1之間的概率分?jǐn)?shù)。如果得分超過0.5分,則認(rèn)為該郵件是垃圾郵件。如果它小于0.5,那么我們可以說它不是垃圾郵件。
函數(shù)定義如下:
但是Sigmoid函數(shù)有一個(gè)缺點(diǎn)——它受到梯度消失問題的困擾。當(dāng)輸入變得越來越大或越來越小時(shí),函數(shù)的梯度變得非常小,減慢了深度神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過程,可以看上面圖中的導(dǎo)數(shù)(Derivative)曲線。
但是Sigmoid函數(shù)仍然在某些類型的神經(jīng)網(wǎng)絡(luò)中使用,例如用于二進(jìn)制分類問題的神經(jīng)網(wǎng)絡(luò),或者用于多類分類問題的輸出層,因?yàn)轭A(yù)測每個(gè)類的概率Sigmoid還是最好的解決辦法。
2、Tanh函數(shù)(雙曲正切)
Tanh函數(shù),也被稱為雙曲正切函數(shù),是神經(jīng)網(wǎng)絡(luò)中使用的另一種激活函數(shù)。它接受任何實(shí)數(shù)作為輸入,并輸出一個(gè)介于-1到1之間的值。
Tanh函數(shù)和Sigmoid函數(shù)很相似,但它更以0為中心。當(dāng)輸入接近于零時(shí),輸出也將接近于零。這在處理同時(shí)具有負(fù)值和正值的數(shù)據(jù)時(shí)非常有用,因?yàn)樗梢詭椭W(wǎng)絡(luò)更好地學(xué)習(xí)。
函數(shù)定義如下:
與Sigmoid函數(shù)一樣,Tanh函數(shù)也會(huì)在輸入變得非常大或非常小時(shí)遭遇梯度消失的問題。
3、線性整流單元/ ReLU函數(shù)
ReLU是一種常見的激活函數(shù),它既簡單又強(qiáng)大。它接受任何輸入值,如果為正則返回,如果為負(fù)則返回0。換句話說,ReLU將所有負(fù)值設(shè)置為0,并保留所有正值。
函數(shù)定義如下:
使用ReLU的好處之一是計(jì)算效率高,并且實(shí)現(xiàn)簡單。它可以幫助緩解深度神經(jīng)網(wǎng)絡(luò)中可能出現(xiàn)的梯度消失問題。
但是,ReLU可能會(huì)遇到一個(gè)被稱為“dying ReLU”問題。當(dāng)神經(jīng)元的輸入為負(fù),導(dǎo)致神經(jīng)元的輸出為0時(shí),就會(huì)發(fā)生這種情況。如果這種情況發(fā)生得太頻繁,神經(jīng)元就會(huì)“死亡”并停止學(xué)習(xí)。
4、Leaky ReLU
Leaky ReLU函數(shù)是ReLU函數(shù)的一個(gè)擴(kuò)展,它試圖解決“dying ReLU”問題。Leaky ReLU不是將所有的負(fù)值都設(shè)置為0,而是將它們?cè)O(shè)置為一個(gè)小的正值,比如輸入值的0.1倍。他保證即使神經(jīng)元接收到負(fù)信息,它仍然可以從中學(xué)習(xí)。
函數(shù)定義如下:
Leaky ReLU已被證明在許多不同類型的問題中工作良好。
5、指數(shù)線性單位(elu)函數(shù)
ReLU一樣,他們的目標(biāo)是解決梯度消失的問題。elu引入了負(fù)輸入的非零斜率,這有助于防止“dying ReLU”問題
公式為:
這里的alpha是控制負(fù)飽和度的超參數(shù)。
與ReLU和tanh等其他激活函數(shù)相比,elu已被證明可以提高訓(xùn)練和測試的準(zhǔn)確性。它在需要高準(zhǔn)確度的深度神經(jīng)網(wǎng)絡(luò)中特別有用。
6、Softmax函數(shù)
在需要對(duì)輸入進(jìn)行多類別分類的神經(jīng)網(wǎng)絡(luò)中,softmax函數(shù)通常用作輸出層的激活函數(shù)。它以一個(gè)實(shí)數(shù)向量作為輸入,并返回一個(gè)表示每個(gè)類別可能性的概率分布。
softmax的公式是:
這里的x是輸入向量,i和j是從1到類別數(shù)的索引。
Softmax對(duì)于多類分類問題非常有用,因?yàn)樗_保輸出概率之和為1,從而便于解釋結(jié)果。它也是可微的,這使得它可以在訓(xùn)練過程中用于反向傳播。
7、Swish
Swish函數(shù)是一個(gè)相對(duì)較新的激活函數(shù),由于其優(yōu)于ReLU等其他激活函數(shù)的性能,在深度學(xué)習(xí)社區(qū)中受到了關(guān)注。
Swish的公式是:
這里的beta是控制飽和度的超參數(shù)。
Swish類似于ReLU,因?yàn)樗且粋€(gè)可以有效計(jì)算的簡單函數(shù)。并且有一個(gè)平滑的曲線,有助于預(yù)防“dying ReLU”問題。Swish已被證明在各種深度學(xué)習(xí)任務(wù)上優(yōu)于ReLU。
選擇哪一種?
首先,需要將激活函數(shù)與你要解決的預(yù)測問題類型相匹配??梢詮腞eLU激活函數(shù)開始,如果沒有達(dá)到預(yù)期的結(jié)果,則可以轉(zhuǎn)向其他激活函數(shù)。
以下是一些需要原則:
- ReLU激活函數(shù)只能在隱藏層中使用。
- Sigmoid/Logistic和Tanh函數(shù)不應(yīng)該用于隱藏層,因?yàn)樗鼈儠?huì)在訓(xùn)練過程中引起問題。
Swish函數(shù)用于深度大于40層的神經(jīng)網(wǎng)絡(luò)會(huì)好很多。
輸出層的激活函數(shù)是由你要解決的預(yù)測問題的類型決定的。以下是一些需要記住的基本原則:
回歸-線性激活函數(shù)
二元分類- Sigmoid
多類分類- Softmax
- 多標(biāo)簽分類- Sigmoid
選擇正確的激活函數(shù)可以使預(yù)測準(zhǔn)確性有所不同。所以還需要根據(jù)不同的使用情況進(jìn)行測試。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4777瀏覽量
100989 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4344瀏覽量
62839
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論