神經網路啟用函式=生物轉換器?

夕小瑤發表於2018-07-26

邏輯迴歸到神經網路中,小夕讓神經網路冒了個泡。在《一般化機器學習神經網路中,將神經網路這一火熱的模型強制按回機器學習一般框架裡。在《BP演算法的本質》裡,詳細的闡述了BP演算法的本質與目標。

神經網路啟用函式=生物轉換器?

好啦~這一篇回到簡單、純粹的狀態,我們來一起戳一戳可愛的神經細胞。

學生物的人眼裡的神經細胞:

神經網路啟用函式=生物轉換器?

學數學與機器學習的人眼裡的神經細胞:

神經網路啟用函式=生物轉換器?

看,其實神經元就是一個小小的生命,它會用樹突接收外面世界的多維資訊,然後在它小小的腦袋裡計算一下,來對當前外面的世界作出一個反應,這個反應通過軸突傳遞出去。

看,是不是也很像一個小小的機器學習模型呢?一個將多維的輸入X轉換成輸出訊號y的小模型。神經網路啟用函式=生物轉換器?

那麼,假如我們發現了好幾堆(層)可愛的神經元,並且驚訝的發現它們可以互動資訊,一起完成任務,但是我們並不知道它們之間怎麼連線的。那怎麼辦呢?

我們當然可以給它們兩兩之間分配一條線呀。這個線就代表兩個神經元之間的連線強度,如果兩個神經元之間沒有連線,這根線的值就是0,連線的越緊密,值就越大。

神經網路啟用函式=生物轉換器?

看。

這麼多可愛的神經元一起工作的時候,在數學家眼裡,其實並不複雜:

神經網路啟用函式=生物轉換器?

前一層的神經元的軸突(輸出訊號)與下一層的神經元的樹突(輸入)的訊號傳遞過程,其實就是一個線性對映的過程。

補充:

想一想,《線性代數一》中,小夕是不是已經講啦,對待矩陣,一個非常重要的視角就是“對映”。矩陣,可以表示一個對映函式,準確的說是一個線性對映函式。

看,就像上圖中雖然每個人都知道,b=a*W(矩陣乘法),但是有沒有人想過“線性對映”這一層含義呢?其實呀,下一層的樹突b收到的訊號,就是上一層的軸突a經過W(這個大眾眼裡的矩陣)線性對映而成的。

前一層神經元們的訊號經過線性對映,傳遞到下一層的神經元樹突那裡後,當然下一步就是經過神經元的細胞體啦。

神經網路啟用函式=生物轉換器?

而生物學上的神經元細胞體是幹什麼的呢?當然就是將樹突的訊號轉換成軸突的訊號啦。所以,它是一個生物訊號的轉換器!

而我們知道,多個線性對映疊加之後依然是線性對映。所以哪怕你疊加再多的線性對映,整體的函式依然是個線性函式,這也太雞肋啦。所以細胞體決不能同流合汙,它要完成複雜而神祕的訊號轉換,也就是數學上的非線性對映

而非線性對映的靈活度就一下子無限大了,有無數的非線性函式可以完成這個非線性對映的過程:

比如,Sigmoid函式:神經網路啟用函式=生物轉換器?

神經網路啟用函式=生物轉換器?

 tanh函式:

神經網路啟用函式=生物轉換器?

神經網路啟用函式=生物轉換器?

Hard tanh函式:

神經網路啟用函式=生物轉換器?

神經網路啟用函式=生物轉換器?

Soft sign函式:

神經網路啟用函式=生物轉換器?

神經網路啟用函式=生物轉換器?


ReLU函式:

神經網路啟用函式=生物轉換器?

神經網路啟用函式=生物轉換器?

Leaky ReLU函式:

神經網路啟用函式=生物轉換器?

其中0<k<1。

神經網路啟用函式=生物轉換器?

沒錯,這些單調上升的非線性函式都可以當做神經網路啟用函式,在不同的任務中,總有一個在該任務中表現最好的啟用函式

所以,將視角拉的更遠一些:

神經網路啟用函式=生物轉換器?

神經網路啟用函式=生物轉換器?

那麼有沒有一個通用的最優啟用函式呢?

只能等生物學家把神經元的細胞體研究透徹著再說啦。

所以,啟用函式的選擇,準確的說是構造,目前就是一個黑匣子。所以很難解釋清楚為什麼ReLU函式在影象相關的任務中往往表現的比廣為人知的Sigmoid、tanh更好,恐怕只有你體內的神經元自己知道啦~快想辦法讓它告訴你呀~ 

神經網路啟用函式=生物轉換器?

同樣的道理,為什麼非要選擇單調上升的函式呢?就不能用y=sin(x)這種非單調的嗎?就不能用單調下降的嗎?

答:首先是啟用函式的生物學依據,啟用函式模仿的也是神經細胞的實驗特性——當樹突的輸入足夠強時,就會讓細胞體興奮,從而在軸突輸出一個興奮訊號。而當細胞體對樹突的輸入不感興趣或者它認為不夠強時,就處於抑制態,在軸突輸出的訊號很弱,或者說相當於輸出電路中的低電平。除此之外,就是依靠大量面向任務的選擇經驗+少量感性推理+少量理性推理。也就是說,這個問題並沒有被嚴謹的否決,所以不要輕易說不可以哦。

神經網路啟用函式=生物轉換器?

而具體的什麼函式在什麼領域,什麼任務中表現的好,大家就自己去積累經驗吧。也有很多部落格和論文有講這些經驗性的trick。比如在史丹佛大學的CS224D課程(自然語言處理深度學習)中,就有較為詳細的講解。

下面這個是CS224D的中文筆記(不是我記的),這篇文章裡的啟用函式的公式和模擬圖也是從這裡直接摳出來的。作者筆記裡還有這些啟用函式的導函式等,建議沒時間刷視訊的可以看這個筆記:

http://blog.csdn.net/han_xiaoyang/article/details/51711134

還有一篇文章也比較有營養:

http://www.cnblogs.com/pinard/p/6437495.html

還有一篇論文,數學差的就要慎重些了:

Mhaskar H N, Micchelli C A. How to choose an activationfunction[J]. Advances in Neural Information Processing Systems, 1994: 319-319.

相關文章