神經網路中常見的啟用函式

2021-08-07 03:51:04 字數 2822 閱讀 2701

一、背景

為什麼要使用啟用函式?之前其實也有點困惑,最近整理了一下之前的筆記,總結一下。

首先是第乙個問題:為什麼要使用啟用函式以及它的作用是什麼?使用啟用函式的原因在於,以兩類資料的分類為例,這些資料真正能線性可分的情況還是比較少的,此時如果資料不是線性可分的我們又該如何分類呢?這個時候我們就無法再簡單利用一條直線來對資料進行很好的劃分,這時我們需要加入非線性的因素來對資料進行分類。所以可以判斷出啟用函式的作用是給神經網路加入一些非線性因素,由於線性模型的表達能力不夠,故啟用函式的加入可以使得神經網路更好地解決較為複雜的問題。

下圖是神經網路中常見的啟用函式使用圖:

上圖中的f()函式就是使用的啟用函式。下面對幾種常見的啟用函式以及它們的優缺點進行介紹。

二、幾種常見的啟用函式

1、sigmoid函式

sigmoid函式定義如下:

其圖形如下圖所示,為乙個s型曲線:

sigmoid函式將實數壓縮到0~1區間。大的負數變成0,大的正數變成1。sigmoid函式由於其強大的解釋力,常被用來表示神經元的活躍度程度:從不活躍(0)到假設上最大的(1)。在實踐中,sigmoid函式最近從受歡迎到不受歡迎,很少再被使用。

它有兩個主要缺點:

(1)sigmoid容易飽和,出現梯度消失的現象。sigmoid神經元的乙個很差的屬性就是神經元的活躍度在0和1處飽和,它的梯度在這些地方接近於0。回憶在反向傳播中,某處的梯度和其目標輸出的梯度相乘,以得到整個目標。因此,如果某處的梯度過小,就會很大程度上出現梯度消失,使得幾乎沒有訊號經過這個神經元以及所有間接經過此處的資料。除此之外,人們必須額外注意sigmoid神經元權值的初始化來避免飽和。例如,當初始權值過大,幾乎所有的神經元都會飽和以至於網路幾乎不能學習。

(2)sigmoid 的輸出不是0均值的,這是我們不希望的,因為這會導致後層的神經元的輸入是非0均值的訊號,這會對梯度產生影響:假設後層神經元的輸入都為正(e.g. x>0 elementwise in f=wtx+b),那麼對w求區域性梯度則都為正,這樣在反向傳播的過程中w要麼都往正方向更新,要麼都往負方向更新,導致有一種**的效果,使得收斂緩慢。 但是如果你是按batch去訓練,那麼每個batch可能得到不同的符號(正或負),那麼相加一下這個問題還是可以緩解。

2、tanh函式

tanh和sigmoid函式是有異曲同工之妙的,不同的是它把實值得輸入壓縮到-1~1的範圍。tanh函式的公式如下圖所示:

它對應的影象如下圖所示:

優點:因為其輸入的範圍為-1~1,因此它基本是0均值的,這也就解決了上述sigmoid缺點中的第二個,所以實際中tanh會比sigmoid更常用。

缺點:它依然存在梯度飽和的問題。

3、relu函式

relu是最近幾年非常流行的啟用函式。它的定義如下:

它的影象為:

優點:

(1)其在梯度下降上與tanh/sigmoid相比有更快的收斂速度。這被認為時其線性、非飽和的形式。

(2)不會出現梯度消失的問題。

(3)relu會使一部分神經元的輸出為0,這樣就造成了網路的稀疏性,並且減少了引數的相互依存關係,緩解了過擬合問題的發生。

(4)sigmoid和tanh涉及了很多很expensive的操作(比如指數),relu可以更加簡單的實現。

缺點:

relu單元脆弱且可能會在訓練中死去。例如,大的梯度流經過relu單元時可能導致神經不會在以後任何資料節點再被啟用。當這發生時,經過此單元的梯度將永遠為零。relu單元可能不可逆地在訓練中的資料流中關閉。例如,比可能會發現當學習速率過快時你40%的網路都「掛了」(神經元在此後的整個訓練中都不啟用)。當學習率設定恰當時,這種事情會更少出現。

4、lrelu和prelu

relu、prelu函式的影象如下圖所示,需要說明的是lrelu和prelu的區別就在於a固定還是可變:

先說一下為什麼要用lrelu?就是了為了解決relu掛了的辦法。具體方法為當x<0,用小的負梯度(0.01)來替代0。

由上圖可以看出,如果ai=0,那麼prelu退化為relu;如果ai是乙個很小的固定值(如ai=0.01),則prelu退化為leaky relu(lrelu)。 有實驗證明,與relu相比,lrelu對最終的結果幾乎沒什麼影響。但是lrelu可在一定程度上解決relu掛了的情況。

prelu是lrelu的改進,它可以自適應地從資料中學習引數。prelu具有收斂速度快、錯誤率低的特點。prelu可以用於反向傳播的訓練,可以與其他層同時優化。

5、elu

elu的定義如下:

它對應的影象如下:

優點:

(1)elu減少了正常梯度與單位自然梯度之間的差距,從而加快了學習。

(2)在負的限制條件下能夠更有魯棒性。

神經網路中常用的啟用函式

1.非線性 當啟用函式是線性的時候,乙個兩層的神經網路就可以逼近基本上所有的函式了。但是,如果啟用函式是恒等啟用函式的時候 即f x x 就不滿足這個性質了,而且如果mlp使用的是恒等啟用函式,那麼其實整個網路跟單層神經網路是等價的。2.可微性 當優化方法是基於梯度的時候,這個性質是必須的。3.單調...

神經網路中常用的啟用函式

修正線性單元,是最常用的非線性對映函式。常在神經網路隱層中使用,因為它在反向傳播中計算導數十分方便。導數為 relu的 軟化版 導數為 同樣將單個輸入值對映到 0,1 之間,但函式是對稱的。求導也很方便,導數為 將一層的輸出的多個值歸一化,通常在 各個類別的概率時用到,而且一般用在輸出層。圖類似於s...

神經網路啟用函式

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