ReLU啟用函式,Maxout

2021-09-25 16:21:54 字數 2552 閱讀 2660

在使用sig

moid

sigmoid

sigmoi

d啟用函式進行梯度下降調參時,往往會出現梯度消失的問題,即無法找到收斂點。

神經網路主要的訓練方法是bp演算法,bp演算法的基礎是導數的鏈式法則,也就是多個導數的乘積。而sig

moid

sigmoid

sigmoi

d的導數最大為0.25,且大部分數值都被推向兩側飽和區域,這就導致大部分數值經過sig

moid

sigmoid

sigmoi

d啟用函式之後,其導數都非常小,多個小於等於0.25的數值相乘,其運算結果很小。隨著神經網路層數的加深,梯度後向傳播到淺層網路時,基本無法引起引數的擾動,也就是沒有將loss的資訊傳遞到淺層網路,這樣網路就無法訓練學習了。這就是所謂的梯度消失。

更新w k+

1=wk

−ηgk

w^=w^k-\eta g^k

wk+1=w

k−ηg

k後經過神經元,資料會通過sig

moid

\bm

sigmoi

d函式衰減,因為sig

moid

sigmoid

sigmoi

d函式會將比較大的值對映到(0,1)區間內。

靠近輸入層的的引數,每通過乙個隱層,資料就會衰減一次,資料變化越來越小,所以會造成在輸入層附近的梯度較小。

可以使用另一種啟用函式relu函式來改變上面的情況。σ(z

則輸出結果可以對應下圖中綠色的線:

假設輸出層有兩個神經元,則選取其中函式z1.

z2z_1.z_2

z1​.z2

​中函式值最大的傳給啟用函式。

注:此時應注意比較不同取值範圍內函式值的大小。

舉例:如圖,假設第二層中z

2z_2

z2​的引數為0,0

0,00,

0,則z2=

0(在任

意區間內

),z_2=0(在任意區間內),

z2​=0(

在任意區

間內),

在(− ∞,

b-\infty,b

−∞,b

)的範圍內z

1z_1z1

​​,所以此時取z

2z_2

z2​,在(b,∞

b,\infty

b,∞)上取z

一般情況:

綠線表示根據資料自學習的啟用函式。(因為引數w,b

w,bw,

b是自己訓練得到的,所以這個神經網路可以自己的資料決定啟用函式。).

假設分組一組有兩個神經元,影象形式可以如下:

如果是三個神經元一組:

訓練:由於根據上面可以看出,我們的啟用函式是分段函式,可能不具有微分值。那麼應該怎麼做呢。(即使沒有辦法微分,可以找到引數的變化對loss函式的變化,也可以使用梯度下降。)

假設乙個神經網路,下圖中紅框內表示兩個中的最大值。

我們可以將較小值的神經元隱去(如下圖),進行訓練,這樣就是乙個線性函式了,那麼去掉的神經元是不是就沒有意義呢?不是的,因為這只是乙個資料的結果,在訓練集中有不同的資料,總會有資料使得這個神經元比另外的乙個大,就可以訓練該神經元上的引數了。

ReLU啟用函式

在深度神經網路中,通常使用一種叫修正線性單元 rectified linear unit,relu 作為神經元的啟用函式。relu起源於神經科學的研究 2001年,dayan abott從生物學角度模擬出了腦神經元接受訊號更精確的啟用模型,如下圖 其中橫軸是時間 ms 縱軸是神經元的放電速率 fir...

ReLU啟用函式雜談

在實現多層感知機 實現中使用了relu啟用函式 r el u x max x,0 relu x max x,0 relu x ma x x,0 形狀大概是這樣的 這裡根據幾個問題來進行回答解釋 為什麼要使用啟用函式呢?簡單來說啟用函式的作用就是將仿射函式進行非線性化,可以擬合出更多的情況。更詳細的解...

啟用函式Relu 及 leakyRelu

relu 及 leakyrelu是深度學習中常用的啟用函式,看了幾篇部落格後,做乙個小的總結。1.relu 數學表示式 a max 0,z 函式影象為 優點 由上圖可以看出,relu得到的sgd的收斂速度較快 缺點 訓練的時候很容易 die 了,對於小於0的值,這個神經元的梯度永遠都會是0,在實際操...