神經網絡的每一層都是干嘛的?這才是神經網絡結構的核心
組成一個神經網絡從技術上來說主要有以下幾個部分:
- 數據集
- 神經網絡結構
- 損失函數
- 優化函數
- 反向傳播
而不同神經網絡模型之間最主要的區別就是神經網絡結構的異同,當然最相似的地方也是神經網絡結構。
原因就在于神經網絡結構是由多個神經網絡層所組成的;而使用不同的層就實現了不同功能的神經網絡模型。
神經網絡的層
一個神經網絡是由多種神經網絡層所組成的,而每個神經網絡層實現不同的功能;然后由此組成神經網絡模型。
拋開具體的神經網絡結構來說,我們大概聽說過一些神經網絡層;比如,輸入層,輸出層,全連接層,卷積層,激活層,池化層等等。
當然,有些網絡層只針對特定的神經網絡結構;比如卷積層就只針對卷積神經網絡;而全連接層基本上在所有神經網絡結構中都扮演著重要角色,全連接層的作用就是將上一層的所有神經元與當前層所有神經元進行連接,進行線性變換和非線性激活。
比如,在分類任務中,最后一層全連接層通常輸出類別的概率分布。
在眾多的網絡層中,輸入層與輸出層屬于比較特殊的層;因為其需要與外界環境進行交互;輸入層需要接受外界數據的輸入,而輸出層需要輸出數據到外界環境,因此會對數據格式有特定的要求。
還有一點比較特殊的就是,輸入層不會對數據做任何處理;它的主要任務就是接受數據輸入,并傳遞到下一層;而輸出層一般是網絡結構中的最后一層作為輸出層。
從本質上來說,神經網絡模型就是一個復雜的數學函數;因此,每個神經網絡層的作用就是進行數學計算。
而以具體的神經網絡結構來說,如Transformer神經網絡架構;主要由編碼器和解碼器組成,而每個編碼器和解碼器都是由多個神經網絡層所組成。
比如從Transformer的經典架構圖中可以看到,一個編碼器器是由一個多頭注意力層,兩個殘差連接歸一化層和一個前饋神經網絡組成;而解碼器比編碼器多了一個多頭注意力層。
其它神經網絡層還有歸一化層(normalization layer),如Transformer中的編碼器和解碼器都有歸一化層的存在;其它還有Dropout層等,為了防止過擬合現象,會隨機丟棄一部分神經元。
因此,我們在學習神經網絡技術的過程中,不要一上來就去研究那些復雜的神經網絡架構;而應該從最簡單的神經網絡結構開始,去弄明白每個神經網絡層都具有哪些功能,以及其每個層的作用是什么;等把這些問題給弄明白了,那么自然就知道怎么去實現一個能解決特定問題的神經網絡模型了。