深度學習面試100題(第51-55題)

七月線上實驗室發表於2018-07-20
640?wx_fmt=gif

點選藍字關注我們,小七等你好久嘍


51、初始化如何影響訓練? 

解析:

方法:我們生成兩個 12 維高斯混合。高斯具有相同的協方差矩陣,但在每個維度都有一個由 1 隔開的均值。該資料集由 500 個高斯組成,其中 400 個用於訓練,100 個用於測試。我們在這個神經網路中初始化權重值,看哪一個具有最好的訓練效能。


假設:我們期望 Xavier 損失具有最好的效能(它是 tensorflow 中使用的預設值),而其他方法效能不佳(尤其是不斷的初始化)。


640?wx_fmt=png


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


640?wx_fmt=png


結論:Xavier 和高斯(具有較低的方差)初始化會得到很好的訓練。有趣的是,常數 0 的初始化最終導致訓練,而其他初始化並不會。


討論:Xavire 初始化提供了最好的效能,這並不奇怪。標準偏差小的高斯也適用(但不像 Xavire 那樣好)。如果方差變得太大,那麼訓練速度就會變得較慢,這可能是因為神經網路的大部分輸出都發生了爆炸。


52、不同層的權重是否以不同的速度收斂? 

解析:

我們的第一個問題是,不同層的權重是否以不同的速度收斂。


方法: 我們生成兩個 12 維高斯混合。高斯具有相同的協方差矩陣,但每個維度上都有一個由 1 隔開的均值。該資料集由 500 個高斯組成,其中 400 個用於訓練,100 個用於測試。我們在這個資料集上訓練一個帶有 3 個隱藏層(將導致 4 層權重,包括從輸入到)第一層的權重)的神經網路,我們在訓練過程中繪製每層 50 個權重值。我們通過繪製兩個輪數之間的權重的差分來衡量收斂性。


假設: 我們期望後一層的權重會更快地收斂,因為它們在整個網路中進行反向傳播時,後期階段的變化會被放大。


640?wx_fmt=png


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


640?wx_fmt=png


結論: 我們發現後一層的權重比前一層收斂得更快。


討論: 看上去第三層的權重是幾乎單調地收斂到它們的最終值,而且這一過程非常快。至於前幾層權重的收斂模式,比較複雜,似乎需要更長的時間才能解決。


53、正則化如何影響權重?

解析:

方法:我們生成兩個 12 維高斯混合。高斯具有相同的協方差矩陣,但在每個維度上都有一個由 1 隔開的均值。該資料集由 500 個高斯組成,其中 400 個用於訓練,100 個用於測試。我們在這個資料集上訓練一個具有 2 個隱藏層的神經網路,並在整個訓練過程中繪製 50 個權重值。


然後我們在損失函式中包含 L1 或 L2 正則項之後重複這一過程。我們研究這樣是否會影響權重的收斂。我們還繪製了正確率的影象,並確定它在正則化的情況下是否發生了顯著的變化。


假設:我們預計在正則化的情況下,權重的大小會降低。在 L1 正則化的情況下,我們可能會得到稀疏的權重。如果正則化強度很高,我們就會預計正確率下降,但是正確率實際上可能會隨輕度正則化而上升。

640?wx_fmt=png


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

640?wx_fmt=png


結論:我們注意到正則化確實降低了權重的大小,在強 L1 正則化的情況下導致了稀疏性。對正確率帶來什麼樣的影響尚未清楚。


討論:從我們所選的 50 個權重的樣本可以清晰地看出,正則化對訓練過程中習得的權重有著顯著的影響。我們在 L1 正則化的情況下能夠獲得一定程度的稀疏性,雖然看起來有較大的正則化強度,這就導致正確率的折衷。而 L2 正則化不會導致稀疏性,它只有更小幅度的權重。同時,對正確率似乎沒有什麼有害的影響。


54、什麼是fine-tuning?

解析:

在實踐中,由於資料集不夠大,很少有人從頭開始訓練網路。常見的做法是使用預訓練的網路(例如在ImageNet上訓練的分類1000類的網路)來重新fine-tuning(也叫微調),或者當做特徵提取器。


以下是常見的兩類遷移學習場景:


1 卷積網路當做特徵提取器。使用在ImageNet上預訓練的網路,去掉最後的全連線層,剩餘部分當做特徵提取器(例如AlexNet在最後分類器前,是4096維的特徵向量)。這樣提取的特徵叫做CNN codes。得到這樣的特徵後,可以使用線性分類器(Liner SVM、Softmax等)來分類影象。


2 Fine-tuning卷積網路。替換掉網路的輸入層(資料),使用新的資料繼續訓練。Fine-tune時可以選擇fine-tune全部層或部分層。通常,前面的層提取的是影象的通用特徵(generic features)(例如邊緣檢測,色彩檢測),這些特徵對許多工都有用。後面的層提取的是與特定類別有關的特徵,因此fine-tune時常常只需要Fine-tuning後面的層。


預訓練模型 


在ImageNet上訓練一個網路,即使使用多GPU也要花費很長時間。因此人們通常共享他們預訓練好的網路,這樣有利於其他人再去使用。例如,Caffe有預訓練好的網路地址Model Zoo。


何時以及如何Fine-tune


決定如何使用遷移學習的因素有很多,這是最重要的只有兩個:新資料集的大小、以及新資料和原資料集的相似程度。有一點一定記住:網路前幾層學到的是通用特徵,後面幾層學到的是與類別相關的特徵。這裡有使用的四個場景:


1、新資料集比較小且和原資料集相似。因為新資料集比較小,如果fine-tune可能會過擬合;又因為新舊資料集類似,我們期望他們高層特徵類似,可以使用預訓練網路當做特徵提取器,用提取的特徵訓練線性分類器。


2、新資料集大且和原資料集相似。因為新資料集足夠大,可以fine-tune整個網路。


3、新資料集小且和原資料集不相似。新資料集小,最好不要fine-tune,和原資料集不類似,最好也不使用高層特徵。這時可是使用前面層的特徵來訓練SVM分類器。


4、新資料集大且和原資料集不相似。因為新資料集足夠大,可以重新訓練。但是實踐中fine-tune預訓練模型還是有益的。新資料集足夠大,可以fine-tine整個網路。


實踐建議


預訓練模型的限制。使用預訓練模型,受限於其網路架構。例如,你不能隨意從預訓練模型取出卷積層。但是因為引數共享,可以輸入任意大小影象;卷積層和池化層對輸入資料大小沒有要求(只要步長stride fit),其輸出大小和屬於大小相關;全連線層對輸入大小沒有要求,輸出大小固定。


學習率。與重新訓練相比,fine-tune要使用更小的學習率。因為訓練好的網路模型權重已經平滑,我們不希望太快扭曲(distort)它們(尤其是當隨機初始化線性分類器來分類預訓練模型提取的特徵時)。


55、請簡單解釋下目標檢測中的這個IOU評價函式(intersection-over-union)

解析:

在目標檢測的評價體系中,有一個引數叫做 IoU ,簡單來講就是模型產生的目標視窗和原來標記視窗的交疊率。


具體我們可以簡單的理解為:即檢測結果DetectionResult與真實值Ground Truth的交集比上它們的並集,即為檢測的準確率 IoU :


舉個例子,下面是一張原圖


640?wx_fmt=png


然後我們對其做下目標檢測,其DR = DetectionResult,GT = GroundTruth。


640?wx_fmt=png


黃色邊框框起來的是:

DR⋂GT

綠色框框起來的是:

DR⋃GT

不難看出,最理想的情況就是DR與GT完全重合,即IoU = 1。


題目來源:

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


福利時刻:為了幫助大家系統地學習機器學習課程的相關知識,我們特意推出了深度學習系列課程。

640?wx_fmt=gif640?wx_fmt=png


更多資訊

請戳一戳

640?wx_fmt=gif640?wx_fmt=jpeg


相關文章