1. 程式人生 > >讀書筆記--深度學習常用面試問題總結

讀書筆記--深度學習常用面試問題總結

深度學習面試問題總結

1.常問問題

1) 什麼是過擬合:過擬合是對訓練樣本過度描述,使得模型的繁華能力很弱,對於訓練樣本能獲得很好的效果,但是在測試樣本上的表現很差。

2) 如何解決過擬合問題:解決過擬合問題的主要方式是增加模型的普適性,在訓練中的體現就是需要包含各種樣本情況,使得模型訓練的結果更加具有普適性。具體有:

  • 增加樣本的數量(或是增加噪聲,樣本本就不是無限多的,所以可以對原始樣本集做旋轉平移變化以及新增噪聲資料。這使得模型可以適應各類環境下的目標,增加其泛化效能);

  • 通過dropout的操作每次隨機忽略某些層的not,目的在於隨機改變模型的結構,從而使得模型的計算結果在一定範圍內波動,但是平均值是不變的;

  • 選擇合適的模型,模型越深效果越好,但是越容易發生過擬合的情況;

  • 對權重進行正則化,將權重大小加到loss函式中Loss=Loss+reg(wi)其中reg(wi)分為L1正則和L2正則:

L1=λni=0n|wi|
L2=λ2ni=0nwi2
通過對loss進行加權操作,因此在反向傳播時全值的計算結果變小:
w=wηδc0δw
w=(1ηλn)wηδc0δw
(1η
λn)
小於1所以導致權重衰減,其目的時為了減少倒數過大的數量(緩解過擬合曲線的走勢,使其平滑)
  • 準確率不再增加時停止訓練,以防止訓練過度導致過擬合問題。
  • 使用btach_normalization,

3)全連線層的作用:將提取的資料特徵從一個特徵空間對映到另一個特徵空間,多數時候全連線層都被作為分類器。由於全連線成的引數很多,所以目前的趨勢是使用卷積層代替全連線層。

4)啟用函式的作用和原因:啟用函式通常使用非線性函式,以增加模型的非線性,以此來提高擬合結果的泛化性。

5)卷積操作後輸出的矩陣形狀:

oup
tutw=(imagew+2pad+kernelstride)+1

ouptuth=(imageh+2pad+kernelstride)+1

6)pooling 池化操作的作用:
- 對資料進行降維,減少引數的數量。
- 加強影象特徵的不變性,使得模型的泛化能力提高。

7)為什麼使用softmax而不是傳統svm作為最後的分類器:對於資料的變動softmax比svm敏感,並且softmax是軟分類svm是硬分類。

2.調優問題

1)資料集的注意事項:
- 需要對資料進行擴充套件,可以通過增加噪點、增白、減少畫素、旋轉平移變換、模糊等操作。
- 資料進入模型時先進行shuffle處理,每個epoch都進行shuffle效果會更好。
- 使用大資料訓練模型前,先使用小資料集對模型進行訓練,保證模型在小資料集上可以過擬合,再用大資料集進行訓練。
- 小圖片最好不要設定過大的步長,否則下采樣過度導致資訊丟失嚴重。
- 每個batch_size應該時128或256,如果記憶體不夠可以適當減小。學習率應該是0.005或0.01左右,建議採用線性衰減。

2)卷積模型訓練注意事項:
- 模型層數過高時,應該使用dropout降低模型過擬合的概率。
- 儘量使用relu或prelu啟用函式,以避免傳統啟用函式帶來的梯度消失和梯度爆炸等問題。

3.NIN模型

1)NIN(Network in network),使用1*1的卷積核連結再傳統的卷積網路上形成mlponv(感知機卷積層)或cccp層。以使得網路再初級階段就具有較高的特徵提取能力,以此提升整體模型的模型表達能力。

2)mlp的作用是通過將提取的低階特徵組合成複雜的組,以此增加捲積的特徵有效性。