ReLU
Relu(rectified liner unit) 線性修正單元
在深度神經網絡中,通常使用一種叫**修正線性單元(Rectified linear unit,ReLU)**作爲神經元的激活函數。ReLU起源於神經科學的研究:2001年,Dayan、Abott從生物學角度模擬出了腦神經元接受信號更精確的激活模型,如下圖:
其中橫軸是時間(ms),縱軸是神經元的放電速率(Firing Rate)。同年,Attwell等神經科學家通過研究大腦的能量消耗過程,推測神經元的工作方式具有稀疏性和分佈性;2003年Lennie等神經科學家估測大腦同時被激活的神經元只有1~4%,這進一步表明了神經元的工作稀疏性。而對於ReLU函數而言,類似表現是如何體現的?其相比於其他線性函數(如purlin)和非線性函數(如sigmoid、雙曲正切)又有何優勢?
簡單之美
首先,我們來看一下ReLU激活函數的形式,如下圖:
從上圖不難看出,ReLU函數其實是分段線性函數,把所有的負值都變爲
0,而正值不變,這種操作被成爲單側抑制。可別小看這個簡單的操作,正因爲有
了這單側抑制,才使得神經網絡中的神經元也具有了稀疏激活性。尤其體現在深
度神經網絡模型(如CNN)中,
&&&當模型增加N層之後,理論上ReLU神經元的激活率將降低2的N次方倍。這裏
或許有童鞋會問:ReLU的函數圖像爲什麼一定要長這樣?反過來,或者朝下延伸
行不行?其實還不一定要長這樣。只要能起到單側抑制的作用,
無論是鏡面翻轉還是180度翻轉,最終神經元的輸出也只是相當於加上了一個常數
項係數,並不影響模型的訓練結果。之所以這樣定,或許是爲了契合生物學角
度,便於我們理解吧。
那麼問題來了:這種稀疏性有何作用?換句話說,我們爲什麼需要讓神經元稀疏?不妨舉栗子來說明。當看名偵探柯南的時候,我們可以根據故事情節進行思考和推理,這時用到的是我們的大腦左半球;而當看蒙面唱將時,我們可以跟着歌手一起哼唱,這時用到的則是我們的右半球。左半球側重理性思維,而右半球側重感性思維。也就是說,當我們在進行運算或者欣賞時,都會有一部分神經元處於激活或是抑制狀態,可以說是各司其職。再比如,生病了去醫院看病,檢查報告裏面上百項指標,但跟病情相關的通常只有那麼幾個。
與之類似,當訓練一個深度分類模型的時候,和目標相關的特徵往往也就那麼幾個,因此通過ReLU實現稀疏後的模型能夠更好地挖掘相關特徵,擬合訓練數據。
ReLU VS sigmoid 、 線性函數
對於線性函數而言,ReLU的表達能力更強,尤其體現在深度網絡中;
對於非線性函數而言,ReLU由於非負區間的梯度爲常數,因此不存在梯度消失問題(Vanishing Gradient Problem),使得模型的收斂速度維持在一個穩定狀態。這裏稍微描述一下什麼是梯度消失問題:&&&當梯度小於
1時,預測值與真實值之間的誤差每傳播一層會衰減一次,如果在深層模型中使用sigmoid作爲激活函數,這種現
象尤爲明顯,將導致模型收斂停滯不前。
sigmiod 函數
把我們計算的結果當成自變量放進去,讓它的值域變爲0~1之間
ReLU與softplus函數與前圖中的傳統sigmoid系激活函數相比,主要變化有三點:
①單側抑制 ②相對寬闊的興奮邊界 ③稀疏激活性(重點,可以看到紅框裏前端狀態完全沒有激活
@@@my thinking 不同的輸入激活不同的區域,maybe就像我們大腦裏不同的神經元一樣專業分工,各司其職
ReLU 函數使不同的輸入激活不同的區域,即稀疏激活性,總不能有個啥輸入,全部細胞都一起來幹活吧,雜七雜八的,容易把活幹砸了。@@@