在實現多層感知機**實現中使用了relu啟用函式:
r el
u(x)
=max
(x,0
)relu(x)=max(x,0)
relu(x
)=ma
x(x,
0)形狀大概是這樣的
這裡根據幾個問題來進行回答解釋
為什麼要使用啟用函式呢?
簡單來說啟用函式的作用就是將仿射函式進行非線性化,可以擬合出更多的情況。更詳細的解答可以參考知乎啟用函式的解釋
relu函式的梯度問題
首先談一下sigimoid函式的梯度,通常不選用它是因為sigmoid函式可能有梯度消失的情況,原因可以看它的梯度函式圖
可以看到藍色的線是sigmoid函式影象,橘色的線是它的梯度圖。當輸入值特別大或者特別小的時候,sigmoid函式梯度趨近於0,因此在反向傳播時梯度一乘就沒有了。還有乙個原因就是指數函式的梯度計算比較複雜,不利於快速計算。
而relu函式只有一半的梯度消失問題,因為當x
>
0x>0
x>
0的時候它的梯度值恒為1,因此在反向傳播的過程中,不會因為導數連乘,而使得梯度特別小,以至於引數無法更新。但是當x
<
0x<0
x<
0的時候,負的梯度被置零,所以這個神經元有可能再也不會被任何資料啟用,也就是『殺死』了神經元。但是這個可以通過leaky relu(改進演算法)進行解決:
f (x
)=ma
x(ax
,x)f(x)=max(ax,x)
f(x)=m
ax(a
x,x)
給負數的情況傳乙個非常小的梯度,讓他擁有斜率,因此神經元就不會被殺死
ReLU啟用函式
在深度神經網路中,通常使用一種叫修正線性單元 rectified linear unit,relu 作為神經元的啟用函式。relu起源於神經科學的研究 2001年,dayan abott從生物學角度模擬出了腦神經元接受訊號更精確的啟用模型,如下圖 其中橫軸是時間 ms 縱軸是神經元的放電速率 fir...
ReLU啟用函式,Maxout
在使用sig moid sigmoid sigmoi d啟用函式進行梯度下降調參時,往往會出現梯度消失的問題,即無法找到收斂點。神經網路主要的訓練方法是bp演算法,bp演算法的基礎是導數的鏈式法則,也就是多個導數的乘積。而sig moid sigmoid sigmoi d的導數最大為0.25,且大部...
啟用函式Relu 及 leakyRelu
relu 及 leakyrelu是深度學習中常用的啟用函式,看了幾篇部落格後,做乙個小的總結。1.relu 數學表示式 a max 0,z 函式影象為 優點 由上圖可以看出,relu得到的sgd的收斂速度較快 缺點 訓練的時候很容易 die 了,對於小於0的值,這個神經元的梯度永遠都會是0,在實際操...