深度學習——常見簡單激活函數(activation function)

在多層神經網絡中,每一層的輸入與輸出呈線性關係,多層的話,該多層神經網絡的輸入和輸出之間關係僅是內部多層隱藏層和輸出層多個線性關係式的聯合,即輸入和輸出之間仍是線性關係,這樣的話,多層神經網絡就跟單層神經網絡相同了,做起來就沒有什麼意義。即全連接層只對數據做仿射變換,而多個仿射變換的疊加依舊是一個仿射變換。

在上述情況下,解決該問題的方法之一就是引入非線性變換,如:對隱層變量使用按元素運算的非線性函數進行變換,然後再作爲下一個全連接層的輸入。這個非線性函數被稱爲激活函數(activation function)。

常見的激活函數有以下幾個:

  1. ReLU函數:該函數只保留正數元素,負數均置爲0。該函數現常用於神經網絡中。
    1. 表達式:ReLU(x) = max(x, 0)
    2. 函數圖像:
    3. 優點:

      1.  解決了gradient vanishing問題 (在正區間)

      2. 計算速度非常快,只需要判斷輸入是否大於0

      3. 收斂速度遠快於sigmoid和tanh

    4. 缺點:

      1. 輸出不是zero-centered

      2. Dead ReLU Problem,某些神經元可能永遠不會被激活,導致相應的參數永遠不能被更新。

        1. 參數初始化不合適

        2. 學習率太高導致在訓練過程中參數更新太大,使網絡進入這種狀態

  2. sigmoid函數:它可以將元素的值變換到0到1之間。
    1. 函數表達式:
    2. 函數圖像:
    3. 特點:它能夠把輸入的連續實值變換爲0和1之間的輸出,如果是非常大的負數,那麼輸出就是0;如果是非常大的正數,輸出就是1。
    4. 缺點:sigmoid函數曾經被使用的很多,不過近年來,用它的人越來越少了。
      1. 在深度神經網絡中梯度反向傳遞時導致梯度爆炸和梯度消失
      2. sigmoid 的 output 不是0均值(即zero-centered),這樣會倒是收斂緩慢
      3. 解析式中含有指數運算,計算機求解時相對來講比較耗時
  3. tanh函數:又稱雙曲正切函數,它可以將值變換到-1到1之間。
    1. 函數表達式:
    2. 函數圖像:
    3. 它解決了Sigmoid函數的不是zero-centered輸出問題,然而,梯度消失(gradient vanishing)的問題和冪運算的問題仍然存在。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章