神經網路啟用函式

2021-09-29 01:56:03 字數 2212 閱讀 4602

1.sigmoid

sigmoid散活函式是將

乙個實數輸入轉化至 0 ~ 1 之間的輸出, 具體來說也就是將越大的負數轉化到越靠近 0 ,越大的正數轉化到越靠近1。多用於二分類。

缺點:

1).sigmoid 函式會造成梯度消失。乙個非常不好的特點就是 sigmoid 函式在靠近

1和0 的兩端時,梯度會幾乎變成 0,會導致無法更新引數, 即梯度消失

2). sigmoid 輸出不是以 o 為均值,這就會導致經過 sigmoid 啟用函式之後的輸出,作為後面一層網路的輸入的時候是非 0 均值的,這個時候如果輸入進入下一層神經元的時候全是正的,這就會導致梯度全是正的,那麼在更新引數的時候永遠都是正梯度。

將輸入的資料轉化到一 1 ~ 1 之間,可以通過影象看出它將輸出變成了 o 均值,在一定程度上解決了 sigmoid 函式的第二個問題,但是它仍然存在梯度淌夫的問題。因

此實際上 tanh 啟用用數總是比 sigmoid 啟用函式更好。

3.relu

relu函式又稱為修正線性單元(rectified linear unit),是一種分段線性函式,其彌補了sigmoid函式以及tanh函式的梯度消失問題

優點:(1) 相比於 sigmoid 啟用函式和 tanh ì

.敖活函式, relu i腳舌函式能夠極大地加速隨機梯度下降法的收斂速度,這因為它是線性的,且不存在梯度消失的問題 。

( 2 )相比於 sigmoid 啟用民l數和 tanh 啟用函式的複雜計算而

言,relu 的計算方法更加簡單.只需要乙個閩值過濾就可以得到結果,不需要進行一

大堆複雜的運算。

缺點:訓練的時候很脆弱.比如乙個很大的梯度經過 relu 啟用函式更新引數之後,會使得這個神經元不會對任何資料有啟用現象 。

如果發生這種情況之後,經過 relu 的梯度永遠都會是 0 ,也就意味著引數無法再更新了,因為 relu 啟用函式本質上是乙個不可逆的過程,因為它會直接去掉輸入小於 o 的部分 。 在實際操作中可以通過設定比較小的學習率來避免這個小問題 。

4. leaky relu

leaky relu 啟用雨數是 relu 啟用雨數的變式,主要是為了修復 relu 啟用函式中訓練比較脆弱的這個缺點.不將 x比如 0.01。

a取值在(0,1)之間.(0,1)之間。

leaky relu函式解決了relu函式在輸入為負的情況下產生的梯度消失問題。 但是再對所有情況都有效,目前也不清楚 。

5.softmax

softmax-用於多分類神經網路的輸出

softmax函式計算事件超過'n'個不同事件的概率分布。一般來說,這個函式將會計算每個目標類別在所有可能的目標類中的概率。計算出的概率將有助於確定給定輸入的目標類別。

使用softmax的主要優點是輸出概率的範圍,範圍為0到1,所有概率的和將等於1。

總結:

選擇啟用函式時,優先選擇relu及其變體,而不是sigmoid或tanh。同時relu及其變體訓練起來更快。如果relu導致神經元死亡,使用leaky relu或者relu的其他變體。sigmoid和tanh受到消失梯度問題的困擾,不應該在隱藏層中使用。隱藏層使用relu及其變體較好。使用容易求導和訓練的啟用函式。

[1]

[2] 《深度學習之pytorch》

神經網路啟用函式

2018,jul 23 學了深度學習也快近一年了,在學deep learning的時候什麼教程都去看,起初學起來也特別的雜亂,前面的基礎沒弄懂還一直往下學,自然導致我學到後面的時候有點崩潰什麼都看不懂,並且因為自己還是一名在校生,平常課程也非常多,沒有乙個連續的學習時間也導致我的學習是斷斷續續,在學...

啟用函式 神經網路

andrew的 neural networks and deep learning 課程學習筆記 如圖所示,是乙個簡單的三層神經網路,如果只使用線性啟用函式或者恒等啟用函式 不使用啟用函式 那麼神經網路的輸出就只是輸入函式的線性變化,因為線性啟用函式的組合依然是線性啟用函式。這種情況下,不管使用多少...

神經網路 啟用函式對比

本部落格僅為作者記錄筆記之用,不免有很多細節不對之處。還望各位看官能夠見諒,歡迎批評指正。日常 coding 中,我們會很自然的使用一些啟用函式,比如 sigmoid relu等等。不過好像忘了問自己一 n 件事 為什麼需要啟用函式?啟用函式都有哪些?都長什麼樣?有哪些優缺點?怎麼選用啟用函式?此圖...