- 更新時間:2019-06-07
激活函數
tf.nn.relu()
ReLU函數,修正線性單元,在卷積神經網絡中應用廣泛,定義如下:
ReLU函數具有如下性質:
優點:
(1)計算高效:採用ReLU函數的神經元只需要進行加、乘和比較的操作
(2)單側抑制、寬興奮邊界:ReLU的輸出可以很大,也可以爲零
(3)稀疏性:對於小於0的輸入,ReLU函數返回0
缺點
(1)輸出非零中心化:這導致經過ReLU後,下一層的網絡會引入偏置偏移,影響梯度下降的效率。
(2)容易“死亡”:如果某一層中的某個神經元在訓練數據上的輸出都不能激活,那麼這個神經元的參數的梯度一直都會是0,在以後的訓練中都不會被激活。
tf.nn.sigmoid()
sigmoid函數是一個“S”型函數,爲兩端飽和函數。定義如下:
sigmoid函數是一種擠壓函數,將輸入壓縮在(0,1)區間內,並且在定義域上面連續可導,其導數如下:
sigmoid函數在深層網絡中容易發生梯度彌散,這是由於無論輸入數值多大,其輸出都小於1,這樣多次乘積後,梯度會越來越小。
tf.nn.tanh()
tanh函數也是一種“S”型函數,其值域區間爲[-1, 1],定義爲:
tanh函數與sigmoid函數之間可以相互轉化:
與sigmoid相似,tanh函數也在定義域上面連續可導,導數如下:
tf.nn.elu()
ELU指數線性單元,是一類近似的零中心化的非線性函數,定義爲:
其中, 是一個超參數。
tf.nn.biaes_add()
tf.nn.crelu()
tf.nn.leaky_relu(features, alpha=0.2, name=None)
LeakyReLU在輸入x<0時,保持一個很小的梯度,這樣在參數更新時,不會存在死亡問題。定義如下:
其中 是一個很小的常數,比如0.01,當 時,函數也可以寫成:
tf.nn.relu6(features, name=None)
tf.nn.softplus()
Softplus函數是ReLU函數的平滑版本,定義爲:
Softplus函數的導數剛好是sigmoid函數,也具有單側抑制、寬興奮邊界的特點,但是不具有稀疏激活性。
tf.nn.softsign()
tf.nn.dropout()
dropout函數用於使神經元隨機失活,從而緩解過擬合問題。
注:激活函數定義在“/tensorflow/python/ops/nn.py”中。
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/nn_ops.py