引言
神經網絡在近似模拟任何函數時,離不開非線性變換。神經元與神經元的連接配接都是基于權值的線性組合。根據線性代數的知識,線性的組合依然是線性的,換句話說,如果全連接配接層沒有非線性部分,那麼在模型上疊加再多的網絡層,意義都非常有限,因為這樣的多層神經網絡最終會“退化”為一層神經元網絡,深度神經網絡就無從談起了。
通過引入非線性的激活函數,可以解決上述問題。無論多麼玄妙的函數,在理論上,它們都能被近似地表征出來。加入(非線性的)激活函數後,深度神經網絡才具備了分層的非線性映射學習能力。是以,激活函數是深度神經網絡中不可或缺的部分。
下面介紹幾種常見的激活函數。
Sigmoid函數
導數:

Sigmoid函數的優勢:它可以将一個實數輸入映射到(0,1)範圍内,在實體意義上最接近生物神經元的休眠和激活之間的狀态。例如,Sigmoid函數可以用于深度學習模型LSTM中的各種門(Gate)上,模拟門的關閉和開啟狀态。此外,Sigmoid函數還可以用于表示機率,并且還可用于輸入的歸一化處理。
公式如下:
凡事都有兩面性。Sigmoid也有缺點,那就是它的飽和性。具體來說,當輸入資料x很大或很小時,Sigmoid函數的導數迅速趨近于0.這就意味着,很容易産生所謂的梯度消失現象。要知道,如果沒有了梯度作為指導,那麼神經網絡的參數訓練就如同“無頭蒼蠅”,毫無方向可言。
Sigmoid函數的另一個不足之處在于,它的輸出不是以0為中心的。有時我們更偏向于當激活函數的輸入是0時,輸出也是0的函數。
因為上述兩個缺陷,導緻參數收斂速度很慢,嚴重影響了訓練的效率。是以在設計神經網絡時,采用Sigmoid函數作為激活函數的場景并不多。
Tanh函數
導數:
Tanh函數将一個實數輸入映射到(-1,1)範圍内,當輸入為0時,Tanh函數輸出為0,符合我們對激活函數的要求。
公式如下:
Tanh函數的取值可以是負值,在某些需要抑制神經元的場景,需要用到它的這個特性。例如,在LSTM中就用到Tanh函數的負值區來模拟“遺忘”。
通過上述公式可以發現,Tanh和Sigmoid函數之間存在一定的線性關系,是以,兩者的形狀是類似的。隻是尺度和範圍不同。是以,Tanh函數同樣存在與Sigmoid函數類似的缺點——梯度彌散(Gradient Vanishing),導緻訓練效率不高。
是以,如何防止神經網絡陷入梯度彌散的境地,或者說如何提升網絡的訓練效率,一直都是深度學習非常熱門的研究課題。目前在卷積神經網絡中,最常用的激活函數就是修正線性單元ReLU(Rectified Linear Unit)。
ReLU函數
ReLU函數是由Krizhevsky和Hinton等人在2010年提出來的。标準的ReLU函數非常簡單,即f(x) = max(x,0)。簡單來說,當x>0時,輸出為x;當x<=0時,輸出為0。注意下圖是一條曲線,隻不過它在原點處不那麼圓滑而已。
為了讓它在原點處圓滑可導,Softplus函數也被提出來了,它的函數形式為f(x)=ln(1+e^x)。Softplus函數是對ReLU函數平滑逼近的解析形式,圖像如下所示。更巧的是,Softplus函數的導數恰好就是Sigmoid函數。由此可見,這些非線性函數之間存在着一定的聯系。
與Sigmoid函數相比,ReLU函數的優點主要展現在三個方面。
單側抑制:當輸入小于0時,神經元處于抑制狀态;反之當輸入大于0時,神經元處于激活狀态。ReLU函數相對簡單,求導計算友善。這導緻ReLU函數得到的SGD(Stochastic gradient descent,随機梯度遞減)的收斂速度比Sigmoid/Tanh函數的收斂速度快得多。
相對寬闊的興奮邊界:Sigmoid函數的激活狀态(f(x)的取值)集中在中間的狹小空間(0, 1)内,Tanh函數有所改善,但也局限于(-1,1)内,而ReLU函數則不同,隻要輸入大于0,神經元就一直處于激活狀态。
稀疏激活:相比于Sigmoid之類的激活函數,稀疏性是ReLU函數的優勢所在。Sigmoid函數将處于抑制狀态的神經元設定為一個非常小的值,但即使這個值再小,後續的計算也少不了它們的參與,這樣操作計算負擔很大。而ReLU函數直接将處于抑制狀态的神經元“簡單粗暴”地設定為0,這樣一來,使得這些神經元不再參與後續的計算,進而造成了網絡的稀疏性。
正是因為這些原因,圓滑可導的近似函數Softplus在實際任務中并不比“簡單粗暴”的ReLU函數效果更好,這是因為Softplus函數帶來了更多的計算量。
除此之外,ReLU函數還減少了參數之間互相依存的關系,使其收斂速度遠遠快于其他激活函數,最後還在一定程度上緩解了過拟合問題的發生。
ReLU函數有如此神奇的作用還有一個原因是該模型正好暗合生物神經網絡的工作機理。神經元同時隻對輸入信号的少部分進行選擇性響應,大量信号被刻意屏蔽了,這進一步表明了神經元工作的稀疏性。
其實,這很容易了解,因為生物生存也需要成本。進化論告訴我們,作為人體最耗能的器官——大腦要盡可能地節能,這樣才能在惡劣的環境中生存。
當然,激活函數的種類遠不止這些,還有滲漏型整流線性單元(Leaky ReLU)、指數線性單元(ELU)、高斯誤差線性單元(GELU)及周期激活函數(SIREN)等。
來源:深度學習與TensorFlow實踐 張玉宏