深度學習面試100題(第26-30題)

七月線上實驗室發表於2018-07-13

26.神經網路中啟用函式的真正意義?一個啟用函式需要具有哪些必要的屬性?還有哪些屬性是好的屬性但不必要的?

解析:

(1)非線性:即導數不是常數。這個條件是多層神經網路的基礎,保證多層網路不退化成單層線性網路。這也是啟用函式的意義所在。


(2)幾乎處處可微:可微性保證了在優化中梯度的可計算性。傳統的啟用函式如sigmoid等滿足處處可微。對於分段線性函式比如ReLU,只滿足幾乎處處可微(即僅在有限個點處不可微)。對於SGD演算法來說,由於幾乎不可能收斂到梯度接近零的位置,有限的不可微點對於優化結果不會有很大影響[1]。


(3)計算簡單:非線性函式有很多。極端的說,一個多層神經網路也可以作為一個非線性函式,類似於Network In Network[2]中把它當做卷積操作的做法。但啟用函式在神經網路前向的計算次數與神經元的個數成正比,因此簡單的非線性函式自然更適合用作啟用函式。這也是ReLU之流比其它使用Exp等操作的啟用函式更受歡迎的其中一個原因。


(4)非飽和性(saturation):飽和指的是在某些區間梯度接近於零(即梯度消失),使得引數無法繼續更新的問題。最經典的例子是Sigmoid,它的導數在x為比較大的正值和比較小的負值時都會接近於0。更極端的例子是階躍函式,由於它在幾乎所有位置的梯度都為0,因此處處飽和,無法作為啟用函式。ReLU在x>0時導數恆為1,因此對於再大的正值也不會飽和。但同時對於x<0,其梯度恆為0,這時候它也會出現飽和的現象(在這種情況下通常稱為dying ReLU)。Leaky ReLU[3]和PReLU[4]的提出正是為了解決這一問題。


(5)單調性(monotonic):即導數符號不變。這個性質大部分啟用函式都有,除了諸如sin、cos等。個人理解,單調性使得在啟用函式處的梯度方向不會經常改變,從而讓訓練更容易收斂。


(6)輸出範圍有限:有限的輸出範圍使得網路對於一些比較大的輸入也會比較穩定,這也是為什麼早期的啟用函式都以此類函式為主,如Sigmoid、TanH。但這導致了前面提到的梯度消失問題,而且強行讓每一層的輸出限制到固定範圍會限制其表達能力。因此現在這類函式僅用於某些需要特定輸出範圍的場合,比如概率輸出(此時loss函式中的log操作能夠抵消其梯度消失的影響[1])、LSTM裡的gate函式。


(7)接近恆等變換(identity):即約等於x。這樣的好處是使得輸出的幅值不會隨著深度的增加而發生顯著的增加,從而使網路更為穩定,同時梯度也能夠更容易地回傳。這個與非線性是有點矛盾的,因此啟用函式基本只是部分滿足這個條件,比如TanH只在原點附近有線性區(在原點為0且在原點的導數為1),而ReLU只在x>0時為線性。這個性質也讓初始化引數範圍的推導更為簡單[5][4]。額外提一句,這種恆等變換的性質也被其他一些網路結構設計所借鑑,比如CNN中的ResNet[6]和RNN中的LSTM。


(8)引數少:大部分啟用函式都是沒有引數的。像PReLU帶單個引數會略微增加網路的大小。還有一個例外是Maxout[7],儘管本身沒有引數,但在同樣輸出通道數下k路Maxout需要的輸入通道數是其它函式的k倍,這意味著神經元數目也需要變為k倍;但如果不考慮維持輸出通道數的情況下,該啟用函式又能將引數個數減少為原來的k倍。


(9)歸一化(normalization):這個是最近才出來的概念,對應的啟用函式是SELU[8],主要思想是使樣本分佈自動歸一化到零均值、單位方差的分佈,從而穩定訓練。在這之前,這種歸一化的思想也被用於網路結構的設計,比如Batch Normalization[9]。


27.梯度下降法的神經網路容易收斂到區域性最優,為什麼應用廣泛?

解析:

深度神經網路“容易收斂到區域性最優”,很可能是一種想象,實際情況是,我們可能從來沒有找到過“區域性最優”,更別說全域性最優了。

很多人都有一種看法,就是“區域性最優是神經網路優化的主要難點”。這來源於一維優化問題的直觀想象。在單變數的情形下,優化問題最直觀的困難就是有很多區域性極值,如


640?wx_fmt=jpeg

 

  人們直觀的想象,高維的時候這樣的區域性極值會更多,指數級的增加,於是優化到全域性最優就更難了。然而單變數到多變數一個重要差異是,單變數的時候,Hessian矩陣只有一個特徵值,於是無論這個特徵值的符號正負,一個臨界點都是區域性極值。但是在多變數的時候,Hessian有多個不同的特徵值,這時候各個特徵值就可能會有更復雜的分佈,如有正有負的不定型和有多個退化特徵值(零特徵值)的半定型

640?wx_fmt=jpeg 

  在後兩種情況下,是很難找到區域性極值的,更別說全域性最優了。

  現在看來,神經網路的訓練的困難主要是鞍點的問題。在實際中,我們很可能也從來沒有真的遇到過區域性極值。Bengio組這篇文章Eigenvalues of the Hessian in Deep Learning(https://arxiv.org/abs/1611.07476)裡面的實驗研究給出以下的結論:

• Training stops at a point that has a small gradient. The norm of the gradient is not zero, therefore it does not, technically speaking, converge to a critical point.

• There are still negative eigenvalues even when they are small in magnitude.

  另一方面,一個好訊息是,即使有區域性極值,具有較差的loss的區域性極值的吸引域也是很小的Towards Understanding Generalization of Deep Learning: Perspective of Loss Landscapes。(https://arxiv.org/abs/1706.10239)

For the landscape of loss function for deep networks, the volume of basin of attraction of good minima dominates over that of poor minima, which guarantees optimization methods with random initialization to converge to good minima.

  所以,很可能我們實際上是在“什麼也沒找到”的情況下就停止了訓練,然後拿到測試集上試試,“咦,效果還不錯”。

  補充說明,這些都是實驗研究結果。理論方面,各種假設下,深度神經網路的Landscape 的鞍點數目指數增加,而具有較差loss的區域性極值非常少。


28.簡單說說CNN常用的幾個模型。

解析:

640?wx_fmt=png 

29.為什麼很多做人臉的Paper會最後加入一個Local Connected Conv?

解析:

以FaceBook DeepFace 為例:

640?wx_fmt=jpeg

DeepFace 先進行了兩次全卷積+一次池化,提取了低層次的邊緣/紋理等特徵。後接了3個Local-Conv層,這裡是用Local-Conv的原因是,人臉在不同的區域存在不同的特徵(眼睛/鼻子/嘴的分佈位置相對固定),當不存在全域性的區域性特徵分佈時,Local-Conv更適合特徵的提取。


30.什麼是梯度爆炸?

解析:

誤差梯度是神經網路訓練過程中計算的方向和數量,用於以正確的方向和合適的量更新網路權重。

在深層網路或迴圈神經網路中,誤差梯度可在更新中累積,變成非常大的梯度,然後導致網路權重的大幅更新,並因此使網路變得不穩定。在極端情況下,權重的值變得非常大,以至於溢位,導致 NaN 值。

網路層之間的梯度(值大於 1.0)重複相乘導致的指數級增長會產生梯度爆炸。


參考資料:

1.Hengkai Guo,

https://www.zhihu.com/question/67366051;

2.李振華,

https://www.zhihu.com/question/68109802/answer/262143638;

3.許韓,

https://zhuanlan.zhihu.com/p/25005808。


題目來源:

七月線上官網(https://www.julyedu.com/)——面試題庫——面試大題——深度學習 第21-25題。

640?wx_fmt=gif

為了幫助大家更好的學習和理解深度學習,我們特意推出了“深度學習第四期”課程,7月31日開課,每週二週四晚上8~10點直播上課,每次課至少2小時,共10次課;本課程提供以下服務:直播答疑、課後回放、佈置作業且解答、畢業考試且批改、面試輔導。課程詳情可點選文末“閱讀原文”進行檢視,或者加微信客服:julyedukefu_02 進行諮詢。

掃碼加客服微信

640?wx_fmt=jpeg

640?wx_fmt=jpeg

相關文章