全連線層和啟用層

2022-06-23 15:27:12 字數 2207 閱讀 4534

1. 全連線層

經過前面若干次卷積+激勵+池化後,終於來到了輸出層,模型會將學到的乙個高質量的特徵全連線層。其實在全連線層之前,如果神經元數目過大,學習能力強,有可能出現過擬合。因此,可以引入dropout操作,來隨機刪除神經網路中的部分神經元,來解決此問題。還可以進行區域性歸一化、資料增強等操作,來增加魯棒性

當來到了全連線層之後,可以理解為乙個簡單的多分類神經網路(如:bp神經網路),通過softmax函式得到最終的輸出。整個模型訓練完畢。

兩層之間所有神經元都有權重連線,通常全連線層在卷積神經網路尾部。也就是跟傳統的神經網路神經元的連線方式是一樣的: 

全連線層(fully connected layers,fc)在整個卷積神經網路中起到「分類器」的作用。如果說卷積層、池化層和啟用函式層等操作是將原始資料對映到隱層特徵空間的話,全連線層則起到將學到的「分布式特徵表示」對映到樣本標記空間的作用

全連線的核心操作就是矩陣向量乘積

y=w*x

本質就是由乙個特徵空間線性變換到另乙個特徵空間。目標空間的任一維——也就是隱層的乙個 cell——都認為會受到源空間的每一維的影響。不考慮嚴謹,可以說,目標向量是源向量的加權和。

2.啟用函式

所謂啟用函式(activation function),就是在人工神經網路的神經元上執行的函式,負責將神經元的輸入對映到輸出端

啟用函式(activation functions)對於人工神經網路 [1]  模型去學習、理解非常複雜和非線性的函式來說具有十分重要的作用。它們將非線性特性引入到我們的網路中。如圖1,在神經元中,輸入的 inputs 通過加權,求和後,還被作用了乙個函式,這個函式就是啟用函式。引入啟用函式是為了增加神經網路模型的非線性。沒有啟用函式的每層都相當於矩陣相乘。就算你疊加了若干層之後,無非還是個矩陣相乘罷了。

如果不用啟用函式,每一層輸出都是上層輸入的線性函式,無論神經網路有多少層,輸出都是輸入的線性組合,這種情況就是最原始的感知機(perceptron)。

如果使用的話,啟用函式給神經元引入了非線性因素使得神經網路可以任意逼近任何非線性函式,這樣神經網路就可以應用到眾多的非線性模型中。 

2.1 常用的啟用函式

2.1.1 sigmoid函式

sigmoid函式是乙個在生物學中常見的s型函式,也稱為s型生長曲線。在資訊科學中,由於其單增以及反函式單增等性質,sigmoid函式常被用作神經網路的閾值函式,將變數對映到0,1之間 [2]  。公式如下

函式影象如下

2.1.2 tanh函式

tanh是雙曲函式中的乙個,tanh()為雙曲正切。在數學中,雙曲正切「tanh」是由基本雙曲函式雙曲正弦和雙曲余弦推導而來。公式如下

函式影象如下

2.1.3 relu函式

relu啟用函式(the rectified linear unit),用於隱層神經元輸出。公式如下

函式影象如下 

這裡要著重提一下relu啟用函式,它與其他啟用函式最大的不同在於它是線性的,因而不存在梯度**的問題,在多層網路結構下梯度會線性傳遞。

在深度學習中relu是用的最廣泛的一種啟用函式。

全連線層後面加bn層 池化層和全連線層應用

實際的卷積網路很少僅通過卷積層來構建。它們通常還有其他型別的層。最簡單的是全連線層。這是一種普通的卷積網路層,其中前一層的所有輸出被連線到下一層上的所有節點。通常,這些層位於網路末端。您會在卷積網路中看到的另一種重要的層是池化層。池化層具有多種形式,但最常用的是最大池化,其中輸入矩陣被拆分為相同大小...

全連線層的作用 全連線層實現

將圖1 堆疊可以得到含有多個隱藏層的全連線層,如圖2所示。因為當前層的輸入要與前一層的輸出相匹配 所以,要保證當前層的神經元個數與前一層的輸出結點數相同。即,圖二中隱藏層1有256個神經元,隱藏層2有128個神經元,則隱藏層1中每個神經元的輸出節點數為12。下面,以圖2為例,用不同的方式實現全連線層...

全連線層後面加bn層 卷積層和BN層融合

常規的神經網路連線結構如下 當網路訓練完成,在推導的時候為了加速運算,通常將卷積層和 batch norm 層融合,原理如下 begin y w cdot x b y gamma cdot left frac e x right beta gamma cdot left frac right bet...