你要的答案或許都在這裡:小鵬的部落格目錄
很長一段時間都在想,有些問題不去弄明白為什麼,遇到瓶頸就傻逼了,一個bug整你一個月,原來隻是一個細節問題,就好如:你不知道從哪裡來? 又怎麼知道往哪裡去? 現在遺留的小問題,将來都會是大問題!
真的,有時候需要回過頭來重新開始,整理總結再去前行,也許會走的更遠。
那麼我的問題是:
(1)什麼是激活函數?
(2)激活函數的作用是什麼?
(3)激活函數有哪些?
(4)各自的優缺點是什麼?(解答完1、2、3,就有了答案了)
看到這裡,你的答案是什麼? 下面是我的答案:
(1)什麼是激活函數?
激活函數就是加在在神經元後的函數,下圖所示(例如我們前邊提到的在cnn卷積候連接配接的函數relu,還有Sigmoid、tanh、prelu等等),那麼它有什麼用呢?不加會怎麼樣?(2)中回答;

當然你也最好了解下面概念,到提起梯度消失就容易了解了,正是因為這麼飽和把梯度會傳的時候越來越小,使得更新參數失敗,整個網絡癱瘓:
(2)激活函數的作用是什麼?
簡單說:為了解決非線性問題,不加激活函數隻能處理線性問題。
下面圖來自公衆号憶臻筆記,一個用心在做的公衆号。
先來看一個圖:左側的網絡對應其下方的數學表達式,是一個線性方程(如果這裡你還問為什麼,那麼see you),令其為0,可以畫出一條直線,就是右側的圖了,右上方就是y>0的區域,左下方就是y<0的區域,對吧? 那麼它是線性的。
那麼你再看下面這個圖:網絡結構用右側的表達式表示。
你可以将右側的表達式整理一下,其實它是這樣的,你會發現原來是它也是線性的。
對,你想的沒錯,沒有激活函數的網絡隻能處理線性問題(佩服大牛!),在看下面的圖,在神經元後加上激活函數,至少可以保證輸出是非線性的,那麼能解決非線性問題嗎?再往下走。
然後看下圖,多個神經元的情況:
在看一下大神的圖:
是的通過加上激活函數就可以解決這種非線性問題;
(3)激活函數有哪些?
詳細介紹一個sigmod的激活函數:
左側是sigmoid函數圖,右側是sigmoid導數的函數圖,由DeepLN之CNN權重更新中的公式5,可知在梯度回傳過程中激活函數的影響梯度的問題,當資料落在sigmoid導數的紅色區域時就會造成梯度很小,甚至梯度消失;這個問題可以通過改善激活函數來改善,當然也可以通過改變激活函數的輸入x來改善,怎麼改善?把x重新拉回到0附近不就ok了嗎!那麼你想到了什麼?BN啊!!!那麼你還有什麼方法?修改激活函數啊,說過了,還有什麼?resdual啊!!!對嗎?哦,那麼還可以有什麼?當然真實使用的時候都是一起使用的,例如resdual+bn+relu等(當然bn還有其他作用,這隻是其一)。
激活函數還有tanh函數、ReLU函數、ELU函數、PReLU函數等,為什麼提取出來? 解決什麼問題? 上面提到的左飽和、右飽和或者稱為單側抑制,對你了解這麼激活函數有什麼幫助?
展望,接下來更新:
DeepLN之BN;
MachineLN之過拟合;
MachineLN之資料歸一化;
DeepLN之優化(sgd等):
...
感覺這些是在一起的,之後補習傳統機器學習的理論知識 到 實踐;
還有之前提到的;
推薦閱讀:
1. 機器學習-1:MachineLN之三要素
2. 機器學習-2:MachineLN之模型評估
3. 機器學習-3:MachineLN之dl
4. 機器學習-4:DeepLN之CNN解析
5. 機器學習-5:DeepLN之CNN權重更新(筆記)
6. 機器學習-6:DeepLN之CNN源碼
7. 機器學習-7:MachineLN之激活函數
8. 機器學習-8:DeepLN之BN
9. 機器學習-9:MachineLN之資料歸一化
10. 機器學習-10:MachineLN之樣本不均衡
11. 機器學習-11:MachineLN之過拟合
12. 機器學習-12:MachineLN之優化算法
13. 機器學習-13:MachineLN之kNN
14. 機器學習-14:MachineLN之kNN源碼
15. 機器學習-15:MachineLN之感覺機
16. 機器學習-16:MachineLN之感覺機源碼
17. 機器學習-17:MachineLN之邏輯回歸
18. 機器學習-18:MachineLN之邏輯回歸源碼