成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

深度學(xué)習(xí)常見激活函數(shù)介紹及代碼實(shí)現(xiàn)

RdouTyping / 3626人閱讀

摘要:通過查看導(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

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ù)圖像:

elurelu的區(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ān)文章

  • 深度學(xué)習(xí)的這些坑你都遇到過嗎?神經(jīng)網(wǎng)絡(luò)11大常見陷阱應(yīng)對(duì)方法

    摘要:類似地,輸入中的大規(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ò)誤的激活...

    DirtyMind 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<