深度學習網絡設計流程

Step 1:定義問題收集數據

  1. 確定問題是什麼:即輸入與預測分別是什麼;
  2. 確定分類問題:是二分類問題、多分類問題、標量回歸問題、向量迴歸問題, 還是多分類、多標籤、聚類、生成、強化學習等;
  3. 假設輸出是可以根據輸入進行預測的(排除不可預測問題,Eg: 根據夏裝銷量預測冬裝銷量的非平穩問題;)
  4. 假設數據包含足夠多信息,足以學習出輸入和輸出的關係;

Step 2:選擇衡量成功的指標

觀測是否成功的標誌:

  • 平衡分類問題:精度(accuracy)和接收者操作特徵曲線下面積(ROC AUC)?
  • 類別不平衡問題:準確率(precision)和召回率(recall)
  • 排序或多標籤分類:平均準確率均值(Mean Average Precision)

Step 3:確定評估方法

衡量當前進展(只選其一):

  • 留出驗證集:數據量大時可以採用;
  • 折交叉驗證:用於流出驗證樣本量太少;
  • 重複的K折驗證:如果可用的數據很少,同時模型評估又需要非常準確;

Step 4:準備數據

知道訓練什麼、要優化什麼以及評估方法基礎上,格式化數據使其可以輸入到模型:

  1. 將數據處理爲張量;
  2. 張量數值保持在較小範圍,比如 (0,1) (-1,1);
  3. 不同的特徵具有不同的取值範圍(異質數據),那麼應該做數據標準化;
  4. 對小數據問題,需要做特徵工程;

Step 5:開發比基準更好的模型

開發一個小模型,打敗純隨機基準(dumb baseline),獲得統計功效(Statistical power):

  • 假設輸出是可以根據輸入進行預測的;
  • 假設數據包含足夠多的信息,足以學習輸入和輸出之間的關係;

構建

  • 最後一層激活函數:對網絡的輸出進行限制;
  • 損失函數:匹配要解決的問題的類型;
  • 優化配置:使用的 優化器、學習率 【一般使用rmsprop與默認的學習率】

Step 6:擴大模型規模:開發過擬合的模型

獲得統計功效模型,判斷模型是否足夠強大,增加模型規模;
(1)添加更多層;
(2)讓每一層變得更大;
(3)訓練更多的輪次;
出現過擬合後,準備正則化和調節模型;

Step 7:模型正則化與調節超參數

嘗試以下幾項,達到模型最佳性能:
 (1)添加 Dropout;
 (2)嘗試不同的架構:增加或減少層數;
 (3)添加 L1 和/或 L2 正則化;
 (4)嘗試不同的超參數(比如每層的單元個數或優化器的學習率),以找到最佳配置;
 (可選)反覆做特徵工程:添加新特徵或刪除沒有信息量的特徵;
 【驗證過程中,使用同一數據驗證模型效果,會出現模型對驗證過程過擬合,降低驗證過程的可靠性;】
 
最後開發出滿意的模型,在所有可用數據(訓練數據+驗證數據)訓練最終模型,並用測試數據評估;若結果不理想,表明驗證流程不可靠,可能需要更換可靠的評估方法,如重複的K折驗證;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章