當我們談激活函數(shù)時,我們在談什么?—— 從梯度消失到 ReLU 革命神經(jīng)網(wǎng)絡(luò)非線性的秘訣
圖片
快速提示:只需記住,隱藏層和輸出層對激活函數(shù)類型的要求通常不同,因此通常會使用不同的激活函數(shù)。
激活函數(shù)根據(jù)輸入增強或抑制某些神經(jīng)元。將其與人類大腦相比較,每當你要執(zhí)行某些任務(wù)時,并非自出生以來存儲的所有神經(jīng)元或記憶都會被激發(fā)!只有相關(guān)的神經(jīng)元被激發(fā),而其余的則受到抑制。在數(shù)學領(lǐng)域,各種類型的激活函數(shù)執(zhí)行此操作。但首先讓我們看一下神經(jīng)網(wǎng)絡(luò)執(zhí)行的兩大類任務(wù):
神經(jīng)網(wǎng)絡(luò)的兩個主要目標:分類與回歸
通常來說,分類和回歸是兩類最終需求。分類是指對一個問題給出是或否的答案,或者判斷圖片中的某個物體屬于哪一類(比如狗、貓),而回歸則意味著最終得到某個確定的值,例如,明天的股票點數(shù)會是多少,或者美元的價格會是多少。
圖片
步長函數(shù)的問題:有限的開端
讓我們回溯到神經(jīng)網(wǎng)絡(luò)的萌芽時期。最初使用的激活函數(shù)是階躍函數(shù)——一種嚴格的開/關(guān)開關(guān)。它模仿生物神經(jīng)元,當輸入超過閾值時觸發(fā)(輸出為1),否則保持靜默(輸出為0)。
圖片
雖然階躍函數(shù)是一個有用的起點,但它有一些嚴重的局限性。
- 它在中心兩側(cè)的線性特性,嚴重限制了其在復(fù)雜、非線性現(xiàn)實生活問題中的應(yīng)用。
- 它還有另一個致命缺陷:零學習信號。想象一下,教孩子數(shù)學時,只說“對”或“錯”,卻不解釋錯在哪里。階躍函數(shù)的二元輸出讓優(yōu)化器(與我們稍后將學習的神經(jīng)網(wǎng)絡(luò)訓練相關(guān))在訓練過程中完全不知道如何調(diào)整權(quán)重。
- 它可能適用于分類任務(wù),但在回歸任務(wù)中會失敗,因為所有值都會坍縮為0或1。
邁向輝煌的又一次嘗試:線性激活
接下來是線性激活函數(shù)(y = x)。雖然它在回歸任務(wù)(預(yù)測房價、溫度)中表現(xiàn)出色,但在隱藏層卻慘遭失敗。為什么呢?堆疊的線性層會退化為一條直線(這是個由來已久的問題!)。無論你的網(wǎng)絡(luò)有多深,它只能模擬直線關(guān)系——對于語音或圖像等現(xiàn)實世界中的復(fù)雜情況毫無用處。它可能在某些非常特殊的情況下使用,但僅限于輸出層。
圖片
對更平滑過渡的追求:Sigmoid函數(shù)的興起
對更好的激活函數(shù)的探索源于對更平滑過渡的渴望,關(guān)鍵是對可微性的渴望。階躍函數(shù)的突然“跳躍”使得使用基于梯度下降的方法有效地訓練神經(jīng)網(wǎng)絡(luò)變得困難(我們將在下一篇文章中探討?。?。為了解決這個問題,Sigmoid函數(shù)應(yīng)運而生。這為獲得0到1之間的連續(xù)輸出鋪平了道路,并且平滑的曲線有助于在X軸上的所有點進行求導。這使得神經(jīng)網(wǎng)絡(luò)能夠應(yīng)用梯度下降和反向傳播技術(shù)。
圖片
Sigmoid函數(shù)具有獨特的S形曲線,是一種常用的替代選擇。其公式如下:
圖片
為什么Sigmoid函數(shù)如此具有吸引力?
- 平滑性與可微性:與階躍函數(shù)不同,Sigmoid函數(shù)在任何地方都是平滑且可微的。這意味著我們可以計算輸出相對于輸入的梯度,這對于使用反向傳播訓練神經(jīng)網(wǎng)絡(luò)至關(guān)重要。
- 輸出范圍:Sigmoid函數(shù)將值壓縮在0到1之間,為神經(jīng)元的輸出提供了概率解釋。這使得它在二分類任務(wù)中特別有用,其中輸出可以被解釋為屬于某個類別的概率。
- 模擬神經(jīng)元放電(某種程度上):可以大致將Sigmoid函數(shù)解釋為模擬生物神經(jīng)元的放電速率。當輸入較低時(神經(jīng)元“不活躍”),它會產(chǎn)生一個接近0的值;當輸入較高時(神經(jīng)元“活躍”),它會產(chǎn)生一個接近1的值。
Sigmoid函數(shù)的興衰:挑戰(zhàn)浮現(xiàn)盡管Sigmoid函數(shù)最初取得了成功,但它最終也面臨著一系列自身的挑戰(zhàn)。隨著神經(jīng)網(wǎng)絡(luò)變得越來越深且復(fù)雜,諸如梯度消失之類的問題開始浮現(xiàn)。
想象一下,一個信號在一長串神經(jīng)元中傳遞。如果每個神經(jīng)元都應(yīng)用Sigmoid激活函數(shù),信號的梯度(即輸出相對于輸入的變化量)往往會隨著每一層的傳遞而縮小。這是因為Sigmoid函數(shù)的導數(shù)通常小于1。
隨著梯度減小,網(wǎng)絡(luò)中較早的層越來越難以有效地學習。這種現(xiàn)象被稱為梯度消失問題,它限制了使用Sigmoid激活函數(shù)訓練深度神經(jīng)網(wǎng)絡(luò)的能力。Sigmoid函數(shù)的另一個問題是輸出不是以零為中心。所有神經(jīng)元接收到的信號要么是正數(shù),要么是零,這使得反向傳播過程中的梯度更新要么為正,要么為負,從而導致訓練過程呈之字形。
一股清新空氣:ReLU變革
為了解決梯度消失問題并加速訓練,以修正線性單元(ReLU)為首的新一代激活函數(shù)應(yīng)運而生。ReLU函數(shù)看似簡單:
換句話說,如果輸入為正數(shù),ReLU直接輸出該輸入。如果輸入為負數(shù),ReLU輸出零。
圖片
為什么ReLU變得如此流行?
- 應(yīng)對梯度消失問題:ReLU函數(shù)對于正輸入的導數(shù)為1,這有助于緩解梯度消失問題。這使得梯度能夠更輕松地在網(wǎng)絡(luò)中流動,從而實現(xiàn)更快、更有效的訓練,尤其是在深度架構(gòu)中。
- 簡單性與高效性:ReLU函數(shù)在計算上非常高效。其簡單的max(0, x)運算比Sigmoid和Tanh函數(shù)中涉及的指數(shù)運算要快得多。
- 稀疏性:ReLU傾向于產(chǎn)生稀疏激活,這意味著許多神經(jīng)元輸出為零。這種稀疏性有助于減少過擬合并提高泛化能力。零值有助于根據(jù)所需的計算開啟和關(guān)閉神經(jīng)元,從而實現(xiàn)有效的學習。
ReLU的怪癖:死亡ReLU與泄漏修正方案盡管ReLU有諸多優(yōu)點,但它也并非毫無缺陷。一個潛在的問題是ReLU神經(jīng)元死亡問題。如果一個ReLU神經(jīng)元陷入其輸入始終為負的狀態(tài),它將始終輸出零,其梯度也將為零。這個神經(jīng)元實際上就“死亡”了,不再學習。
圖片
通過在神經(jīng)元輸入為負時允許少量梯度流過神經(jīng)元,帶泄漏修正線性單元(Leaky ReLU)和參數(shù)化修正線性單元(PReLU)有助于防止神經(jīng)元死亡并提高學習穩(wěn)定性。
超越Sigmoid和ReLU:一個多樣化的生態(tài)系統(tǒng)
激活函數(shù)的領(lǐng)域遠不止于Sigmoid和ReLU。研究人員不斷探索新的激活函數(shù),每個函數(shù)都有其獨特的屬性和預(yù)期的應(yīng)用場景。以下是一些值得注意的例子:
- 雙曲正切函數(shù)(Tanh):Tanh是另一種S形激活函數(shù),它將值壓縮在-1到1之間。Tanh與Sigmoid函數(shù)類似,但它以零為中心,這有時可以使訓練更快收斂。然而,它仍然存在梯度消失問題,盡管程度略小于Sigmoid函數(shù)。
圖片
- ELU(指數(shù)線性單元):ELU旨在結(jié)合ReLU和類Sigmoid函數(shù)的優(yōu)點。對于正輸入,它具有線性部分(類似于ReLU);對于負輸入,它具有平滑的指數(shù)部分。ELU有助于緩解ReLU神經(jīng)元死亡問題,有時能實現(xiàn)比ReLU更好的性能。
圖片
- Swish函數(shù):Swish是一種相對較新的激活函數(shù),由于其在各種深度學習任務(wù)中的出色表現(xiàn)而受到廣泛關(guān)注。Swish函數(shù)的定義為:
其中β是一個可學習參數(shù)或常數(shù)。Swish已被證明在深度網(wǎng)絡(luò)中表現(xiàn)良好,有時性能優(yōu)于ReLU和其他激活函數(shù)。
圖片
- Softmax函數(shù):雖然從技術(shù)上講,Softmax函數(shù)并不在隱藏層中使用,但它在輸出層處理多分類問題時至關(guān)重要。它將原始輸出向量轉(zhuǎn)換為不同類別上的概率分布,確保概率總和為1。
圖片
選擇在你:挑選合適的激活函數(shù)
有這么多激活函數(shù)可供選擇,你如何決定在神經(jīng)網(wǎng)絡(luò)中使用哪一個呢?沒有放之四海而皆準的答案,最佳選擇通常取決于具體的任務(wù)、網(wǎng)絡(luò)架構(gòu)和數(shù)據(jù)集。不過,這里有一些通用準則:
- 修正線性單元(ReLU)(及其變體):ReLU通常是許多任務(wù)的良好起點,尤其是在深度網(wǎng)絡(luò)中。它計算效率高,有助于緩解梯度消失問題。如果你遇到ReLU死亡問題,可以考慮使用帶泄漏修正線性單元(Leaky ReLU)或參數(shù)化修正線性單元(PReLU)。
- Sigmoid函數(shù)和雙曲正切函數(shù)(Tanh):由于梯度消失問題,Sigmoid函數(shù)和雙曲正切函數(shù)如今在隱藏層中使用較少。不過,在特定任務(wù)的輸出層中,它們?nèi)钥赡苡杏茫ɡ?,二元分類使用Sigmoid函數(shù))。
- 實驗是關(guān)鍵:確定最佳激活函數(shù)的最佳方法通常是通過實驗。嘗試不同的激活函數(shù),并在驗證集上比較它們的性能。
釋放非線性潛力
激活函數(shù)遠不止是數(shù)學上的奇思妙想;它們是神經(jīng)網(wǎng)絡(luò)智能化的關(guān)鍵推動者。通過引入非線性,它們使神經(jīng)網(wǎng)絡(luò)能夠?qū)W習復(fù)雜的模式、模擬錯綜復(fù)雜的關(guān)系,并解決一系列僅靠線性模型無法解決的現(xiàn)實世界問題。從簡單的階躍函數(shù)到復(fù)雜的Swish函數(shù),激活函數(shù)的演變一直是深度學習革命的驅(qū)動力。
Reference
[1] 加群鏈接: https://docs.qq.com/doc/DS3VGS0NFVHNRR0Ru#
[2] 知乎【柏企】: https://www.zhihu.com/people/cbq-91
[3] 個人網(wǎng)站: https://www.chenbaiqi.com


2017-03-07 15:43:28




