1. 程式人生 > >深度學習網路設計流程

深度學習網路設計流程

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折驗證;