深度學習面試100題(第46-50題)

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

46、你如何判斷一個神經網路是記憶還是泛化?

解析:

具有許多引數的神經網路具有記憶大量訓練樣本的能力。那麼,神經網路是僅僅記憶訓練樣本(然後簡單地根據最相似的訓練點對測試點進行分類),還是它們實際上是在提取模式並進行歸納?這有什麼不同嗎?


人們認為存在不同之處的一個原因是,神經網路學習隨機分配標籤不同於它學習重複標籤的速度。這是 Arpit 等人在論文中使用的策略之一。讓我們看看是否有所區別?


方法: 首先我們生成一個 6 維高斯混合,並隨機分配它們的標籤。我們測量訓練資料的正確率,以增加資料集的大小,瞭解神經網路的記憶能力。然後,我們選擇一個神經網路能力範圍之內的資料集大小,來記憶並觀察訓練過程中神經網路與真實標籤之間是否存在本質上的差異。特別是,我們觀察每個輪數的正確率度,來確定神經網路是真正學到真正的標籤,還是隨機標籤。


假設: 我們預計,對隨機標籤而言,訓練應該耗費更長的時間。而真正標籤則不然。


640?wx_fmt=png

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


640?wx_fmt=png

結論: 神經網路的記憶能力約為 150 個訓練點。但即便如此,神經網路也需要更長的時間來學習隨機標籤,而不是真實值(ground truth)標籤。


討論: 這個結果並不令人感到意外。我們希望真正的標籤能夠更快的學到,如果一個神經網路學會正確地分類一個特定的資料點時,它也將學會分類其他類似的資料點——如果標籤是有意義的,但前提它們不是隨機的!


47、無監督降維提供的是幫助還是摧毀?

解析:

當處理非常高維的資料時,神經網路可能難以學習正確的分類邊界。在這些情況下,可以考慮在將資料傳遞到神經網路之前進行無監督的降維。這做法提供的是幫助還是摧毀呢?


方法:我們生成兩個10維高斯混合。高斯具有相同的協方差矩陣,但在每個維度上都有一個由 1 隔開的均值。然後,我們在資料中新增“虛擬維度”,這些特徵對於兩種型別的高斯都是非常低的隨機值,因此對分類來說沒有用處。


然後,我們將結果資料乘以一個隨機旋轉矩陣來混淆虛擬維度。小型資料集大小 (n=100) 使神經網路難以學習分類邊界。因此,我們將資料 PCA 為更小的維數,並檢視分類正確率是否提高。


假設:我們預計 PCA 將會有所幫助,因為變異最多的方向(可能)與最有利於分類的方向相一致。


640?wx_fmt=png

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

640?wx_fmt=png

結論: 當維度非常大時,無監督的 PCA 步驟可以顯著改善下游分類。


討論: 我們觀察到一個有趣的閾值行為。當維數超過 100 時(有趣的是,這數字是資料集中資料點的數量——這值得進一步探討),分類的質量會有顯著的下降。在這些情況下,5~10 維的 PCA 可顯著地改善下游分類。


48、是否可以將任何非線性作為啟用函式? 

解析:

在通過具有超出典型 ReLU() 和 tanh() 的特殊啟用函式的神經網路獲得小幅提高的研究,已有多篇論文報導。我們並非試圖開發專門的啟用函式,而是簡單地詢問它是否可能在神經網路中使用任何舊的非線性函式?


方法:我們生成著名的二維衛星資料集,並訓練一個具有兩個隱藏層的神經網路來學習對資料集進行分類。我們嘗試了六種不同的啟用函式。


640?wx_fmt=png


假設:我們預計恆等函式執行很差(因為直到最後一個 softmax 層,網路仍然保持相當的線性)。我們可能會進一步期望標準的啟用函式能夠發揮最好的效果。


640?wx_fmt=png


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


640?wx_fmt=png


結論:除去 sign(x) 外,所有的非線性啟用函式對分類任務都是非常有效的。


討論:結果有些令人吃驚,因為所有函式都同樣有效。事實上,像 x2 這樣的對稱啟用函式表現得和 ReLUs 一樣好!從這個實驗中,我們應該謹慎地推斷出太多的原因。


49、批大小如何影響測試正確率? 

解析:

方法:我們生成兩個 12 維高斯混合。高斯具有相同的協方差矩陣,但在每個維度上都有一個由 1 隔開的均值。該資料集由 500 個高斯組成,其中 400 個用於訓練,100 個用於測試。我們在這個資料集上訓練一個神經網路,使用不同的批大小,從 1 到 400。我們測量了之後的正確率。


假設:我們期望較大的批大小會增加正確率(較少的噪聲梯度更新),在一定程度上,測試的正確率將會下降。我們預計隨著批大小的增加,執行時間應有所下降。


640?wx_fmt=png


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


640?wx_fmt=png

結論:正如我們預期那樣,執行時間確實隨著批大小的增加而下降。然而,這導致了測試正確率的妥協,因為測試正確率隨著批大小的增加而單調遞減。


討論:這很有趣,但這與普遍的觀點不一致,嚴格來說,即中等規模的批大小更適用於訓練。這可能是由於我們沒有調整不同批大小的學習率。因為更大的批大小執行速度更快。總體而言,對批大小的最佳折衷似乎是為 64 的批大小。


50、損失函式重要嗎?

解析:

對於分類任務,通常使用交叉熵損失函式。如果我們像通常在迴歸任務中那樣使用均方差,結果會怎麼樣?我們選擇哪一個會很重要麼?


方法: 我們生成兩個 12 維高斯混合。高斯具有相同的協方差矩陣,但在每個維度上都有一個由 1 隔開的均值。該資料集由 500 個高斯組成,其中 400 個用於訓練,100 個用於測試。我們使用幾種不同的函式在這個資料集上訓練一個神經網路,以確定最終正確率是否存在系統差異。作為陰性對照,包括一個不變的損失函式。


假設: 我們預計交叉熵損失函式作為分類任務的標準損失函式,表現最好,同時我們預計其他損失函式表現不佳。


640?wx_fmt=png


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


640?wx_fmt=png

結論: 除去陰性對照外,所有的損失都有類似的表現。損失函式是標籤與邏輯之間的區別,提升到四次冪,其效能要比其他差一些。


討論: 損失函式的選擇對最終結果沒有實質影響,這也許不足為奇,因為這些損失函式非常相似。


題目來源:

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

640?wx_fmt=gif

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


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


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


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


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


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

掃碼加客服微信

640?wx_fmt=jpeg640?wx_fmt=jpeg

相關文章