深度學習面試100題(第41-45題)

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

41、請簡述應當從哪些方向上思考和解決深度學習中出現的的over fitting問題?

解析:

如果模型的訓練效果不好,可先考察以下幾個方面是否有可以優化的地方。


(1)選擇合適的損失函式(choosing proper loss )

神經網路的損失函式是非凸的,有多個區域性最低點,目標是找到一個可用的最低點。非凸函式是凹凸不平的,但是不同的損失函式凹凸起伏的程度不同,例如下述的平方損失和交叉熵損失,後者起伏更大,且後者更容易找到一個可用的最低點,從而達到優化的目的。

- Square Error(平方損失)

- Cross Entropy(交叉熵損失)


(2)選擇合適的Mini-batch size

採用合適的Mini-batch進行學習,使用Mini-batch的方法進行學習,一方面可以減少計算量,一方面有助於跳出區域性最優點。因此要使用Mini-batch。更進一步,batch的選擇非常重要,batch取太大會陷入區域性最小值,batch取太小會抖動厲害,因此要選擇一個合適的batch size。


(3)選擇合適的啟用函式(New activation function)

使用啟用函式把卷積層輸出結果做非線性對映,但是要選擇合適的啟用函式。

- Sigmoid函式是一個平滑函式,且具有連續性和可微性,它的最大優點就是非線性。但該函式的兩端很緩,會帶來豬隊友的問題,易發生學不動的情況,產生梯度彌散。

- ReLU函式是如今設計神經網路時使用最廣泛的啟用函式,該函式為非線性對映,且簡單,可緩解梯度彌散。


(4)選擇合適的自適應學習率(apdative learning rate)

- 學習率過大,會抖動厲害,導致沒有優化提升

- 學習率太小,下降太慢,訓練會很慢


(5)使用動量(Momentum)

在梯度的基礎上使用動量,有助於衝出區域性最低點。


如果以上五部分都選對了,效果還不好,那就是產生過擬合了,可使如下方法來防止過擬合,分別是


- 1.早停法(earyly stoping)。早停法將資料分成訓練集和驗證集,訓練集用來計算梯度、更新權重和閾值,驗證集用來估計誤差,若訓練集誤差降低但驗證集誤差升高,則停止訓練,同時返回具有最小驗證集誤差的連線權和閾值。


- 2.權重衰減(Weight Decay)。到訓練的後期,通過衰減因子使權重的梯度下降地越來越緩。


- 3.Dropout。Dropout是正則化的一種處理,以一定的概率關閉神經元的通路,阻止資訊的傳遞。由於每次關閉的神經元不同,從而得到不同的網路模型,最終對這些模型進行融合。


- 4.調整網路結構(Network Structure)。


42、神經網路中,是否隱藏層如果具有足夠數量的單位,它就可以近似任何連續函式?

解析:

通用逼近性定理指出,一個具有單個隱藏層和標準啟用函式的簡單前饋神經網路(即多層感知器),如果隱藏層具有足夠數量的單位,它就可以近似任何連續函式。讓我們在實踐中看一下,看看需要多少單位來近似一些特定函式。


方法:我們將在 50 個資料點 (x,y) 上訓練一個 1 層神經網路,這些資料點從域 [-1,1] 上的以下函式中繪製,所得擬合的均方誤差(mean square error,MSE)。我們將嘗試以下函式(你可隨時通過更改以下程式碼來嘗試自己的函式。)


640?wx_fmt=png


假設: 隨著隱藏層中單位的數量增加,所得擬合的正確率(Accuracy)將會增加(誤差將會減少)。


640?wx_fmt=png


執行實驗所需的時間: 91.595 s

640?wx_fmt=png

結論: 隨著隱藏單位數量的增加,訓練資料的逼近誤差一般會減小。


討論: 儘管通用逼近定理指出,具有足夠引數的神經網路可以近似一個真實的分類 / 迴歸函式,但它並沒有說明這些引數是否可以通過隨機梯度下降這樣的過程來習得。另外,你可能想知道我們是否可以從理論上計算出需要多少神經元才能很好地近似給定的函式。你可參閱論文《NEURAL NETWORKS FOR OPTIMAL APPROXIMATION OFSMOOTH AND ANALYTIC FUNCTIONS》對此的一些討論。


43、為什麼更深的網路更好? 

解析:

在實踐中,更深的多層感知器(具有超過一個隱藏層)在許多感興趣的任務上的表現,在很大程度上都勝過淺層感知器。為什麼會出現這種情況呢?有人認為,更深的神經網路僅需更少的引數就可以表達許多重要的函式類。


理論上已經表明,表達簡單的徑向函式和組合函式需要使用淺層網路的指數級大量引數。但深度神經網路則不然。


劇透警告:我打算用實驗來驗證這些論文,但我不能這樣做(這並不會使論文的結果無效——僅僅因為存在一組神經網路引數,並不意味著它們可以通過隨機梯度下降來輕鬆習得)。


我唯一能做的就是,某種程度上可靠地再現來自論文《Representation Benefits of Deep Feedforward Networks》的唯一結果,這篇論文提出了一系列困難的分類問題,這些問題對更深層的神經網路而言更容易。


方法: 該資料集由沿著 x 軸的 16 個等距點組成,每對相鄰點都屬於相反的類。一種特殊型別的深度神經網路(一種跨層共享權重的神經網路)具有固定數量(152)的引數,但測試了層的不同數量。


假設: 隨著具有固定數量引數的神經網路中層數的增加,困難的分類問題的正確率將得到提高。


640?wx_fmt=png


執行實驗所需的時間: 28.688 s

640?wx_fmt=png

此處,紅點和藍點代表屬於不同類別的點。黑色的虛線表示最接近神經網路學習的訓練資料近似值(若神經網路分配的分數大於零,則被預測為紅點;否則,被預測為藍點)。零線顯示為黑色。


結論: 在大多實驗中,正確率隨深度的增加而增加。


討論: 似乎更深的層允許從輸入到輸出的學習到的函式出現更多“急彎”。這似乎跟神經網路的軌跡長度有關(即衡量輸入沿著固定長度的一維路徑變化時,神經網路的輸出量是多少)。軌跡長度論文:https://arxiv.org/pdf/1606.05336.pdf


44、更多的資料是否有利於更深的神經網路? 

解析:

深度學習和大資料密切相關;通常認為,當資料集的規模大到足夠克服過擬合時,深度學習只會比其他技術(如淺層神經網路和隨機森林)更有效,並更有利於增強深層網路的表達性。我們在一個非常簡單的資料集上進行研究,這個資料集由高斯樣本混合而成。


方法: 資料集由兩個 12 維的高斯混合而成,每個高斯生成屬於一個類的資料。兩個高斯具有相同的協方差矩陣,但也意味著在第 i 個維度上有 1/i1/i 單位。這個想法是基於:有一些維度,允許模型很容易區分不同的類,而其他維度則更為困難,但對區別能力還是有用的。


假設: 隨著資料集大小的增加,所有技術方法的測試正確率都會提高,但深度模型的正確率會比非深度模型的正確率要高。我們進一步預計非深度學習技術的正確率將更快地飽和。


640?wx_fmt=png


執行實驗所需的時間: 138.239 s

640?wx_fmt=png

結論: 神經網路在資料集大小方面上表現始終優於 SVM 和隨機森林。隨著資料集大小的增加,效能上的差距也隨之增加,至少在神經網路的正確率開始飽和之前,這表明神經網路更有效地利用了不斷增加的資料集。然而,如果有足夠的資料,即使是 SVM 也會有可觀的正確率。深度網路比淺層網路的表現更好。


討論: 雖然增加的資料集大小確實會像我們預計的那樣有利於神經網路。但有趣的是,在相對較小的資料集上,神經網路已經比其他技術表現得更好。似乎 2 層網路並沒有顯著的過擬合,即使我們預計某些特徵(如 6-12 特徵,訊號水平低)導致網路過擬合。同樣有趣的是,SVM 看上去似乎有足夠的資料來接近於 1.0。


45、不平衡資料是否會摧毀神經網路? 

解析:

當資料集不平衡時(如一個類的樣本比另一個類還多),那麼神經網路可能就無法學會如何區分這些類。在這個實驗中,我們探討這一情況是否存在。同時我們還探討了過取樣是否可以減輕問題帶來的影響,這是一種流行的補救措施,該措施使用少數類中抽樣替換的樣本。


方法:我們生成兩個二維的結果(結果未在這裡顯示,表明相同的結果適用於更高維)高斯,每個產生屬於一個類別的資料。兩個高斯具有相同的協方差矩陣,但它們的意思是在第 i 個維度上相距 1/i1/i 單位。每個訓練資料集由 1,200 個資料點組成,但我們將類別不平衡從 1:1 變為 1:99。測試資料集以 1:1 的比例保持固定,以便於效能比較,並由 300 個點組成。我們還會在每種情況下顯示決策邊界。


假設:我們預計測試正確率會隨著類別不平衡的增加而降低,但我們預計過取樣可以緩解這個問題。


640?wx_fmt=png


執行實驗所需的時間: 392.157 s

640?wx_fmt=png


640?wx_fmt=png


最下面的四張圖顯示了連同訓練點(左)或測試點(右)繪製的決策邊界的數量。第一行顯示沒有重取樣法的結果,底部顯示了使用重取樣法的結果。


結論: 研究結果表明,類的不平衡無疑地降低了分類的正確率。重取樣法可以顯著提高效能。


討論: 重取樣法對提高分類正確率有顯著的影響,這可能有點讓人驚訝了,因為它並沒有將分類器展示少數類中的新訓練的樣本。但該圖顯示,重取樣法足以“助推(nudge)”或將決策邊界推向正確的方向。在重取樣法不是有效的情況下,那麼可能需要複合方式來合成新的訓練樣本,以提高正確率。


題目來源:

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

640?wx_fmt=gif

深度學習是機器學習的一個分支深度學習除了可以學習特徵和任務之間的關聯以外,還能自動從簡單特徵中提取更加複雜的特徵。深度學習演算法可以從資料中學習更加複雜的特徵表達,使得最後一步權重學習變得更加簡單且有效。


為了幫助大家系統地學習機器學習課程的相關知識,我們特意推出了機器學習集訓營系列課程。迄今為止,「機器學習集訓營」已經舉辦了四期,每一期都湧現出了不少優秀offer,特別是上一期很多同學從Java、Android、iOS等傳統IT行業成功轉行轉型轉崗AI拿到年薪三四十萬,部分甚至超過四十萬拿到五十萬。


本第五期,在第四期的基礎上,除了繼續維持“入學測評、直播答疑、佈置作業、階段考試、畢業考核、一對一批改、線上線下結合、CPU&GPU雙雲平臺、組織比賽、面試輔導、就業推薦”十一位一體的教學模式,本期特地推出機器學習工程師聯合認證。且線下在北京、上海、深圳、廣州、杭州、瀋陽、濟南、鄭州、成都的基礎上,新增武漢、西安兩個線下點,十一城同步開營


此外,本期依然沿用前四期線上線下相結合的授課方式,加強專案實訓的同時引入線下BAT專家面對面、手把手的教學方式;突出BAT級工業專案實戰輔導 + 一對一面試求職輔導,並提供一年GPU雲實驗平臺免費使用,精講面試考點。讓每一位學員不用再為遇到問題沒人解答,缺乏實戰經驗以及簡歷上沒有專案經驗,面試屢屢遭拒而發愁。


本期限150個名額,歷時3個月,10多個BAT級工業專案,保障每一位學員所學更多、效率更高、收穫更大。


機器學習集訓營 第五期 課程詳情可點選文末閱讀原文進行檢視,或者加微信客服:julyedukefu_02進行諮詢。

掃碼加客服微信

640?wx_fmt=jpeg

640?wx_fmt=jpeg

相關文章