您當前的位置:首頁 > 繪畫

神經元,簡單神經網路和深度神經網路

作者:由 Stellaria橙子葉 發表于 繪畫時間:2019-07-03

提到神經元,我們首先想到的是生物中的神經元:

神經元,簡單神經網路和深度神經網路

在1943年,心理學家和Warren和數學家Walter參考了這個結構,發明了數學神經元的模型,這個模型由一個計算單位組成,可以接受多個輸入,經過處理後可以得出一個輸出。

像這樣一個簡單的結構,似乎做不了什麼有用的事情,但是當億萬個這樣的結構組合在一起,卻能夠完成很多很複雜的事情。當許多個這樣的神經元組合在一起,其中一部分神經元的輸入是另外一些神經元的輸出,就會組成一個簡單的單層神經網路。

我們把這個簡單的單層神經網路中的神經元都看作一個整體,這個整體有輸入和輸出,我們把接受輸入的叫“資料層”,輸出結果的叫做輸出層,其他中間的神經元組成“神經層”(“組成層”)。往往輸入層和輸出層是固定的,而中間層的層數和節點數是可以變化的。

下圖是一個最普通的全連線方式的神經網路(全連線是指每一層節點的輸出結果會發送給下一層的所有節點),後面層中節點的值與前面一層中所有的節點都有聯絡,但也會存在貢獻值大小的不同,所以,在計算時每個“邊”加上不同的權值來對影響進行控制:

神經元,簡單神經網路和深度神經網路

神經元,簡單神經網路和深度神經網路

其中Wij中的i指的是本層第幾個,j指的是輸入來自上一層第幾個

有時候為了增強表現力,還會加上一個偏置項:

神經元,簡單神經網路和深度神經網路

將式子全部列出,得到

神經元,簡單神經網路和深度神經網路

但即便這樣,前一層和後一層之間也仍然是比較簡單的線性關係,要解決這個問題,我們引進一個叫做啟用函式的概念,對於前面計算得到的結果進行一個非線性計算,這樣可以得到更好的表現力,常見的啟用函式有sigmoid,tanh,relu以及這幾種函式的變式:

神經元,簡單神經網路和深度神經網路

將啟用函式加入到上面的式子中:

神經元,簡單神經網路和深度神經網路

將每一個節點的計算值都整合在一起以矩陣運算的方式寫出來就可以得到:

神經元,簡單神經網路和深度神經網路

通常我們認為神經網路中的層是對資料的非線性對映,例如y=f(Wx+B)中,Wx+B實現了對輸入資料的範圍變換,空間操作和平移操作,而啟用函式完成了對輸入資料原始空間的扭曲。但是對於只有一層的簡單神經網路能表現的效果是比較差的,很多複雜的任務需要高度的非線性的分介面,我們就需要引入深度更深的神經網路,我們將層數增加,節點增加,權值引數就可以有很多很多,整個網路的模擬能力和表達能力也會隨之變強了。例如:

神經元,簡單神經網路和深度神經網路

對於這種多層的全連線神經網路,計算式子如下:

神經元,簡單神經網路和深度神經網路

神經元,簡單神經網路和深度神經網路

像這樣的神經網路,如果我們把每層的公式都展開,就會得到一個巨大的公式,整個網路其實就是向量到向量的運算,而計算結果很大程度上取決於神經元連線的權重w和偏置項b的值,而這兩個值會在我們訓練過程就是不斷調整網路中w和b的值,這樣會使得整個網路越來越偏向於表現出我們想要的行為。