ReLU啟用函式雜談

2021-10-03 00:02:29 字數 1023 閱讀 4108

在實現多層感知機**實現中使用了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,在實際操...