深度學習面試100題(第16-20題)

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

1、為什麼引入非線性激勵函式?

解析:

第一,對於神經網路來說,網路的每一層相當於f(wx+b)=f(w'x),對於線性函式,其實相當於f(x)=x,那麼線上性啟用函式下,每一層相當於用一個矩陣去乘以x,那麼多層就是反覆的用矩陣去乘以輸入。根據矩陣的乘法法則,多個矩陣相乘得到一個大矩陣。所以線性激勵函式下,多層網路與一層網路相當。比如,兩層的網路f(W1*f(W2x))=W1W2x=Wx。


第二,非線性變換是深度學習有效的原因之一。原因在於非線性相當於對空間進行變換,變換完成後相當於對問題空間進行簡化,原來線性不可解的問題現在變得可以解了。


下圖可以很形象的解釋這個問題,左圖用一根線是無法劃分的。經過一系列變換後,就變成線性可解的問題了。

640?wx_fmt=png

如果不用激勵函式(其實相當於激勵函式是f(x) = x),在這種情況下你每一層輸出都是上層輸入的線性函式,很容易驗證,無論你神經網路有多少層,輸出都是輸入的線性組合,與沒有隱藏層效果相當,這種情況就是最原始的感知機(Perceptron)了。


正因為上面的原因,我們決定引入非線性函式作為激勵函式,這樣深層神經網路就有意義了(不再是輸入的線性組合,可以逼近任意函式)。最早的想法是sigmoid函式或者tanh函式,輸出有界,很容易充當下一層輸入(以及一些人的生物解釋)。


2、請問人工神經網路中為什麼ReLu要好過於tanh和sigmoid function?

解析:

先看sigmoid、tanh和RelU的函式圖:

640?wx_fmt=png

第一,採用sigmoid等函式,算啟用函式時(指數運算),計算量大,反向傳播求誤差梯度時,求導涉及除法和指數運算,計算量相對大,而採用Relu啟用函式,整個過程的計算量節省很多。


第二,對於深層網路,sigmoid函式反向傳播時,很容易就會出現梯度消失的情況(在sigmoid接近飽和區時,變換太緩慢,導數趨於0,這種情況會造成資訊丟失),這種現象稱為飽和,從而無法完成深層網路的訓練。而ReLU就不會有飽和傾向,不會有特別小的梯度出現。


第三,Relu會使一部分神經元的輸出為0,這樣就造成了網路的稀疏性,並且減少了引數的相互依存關係,緩解了過擬合問題的發生(以及一些人的生物解釋balabala)。當然現在也有一些對relu的改進,比如prelu,random relu等,在不同的資料集上會有一些訓練速度上或者準確率上的改進,具體的大家可以找相關的paper看。


多加一句,現在主流的做法,會多做一步batch normalization,儘可能保證每一層網路的輸入具有相同的分佈[1]。而最新的paper[2],他們在加入bypass connection之後,發現改變batch normalization的位置會有更好的效果。大家有興趣可以看下。

[1] Ioffe S, Szegedy C. Batch normalization: Accelerating deep network training by reducing internal covariate shift[J]. arXiv preprint arXiv:1502.03167, 2015.

[2] He, Kaiming, et al. "Identity Mappings in Deep Residual Networks." arXiv preprint arXiv:1603.05027 (2016). 


3、為什麼LSTM模型中既存在sigmoid又存在tanh兩種啟用函式,而不是選擇統一一種sigmoid或者tanh?這樣做的目的是什麼?

640?wx_fmt=png

解析:

sigmoid 用在了各種gate上,產生0~1之間的值,這個一般只有sigmoid最直接了。

tanh 用在了狀態和輸出上,是對資料的處理,這個用其他啟用函式或許也可以。


二者目的不一樣

另可參見A Critical Review of Recurrent Neural Networks for Sequence Learning的section4.1,說了那兩個tanh都可以替換成別的。


4、如何解決RNN梯度爆炸和彌散的問題?

解析:

為了解決梯度爆炸問題,Thomas Mikolov首先提出了一個簡單的啟發性的解決方案,就是當梯度大於一定閾值的的時候,將它截斷為一個較小的數。具體如演算法1所述:


演算法:當梯度爆炸時截斷梯度(虛擬碼)

640?wx_fmt=jpeg

下圖視覺化了梯度截斷的效果。它展示了一個小的rnn(其中W為權值矩陣,b為bias項)的決策面。這個模型是一個一小段時間的rnn單元組成;實心箭頭表明每步梯度下降的訓練過程。當梯度下降過程中,模型的目標函式取得了較高的誤差時,梯度將被送到遠離決策面的位置。截斷模型產生了一個虛線,它將誤差梯度拉回到離原始梯度接近的位置。

640?wx_fmt=png

梯度爆炸,梯度截斷視覺化 

為了解決梯度彌散的問題,我們介紹了兩種方法。第一種方法是將隨機初始化640?wx_fmt=jpeg

改為一個有關聯的矩陣初始化。第二種方法是使用ReLU(Rectified Linear Units)代替sigmoid函式。ReLU的導數不是0就是1.因此,神經元的梯度將始終為1,而不會當梯度傳播了一定時間之後變小。


5、什麼樣的資料集不適合用深度學習?

解析:

(1)資料集太小,資料樣本不足時,深度學習相對其它機器學習演算法,沒有明顯優勢。


(2)資料集沒有區域性相關特性,目前深度學習表現比較好的領域主要是影象/語音/自然語言處理等領域,這些領域的一個共性是區域性相關性。影象中畫素組成物體,語音訊號中音位組合成單詞,文字資料中單片語合成句子,這些特徵元素的組合一旦被打亂,表示的含義同時也被改變。對於沒有這樣的區域性相關性的資料集,不適於使用深度學習演算法進行處理。舉個例子:預測一個人的健康狀況,相關的引數會有年齡、職業、收入、家庭狀況等各種元素,將這些元素打亂,並不會影響相關的結果。


更多面試題可檢視七月線上面試題庫:https://www.julyedu.com/question/index,或者下載七月線上APP


資料來源:

1.Begin Again,

https://www.zhihu.com/question/29021768

2.Begin Again,

https://www.zhihu.com/question/29021768

3.https://www.zhihu.com/question/46197687

4.http://blog.csdn.net/han_xiaoyang/article/details/51932536

5.抽象猴,

https://www.zhihu.com/question/41233373

640?wx_fmt=gif

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

640?wx_fmt=jpeg

相關文章