一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

神經(jīng)網(wǎng)絡(luò)為何非激活函數(shù)不可?

 mynotebook 2022-09-12 發(fā)布于湖南

重磅干貨,第一時間送達

圖片

圖片

本文轉(zhuǎn)載自:AI科技評論

作者 |  Vandit Jain 

編譯 | 龔倩    編輯 | 叢末
激活函數(shù)是神經(jīng)網(wǎng)絡(luò)中一個至關(guān)重要的概念,決定了某個神經(jīng)元是否被激活,判斷該神經(jīng)元獲得的信息是否有用,并決定該保留還是該去掉此神經(jīng)元。
本文作者 Vandit Jain 對激活函數(shù)的相關(guān)知識進行了一個較為全面的總結(jié),重點聚焦于以下幾個方面:
1. 激活函數(shù)是什么,它在網(wǎng)絡(luò)中有什么作用?
2. 為什么需要激活函數(shù)而不使用線性函數(shù)?
3. 理想的激活函數(shù)有哪些特征?
4. 目前使用的各種非線性函數(shù)。
5. 在最新研究中涌現(xiàn)的值得關(guān)注的非線性激活函數(shù)。
6. 在深層神經(jīng)網(wǎng)絡(luò)中應(yīng)該使用哪些激活函數(shù)以及如何使用它們?
一、激活函數(shù)是什么?
簡單地說,激活函數(shù)就是加入到人工神經(jīng)網(wǎng)絡(luò)中的一個函數(shù),目的在于幫助神經(jīng)網(wǎng)絡(luò)從數(shù)據(jù)中學習復(fù)雜模式。
相比于人類大腦中基于神經(jīng)元的模型,激活函數(shù)是決定向下一個神經(jīng)元傳遞何種信息的單元,這也正是激活函數(shù)在人工神經(jīng)網(wǎng)絡(luò)中的作用。激活函數(shù)接收前一個單元輸出的信號,并將其轉(zhuǎn)換成某種可以被下一個單元接收的形式。
下圖總結(jié)了兩者的區(qū)別:
圖片
資料來源:斯坦福大學的cs231n 課程
二、為什么需要激活函數(shù)?
在神經(jīng)網(wǎng)絡(luò)中使用非線性激活函數(shù)的原因有很多。
1. 除了前面討論過的生物學方面的相似性外,激活函數(shù)還有助于我們根據(jù)要求將神經(jīng)元的輸出值限定在一定的范圍內(nèi)。這一點很重要,因為激活函數(shù)的輸入是 W*x+b,其中 W 是單元的權(quán)重,x 是輸入值,然后加上偏置 b。如果輸出值不被限定在某個范圍內(nèi),它可能會變得非常大,特別是在具有數(shù)百萬個參數(shù)的深層神經(jīng)網(wǎng)絡(luò)中,從而導(dǎo)致計算量過大。例如,有一些激活函數(shù)(如 softmax)對于不同的輸入值(0 或 1)會輸出特定的值。
2. 激活函數(shù)最重要的特點是它具有在神經(jīng)網(wǎng)絡(luò)中加入非線性的能力。為了便于理解,我們不妨考慮一下多維數(shù)據(jù),如下圖所示: 
圖片
線性函數(shù)有三個屬性(在這個圖中分別是體重,收縮壓和年齡),它使我們得到一條貫穿三維空間的直線,但它永遠也無法學會一種模式來將一個人準確地區(qū)分為吸煙者和不吸煙者(以手頭上現(xiàn)有的分類問題為例)。原因很簡單,定義這個分類的模式根本不是線性的。
那在人工神經(jīng)網(wǎng)絡(luò)中,如果我們使用只有一個單元而沒有激活函數(shù)的神經(jīng)網(wǎng)絡(luò)會怎樣?這種情況下我們所得到的輸出基本上還是 W*x+b,這并不好,因為 W*x 也是 x 的一次方,因此函數(shù)仍然是線性的,基本等同于線性函數(shù)。
如果我們疊加多層呢?假如我們用一個函數(shù) f(x)來表示 n??層,那么可以得出:
圖片
然而,這還不夠復(fù)雜,特別是在計算機視覺或自然語言處理等有著復(fù)雜模式的問題中。
為了使模型能夠?qū)W習非線性模式(或者說具有更高的復(fù)雜度),特定的非線性層(激活函數(shù))被加入其中。
三、理想的激活函數(shù)具有的特點
1. 梯度消失問題:神經(jīng)網(wǎng)絡(luò)是利用梯度下降過程來訓練的。
梯度下降由基于鏈式規(guī)則的反向傳播組成,鏈式規(guī)則用于獲取權(quán)值變化以減少每次訓練后的損失??紤]一個兩層網(wǎng)絡(luò),第一層表示為 f?(x),第二層表示為 f?(x)。整個網(wǎng)絡(luò)為 o(x)= f?(f?(x))。
如果我們反過來計算權(quán)重,可以得到 o`(x)= f?(x)*f?`(x)。這里 f?(x)本身是由 Act(W?*x?+b?)組成的復(fù)合函數(shù),其中 Act 是第 1 層之后的激活函數(shù)。再次應(yīng)用鏈式規(guī)則,可以得到 f?`(x)=Act(W?*x?+b?)*x?,這意味著此結(jié)果也直接依賴于激活值。現(xiàn)在可以看到, 這樣一個鏈式規(guī)則在反向傳播時會經(jīng)過很多個層。
如果 Act()的值介于 0 和 1 之間,那么它會乘以幾個這樣的值來計算初始層的梯度。這個過程會降低初始層的梯度值,并且這些層也無法正確學習。
換言之,因為網(wǎng)絡(luò)的深度和激活過程將值轉(zhuǎn)變?yōu)橼吔?0,它們的梯度逐漸消失,這就是所謂的梯度消失問題。所以我們希望理想的激活函數(shù)不要使梯度逐漸變?yōu)榱恪?/span>
2. 以零為中心:激活函數(shù)的輸出應(yīng)對稱于零,這樣梯度就不會向特定方向移動。
3. 計算成本:網(wǎng)絡(luò)的每一層都會應(yīng)用激活函數(shù),它在深層網(wǎng)絡(luò)中需要計算數(shù)百萬次。因此,激活函數(shù)的計算成本應(yīng)該很低。
4. 可性:如前所述,神經(jīng)網(wǎng)絡(luò)使用梯度下降過程進行訓練,因此模型中的層需要可微或至少部分可微。這是一個函數(shù)可以作為激活函數(shù)層的必要條件。
四、目前使用的各種非線性函數(shù)
1、Sigmoid 函數(shù)
函數(shù)如下圖所示:
圖片
這種激活函數(shù)從未在實際模型中使用,僅由于歷史原因羅列在此。Sigmoid 函數(shù)計算量大,會導(dǎo)致梯度消失問題且不以零為中心,通常在二進制分類問題中才會使用。
  • Softmax 邏輯回歸模型: softmax 邏輯回歸模型是 Sigmoid 函數(shù)在多分類問題上的一種推廣形式。與 Sigmoid 函數(shù)相似,它也產(chǎn)生 0-1 范圍內(nèi)的值,因此被用作分類模型的最后一層。

2、雙曲正切函數(shù) tanh

如圖所示:
圖片
相比于 Sigmoid 函數(shù),它僅僅解決了以零為中心這個問題。
3、線性整流函數(shù)(Rectified Linear Unit, ReLU)
該函數(shù)又稱修正線性單元,定義為 f(x)=max(0,x):
圖片
這是一個使用十分廣泛的激活函數(shù),尤其是在卷積神經(jīng)網(wǎng)絡(luò)中。它計算簡單,不會飽和,不產(chǎn)生梯度消失問題,但不以零為中心。它也存在「dying ReLU」問題,即當輸入的是負數(shù)時,輸出都會變成零,這樣就導(dǎo)致一些節(jié)點完全「死掉」,神經(jīng)元也不會進行學習。
ReLU 的另一個問題是激活爆炸,因為它的上限是 inf,有時會產(chǎn)生不可用的節(jié)點。
4、Leaky ReLU 和 Parametric ReLU 函數(shù)
函數(shù)的定義為 f(x)=max(αx,x),如下圖所示:

圖片

當α為0.1時
這里α是一個通常設(shè)置為 0.01 的超參數(shù)。顯然,Leaky ReLU 在一定程度上解決了「dying ReLU」這一問題。請注意,如果我們將α設(shè)為 1,那么 Leaky ReLU 將成為線性函數(shù) f(x)=x,并且沒有任何用處。
因此,α的值永遠不會設(shè)置為趨近于 1 的值。如果我們分別將α設(shè)為每個神經(jīng)元的超參數(shù),則得到 Parametric ReLU 或 PReLU。
5、ReLU6 函數(shù)
ReLU6 在 x>0 的區(qū)域基本上等同于 ReLU,定義為 f(x)=min(max(0,x),6)
圖片
這有助于阻止激活增長,從而防止梯度爆炸(趨近無限時)以及正常 ReLUs 發(fā)生的其他小問題。
我們通常的想法是,為什么不把 ReLU6 和 Leaky ReLU 結(jié)合起來,以解決現(xiàn)在的激活函數(shù)的所有已知的問題。流行的 DL 框架沒有提供現(xiàn)成的這樣的激活函數(shù),但我認為這是一個很好的想法。
五、在最新研究中涌現(xiàn)的值得關(guān)注的非線性激活函數(shù)
1、Swish 函數(shù)
Swish 由 Ramachandran 等人在 2017 年提出,定義為 f(x)=x*sigmoid(x)。
圖片
與 ReLU 相比,盡管圖形非常相似,Swish 的性能卻要稍好一些。然而,ReLU 在 x=0 時會突然發(fā)生改變,而 Swish 與此不同,它不會在某個點上突然改變,這使得訓練時 Swish 更容易收斂。
但是,Swish 的缺點是它的計算成本很高,為了解決這個問題,我們來看看下一個版本的 Swish。
2、Hard-Swish 或 H-Swish函數(shù)
函數(shù)定義如下:
圖片
它最大的優(yōu)點是幾乎類似于 swish 函數(shù),但計算成本卻比 swish 更低,因為它用線性類型的 ReLU 函數(shù)取代了指數(shù)類型的 sigmoid 函數(shù)。
六、在深層神經(jīng)網(wǎng)絡(luò)中如何使用這些激活函數(shù)?
首先,Tanh 和 sigmoid 函數(shù)會引起巨大的梯度消失問題,因此一般不推薦使用。
神經(jīng)網(wǎng)絡(luò)中一開始嘗試引入 ReLU 函數(shù)。如上文所述,在權(quán)重層(諸如 CNN、RNN、LSTM 或線性感知層)之后添加激活層。如果你認為模型已經(jīng)停止學習,那么可以用 Leaky ReLU 替換它,以避免「Dying ReLU」問題。但 Leaky ReLU 會稍微增加計算時間。
如果網(wǎng)絡(luò)中也有 Batch-Norm 層(批標準化層),則需要在執(zhí)行激活函數(shù)之前添加該層,順序是先進行 CNN-Batch(卷積神經(jīng)網(wǎng)絡(luò)批處理),再進行 Norm-Act(標準化動作)。雖然 Batch-Norm(批標準化)和激活函數(shù)的運行順序是一個備受爭議的話題,也有人說順序其實無關(guān)緊要,為了與 Batch-Norm 的原論文保持一致,作者使用的是以上提到的這種順序。
激活函數(shù)的默認超參數(shù)如果是在如 Tensorflow 和 Pytorch等框架中使用,則效果最好。然而,你可以調(diào)整 Leaky ReLU 中的負斜率并將其設(shè)置為 0.02 以加快學習速度。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日韩一区二区三区观看| 日韩一级欧美一级久久| 日韩欧美综合在线播放| 绝望的校花花间淫事2| 国产精品一区二区日韩新区| 国产精品美女午夜福利| 精品女同在线一区二区| 亚洲国产精品久久精品成人| 亚洲深夜精品福利一区| 国产欧美日产中文一区| 日韩欧美综合中文字幕 | 精品日韩国产高清毛片| 国产在线小视频你懂的| 色婷婷亚洲精品综合网| 麻豆精品视频一二三区| 亚洲男人天堂成人在线视频| 午夜直播免费福利平台| 欧美激情床戏一区二区三| 亚洲最新中文字幕在线视频| 厕所偷拍一区二区三区视频| 正在播放国产又粗又长| 午夜亚洲精品理论片在线观看 | 中文字幕一区二区三区大片| 欧美大胆女人的大胆人体| 韩国激情野战视频在线播放| 国产一区二区三区口爆在线| 国产爆操白丝美女在线观看| 最好看的人妻中文字幕| 老司机激情五月天在线不卡| 夜夜躁狠狠躁日日躁视频黑人| 九九热视频免费在线视频| 老司机精品在线你懂的| 老熟妇乱视频一区二区| 日本在线不卡高清欧美| 少妇人妻一级片一区二区三区| 韩国日本欧美国产三级 | 欧美精品激情视频一区| 亚洲熟妇中文字幕五十路| 婷婷色国产精品视频一区| 久草精品视频精品视频精品| 少妇熟女亚洲色图av天堂|