深度學習面試100題(第26-30題)
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.梯度下降法的神經網路容易收斂到區域性最優,為什麼應用廣泛?
解析:
深度神經網路“容易收斂到區域性最優”,很可能是一種想象,實際情況是,我們可能從來沒有找到過“區域性最優”,更別說全域性最優了。
很多人都有一種看法,就是“區域性最優是神經網路優化的主要難點”。這來源於一維優化問題的直觀想象。在單變數的情形下,優化問題最直觀的困難就是有很多區域性極值,如
人們直觀的想象,高維的時候這樣的區域性極值會更多,指數級的增加,於是優化到全域性最優就更難了。然而單變數到多變數一個重要差異是,單變數的時候,Hessian矩陣只有一個特徵值,於是無論這個特徵值的符號正負,一個臨界點都是區域性極值。但是在多變數的時候,Hessian有多個不同的特徵值,這時候各個特徵值就可能會有更復雜的分佈,如有正有負的不定型和有多個退化特徵值(零特徵值)的半定型
在後兩種情況下,是很難找到區域性極值的,更別說全域性最優了。
現在看來,神經網路的訓練的困難主要是鞍點的問題。在實際中,我們很可能也從來沒有真的遇到過區域性極值。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常用的幾個模型。
解析:
29.為什麼很多做人臉的Paper會最後加入一個Local Connected Conv?
解析:
以FaceBook DeepFace 為例:
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題。
為了幫助大家更好的學習和理解深度學習,我們特意推出了“深度學習第四期”課程,7月31日開課,每週二週四晚上8~10點直播上課,每次課至少2小時,共10次課;本課程提供以下服務:直播答疑、課後回放、佈置作業且解答、畢業考試且批改、面試輔導。課程詳情可點選文末“閱讀原文”進行檢視,或者加微信客服:julyedukefu_02 進行諮詢。
掃碼加客服微信
相關文章
- 深度學習面試100題(第46-50題)深度學習面試
- 深度學習面試100題(第51-55題)深度學習面試
- 深度學習面試100題(第56-60題)深度學習面試
- 深度學習面試100題(第31-35題)深度學習面試
- 深度學習面試100題(第36-40題)深度學習面試
- 深度學習面試100題(第41-45題)深度學習面試
- 深度學習面試100題(第61-65題)深度學習面試
- 深度學習面試100題(第16-20題)深度學習面試
- 深度學習面試100題(第21-25題)深度學習面試
- 深度學習面試100題(第6-10題)深度學習面試
- 深度學習面試100題(第11-15題)深度學習面試
- 深度學習面試100題(第1-5題):經典常考點CNN深度學習面試CNN
- A-深度學習面試題深度學習面試題
- 10道機器學習、深度學習必會面試題機器學習深度學習面試題
- 機器學習及深度學習的知識點及面試題總結機器學習深度學習面試題
- 微軟面試100題微軟面試
- SQL經典練習題48道之四(26-30)SQL
- 淺談深度學習落地問題深度學習
- 常見面試題學習(4)面試題
- 學習面試題Day09面試題
- 【SQL 學習】一個面試題SQL面試題
- 100道JAVA面試題+JAVA面試題參考答案Java面試題
- 《統計學習方法》第11章習題
- 淺談深度學習的落地問題深度學習
- 深度學習 V.S. 謎題遊戲深度學習遊戲
- Java面試題全集學習筆記Java面試題筆記
- 100個前端面試題前端面試題
- Java最大棧深度有多大?-從一道面試題開始學習JVMJava面試題JVM
- 深度學習之新聞多分類問題深度學習
- DBA面試題集----我要好好學習面試題
- 資料結構面試100題資料結構面試
- 宅家學習第N天,我終於整理出了高階面試題合集!面試題
- 【深度學習】深度學習md筆記總結第1篇:深度學習課程,要求【附程式碼文件】深度學習筆記
- TensorFlow系列專題(三):深度學習簡介深度學習
- 100家IT 名企面試必考面試題java系列面試題Java
- 【Java面試題】之CAS原理深度分析Java面試題
- Python經典程式設計習題100例:第3例Python程式設計
- Python經典程式設計習題100例:第42例:學習使用auto定義變數Python程式設計變數