天天看點

神經元激活函數神經元激活函數為什麼要使用激活函數?為什麼激活函數需要非線性函數?常用的激活函數

神經元激活函數

激活函數(Activation functions),将非線性特性引入到網絡中。如下圖,在神經元中,輸入的 inputs 通過權重,求和後,還被作用了一個函數,這個函數就是激活函數。

引入激活函數是為了增加神經網絡模型的非線性。沒有激活函數的每層都相當于矩陣相乘。就算你疊加了若幹層之後,無非還是個矩陣相乘罷了。

神經元激活函數神經元激活函數為什麼要使用激活函數?為什麼激活函數需要非線性函數?常用的激活函數

為什麼要使用激活函數?

  • 激活函數對模型學習、了解非常複雜和非線性的函數具有重要作用。
  • 激活函數可以引入非線性因素。如果不使用激活函數,則輸出信号僅是一個簡單的線性函數。線性函數一個一級多項式,線性方程的複雜度有限,從資料中學習複雜函數映射的能力很小。沒有激活函數,神經網絡将無法學習和模拟其他複雜類型的資料,例如圖像、視訊、音頻、語音等。
  • 激活函數可以把目前特征空間通過一定的線性映射轉換到另一個空間,讓資料能夠更好的被分類。

為什麼激活函數需要非線性函數?

  • 假若網絡中全部是線性部件,那麼線性的組合還是線性,與單獨一個線性分類器無異。這樣就做不到用非線性來逼近任意函數。
  • 使用非線性激活函數

    ,以便使網絡更加強大,增加它的能力,使它可以學習複雜的事物,複雜的表單資料,以及表示輸入輸出之間非線性的複雜的任意函數映射。使用非線性激活函數,能夠從輸入輸出之間生成非線性映射。

常用的激活函數

sigmoid 激活函數

其值域為 (0,1) 。函數圖像:

神經元激活函數神經元激活函數為什麼要使用激活函數?為什麼激活函數需要非線性函數?常用的激活函數

特點:

  • 能夠把輸入的連續實值變換為0和1之間的輸出,特别的,如果是非常大的負數,那麼輸出就是0;如果是非常大的正數,輸出就是1.

缺點:

  • sigmoid函數曾經被使用的很多,近年來,用它的人越來越少了。主要是因為它固有的一些缺點。

缺點1:

  • 在深度神經網絡中梯度反向傳遞時導緻梯度爆炸和梯度消失,其中梯度爆炸發生的機率非常小,而梯度消失發生的機率比較大。首先來看Sigmoid函數的導數

    如下圖所示:

    神經元激活函數神經元激活函數為什麼要使用激活函數?為什麼激活函數需要非線性函數?常用的激活函數
    缺點2:
  • 不是以0為對稱軸(這點在tahn函數有所改善)

tanh激活函數

tanh讀作Hyperbolic Tangent,它解決了Sigmoid函數的不是zero-centered輸出問題,然而,梯度消失(gradient vanishing)的問題和幂運算的問題仍然存在。

神經元激活函數神經元激活函數為什麼要使用激活函數?為什麼激活函數需要非線性函數?常用的激活函數

其值域為 (-1,1) 。函數圖像:

神經元激活函數神經元激活函數為什麼要使用激活函數?為什麼激活函數需要非線性函數?常用的激活函數

導數: f ′ ( x ) = 1 − ( f ( x ) ) 2 f'(x) = 1 - (f(x))^2 f′(x)=1−(f(x))2

導函數圖像:

神經元激活函數神經元激活函數為什麼要使用激活函數?為什麼激活函數需要非線性函數?常用的激活函數

優點:

  • 解決了Sigmoid的輸出不關于零點對稱的問題
  • 也具有Sigmoid的優點平滑,容易求導

缺點:

  • 激活函數運算量大(包含幂的運算)
  • Tanh的導數圖像雖然最大之變大,使得梯度消失的問題得到一定的緩解,但是不能根本解決這個問題

Relu激活函數

保留了 step 函數的生物學啟發(隻有輸入超出門檻值時神經元才激活),不過當輸入為正的時候,導數不為零,進而允許基于梯度的學習(盡管在 x=0 的時候,導數是未定義的)。使用這個函數能使計算變得很快,因為無論是函數還是其導數都不包含複雜的數學運算。然而,當輸入為負值的時候,ReLU 的學習速度可能會變得很慢,甚至使神經元直接無效,因為此時輸入小于零而梯度為零,進而其權重無法得到更新,在剩下的訓練過程中會一直保持靜默。函數的定義為: f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x),值阈 [ 0 , + ∞ ] [0, +∞] [0,+∞]。函數圖像如下:

神經元激活函數神經元激活函數為什麼要使用激活函數?為什麼激活函數需要非線性函數?常用的激活函數

導數:

神經元激活函數神經元激活函數為什麼要使用激活函數?為什麼激活函數需要非線性函數?常用的激活函數

導函數圖像:

神經元激活函數神經元激活函數為什麼要使用激活函數?為什麼激活函數需要非線性函數?常用的激活函數

優點:

  • 相比起Sigmoid和tanh,ReLU在SGD中能夠快速收斂,這是因為它線性(linear)、非飽和(non-saturating)的形式。
  • Sigmoid和tanh涉及了很多很expensive的操作(比如指數),ReLU可以更加簡單的實作。
  • 有效緩解了梯度消失的問題。
  • 在沒有無監督預訓練的時候也能有較好的表現。

缺點:

  • ReLU的輸出不是zero-centered
  • Dead ReLU Problem,指的是某些神經元可能永遠不會被激活,導緻相應的參數永遠不能被更新。有兩個主要原因可能導緻這種情況産生:

    (1)非常不幸的參數初始化,這種情況比較少見

    (2) learning rate太高導緻在訓練過程中參數更新太大,不幸使網絡進入這種狀态。解決方法是可以采用Xavier初始化方法,以及避免将learning rate設定太大或使用adagrad等自動調節learning rate的算法。

    盡管存在這兩個問題,ReLU目前仍是最常用的activation function,在搭建人工神經網絡的時候推薦優先嘗試!

原文連結:https://blog.csdn.net/hhhhhhhhhhwwwwwwwwww/article/details/116863273

繼續閱讀