深度學習筆記:激活函數和損失函數

激活函數和損失函數


激活函數

關於激活函數,首先要搞清楚的問題是,激活函數是什麼,有什麼用?不用激活函數可不可以?答案是不可以。激活函數的主要作用是提供網絡的非線性建模能力。如果沒有激活函數,那麼該網絡僅能夠表達線性映射,此時即便有再多的隱藏層,其整個網絡跟單層神經網絡也是等價的。因此也可以認為,只有加入了激活函數之後,深度神經網絡才具備了分層的非線性映射學習能力。 那麼激活函數應該具有什麼樣的性質呢?

可微性: 當優化方法是基於梯度的時候,這個性質是必須的。

單調性: 當激活函數是單調的時候,單層網絡能夠保證是凸函數。

輸出值的範圍: 當激活函數輸出值是 有限 的時候,基於梯度的優化方法會更加 穩定,因為特徵的表示受有限權值的影響更顯著;當激活函數的輸出是 無限 的時候,模型的訓練會更加高效,不過在這種情況小,一般需要更小的learning rate

從目前來看,常見的激活函數多是分段線性和具有指數形狀的非線性函數

igmoid

深度學習筆記:激活函數和損失函數

sigmoid 是使用範圍最廣的一類激活函數,具有指數函數形狀,它在物理意義上最為接近生物神經元。此外,(0, 1) 的輸出還可以被表示作概率,或用於輸入的歸一化,代表性的如Sigmoid交叉熵損失函數。然而,sigmoid也有其自身的缺陷,最明顯的就是飽和性。從上圖可以看到,其兩側導數逐漸趨近於0

深度學習筆記:激活函數和損失函數

具有這種性質的稱為軟飽和激活函數。具體的,飽和又可分為左飽和與右飽和。與軟飽和對應的是硬飽和, 即

深度學習筆記:激活函數和損失函數

深度學習筆記:激活函數和損失函數

tanh

深度學習筆記:激活函數和損失函數

tanh也是一種非常常見的激活函數。與sigmoid相比,它的輸出均值是0,使得其收斂速度要比sigmoid快,減少迭代次數。然而,從途中可以看出,tanh一樣具有軟飽和性,從而造成梯度消失。

ReLU,P-ReLU, Leaky-ReLU

深度學習筆記:激活函數和損失函數

ReLU的全稱是Rectified Linear Units,是一種後來才出現的激活函數。 可以看到,當x<0時,ReLU硬飽和,而當x>0時,則不存在飽和問題。所以,ReLU 能夠在x>0時保持梯度不衰減,從而緩解梯度消失問題。這讓我們能夠直接以監督的方式訓練深度神經網絡,而無需依賴無監督的逐層預訓練。然而,隨著訓練的推進,部分輸入會落入硬飽和區,導致對應權重無法更新。這種現象被稱為“神經元死亡”。與sigmoid類似,ReLU的輸出均值也大於0,偏移現象和 神經元死亡會共同影響網絡的收斂性。

針對在x<0的硬飽和問題,我們對ReLU做出相應的改進,使得

深度學習筆記:激活函數和損失函數

這就是Leaky-ReLU, 而P-ReLU認為,α也可以作為一個參數來學習,原文獻建議初始化a為0.25,不採用正則。

ELU

深度學習筆記:激活函數和損失函數

融合了sigmoid和ReLU,左側具有軟飽和性,右側無飽和性。右側線性部分使得ELU能夠緩解梯度消失,而左側軟飽能夠讓ELU對輸入變化或噪聲更魯棒。ELU的輸出均值接近於零,所以收斂速度更快。在 ImageNet上,不加 Batch Normalization 30 層以上的 ReLU 網絡會無法收斂,PReLU網絡在MSRA的Fan-in (caffe )初始化下會發散,而 ELU 網絡在Fan-in/Fan-out下都能收斂

Maxout

深度學習筆記:激活函數和損失函數

在我看來,這個激活函數有點大一統的感覺,因為maxout網絡能夠近似任意連續函數,且當w2,b2,…,wn,bn為0時,退化為ReLU。Maxout能夠緩解梯度消失,同時又規避了ReLU神經元死亡的缺點,但增加了參數和計算量。

損失函數

在之前的內容中,我們用的損失函數都是平方差函數,即

深度學習筆記:激活函數和損失函數

深度學習筆記:激活函數和損失函數

深度學習筆記:激活函數和損失函數

深度學習筆記:激活函數和損失函數

可以看到其中沒有了σ′這一項,這樣一來也就不會受到飽和性的影響了。當誤差大的時候,權重更新就快,當誤差小的時候,權重的更新就慢。這是一個很好的性質。

深度學習筆記:激活函數和損失函數


分享到:


相關文章: