【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.

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

  • 用ReLU非線性函數
    注意設置好學習率,如果單元死亡問題困擾你,就試試Leaky ReLU或者Maxout
  • 不要再用sigmoid了
  • 也可以試試tanh,效果 不如 ReLU或者Maxout

ReLU

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

  • only remain positive elements
  • setting all negative elements nodes to 0

ReLU優點

  • 對梯度下降收斂有加速作用
    相較於sigmoid和tanh函數,ReLU對於隨機梯度下降的收斂有巨大的加速作用
  • 運算簡單
    sigmoid和tanh神經元含有指數運算等耗費計算資源的操作,而ReLU可以簡單地通過對一個矩陣進行閾值計算得到

缺點

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

Sigmoid

h(x)=11+exh(x) = \frac{\mathrm{1} }{\mathrm{1} + e^{-x} }

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

sigmoid函數缺點

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

  • Sigmoid函數的輸出不是零中心的
    將影響梯度下降的運作

TancH

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

TancH缺點

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

Leaky ReLU

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

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

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

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

Maxout

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