激活函數的“3W”


圖書推薦:《數據準備和特徵工程》


學習神經網絡,必然會遇到激活函數,那麼:

  • 什麼是激活函數?What
  • 爲什麼要用激活函數?Why
  • 應該選擇哪個激活函數?Which

本文嘗試對此進行探討。

神經網絡的基本思想

人工神經網絡是仿照了大腦的神經網絡系統來處理數據的,它由節點組成了層,通常一個網絡又有多個層(除了輸入層和輸出層之外,有多個隱藏層),每個節點就是一個神經元。信息從輸入層進入,傳到隱藏層(如圖所示),按照簡化的模型,輸入數據乘以權重(weight)加上一個偏置(bias),然後應用激活函數得到該神經元的輸出,再將此輸出傳給下一層的神經元。

此流程在各個層的神經元中不斷重複,直到最後一層輸出層。尋找隱藏層的權重參數和偏置的過程,就是常說的“學習”過程,其遵循的基本原則就是使得網絡最終的輸出誤差最小化。

激活函數

可以將激活函數理解爲控制當前層的神經元與下一層的神經元之間的信息傳遞的“門”,它決定當前的神經元是否被激活,可以用下圖幫助理解。

爲什麼要用激活函數

參考上面的圖示,如果沒有激活函數,該神經元的輸入和輸出之間就是線性變換。線性函數雖然容易求解,但是它所能解決的問題有限,特別是針對複雜問題的時候。由此推廣,如果神經網絡沒有激活函數,它也就變成了線性迴歸模型。所以,需要一個激活函數。

那麼,需要什麼樣的激活函數呢?

激活函數的類型

激活函數可以分爲兩種類型:

  • 線性激活函數
  • 非線性激活函數

線性激活函數

圖示的是一個線性激活函數和一個常函數,通過線性激活函數所得到的輸出,相對於輸入而言,只是比例的變化。

  • 函數式:
  • 導數:
  • 值域:

從上面的函數示例可知,線性函數求導數之後得到了常數,也就是與輸入數據無關,這樣就無法通過反向傳播算法更新權重參數。另外,如果用線性函數作爲激活函數,不論網絡有多少層,最後的輸出與第一層的輸入都是線性關係。

非線性激活函數

現代神經網絡使用的都是非線性激活函數,這樣可以創建輸入與輸出鍵的複雜映射關係,網絡也能通過“學習”來更新參數。並且,因爲非線性函數的導數與輸入有關,從而可以通過向後傳播算法計算梯度,也可以構建多層神經網絡,以處理複雜問題。

常用的非線性激活函數

Sigmoid函數/Logistic函數

Sigmoid函數是S形函數,當以概率形式表示預測值時,我們使用這個函數。

  • 函數式:
  • 導數:
  • 值域:

Sigmoid函數的優點在於它可導,並且值域在0到1之間,使得神經元的輸出標準化。也正是這些優點,讓它成爲了神經網絡最早採用的激活函數。它的不足也很明顯,首先就是在 增加或減少到一定程度時,函數值變化很小,這就是所謂的“梯度消失”,致使網絡的收斂速度變慢,進而耗費更多的計算資源。另外,輸出值不是以 爲中心,而是

Tanh/雙曲正切函數

Tanh函數,即雙曲正切函數,也是“S”形,但是Sigmoid函數僅冠名給了上面的那個函數。

  • 函數式:
  • 導數:
  • 值域:

Tanh函數的最大優點是輸出值以 爲中心,分屬爲正數和負數兩大類別,另外此函數及其導數都是單調的,這使得它具有了Sigmoid函數的優勢,又克服了某些不足。當然,Tanh的不足與Sigmoid一樣,“梯度消失”的問題都還存在,進而導致收斂速度變慢。

ReLU ( Rectified Linear Unit)

Rectified Linear Unit,譯爲“線性整流函數”或者“修正線性單元”,通常我們就直接稱爲 ReLU 函數。

  • 函數式:
  • 導數:
  • 值域:

ReLU函數的明顯優點在於收斂速度快,當然,不要覺得它看起來是線性的(在大於 的部分),這個函數其實是非線性函數,它可導,因此可以用於反向傳播算法。它的不足在於當輸入趨近於零或爲負時,函數的梯度變爲零,網絡無法執行反向傳播,無法學習。

Leaky ReLU

Leaky ReLU函數式 ReLU函數的特殊化,就如同名稱中的 Leaky(漏水)那樣,如圖所示,當 時,其函數值不再等於 ,而是有一個小小的坡度(水可以沿着斜坡流下去)。

  • 函數式:
  • 導數:
  • 值域:

Leaky ReLU函數相對於ReLU函數而言,變化的主要是 區域,其值不再是一個固定數值,導數也不爲0了,於是就可以應用於反向傳播算法。也是因爲這個修正,使得Leaky ReLU函數不再針對輸入值小於零的時候有固定的值了,從而會導致正向傳播的時候,如果學習率設置的比較大,會出現較大數量的神經元未激活現象,真乃“成也蕭何敗蕭何”。

Leaky ReLU函數的這種思想,還可以進一步擴展,比如不將 與常數項相乘,可以將其與超參數相乘,所得到的的函數稱爲“參數ReLU”函數。

Softmax

Softmax函數比較適合作爲多分類模型的激活函數,一般會與交叉熵損失函數相配。

  • 函數式:
  • 概率解釋:
  • 值域:

Softmax函數的輸出結果是0到1之間的概率值,對應着輸入數據屬於某個類別的概率,因此適合於多分類模型。通常,Softmax函數只應用於輸出層。

選用激活函數

以上介紹的幾個不同的激活函數,各有優缺點,那麼,在神經網絡中,應該選擇哪個函數作爲激活函數呢?

首先要建立一個觀念:不存在普遍適用各種神經網絡的萬能的激活函數。在選擇激活函數的時候,要考慮很多條件限制:

  • 如果函數可導,求導數的計算難度如何?

  • 網絡的收斂速度如何?

  • 函數光滑程度如何?

  • 是否滿足通用的逼近定理條件?

  • 輸出是否保持標準化?

    等等,不一而足。

所以,要結合具體問題以及激活函數的特點,恰當地選擇。下面是一些經驗,供參考:

  • Sigmoid函數比較適合於分類模型。
  • 使用Sigmoid函數和tanh函數,要注意梯度消失問題。
  • ReLU函數是應用比較廣泛的激活函數,可以作爲你的默認選項。
  • 如果網絡中存在大量未激活神經元,可以考慮leaky ReLU函數。
  • ReLU函數應該只用於隱藏層。
  • 如果是迴歸模型,在輸出層上可以使用線性激活函數。

本文討論了激活函數的問題,在神經網絡中,上述討論都不是唯一確定的,比如激活函數的類型,這裏羅列出來的是目前常見的,是不是在未來針對某個問題,研究者還會找到新的函數呢?完全有可能。至於如何選擇激活函數,更是仁者見仁智者見智的了。

參考鏈接:https://medium.com/@snaily16/what-why-and-which-activation-functions-b2bf748c0441


關注微信公衆號:老齊教室

閱讀更多精彩文章


本文分享自微信公衆號 - 飛槳PPDB(Tsing_Liu)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章