目錄
- 簡述
- 簡述
- 內容詳解
- 密度聚類
- 層次聚類
- 總結
一、激活函數作用
激活函數的主要作用是提供網絡的非線性建模能力。如果沒有激活函數,那么該網絡僅能夠表達線性映射,此時即便有再多的隱藏層,其整個網絡跟單層神經網絡也是等價的。因此也可以認為,只有加入了激活函數之后,深度神經網絡才具備了分層的非線性映射學習能力。
二、激活函數所具有的幾個性質
非線性: 當激活函數是線性的時候,一個兩層的神經網絡就可以逼近基本上所有的函數了。但是,如果激活函數是恆等激活函數的時候(即f(x)=x),就不滿足這個性質了,而且如果MLP(Multi-Layer Perceptron,即多層感知器)使用的是恆等激活函數,那么其實整個網絡跟單層神經網絡是等價的。
可微性: 當優化方法是基於梯度的時候,這個性質是必須的。
單調性: 當激活函數是單調的時候,單層網絡能夠保證是凸函數。
f(x)≈x: 當激活函數滿足這個性質的時候,如果參數的初始化是random的很小的值,那么神經網絡的訓練將會很高效;如果不滿足這個性質,那么就需要很用心的去設置初始值。
輸出值的范圍: 當激活函數輸出值是 有限 的時候,基於梯度的優化方法會更加穩定,因為特征的表示受有限權值的影響更顯著;當激活函數的輸出是 無限 的時候,模型的訓練會更加高效,不過在這種情況小,一般需要更小的learning rate。
三、四種激活函數
3.1:Sigmoid
Sigmoid 因其在 logistic 回歸中的重要地位而被人熟知,值域在 0 到 1 之間。Logistic Sigmoid(或者按通常的叫法,Sigmoid)激活函數給神經網絡引進了概率的概念。它的導數是非零的,並且很容易計算(是其初始輸出的函數)。然而,在分類任務中,sigmoid 正逐漸被 Tanh 函數取代作為標准的激活函數,因為后者為奇函數(關於原點對稱)。
優點:
- Sigmoid函數的輸出映射在(0,1)之間,單調連續,輸出范圍有限,如果是非常大的負數,那么輸出就是0;如果是非常大的正數,輸出就是1。優化穩定,可以用作輸出層。
- 求導容易。
- sigmoid 函數曾經被使用的很多,不過近年來,用它的人越來越少了。
缺點:
- 容易飽和和終止梯度傳遞("死神經元");
- sigmoid函數的輸出沒有0中心化。
3.2:雙曲正切函數(Tanh)
在分類任務中,雙曲正切函數(Tanh)逐漸取代 Sigmoid 函數作為標准的激活函數,其具有很多神經網絡所鍾愛的特征。它是完全可微分的,反對稱,對稱中心在原點。為了解決學習緩慢和/或梯度消失問題,可以使用這個函數的更加平緩的變體(log-log、softsign、symmetrical sigmoid 等等)。
優點:
- 比Sigmoid函數收斂速度更快。
- 相比Sigmoid函數,其輸出以0為中心。
缺點:
還是沒有改變Sigmoid函數的最大問題——由於飽和性產生的梯度消失。
3.3:修正線性單元(Rectified linear unit,ReLU)
是神經網絡中最常用的激活函數。它保留了 step 函數的生物學啟發(只有輸入超出閾值時神經元才激活),不過當輸入為正的時候,導數不為零,從而允許基於梯度的學習(盡管在 x=0 的時候,導數是未定義的)。使用這個函數能使計算變得很快,因為無論是函數還是其導數都不包含復雜的數學運算。然而,當輸入為負值的時候,ReLU 的學習速度可能會變得很慢,甚至使神經元直接無效,因為此時輸入小於零而梯度為零,從而其權重無法得到更新,在剩下的訓練過程中會一直保持靜默。
優點:
1.相比起Sigmoid和tanh,ReLU在SGD中能夠快速收斂,這是因為它線性(linear)、非飽和(non-saturating)的形式。
2.Sigmoid和tanh涉及了很多很expensive的操作(比如指數),ReLU可以更加簡單的實現。
3.有效緩解了梯度消失的問題。
4.在沒有無監督預訓練的時候也能有較好的表現。
缺點:
- 沒有邊界,可以使用變種ReLU: min(max(0,x), 6)
- 比較脆弱,比較容易陷入出現"死神經元"的情況
• 解決方案: 較小的學習率
3.4:Leaky ReLU
經典(以及廣泛使用的)ReLU 激活函數的變體,帶泄露修正線性單元(Leaky ReLU)的輸出對負值輸入有很小的坡度。由於導數總是不為零,這能減少靜默神經元的出現,允許基於梯度的學習(雖然會很慢)。
優缺點:人工神經網絡中為什么ReLu要好過於tanh和sigmoid function?
1.采用sigmoid等函數,算激活函數時(指數運算),計算量大,反向傳播求誤差梯度時,求導涉及除法和指數運算,計算量相對大,而采用Relu激活函數,整個過程的計算量節省很多。
2.對於深層網絡,sigmoid函數反向傳播時,很容易就會出現梯度消失的情況(在sigmoid接近飽和區時,變換太緩慢,導數趨於0,這種情況會造成信息丟失),這種現象稱為飽和,從而無法完成深層網絡的訓練。而ReLU就不會有飽和傾向,不會有特別小的梯度出現。
3.Relu會使一部分神經元的輸出為0,這樣就造成了網絡的稀疏性,並且減少了參數的相互依存關系,緩解了過擬合問題的發生(以及一些人的生物解釋balabala)。當然現在也有一些對relu的改進,比如prelu,random relu等,在不同的數據集上會有一些訓練速度上或者准確率上的改進。
一般來說,隱藏層最好使用 ReLU 神經元。對於分類任務,Softmax 通常是更好的選擇;對於回歸問題,最好使用 Sigmoid 函數或雙曲正切函數。
如果使用 ReLU,要小心設置 learning rate,注意不要讓網絡出現很多 "dead" 神經元,如果不好解決,可以試試 Leaky ReLU、PReLU 或者 Maxout.
比如GAN就是使用這個函數。
四、其它激活函數:
ELU激活函數:
指數線性激活函數,同樣屬於對ReLU激活函數的x≤0部分的轉換進行指數修正,而不是和Leaky ReLU中的線性修正
五、激勵層建議:
- CNN盡量不要使用sigmoid,如果要使用,建議只在全連接層使用
- 首先使用ReLU,因為迭代速度快,但是有可能效果不佳
- 如果使用ReLU失效的情況下,考慮使用Leaky ReLu或者Maxout,此時一般情況都可以解決啦
- tanh激活函數在某些情況下有比較好的效果,但是應用場景比較少
附加:
Softmax:
做過多分類任務的同學一定都知道softmax函數。softmax函數,又稱歸一化指數函數。它是二分類函數sigmoid在多分類上的推廣,目的是將多分類的結果以概率的形式展現出來。下圖展示了softmax的計算方法:
下面為大家解釋一下為什么softmax是這種形式。我們知道指數函數的值域取值范圍是零到正無窮。與概率取值相似的地方是它們都是非負實數。那么我們可以
1)利用指數函數將多分類結果映射到零到正無窮;
2)然后進行歸一化處理,便得到了近似的概率。
總結一下softmax如何將多分類輸出轉換為概率,可以分為兩步:
1)分子:通過指數函數,將實數輸出映射到零到正無窮。
2)分母:將所有結果相加,進行歸一化。
下圖為斯坦福大學CS224n課程中對softmax的解釋:
