啟用函式 神經網路

2021-09-12 18:26:59 字數 1864 閱讀 5629

--------andrew的《neural networks and deep learning》課程學習筆記

如圖所示,是乙個簡單的三層神經網路,如果只使用線性啟用函式或者恒等啟用函式(不使用啟用函式),那麼神經網路的輸出就只是輸入函式的線性變化,因為線性啟用函式的組合依然是線性啟用函式。這種情況下,不管使用多少個隱藏層都沒有任何作用,和不使用隱藏層的效果是一樣的,神經網路也就退化成了簡單的線性邏輯回歸。

如果想讓神經網路具有強大的功能,那麼就必須使用非線性的啟用函式。常見的啟用函式為sigmoid函式、雙曲正切函式tanh、relu函式、leaky relu函式。

sigmoid函式比較簡單,由上圖知它可以把輸入轉化成(0,1)區間的數,但是現在很少使用sigmoid函式。

隱藏層一般不使用sigmoid啟用函式,只有在特殊情況下才會使用,比如:壓縮問題。

輸出層也很少使用sigmoid啟用函式,只在一些特殊的情況下會用,比如:二元分類問題。例:給一張,讓判斷中是否有貓,那麼如果在輸出層使用sigmoid啟用函式,那麼輸出結果就會在(0,1)區間,當y^>0.5時,y=1,代表有貓;否則y=0,代表沒有貓。

由圖可知,雙曲正切函式tanh可以把輸入轉換成(-1,1)區間的數。一般情況下,使用雙曲正切函式tanh作為啟用函式的最終結果會嚴格好於使用sigmoid函式。下面會講具體原因。

如果在隱藏層使用雙曲正切函式tanh,那麼最終效果基本都會嚴格好於使用sigmoid函式。因為雙曲正切函式tanh的輸出介於(-1,1),隱藏層函式輸出的平均值會更加逼近於0。有時候,當我們訓練乙個學習演算法時,可能會想中心化資料,使輸出結果趨近於0,而不是0.5,那麼使用雙曲正切函式tanh就可以達到這個效果。這樣會使得下一層的學習簡單一點。

雙曲正切函式tanh和sigmoid函式的共同缺陷:當z很大或者很小的時候,函式的斜率值會非常小,幾乎接近於0。這會使得梯度下降變得很慢。

那麼線性整流函式relu正好能解決這個問題。

a等於0和z中較大的那個。

relud的缺點:

(1)在技術上實現時,該函式在(0,0)點導數不存在,但是這個問題不必太擔心。因為在實際應用中,我們通常會遇到非常接近於0的0.00000000000…

而很少會遇到0點,即使當遇到0點時,也可以把該點的導數賦值為0或1,不會對問題造成什麼影響。

(2)當z為負數時,導數為0,但是這個問題在實際應用也不用太擔心。relu還有乙個版本可以解決這個問題,即:leaky relu。但是在實際應用中,relu的使用頻率更高,不經常使用leaky relu。

1 如果處理的是二分類問題,那麼可以把sigmoid函式用到輸出層。在隱藏層使用relu函式。

2 如果不確定使用什麼啟用函式,那麼推薦使用relu函式,一般情況下,該函式的效果最好。當然也可以不斷地去嘗試不同的函式作為啟用函式,看哪種效果更好。

3 在實際應用中,relu函式的使用頻率最高,其次是雙曲正切函式tanh,幾乎不使用sigmoid函式。

神經網路啟用函式

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

神經網路啟用函式

1.sigmoid sigmoid散活函式是將 乙個實數輸入轉化至 0 1 之間的輸出,具體來說也就是將越大的負數轉化到越靠近 0 越大的正數轉化到越靠近1。多用於二分類。缺點 1 sigmoid 函式會造成梯度消失。乙個非常不好的特點就是 sigmoid 函式在靠近 1和0 的兩端時,梯度會幾乎變...

神經網路 啟用函式對比

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