摘要:通過查看導(dǎo)函數(shù)圖像,激活函數(shù)最大的問題就是兩端飽和,造成梯度消失解決辦法使用激活函數(shù),等,此外輸出不以中心以中心的好處是可以加快模型收斂。
作用
深度神經(jīng)網(wǎng)絡(luò)引入非線性單元,使訓(xùn)練問題不再是一個(gè)凸優(yōu)化問題,雖然我們很難得到最優(yōu)解,但是可以通過梯度下降去尋找局部最小值。
增強(qiáng)模型的擬合能力,理論上只要有足夠的神經(jīng)元,一層隱藏層就可以表達(dá)任意函數(shù)。
性質(zhì)可微(多元函數(shù)):函數(shù)可微保證使用梯度下降優(yōu)化的可計(jì)算性。
單調(diào)性:保證梯度方向相對(duì)穩(wěn)定。
輸出值范圍:當(dāng)輸出有限,由于特征表示受有限權(quán)值影響,基于梯度的優(yōu)化方法會(huì)更加穩(wěn)定;當(dāng)輸出無(wú)限,特征表示不受影響,但由于高梯度需要小學(xué)習(xí)率。
非飽和性:
當(dāng)激活函數(shù)滿足如下要求,稱為右飽和:
當(dāng)激活函數(shù)滿足如下要求,稱為左飽和:
激活函數(shù)飽和會(huì)造成梯度值接近0,導(dǎo)致梯度消失使模型無(wú)法收斂。
sigmoid函數(shù),導(dǎo)函數(shù)圖像:
sigmoid激活函數(shù)具有“連續(xù)可微”,“單調(diào)性”,“輸出值有限”。通過查看導(dǎo)函數(shù)圖像,sigmoid激活函數(shù)最大的問題就是兩端飽和,造成梯度消失(解決辦法:使用relu激活函數(shù),BN等),此外輸出不以0中心(以0中心的好處是可以加快模型收斂)。
目前sigmoid激活函數(shù)多使用在二分類問題(對(duì)于大于二分類問題,如果類別之間存在相互關(guān)系使用sigmoid,反之使用softmax),門控機(jī)制的判斷等。
import tensorflow as tf tf.enable_eager_execution() sigmoid_test=tf.nn.sigmoid([-3.,-2.,-1.,0.0,1.,2.,3.],name="sigmoid_op") print(sigmoid_test)
輸出:
tf.Tensor( [0.04742587 0.11920292 0.26894143 0.5 0.7310586 0.880797 0.95257413], shape=(7,), dtype=float32)tanh
tanh函數(shù),導(dǎo)函數(shù)圖像:
tanh激活函數(shù)輸出區(qū)間[-1,1],輸出值以0為中心,與sigmoid激活函數(shù)相比具有更大的梯度值,再加上輸出值以0為中心,模型收斂更快。不過它依然存在兩端飽和,梯度消失問題還是存在,tanh激活函數(shù)在RNN模型中應(yīng)用較多。
import tensorflow as tf tf.enable_eager_execution() tanh_test=tf.nn.tanh([-3.,-2.,-1.,0.0,1.,2.,3.],name="tanh_op") print(tanh_test)
輸出:
tf.Tensor( [-0.9950547 -0.9640276 -0.7615942 0. 0.7615942 0.9640276 0.9950547], shape=(7,), dtype=float32)relu
relu函數(shù),導(dǎo)函數(shù)圖像:
relu與線性單元的區(qū)別是在其一半的定義域上輸出為0,這使得它易于優(yōu)化,計(jì)算。通過圖像可得,relu激活函數(shù)的梯度不僅大,而且一致,更重要的是它沒有sigmoid,tanh激活函數(shù)的飽和性,有效緩解了梯度消失問題。目前,relu激活函數(shù)是神經(jīng)網(wǎng)絡(luò)隱藏層的首選。
但是,它最大的問題是當(dāng)輸入小于0時(shí),輸出值為0,此時(shí)神經(jīng)元將無(wú)法學(xué)習(xí)。
import tensorflow as tf tf.enable_eager_execution() relu_test=tf.nn.relu([-3.,-2.,-1.,0.0,1.,2.,3.],name="relu_op") tf.nn.relu print(relu_test)
輸出:
tf.Tensor([0. 0. 0. 0. 1. 2. 3.], shape=(7,), dtype=float32)leakyrelu
leakyrelu函數(shù),導(dǎo)函數(shù)圖像:
leakyrelu激活函數(shù)是relu的衍變版本,主要就是為了解決relu輸出為0的問題。如圖所示,在輸入小于0時(shí),雖然輸出值很小但是值不為0。
leakyrelu激活函數(shù)一個(gè)缺點(diǎn)就是它有些近似線性,導(dǎo)致在復(fù)雜分類中效果不好。
import tensorflow as tf tf.enable_eager_execution() # alpha: Slope of the activation function at x < 0 leaky_relu_test=tf.nn.leaky_relu([-3.,-2.,-1.,0.0,1.,2.,3.],alpha=0.2,name="leaky_relu_op") print(leaky_relu_test)
輸出:
tf.Tensor([-0.6 -0.4 -0.2 0. 1. 2. 3. ], shape=(7,), dtype=float32)elu
elu函數(shù),導(dǎo)函數(shù)圖像:
elu和relu的區(qū)別在負(fù)區(qū)間,relu輸出為0,而elu輸出會(huì)逐漸接近-α,更具魯棒性。elu激活函數(shù)另一優(yōu)點(diǎn)是它將輸出值的均值控制為0(這一點(diǎn)確實(shí)和BN很像,BN將分布控制到均值為0,標(biāo)準(zhǔn)差為1)。
import tensorflow as tf tf.enable_eager_execution() elu_relu_test=tf.nn.elu([-10000,-100.,-3.,-2.,-1.,0.0,1.,2.,3.],name="elu_relu_op") print(elu_relu_test)
輸出:
tf.Tensor( [-1. -1. -0.95021296 -0.86466473 -0.63212055 0. 1. 2. 3. ], shape=(9,), dtype=float32)softmax
softmax單元常作為網(wǎng)絡(luò)的輸出層,它很自然地表示了具有 k 個(gè)可能值的離散型隨機(jī)變量的概率分布。
softmax將向量等比例壓縮到[0,1]之間,且保證所有元素之和為1。
import tensorflow as tf tf.enable_eager_execution() softmax_test=tf.nn.softmax([-3.,-2.,-1.,0.0,1.,2.,3.],name="softmax_op") print(softmax_test) softmax_test_sum=tf.reduce_sum(softmax_test) print(softmax_test_sum)
輸出:
tf.Tensor( [0.0015683 0.00426308 0.01158826 0.03150015 0.0856263 0.23275642 0.6326975 ], shape=(7,), dtype=float32)
tf.Tensor(1.0, shape=(), dtype=float32)總結(jié)
激活函數(shù)的選擇還要根據(jù)項(xiàng)目實(shí)際情況,考慮不同激活函數(shù)的優(yōu)缺點(diǎn)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/42826.html
摘要:類似地,輸入中的大規(guī)模特征將主導(dǎo)網(wǎng)絡(luò)并導(dǎo)致下游發(fā)生更大的變化。因此,使用神經(jīng)網(wǎng)絡(luò)庫(kù)的自動(dòng)規(guī)范化往往是不夠的,這些神經(jīng)網(wǎng)絡(luò)庫(kù)會(huì)在每個(gè)特征的基礎(chǔ)上盲目地減去平均值并除以方差。 如果你的神經(jīng)網(wǎng)絡(luò)不工作,該怎么辦?作者在這里列出了建神經(jīng)網(wǎng)絡(luò)時(shí)所有可能做錯(cuò)的事情,以及他自己的解決經(jīng)驗(yàn)。忘記規(guī)范化數(shù)據(jù)忘記檢查結(jié)果忘記預(yù)處理數(shù)據(jù)忘記使用正則化使用的batch太大使用了不正確的學(xué)習(xí)率在最后層使用了錯(cuò)誤的激活...
閱讀 3288·2023-04-25 18:03
閱讀 1151·2021-11-15 11:38
閱讀 5560·2021-10-25 09:45
閱讀 847·2021-09-24 09:48
閱讀 2303·2021-09-22 15:34
閱讀 1742·2019-08-30 15:44
閱讀 2685·2019-08-30 13:12
閱讀 609·2019-08-29 16:05