【DL-CV】反向傳播,(隨機)梯度降低<前篇---後篇>【DL-CV】神經網絡的補充segmentfault
在介紹線性分類器的時候,提到了激活函數,還提到線性分類器的輸出要通過激活函數才能做爲下一層網絡的輸入。爲何呢?本文將對這一問題進行解疑並介紹多種多種激活函數。網絡
假如神經網絡只由多個線性分類組器合而成,那不管怎樣組合,他們對數據的操做永遠都是線性變換而已,複雜度有限,只能實現線性分類而不能實現非線性分類,但現實中的數據每每不是線性可分的。爲了解決這個問題,就要給神經網絡引入非線性因素,提升神經網絡模型的表達能力(學習更復雜的映射)。激活函數就是用來引入這個非線性因素的,下面介紹幾種常見的激活函數及其優缺點(正負號表示)。函數
其數學公式及其圖像以下
學習
它把輸入壓縮到(0,1)區間內,有兩端飽和的特性,對於很大的正數它輸出趨近與1,對於絕對值很小的負數它輸出趨近於0。
這個函數曾經很是流行,可是因爲其缺點(主要是兩邊飽和)飽受詬病,如今沒什麼人用了spa
其數學公式及其圖像以下(雙曲正切)
.net
形狀和sigmoid很像,也是兩端飽和,不一樣的是它把輸入壓縮到(-1,1)區間內。blog
比sigmoid好了一點,沒有非零中心的問題圖片
其數學公式及其圖像以下
ip
就是個取最大值得函數,當輸入爲負數,輸出爲0;當輸入爲正數,輸出仍是這個數get
雖然有「dead ReLU」的狀況發生,但這並不阻礙它成爲優秀的激活函數,實際應用中其表現不錯,是很是經常使用的激活函數
其數學公式及其圖像以下
ReLU的變種,負區間再也不是0,而是給它一個很小的斜率(上圖是0.01,也能夠是其餘常數)
關於其效果沒有清晰的定論,有的實驗表現好,有些則很差
其實還能夠把那個斜率看成能夠反向傳播和學習的參數α,而後就變成了Parametric ReLU(PReLU)激活函數
$$f(x)=max(\alpha x,x)$$
其數學公式及其圖像以下
全名指數線性單元Exponential Linear Units,α是一個可調整的參數,它控制着ELU負值部分在什麼時候飽和
這個函數有點奇,我以爲它直接改變了原有MLP網絡的結構,以致於造成了maxout網絡,其自己就集成了激活函數的功能。
$$f(x)=max_{j\in [1,k]}z_{j}$$
k是需人爲設定的參數,k=1,網絡就類至關於普通的MLP網絡;k>1,就變身成maxout網絡了。這個函數的原理以下圖,筆者文字表達欠佳,需做圖才能展現出來。若是想了解更多可上網搜「maxout激活函數」
在同一個模型中,激活函數不會混搭使用,選定一個就用一個。通常最好的經驗法則是使用ReLU函數,可是要謹慎的調節學習率。像LReLU,PReLU,ELU,Maxout這些函數則實驗性強一點(實用性弱一點),但也能夠試下。tanh和sigmoid就em....,算了吧。
除了這裏介紹的6個外,還有一些其餘的激活函數(若有着喪心病狂證實的SeLU),感興趣的能夠去查一下