簡單易懂的講解深度學習(十)
最近又看了點深度學習的東西,主要看了一些關於啟用函式的內容,不知道算不算新穎,但是我想把自己閱讀後的分享一下,請各位給予評價與指點,謝謝!
一般啟用函式有如下一些性質:
-
非線性:
當啟用函式是線性的,一個兩層的神經網路就可以基本上逼近所有的函式。但如果啟用函式是恆等啟用函式的時候,即f(x)=x,就不滿足這個性質,而且如果MLP使用的是恆等啟用函式,那麼其實整個網路跟單層神經網路是等價的; -
可微性:
當優化方法是基於梯度的時候,就體現了該性質;
-
單調性:
當啟用函式是單調的時候,單層網路能夠保證是凸函式;
-
f(x)≈x:
當啟用函式滿足這個性質的時候,如果引數的初始化是隨機的較小值,那麼神經網路的訓練將會很高效;如果不滿足這個性質,那麼就需要詳細地去設定初始值;
-
輸出值的範圍:
當啟用函式輸出值是有限的時候,基於梯度的優化方法會更加穩定,因為特徵的表示受有限權值的影響更顯著;當啟用函式的輸出是無限的時候,模型的訓練會更加高效,不過在這種情況小,一般需要更小的Learning Rate。
Sigmoid
常用的非線性的啟用函式,數學形式如下:
Sigmoid 函式曾經被使用的很多,不過近年來,用它的人越來越少了。主要是因為它的缺點(輸入較大或較小的時候,最後梯度會接近於0),最終導致網路學習困難。
所以,出現了另一種啟用函式:ReLU
ReLU
f(x)=max(0,x)
優點:
使用 ReLU得到的SGD的收斂速度會比 sigmoid/tanh 快。這是因為它是linear,而且ReLU只需要一個閾值就可以得到啟用值,不用去計算複雜的運算。
缺點:
訓練過程該函式不適應較大梯度輸入,因為在引數更新以後,ReLU的神經元不會再有啟用的功能,導致梯度永遠都是零。
為了針對以上的缺點,又出現 Leaky-ReLU 、 P-ReLU 、 R-ReLU 三種拓展啟用函式。
Leaky ReLUs
該函式用來解決ReLU的缺點,不同的是:
f(x)=αx,(x<0) f(x)=x,(x>=0)
這裡的 α 是一個很小的常數。這樣,即修正了資料分佈,又保留了一些負軸的值,使得負軸資訊不會全部丟失。
Parametric ReLU
對於 Leaky ReLU 中的α,通常都是通過先驗知識人工賦值,可以觀察到損失函式對α的導數是可以求得的,可以將它作為一個引數進行訓練。
《Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification》
該文章指出其不僅可以訓練,而且效果特別好。公式非常簡單,其中對α的導數:
原文使用了Parametric ReLU後,最終效果比不用提高了 1.03% 。
Randomized ReLU
Randomized Leaky ReLU 是 Leaky ReLU 的隨機版本(α 是隨機選取)。 它首次是在NDSB 比賽中被提出。
核心思想就是,在訓練過程中,α是從一個高斯分佈U(l,u)中隨機出來的,然後再測試過程中進行修正(與Dropout的用法相似)。
數學表示如下:

在測試階段,把訓練過程中所有的αji取個平均值。NDSB冠軍的α是從 U(3,8) 中隨機出來的。在測試階段,啟用函式如下:
ReLU深度網路能逼近任意函式的原因
很早前就讀了一遍谷歌大腦工程師Eric Jang的一個解答,想把這個知識與大家分享!最近也發現,有很多牛人喜歡在部落格中分享DL的相關知識,所以個人感覺有空可以在部落格中度閱讀一些相關內容,對自己基礎和深度瞭解有很大的幫助,也在此感謝那些為DL&ML默默共享的大牛們,讓我們一起努力學習!!!那就不多說了,開始對這個話題的理解。嘿嘿!
有很多人問: 為什麼ReLU深度網路能逼近任意函式?
對此,其有深入見解,但是在此他是簡單,並用最少的數學形式來解釋這個問題。ReLU其實是分段線性的,所以有人會質疑,對於一個固定大小的神經網路,ReLU網路可能不具有更平滑+有界的啟用函式(如tanh)的表達。
因為他們學習非平滑函式,ReLU網路應該被解釋為以分段線性方式分離資料,而不是實際上是一個“真實”函式近似。 在機器學習中,人們經常試圖從有限離散資料點(即100K影象)的資料集中學習,並且在這些情況下,只需學習這些資料點的分隔就足夠了。考慮二維模數運算子,即:
vec2 p = vec2(x,y) // x,y are floats vec2 mod(p,1) { return vec2(p.x % 1, p.y % 1) }
mod函式的輸出是將所有2D空間摺疊/散架到單位平方上的結果。 這是分段線性,但高度非線性(因為有無限數量的線性部分)。
用ReLU啟用的深層神經網路工作相似-它們將啟用空間分割/摺疊成一簇不同的線性區域,像一個真正複雜的摺紙。
可以看“On the number of linear regions of Deep Neural Networks”這篇文章的第三幅圖,就很清楚表現了。
在文章的圖2中,它們展示了在網路中層的深度/層數的如何增加的,線性區域的數量呈指數增長。
事實證明,有足夠的層,你可以近似“平滑”任何函式到任意程度。 此外,如果你在最後一層新增一個平滑的啟用函式,你會得到一個平滑的函式近似。
一般來說,我們不想要一個非常平滑的函式近似,它可以精確匹配每個資料點,並且過擬合數據集,而不是學習一個在測試集上可正常工作的可泛化表示。 通過學習分離器,我們得到更好的泛化性,因此ReLU網路在這種意義上更好地自正則化。
詳情:A Comparison of the Computational Power of Sigmoid and Boolean Threshold Circuits