天天看點

了解層面(maxout networks)(ReLU激活函數)

1.maxout networks

研究maxout的動機是在研究用DehazeNet去霧時,發現其中有一層網絡是它,是以想把它解釋清楚。

以下是二郎的了解

maxout=隐含層+激活函數

隐含層

了解層面(maxout networks)(ReLU激活函數)

激活函數

了解層面(maxout networks)(ReLU激活函數)

好了,咱們可以分開讨論了——

隐含層,直覺的感覺是有把很多直線方程寫為矩陣形式,這隻是一個表達的不同,實質還是很多直接方程。

1.一堆直線方程放在一起

了解層面(maxout networks)(ReLU激活函數)

2.同一個輸入節點:x相同

了解層面(maxout networks)(ReLU激活函數)
了解層面(maxout networks)(ReLU激活函數)

3.同一個輸出節點:幾個z的運算

同一輸出節點的結果,其最簡單的形式為是多個神經元輸出結果的加和

輸出=z1+z2+z3+……zn

了解層面(maxout networks)(ReLU激活函數)
了解層面(maxout networks)(ReLU激活函數)

4.比直接加和複雜一點:激活函數

maxout 的激活函數為

了解層面(maxout networks)(ReLU激活函數)

找到最大的z作為輸出,在圖中會發現

了解層面(maxout networks)(ReLU激活函數)

随着x的變化,最大的z落在向下凸的折線上,如果我們的線再密一下(隐含層神經元再多一些),折線就可以近似為曲線。

maxout networks可以實作曲線的拟合,在特征提取中有較好的應用

類似激活函數,但不是激活函數

了解層面(maxout networks)(ReLU激活函數)

多個神經元的輸入并未進行加和(藍色圓形),再到激活函數,而是直接在藍色圓形的位置做了取最大值的處理。

這裡也可以看出,激活函數是在資料加和後才起的作用,下圖能很好地說明這一點。

了解層面(maxout networks)(ReLU激活函數)

2.ReLU激活函數

既然講到了激活函數,就捎帶着講一下ReLU,這個激活函數挺有意思

最初未改進的ReLU對于輸入的值小于0的全為0,輸入值大于0的正常輸出

換句話說:它能幹掉一部分神經元,不讓他們參加到運算中。

這裡可能會問了,訓練的第一次被幹掉了,第二次沒被幹掉,第三次又幹掉了……這個有啥用?

二郎小課堂開課了(有異議可以留言):

深度學習是一個機率統計問題

對于所有輸入的特征來說,總有那麼一些輸入對我們的目的沒有任何貢獻,他們也就很榮幸地貢獻值小于了0,或者接近于0,這些有時候還不在少數,他們的存在大大增加了我們的計算成本。雖然訓練時不會每次這些貢獻小的都會被ReLU剔除,但是它們被剔除的機率較大,是以整體的網絡也逐漸向着這些特征直接被剔除的情況靠攏(w和b不斷變更),讓這些特征更容易出現加和小于等于0的情況。

繼續閱讀