當我們談激活函數時,我們在談什么?—— 從梯度消失到 ReLU 革命神經網絡非線性的秘訣
圖片
快速提示:只需記住,隱藏層和輸出層對激活函數類型的要求通常不同,因此通常會使用不同的激活函數。
激活函數根據輸入增強或抑制某些神經元。將其與人類大腦相比較,每當你要執行某些任務時,并非自出生以來存儲的所有神經元或記憶都會被激發!只有相關的神經元被激發,而其余的則受到抑制。在數學領域,各種類型的激活函數執行此操作。但首先讓我們看一下神經網絡執行的兩大類任務:
神經網絡的兩個主要目標:分類與回歸
通常來說,分類和回歸是兩類最終需求。分類是指對一個問題給出是或否的答案,或者判斷圖片中的某個物體屬于哪一類(比如狗、貓),而回歸則意味著最終得到某個確定的值,例如,明天的股票點數會是多少,或者美元的價格會是多少。
圖片
步長函數的問題:有限的開端
讓我們回溯到神經網絡的萌芽時期。最初使用的激活函數是階躍函數——一種嚴格的開/關開關。它模仿生物神經元,當輸入超過閾值時觸發(輸出為1),否則保持靜默(輸出為0)。
圖片
雖然階躍函數是一個有用的起點,但它有一些嚴重的局限性。
- 它在中心兩側的線性特性,嚴重限制了其在復雜、非線性現實生活問題中的應用。
- 它還有另一個致命缺陷:零學習信號。想象一下,教孩子數學時,只說“對”或“錯”,卻不解釋錯在哪里。階躍函數的二元輸出讓優化器(與我們稍后將學習的神經網絡訓練相關)在訓練過程中完全不知道如何調整權重。
- 它可能適用于分類任務,但在回歸任務中會失敗,因為所有值都會坍縮為0或1。
邁向輝煌的又一次嘗試:線性激活
接下來是線性激活函數(y = x)。雖然它在回歸任務(預測房價、溫度)中表現出色,但在隱藏層卻慘遭失敗。為什么呢?堆疊的線性層會退化為一條直線(這是個由來已久的問題!)。無論你的網絡有多深,它只能模擬直線關系——對于語音或圖像等現實世界中的復雜情況毫無用處。它可能在某些非常特殊的情況下使用,但僅限于輸出層。
圖片
對更平滑過渡的追求:Sigmoid函數的興起
對更好的激活函數的探索源于對更平滑過渡的渴望,關鍵是對可微性的渴望。階躍函數的突然“跳躍”使得使用基于梯度下降的方法有效地訓練神經網絡變得困難(我們將在下一篇文章中探討!)。為了解決這個問題,Sigmoid函數應運而生。這為獲得0到1之間的連續輸出鋪平了道路,并且平滑的曲線有助于在X軸上的所有點進行求導。這使得神經網絡能夠應用梯度下降和反向傳播技術。
圖片
Sigmoid函數具有獨特的S形曲線,是一種常用的替代選擇。其公式如下:
圖片
為什么Sigmoid函數如此具有吸引力?
- 平滑性與可微性:與階躍函數不同,Sigmoid函數在任何地方都是平滑且可微的。這意味著我們可以計算輸出相對于輸入的梯度,這對于使用反向傳播訓練神經網絡至關重要。
- 輸出范圍:Sigmoid函數將值壓縮在0到1之間,為神經元的輸出提供了概率解釋。這使得它在二分類任務中特別有用,其中輸出可以被解釋為屬于某個類別的概率。
- 模擬神經元放電(某種程度上):可以大致將Sigmoid函數解釋為模擬生物神經元的放電速率。當輸入較低時(神經元“不活躍”),它會產生一個接近0的值;當輸入較高時(神經元“活躍”),它會產生一個接近1的值。
Sigmoid函數的興衰:挑戰浮現盡管Sigmoid函數最初取得了成功,但它最終也面臨著一系列自身的挑戰。隨著神經網絡變得越來越深且復雜,諸如梯度消失之類的問題開始浮現。
想象一下,一個信號在一長串神經元中傳遞。如果每個神經元都應用Sigmoid激活函數,信號的梯度(即輸出相對于輸入的變化量)往往會隨著每一層的傳遞而縮小。這是因為Sigmoid函數的導數通常小于1。
隨著梯度減小,網絡中較早的層越來越難以有效地學習。這種現象被稱為梯度消失問題,它限制了使用Sigmoid激活函數訓練深度神經網絡的能力。Sigmoid函數的另一個問題是輸出不是以零為中心。所有神經元接收到的信號要么是正數,要么是零,這使得反向傳播過程中的梯度更新要么為正,要么為負,從而導致訓練過程呈之字形。
一股清新空氣:ReLU變革
為了解決梯度消失問題并加速訓練,以修正線性單元(ReLU)為首的新一代激活函數應運而生。ReLU函數看似簡單:
換句話說,如果輸入為正數,ReLU直接輸出該輸入。如果輸入為負數,ReLU輸出零。
圖片
為什么ReLU變得如此流行?
- 應對梯度消失問題:ReLU函數對于正輸入的導數為1,這有助于緩解梯度消失問題。這使得梯度能夠更輕松地在網絡中流動,從而實現更快、更有效的訓練,尤其是在深度架構中。
- 簡單性與高效性:ReLU函數在計算上非常高效。其簡單的max(0, x)運算比Sigmoid和Tanh函數中涉及的指數運算要快得多。
- 稀疏性:ReLU傾向于產生稀疏激活,這意味著許多神經元輸出為零。這種稀疏性有助于減少過擬合并提高泛化能力。零值有助于根據所需的計算開啟和關閉神經元,從而實現有效的學習。
ReLU的怪癖:死亡ReLU與泄漏修正方案盡管ReLU有諸多優點,但它也并非毫無缺陷。一個潛在的問題是ReLU神經元死亡問題。如果一個ReLU神經元陷入其輸入始終為負的狀態,它將始終輸出零,其梯度也將為零。這個神經元實際上就“死亡”了,不再學習。

圖片
通過在神經元輸入為負時允許少量梯度流過神經元,帶泄漏修正線性單元(Leaky ReLU)和參數化修正線性單元(PReLU)有助于防止神經元死亡并提高學習穩定性。
超越Sigmoid和ReLU:一個多樣化的生態系統
激活函數的領域遠不止于Sigmoid和ReLU。研究人員不斷探索新的激活函數,每個函數都有其獨特的屬性和預期的應用場景。以下是一些值得注意的例子:
- 雙曲正切函數(Tanh):Tanh是另一種S形激活函數,它將值壓縮在-1到1之間。Tanh與Sigmoid函數類似,但它以零為中心,這有時可以使訓練更快收斂。然而,它仍然存在梯度消失問題,盡管程度略小于Sigmoid函數。

圖片
- ELU(指數線性單元):ELU旨在結合ReLU和類Sigmoid函數的優點。對于正輸入,它具有線性部分(類似于ReLU);對于負輸入,它具有平滑的指數部分。ELU有助于緩解ReLU神經元死亡問題,有時能實現比ReLU更好的性能。
圖片
- Swish函數:Swish是一種相對較新的激活函數,由于其在各種深度學習任務中的出色表現而受到廣泛關注。Swish函數的定義為:
其中β是一個可學習參數或常數。Swish已被證明在深度網絡中表現良好,有時性能優于ReLU和其他激活函數。
圖片
- Softmax函數:雖然從技術上講,Softmax函數并不在隱藏層中使用,但它在輸出層處理多分類問題時至關重要。它將原始輸出向量轉換為不同類別上的概率分布,確保概率總和為1。
圖片
選擇在你:挑選合適的激活函數
有這么多激活函數可供選擇,你如何決定在神經網絡中使用哪一個呢?沒有放之四海而皆準的答案,最佳選擇通常取決于具體的任務、網絡架構和數據集。不過,這里有一些通用準則:
- 修正線性單元(ReLU)(及其變體):ReLU通常是許多任務的良好起點,尤其是在深度網絡中。它計算效率高,有助于緩解梯度消失問題。如果你遇到ReLU死亡問題,可以考慮使用帶泄漏修正線性單元(Leaky ReLU)或參數化修正線性單元(PReLU)。
- Sigmoid函數和雙曲正切函數(Tanh):由于梯度消失問題,Sigmoid函數和雙曲正切函數如今在隱藏層中使用較少。不過,在特定任務的輸出層中,它們仍可能有用(例如,二元分類使用Sigmoid函數)。
- 實驗是關鍵:確定最佳激活函數的最佳方法通常是通過實驗。嘗試不同的激活函數,并在驗證集上比較它們的性能。
釋放非線性潛力
激活函數遠不止是數學上的奇思妙想;它們是神經網絡智能化的關鍵推動者。通過引入非線性,它們使神經網絡能夠學習復雜的模式、模擬錯綜復雜的關系,并解決一系列僅靠線性模型無法解決的現實世界問題。從簡單的階躍函數到復雜的Swish函數,激活函數的演變一直是深度學習革命的驅動力。
Reference
[1] 加群鏈接: https://docs.qq.com/doc/DS3VGS0NFVHNRR0Ru#
[2] 知乎【柏企】: https://www.zhihu.com/people/cbq-91
[3] 個人網站: https://www.chenbaiqi.com






























