關於啟用函式的問題

2021-10-05 03:38:44 字數 1031 閱讀 4248

(1)sigmoid函式

優點:一是輸出在(0,1)之間,單調連續,輸出範圍有限。二是容易求導。

缺點:一是容易產生梯度消失,導致訓練困難。二是其輸出不是以0為中心。三是要進行指數運算,速度相對較慢。

建議:基於上面sigmoid的性質,所以不建議在中間層使用sigmoid啟用函式,因為它會讓梯度消失。

(2)tanh函式(雙曲正切函式)

優點:一是比sigmoid函式收斂速度快。二是與sigmoid函式相比,其輸出以0為中心。

缺點:一是容易產生梯度消失,導致訓練困難。二是要進行指數運算,速度相對較慢。

(3)relu函式(線性整流函式)

優點:一是非飽和,收斂速度塊。二是簡單,易於計算。三是有效緩解梯度消失的問題。四是在無監督預訓練的時候也能有較好的表現。五是具有稀疏表達能力。

缺點:訓練過程中會出現神經元死亡,導致引數此後無法更新。

(4)gelu函式(高斯誤差線性單元啟用函式)

優點:一是在nlp領域效果最佳,尤其在 transformer 模型中表現最好。二是類似relu能避免梯度消失問題。

缺點:涉及到指數運算,計算量大。

函式:導數:

函式:導數:

relu(線性整流函式)將小於0的資料對映到0,將大於0的資料不變,相當於其輸入乘以乙個0或者1,所乘的值是確定的。雖然效能比sigmoid好,但是缺乏資料的統計特性。

gelu(高斯誤差線性單元啟用函式)則在relu的基礎上加入了統計的特性,他的表示式為對於每乙個輸入x,其服從於標準正態分佈 n(0, 1),乘上乙個伯努利分布bernoulli(φ(x)),該伯努利分布又是依賴於輸入x的,這個權值取決於當前的輸入有多大的概率大於其餘的輸入,也就是當輸入值較小時,其被drop的可能性更大。相當於其所加的0或者1的mask值是隨機的,同時是依賴於輸入的分布的。

relu函式是乙個通用的啟用函式,目前在大多數情況下使用。在transformer模型中使用gelu函式。用於分類器時,sigmoid函式及其組合通常效果更好。relu函式用在隱藏層中。輸出層使用sigmoid函式或softmax函式用於分類。在回歸中使用線性函式。

關於啟用函式

優缺點 1.sigmoid 優點 取值範圍為 0,1 適合用於二分類模型,例如邏輯回歸 lr 缺點 啟用函式計算量大,反向傳播求誤差梯度時,求導涉及除法 反向傳播時,很容易就會出現梯度消失的情況 當z很大時,梯度變化很小 從而無法完成深層網路的訓練 2.tanh 優點 因為tanh取值範圍為 1,1...

關於分類問題中的啟用函式特性影響

哈哈,先原諒這乙個月在重圍中的藉口。有幾次想起還有blogs這件事,也是覺得可能這個月沒有publication留下。結果剛才debug發現了些有趣的事情,當然,現象是表面,insight是關鍵。由此的事情遠沒有完成,先在這裡記下,探索也是部分的需要計畫的 事情源於之前做的乙個分類問題,由於牽涉了新...

關於php啟用xdebug的問題

我在安裝過程中在 中多給我了這麼一行資訊 在這裡很奇怪為什麼多乙個c windows php.ini.剛開始沒有管他,然後配置好以後重啟apache一直報錯,php cgi.exe 什麼的.然後看了一些其他文章說php安裝的話預設的php.ini位置就是c windows 這裡.但是我使用的是php...