1. 程式人生 > >關於神經網路中隱藏層和神經元的深入理解

關於神經網路中隱藏層和神經元的深入理解

最近複習了一下基礎知識,看到MLP的結構,關於隱藏層和神經元有了新的一些理解。

隱藏層的意義

要說明隱藏層的意義,需要從兩個方面理解,一個是單個隱藏層的意義,一個是多層隱藏層的意義

單個隱藏層的意義

隱藏層的意義就是把輸入資料的特徵,抽象到另一個維度空間,來展現其更抽象化的特徵,這些特徵能更好的進行線性劃分。

舉個栗子,MNIST分類。
輸出圖片經過隱藏層加工, 變成另一種特徵代表 (3個神經元輸出3個特徵), 將這3個特徵可視化出來。就有了下面這張圖, 我們發現中間的隱藏層對於"1"的圖片資料有了清晰的認識,能將"1"的特徵區分開來。
隱藏層內的維度空間

多個隱藏層的意義

多個隱藏層其實是對輸入特徵多層次的抽象,最終的目的就是為了更好的線性劃分不同型別的資料(隱藏層的作用)

怎麼理解這句話呢,舉個有趣的例子,如下圖所示。
在這裡插入圖片描述

我們的輸入特徵是:身高、體重、胸圍、腿長、臉長等等一些外貌特徵,輸出是三個類:帥氣如彭于晏,帥氣如我,路人。
那麼隱藏層H1中,身高體重腿長這些特徵,在H1中表達的特徵就是身材勻稱程度,胸圍,腰圍,臀圍這些可能表達的特徵是身材如何,臉長和其他的一些長表達的特徵就是五官協調程度。
那麼把這些特徵,再輸入到H2中,H2中的神經元可能就是在劃分帥氣程度,身材好壞了,然後根據這些結果,分出了三個類。
很遺憾,帥氣程度略輸彭于晏一籌。

那麼,是不是隱藏層約多就越好呢,可以特徵劃分的更清楚啊?
理論上是這樣的,但實際這樣會帶來兩個問題

  1. 層數越多引數會爆炸式增多
  2. 到了一定層數,再往深了加隱藏層,分類效果的增強會越來越不明顯。上面那個例子,兩層足以劃分人是有多帥,再加幾層是要得到什麼特徵呢?這些特徵對劃分沒有什麼提升了。

神經元的意義

現在終於徹底明白為什麼西瓜書、花書講神經網路之前要講logistic regression了。就是所謂的感知器的意義。

我現在把一個神經元(感知器)的作用理解成為一種線性劃分方式。
一個決策邊界,一個神經元,就是線性劃分,多個神經元,就是多個線性劃分,而多個線性劃分就是不斷在逼近決策邊界。可以把這個過程想象成積分過程。

一個決策邊界就是又多個線性劃分組成的。

那麼如果神經元數量很多很多,這就導致會有很多個線性劃分,決策邊界就越扭曲,基本上就是過擬合了。

換一個角度來說神經元,把它理解為學習到一種東西的物體,如果這種物體越多,學到的東西就越來越像樣本,也就是過擬合。

對於其他深度學習的網路來說,CNN,RNN其實是一個道理,filter層不也是找到更抽象的特徵嗎。LSTM增加forget gate,就不是為了讓神經元不要學得太像而得到的。

so,溫故而知新,可以吹逼矣。