天天看點

【Interview】activate function

Reference

https://yogayu.github.io/DeepLearningCourse/03/ActivateFunction.html

Deep Learning v1 筆記

https://mp.weixin.qq.com/s/7DgiXCNBS5vb07WIKTFYRQ

可視化神經網絡中的激活函數——26 個激活函數的圖示及其一階導數

Recall that we use a step function in perceptron to transform output i.e. whether or not the neuron should be activated.

We call this kind of function which take all the inputs to transform an output as activate function.

【Interview】activate function

一句話:“那麼該用那種呢?”

  • 用ReLU非線性函數

    注意設定好學習率,如果單元死亡問題困擾你,就試試Leaky ReLU或者Maxout

  • 不要再用sigmoid了
  • 也可以試試tanh,效果 不如 ReLU或者Maxout

ReLU

h ( x ) = m a x ( x , 0 ) h(x) = max(x,0) h(x)=max(x,0)

  • only remain positive elements
  • setting all negative elements nodes to 0
【Interview】activate function

ReLU優點

  • 對梯度下降收斂有加速作用

    相較于sigmoid和tanh函數,ReLU對于随機梯度下降的收斂有巨大的加速作用

  • 運算簡單

    sigmoid和tanh神經元含有指數運算等耗費計算資源的操作,而ReLU可以簡單地通過對一個矩陣進行門檻值計算得到

缺點

  • 在訓練的時候,ReLU單元比較脆弱并且可能“死掉”
    • 當輸入為負值的時候,ReLU 的學習速度可能會變得很慢,甚至使神經元直接無效,因為此時輸入小于零而梯度為零,進而其權重無法得到更新
    • 當一個很大的梯度流過ReLU的神經元的時候,可能會導緻梯度更新到一種特别的狀态,在這種狀态下神經元将無法被其他任何資料點再次激活。如果這種情況發生,那麼從此所有流過這個神經元的梯度将都變成0。也就是說,這個ReLU單元在訓練中将不可逆轉的死亡,因為這導緻了資料多樣化的丢失。例如,如果學習率設定得太高,可能會發現網絡中40%的神經元都會死掉(在整個訓練集中這些神經元都不會被激活)。通過合理設定學習率,這種情況的發生機率會降低。

Sigmoid

h ( x ) = 1 1 + e − x h(x) = \frac{\mathrm{1} }{\mathrm{1} + e^{-x} } h(x)=1+e−x1​

【Interview】activate function
【Interview】activate function

Sigmoid 因其在 logistic 回歸中的重要地位而被人熟知,值域在 0 到 1 之間。Logistic Sigmoid(或者按通常的叫法,Sigmoid)激活函數給神經網絡引進了機率的概念。它的導數是非零的,并且很容易計算(是其初始輸出的函數)。然而,在分類任務中,sigmoid 正逐漸被 Tanh 函數取代作為标準的激活函數,因為後者為奇函數(關于原點對稱)。

sigmoid函數缺點

  • Sigmoid函數飽和使梯度消失。sigmoid神經元有一個不好的特性,就是當神經元的激活在接近0或1處時會飽和:在這些區域,梯度幾乎為0。如果初始化權重過大,那麼大多數神經元将會飽和,導緻網絡就幾乎不學習了。
  • Sigmoid函數的輸出不是零中心的

    将影響梯度下降的運作

TancH

【Interview】activate function
【Interview】activate function

完全可微的,以0為中心,是反對稱的

TancH缺點

  • 和sigmoid神經元一樣,它也存在飽和問題
  • 但是和sigmoid神經元不同的是,它的輸出是零中心的
【Interview】activate function

Leaky ReLU

【Interview】activate function

<img src="https://leanote.com/api/file/getImage?fileId=5dc15c91ab6441425d000536)是一個小的常量

【Interview】activate function

經典(以及廣泛使用的)ReLU 激活函數的變體,Leaky ReLU 的輸出對負值輸入有很小的坡度。由于導數總是不為零,這能減少靜默神經元的出現,允許基于梯度的學習(雖然會很慢)

Leaky ReLU 是為解決“ReLU死亡”問題的嘗試

  • ReLU中當x<0時,函數值為0
  • Leaky ReLU中當x<0時,函數值則是給出一個很小的負數梯度值,比如0.01

Maxout

【Interview】activate function