什麼是激活函數在生物學家研究大腦神經元工作機理時,發現如果一個神經元開始工作時,該神經元是一種被激活的狀態,我想著大概就是為什麼神經網路模型中有一個單元叫做激活函數。
那麼什麼是激活函數呢,我們可以從
邏輯回歸模型開始理解它,下圖是一個Logistic回歸分類器:
在上圖中我們發現,Logistic回歸分類器在對所有的輸入做了線性相加(Net ipt function)之後,其結果經過了一個激活函數(Activation function),此時的輸出:
而在Logistic回歸分類器中去除誤差的回傳(Error)和單位階躍函數(Unit step function)之後,其實剩下的東西就是一個神經元。
神經網路是由多個神經元在寬度和深度上鏈接而成的,通俗點理解,
激活函數就是神經網路中每個神經元的輸出后乘起來的那個函數。比如在下圖中:
所有的隱層的神經元(a)和輸出層的神經元(Y)後面其實都會經過一個激活函數,那麼為什麼輸入層(x)沒有呢,因為雖然在神經網路中,輸入層,隱含層和輸出層都用上圖所示的「圓圈」表示,但是輸入層不是神經元!!!
那麼在神經網路中,激活函數(Activation function)一般選擇什麼樣的函數呢:
除此之外,在深層神經網路中,比較常用的是ReLu(Rectified Linear Units)函數,這個我們會在最後一部分介紹它。
激活函數的作用我們繼續說上面的3層的神經網路模型,並用表示第一層權係數(比如表示輸入層x1與隱層a1的權係數);用表示第二層權係數(比如表示隱層a1與輸出層Y1的權係數),那麼如果神經網路模型去掉了激活函數(Activation function),各個神經元的輸出可以表示為:
將其帶入后可以得到Y與x的關係:
最終的輸出:
可以看到,如果沒有激活函數的話,無論我們如何訓練神經網路的參數,得到都將是一個線性的模型,在二維空間下是一條線,在三維空間下是一個平面。而線性模型是有非常大的局限性的,比如下面的問題:
我們永遠不可能用一個線性的模型取區分橙色和藍色的點,而當我們加入激活函數后,用上面的網路結構是可以解決線性不可分問題的。
(注意下圖中的網路與上圖公式推導的網路只是輸入不同而已)所以,最後總結一下:激活函數在神經網路中的功能即通過對加權的輸入進行非線性組合產生非線性決策邊界(non-linear decision boundary)。
深層神經網路中的激活函數最後一個部分,在說明一下深層神經網路中的激活函數,它的作用與淺層網路是相同的—
增加非線性,但是使用的是ReLu(Rectified Linear Units)函數,主要是為了解決Sigmoid函數帶來的梯度消失問題(這個不是本文的重點,我們不詳細說明它)。下面這張圖就是ReLu函數:
可以看到它是一個分段線性函數,對於所有小於等於0的數,f(x)=0;對於所有大於0的數,f(x)=x。這個函數可以作為神經網路的激活函數關在在於,
在多維空間下任何一個曲面都可以分解為多段平面,這個曲面就是最後的決策面,而深層神經網路依靠複雜的網路結果和深度取用多個平面擬合決策面,最後達到滿意的效果。
參考:
《Machine Learning》Tom M.Mitchell
《TensorFlow 實戰Google深度學習框架》
《神經網路中激活函數的作用》
《 通俗理解神經網路之激勵函數(Activation Function)》