深度學習筆記六:常見啟用函式總結
一.啟用函式概覽
基本上,入門深度學習的第一件事情就是了解”神經元”的構造,啟用函式算是最基本的一個”部件”了吧.那啟用函式到底有什麼用呢?為什麼需要啟用函式?啟用函式的定義是什麼呢?
下面這篇論文提供了啟用函式的定義以及常見的”飽和”的定義,以及對於啟用函式的一些思考.大家可以參考一下.
Noisy Activation Functions
引用這篇論文的定義:啟用函式就是對映,且函式幾乎處處可導.
那為什麼需要啟用函式呢?一般認為,啟用函式的作用是給神經網路加入非線性的因素.啟用函式一般都是非線性函式,要是沒有了啟用函式,那麼神經網路難以對於生活中常見的非線性的資料建模.所以,神經網路中啟用函式是不可缺少的.
二.常見的啟用函式
這裡僅僅列出經常見到的,常用的啟用函式,更多的新的啟用函式型別可以跟蹤最新的paper,
這裡的啟用函式的所有程式碼及繪圖可在我的GitGub找到:
MachineLearningCode/NeuralNet/ActivationFunction/
好了,開始正式總結了.
Ⅰ.sigmoid
老朋友了,但是還是要介紹一下,sigmod算是”曾經”使用最廣的啟用函數了,簡單,良好的非線性對映,但是也有致命的問題,就是梯度消失.所以現代的神經網路架構很少用他了.
Ⅱ.tanh
Ⅲ.ReLU
修正線性單元(Rectified linear unit)
也常常表示為
線性修正單元應當是現在用的最廣的啟用函數了,要是你不知道用什麼啟用函式,就用ReLU先試一下吧.
Ⅳ.LReLU,PReLU,RReLU
這三個都是對於ReLU的改進,三個的函式的寫法可以近似的認為是一樣的.細節上有一些差別.
其中a可以看做是斜率,也就是說,這個啟用函式多引進了一個引數.
對於LReLU來說,a是固定的,你可以通過各種驗證方式選出一個合適的a值.
PReLU是對於LReLU的改進,可以自適應的學習引數而不是固定的,原論文中建議初始化為0.25.
RReLU的a是一個給定範圍內的隨機變數,隨機選擇的,在一定程度上可以起到正則化的作用.
給出一張總結的圖
Ⅴ.ELU
Exponential Linear Units的縮寫,函式形式為
其中a>0.
右側的線性部分能夠緩解梯度消失,左側的軟飽和能夠對於輸入變化魯棒.而且收斂速度更快.
Ⅵ.softplus
Ⅶ.softsign