一文詳解神經網絡與激活函數的基本原理

©PaperWeekly 原創 · 作者|王東偉

單位|致趣百川

研究方向|深度學習

本文介紹神經網絡(Neural Network)及激活函數(Activation Function)的基本原理。

考慮以下分類問題:

▲ 圖1

顯然,該分類問題具有非線性的決策邊界。如果不增加特徵,採用線性核的 SVM(以下簡稱線性 SVM)和邏輯迴歸都無法擬合,因爲它們只能得到形如 的線性邊界。

一個可行的辦法是增加高次方項作爲特徵輸入,比如以 作爲線性 SVM 或邏輯迴歸輸入,可以擬合形如 的決策邊界(實際上它可以擬合圓或橢圓),對於圖 1 所示的例子這可能是不錯的模型。

然而,在實際案例中我們通常都無法猜到決策邊界的“形狀”,一是因爲樣本的特徵數量很大導致無法可視化,二是其可能的特徵組合很多。

對於上述非線性模型擬合的問題,我們之前介紹了採用核函數的 SVM,本文將介紹更通用的方法——神經網絡。

考慮以下矩陣運算:

即:

可以看到   的每個元素都是   的線性變換。一般地,對於權重矩陣  、輸入向量  、偏置向量  ,可以得到 x 的線性變換  。

這裏我們用   表示 k 行 n 列的矩陣, 表示 n 維向量。由於一些傳統的原因,當我們說 n 維向量,一般指 n 維列向量,即 n 行 1 列的矩陣。

我們可以對 x 作多次線性變換得到最終的輸出 y,如:

其中,我們用上標來區分不同變換的參數。

用圖形表示爲(假設向量 的維數分別是 2,3,2,1)。

▲ 圖2

上述連續變換我們稱之爲 3 層神經網絡模型,它有 2 個隱藏層(hidden layer)、1 個輸出層(output layer),並且輸入 x 有兩個特徵,注意輸入層不計入層數。一般地,如果輸入 x 經過 L 次連續變換得到輸出 y,那麼該變換對應的神經網絡模型有 L 層,並且具有 L-1 個隱藏層。

如圖 1,隱藏層 1 有 3 個神經元(注意不包括偏置項),其中 , 可以視爲關於 x 的函數,我們也稱之爲神經元(neuron)或單元(unit),它接收上一層發出的信號 x,進行運算後將結果信號傳遞到下一層與其連接的神經元。如果某一層的任意神經元都分別連接到上一層的所有神經元,則該層稱爲全連接層(full connected layer,FC)。

作爲個人的建議,你可以把一個層理解爲一次變換(或映射),其輸出將作爲下一層(如果有的話)的輸入。事實上,關於層的定義,我不認爲我完全清楚,但是我通常會用矩陣運算或函數來看待神經網絡的問題,所以如果你理解了原理,這些名詞其實不重要。

關於神經網絡的同義名詞。由於部分人不喜歡神經網絡與人腦機制的類比,所以他們更傾向於將神經元稱爲單元,此外,神經網絡也被稱爲多層感知機(multilayer perceptron)。說實話我也不喜歡,但是爲了儘可能減少信息差,本文將採用使用率更高的名詞。

現在,我們來分析如何用神經網絡模型解決本文開篇的非線性分類問題。

仔細分析可以發現,x 經過多次線性變換的結果仍然是關於 x 的線性變換,顯然,爲了擬合非線性的模型我們需要加一些“非線性的運算”。具體的操作如下:

其中,????(·) 是對矩陣或向量的點操作(elementwise),即:

???? 稱爲激活函數(activation function),activation 一詞來源於神經科學,稍後我們將進一步探討。考慮以下激活函數:

對於只有一個隱藏層的神經網絡模型,以 Sigmoid 函數爲激活函數,即:

假設隱藏層有 N 個神經元且輸出 y 爲實數,則 y 可以表示爲如下形式:

可以證明 ????(????) 是一個通用近似器(universal approximator),能夠近似任何函數。

某種意義上,可以認爲神經網絡自動進行了特徵組合,我們需要做的是找到合適的模型架構,並且通過優化算法得到擬合數據樣本的模型參數。

對於本文開篇的分類問題,我們只需要一個兩層的神經網絡模型,即有一個隱藏層和一個輸出層,隱藏層單元數量一般可以取輸入特徵維數 n 的倍數,比如 2n。模型可以用矩陣運算表示:

其中:

你可以檢驗上述運算是否符合矩陣乘法規則。

關於隱藏層單元數量。通常隱藏層單元數量越多越好,一個直覺的理解是,如果我們把待擬合的目標函數看成一個具有無窮項及任意係數的多項式函數,更多的隱藏層單元意味着更多的獨立參數,它將有更強的擬合能力,但是需要更大的計算量,當然擬合能力強也意味着更容易過擬合,因此我們還會在誤差函數中加入正則化項,後續文章將深入探討。

此外,隱藏層單元數量一般不能小於輸入特徵維數,特別是對於當你的模型使用了 ReLU 這樣的激活函數時,它將有可能無法擬合目標函數。

注意到我們用 Sigmoid 函數將模型輸出 y 映射到(0,1)區間,但這裏的 Sigmoid 通常不認爲是激活函數,僅僅作爲分類問題的歸一化作用。 表示第 i 個訓練樣本,M(x) 表示模型的輸出,則其誤差函數(用小寫 θ 表示所有模型參數)。

接下來我們可以用梯度下降(將在下一篇文章探討)得到最小化誤差的模型參數 ,於是,對於給定的測試樣本 ,我們給出的預測是:

對於非線性的迴歸問題,我們模型可以是:

此時誤差函數應該用最小平方誤差(mean squared error):

總結一下,神經網絡算法的基本步驟:

1) 設計模型架構(提出假設)

2) 設定誤差函數

3) 最小化誤差(求極值點)

關於模型架構。雖然具有一個隱藏層的神經網絡已經可以模擬大部分函數,但是實踐證明深度神經網絡(即有更多的隱藏層)在圖像識別和自然語言處理等任務中具有更優的表現,因此有各類複雜的模型被設計出來,並在相應任務中取得了很好的效果。

一些典型的模型架構,如 CNN(常用於圖像類任務),RNN(常用於序列類任務),Autoencoders(常用於特徵學習),GAN(常用於生成類任務)。

關於最小化誤差。在實際任務中,誤差函數通常無法得到解析解,因此我們一般採用梯度下降這樣的迭代算法以期得到近似值,但這裏面需要考慮各類“函數形狀”所帶來的問題,我們將在後續文章介紹這些問題及其解決方案。

激活函數

▲ 圖3.1 Sigmoid

▲ 圖3.2 Tanh

Sigmoid 函數。最古老的激活函數,表達式 ,據說選中它的原因是其函數特徵很像生物學中的“全或無定律”(all or none law)——神經元對於超過閾值的刺激強度以最大的脈衝振幅作出反應,而對於低於閾值的刺激不作反應。

如圖 3.1,Sigmoid 函數在x很大時趨近於 1 而在 x 很小時趨近於 0, 然而,Sigmoid 函數的梯度也在兩端快速趨近於零,這將有可能導致梯度消失(這是後向傳播算法和計算機精度帶來的問題,我們將在後續文章探討),進一步導致參數無法更新(可以說模型停止了“學習”)。

Tanh 函數。Tanh 與 Sigmoid 有類似的特徵,可以由 Sigmoid 縮放平移得到,即 ????????????ℎ(????)=2∗????????????????????????????(????)–1。它的優點是值域爲(-1,1)並且關於零點對稱,對於零均值的輸入將得到零均值的輸出,這將有利於更高效的訓練(類似於 batch normalization 的作用)。需要注意的是,Tanh 仍然有梯度消失的問題。

ReLU 函數。表達式爲 ????????????????(????)=????????????(0,????),一般來說,它相比 Sigmoid 和 Tanh 可以加速收斂,這可能得益於其在正半軸有恆爲 1 的梯度,另外由於只需要一次比較運算,ReLU 需要更小的計算量。注意到 ReLU 在負半軸恆爲零,這將導致神經元在訓練時“永久死亡”(即對於上一層的任何輸入,其輸出爲 0),從而降低模型的擬合能力,事實上,這也是梯度消失的一種表現。

關於 ReLU 的“死亡”。考慮以 ReLU 爲激活函數的神經網絡模型(通常同一個模型只用一種激活函數),以任意神經元爲例,將其視爲函數 θ ,其中 x 爲上一層的輸出向量。假設某一次梯度更新後   θ ,進一步假設任意 爲數值很大的負值,考慮到上一層的輸出 x≥0,容易發現對於後續的輸入,f(x) 取值將有可能一直爲 0。上述分析思路同樣適合 Sigmoid 函數,當然這也進一步解釋了 Tanh 零均值輸出的優勢。如果你對於 batch normalization 有所瞭解,應該可以發現它將有助於改善“Dying ReLU”問題。

類 ReLU 函數。實踐證明 ReLU 在多數任務中具有更優的表現,特別是在深度神經網絡中。考慮到 ReLU 本身的缺陷,有許多改進版的 ReLU 被設計出來並得到了不錯的效果。主要改進的地方有兩點,一是 ReLU 在零點不可導,二是其在負半軸取值爲零。其中比較典型的有:

Leaky ReLU:

GELU:

Swish:

▲ 圖4.1 ReLU

▲ 圖4.2 Leaky ReLU

▲ 圖4.3 GELU

▲ 圖4.4 Swish

Leaky ReLU 給 ReLU 的負半軸增加了一個微小的梯度,改善了“Dying ReLU”的問題。GELU 用了高斯累計分佈來構造 ReLU,著名的 NLP 模型 BERT 用的是 GELU,參考 [1]。Swish 是通過自動化技術搜索得到的激活函數,作者做了大量的對比實驗表明 Swish 在不同的任務中均有超出其他類 ReLU 函數的表現(包括 GELU),參考 [2]。

Swish 和 GELU都屬於“光滑 ReLU”(smooth ReLU),因爲處處連續可導,一篇最近的論文展現了用光滑 ReLU 進行“對抗訓練”(adversarial training)的良好表現,參考 [3]。

關於激活函數的選擇。沒有人任何科學家會 100% 確定地告訴你哪個函數更好用,但是如果按照實驗結果,我們可以說類 ReLU 函數目前在多數任務中有更優的表現,就個人的建議,Swish 和 GELU 會是不錯的選擇,Swish 的論文雖然以實驗表明其優於 GELU,但 Google 在 BERT 中使用了 GELU。其他激活函數,可參考 [4]。

上文我們提到了通用近似器的概念,事實上這就是神經網絡之所以有效的原因,而其關鍵的部分則是激活函數。

在“通用近似理論”(universal approximation theorem)領域,可以分爲兩類近似理論,一類研究任意寬度(arbitrary width)和有界深度(bounded depth)的情況,另一類是任意深度和有界寬度。

比如上文的 G(x) 屬於任意寬度和有界深度,即 depth >= 1,width 根據近似的目標函數可以任意調整。在深度學習領域,有很多關於神經網絡隱藏層的寬度(width,平均單層神經元數量)和深度(depth,模型層數)如何影響神經網絡模型性能的研究,比如,是單層具有 1000 個神經元的隱藏層,還是 10 層具有 100 個神經元的隱藏層表現更好。

值得注意的是,對於某些激活函數,寬度如果小於等於某個數值(對於 ReLU,這個數值是輸入特徵維數 n),無論其模型深度多大,都存在一些其無法模擬的函數。詳情請參考 [5],以及關於深度神經網絡的研究 [6]。

以下一個簡單的例子展示了以 ReLU 爲激活函數的單隱藏層神經網絡模型,其擬合效果與隱藏層單元數量的關係,爲了方便可視化,擬合的目標是一元二次函數(x>0)。圖 3.1 爲隨機採樣的 50 個樣本,圖 3.2、3.3、3.4 分別爲隱藏層單元數量取 1、2、5 時的擬合曲線。

▲ 圖5.1

▲ 圖5.2

▲ 圖5.3

▲ 圖5.4

可以看到隨着隱藏層神經元數量的增多,模型的擬合能力逐步增大,如果神經元數量太小,則有可能無法在允許的誤差範圍內擬合目標函數。

一個有趣的事情是,當我們不用激活函數時,相當於我們用了一個恆等函數 f(x)=x  作爲激活函數,這將導致我們的模型只能擬合線性函數。但是,ReLU 僅僅簡單地“捨去”負值就取得了通用近似器的效果,有點類似於二極管對交流電的整流作用,這也是 ReLU 名稱的由來(Rectified Linear Unit)。

事實上,計算機的運算就是基於開關控制的邏輯電路,所以從這個角度,ReLU 似乎有一種二進制的美感。

參考文獻

[1] Gaussian Error Linear Units (GELUs). Dan Hendrycks. University of California, Berkeley. 2016. 

[2] Searching for Activation Functions. Prajit Ramachandran. Google Brain. 2017. 

[3] Smooth Adversarial Training. Cihang Xie. Google. 2020. 

[4] Activation function. Wikipedia. 

[5] Universal approximation theorem. Wikipedia. 

[6] Learning Functions: When Is Deep Better Than Shallow. Hrushikesh Mhaskar. California Institute of Technology. 2016

更多閱讀

#投 稿 通 道#

 讓你的論文被更多人看到 

如何才能讓更多的優質內容以更短路徑到達讀者羣體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。

總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成爲一座橋樑,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。 

PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得技術乾貨。我們的目的只有一個,讓知識真正流動起來。

???? 來稿標準:

• 稿件確係個人原創作品,來稿需註明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向) 

• 如果文章並非首發,請在投稿時提醒並附上所有已發佈鏈接 

• PaperWeekly 默認每篇文章都是首發,均會添加“原創”標誌

???? 投稿郵箱:

• 投稿郵箱:[email protected] 

• 所有文章配圖,請單獨在附件中發送 

• 請留下即時聯繫方式(微信或手機),以便我們在編輯發佈時和作者溝通

????

現在,在「知乎」也能找到我們了

進入知乎首頁搜索「PaperWeekly」

點擊「關注」訂閱我們的專欄吧

關於PaperWeekly

PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公衆號後臺點擊「交流羣」,小助手將把你帶入 PaperWeekly 的交流羣裏。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章