全連線層和啟用層

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

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是用的最廣泛的一種啟用函式。