深度學習基礎(二)激活函數

        激活函數(也被稱爲激勵函數)的意義就是加入非線性因素,使得神經網絡具有非線性表達的能力。其必要條件是激活函數的輸入和輸出都是可微的,因爲神經網絡要求處處可微。(可微是指函數的各個方向可導,可微大於等於可導)

一、激活函數的定義與作用

1.定義。如下圖所示,激活函數一般是在神經元的輸入(inputs)經過加權求和之後,還繼續被一個函數作用。該函數就是激活函數。

                                                  

2.作用。激活函數的意義也就是加入非線性因素,讓神經網絡具備非線性的表達能力(當然不是真正意義上的非線性,不過可以逼近任意的非線性函數罷了)。這也是個很了不得的進步了。

二、激活函數的類型

函數類型主要有Sigmoid、Tanh、Relu及其變種等函數。

1.Sigmoid

公式:                                                                   f(x) = \frac{1}{1 + e^{-1}}

函數曲線:

將輸入x映射到(0,1)之間,對二分類比較有效。其缺點比較明顯,

1)激活函數計算量大,收斂緩慢

2)反向傳播時,容易出現梯度消失

2.Tanh

Tanh可以說是Sigmoid函數的升級版(但是並不能完全代替Sigmoid,因爲有時要求輸出大於等於0時,Sigmoid還是具有不可替代性),Tanh的值域爲(-1,1)。

公式:                                           f(x) = 2*Sigmoid(2x)-1 = \frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}

函數曲線:

與Sigmoid相比,Tanh具有zero-centered的特性,並且具有放大特徵的能力,但依然具有梯度消失和冪運算的計算複雜等問題。

3.Relu

Relu函數更爲常用,因爲其重視正向信號忽視負向信號和人類神經元細胞的特性特別相似,所以具有非常好的擬合效果。

公式:                                                                 f(x) = max (0,x)

曲線:

雖然Relu是一個取最大值函數,並且局部可導,但是它是近幾年來激活函數比較突出的進展,主要表現以下幾點:

1)解決了梯度消失的問題(僅僅是在正區間);

2)計算速度和收斂速度快;

缺點也比較明顯:

1)不具備zero-centered的特性;

2)Dead ReLU Problem。由於參數初始化的不幸或者learning rate的設置不正確(設置過大)導致的神經元可能永遠不會被激活,即相應的參數永遠不能被更新問題。其解決辦法是採用Xavier初始化方法,以及避免將learning rate設置太大或使用adagrad等自動調節learning rate的算法。

Relu和後面優化函數中的Adam算法一樣,請優先使用(特別是對我這樣的新手而言)。

4.Relu的變種PReLU

PReLU

公式:                                                                          f(x) = max(\alpha x,x)

曲線:

主要是爲了避免Relu的Dead ReLU Problem問題,令Relu的負半段爲設爲αx 而非0。
但是無法通過測試說明PReLU完全比Relu具有更好的表達性。

Relu6(tensorflow的函數)

公式:                                                                           f(x) = min((max(0,x)),6)

Relu6可有效防止梯度爆炸,由於節點和層數過多且輸出爲正時,經加權計算時輸出與目標相差過大導致參數調整修正值過大引發的網絡抖動,無法收斂的情況。

5.softmax

softmax函數是一個多分類函數,主要用於多分類任務。

公式:                                                           f(x) = \frac{e^{x_{j}}}{\sum_{i=1}^{sum}e^{x_{i}}}

其輸出是分類的n個標籤,每個標籤的概率,其概率的和爲1,其中選取概率最大的分類作爲預測的目標。

總結:

1.深度學習必要的條件是大量的數據,針對數據最好採用zero-centered數據 和zero-centered輸出,所以儘量選擇具有zero-centered特點的激活函數以加快模型的收斂速度;

2.使用Relu時,要對learning rate比較熟悉,避免出現大量的“dead”神經元;

3.激活函數的使用,一般來說多分類的最後一層使用Softmax函數。而其餘函數的使用優先順序分別是Relu > Tanh >Sigmoid,一般來說Sigmoid最好不要使用,當然具體情況還是需要具體分析的。

參考文獻:

1.《深度學習之tensorflow》;

2.https://blog.csdn.net/sinat_29957455/article/details/81841278

如有錯誤,請聯繫博主改正,謝謝指正!

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