深度學習網路設計流程
阿新 • • 發佈:2018-12-18
Step 1:定義問題收集資料
- 確定問題是什麼:即輸入與預測分別是什麼;
- 確定分類問題:是二分類問題、多分類問題、標量回歸問題、向量迴歸問題, 還是多分類、多標籤、聚類、生成、強化學習等;
- 假設輸出是可以根據輸入進行預測的(排除不可預測問題,Eg: 根據夏裝銷量預測冬裝銷量的非平穩問題;)
- 假設資料包含足夠多資訊,足以學習出輸入和輸出的關係;
Step 2:選擇衡量成功的指標
觀測是否成功的標誌:
- 平衡分類問題:精度(accuracy)和接收者操作特徵曲線下面積(ROC AUC)?
- 類別不平衡問題:準確率(precision)和召回率(recall)
- 排序或多標籤分類:平均準確率均值(Mean Average Precision)
Step 3:確定評估方法
衡量當前進展(只選其一):
- 留出驗證集:資料量大時可以採用;
- 折交叉驗證:用於流出驗證樣本量太少;
- 重複的K折驗證:如果可用的資料很少,同時模型評估又需要非常準確;
Step 4:準備資料
知道訓練什麼、要優化什麼以及評估方法基礎上,格式化資料使其可以輸入到模型:
- 將資料處理為張量;
- 張量數值保持在較小範圍,比如 (0,1) (-1,1);
- 不同的特徵具有不同的取值範圍(異質資料),那麼應該做資料標準化;
- 對小資料問題,需要做特徵工程;
Step 5:開發比基準更好的模型
開發一個小模型,打敗純隨機基準(dumb baseline),獲得統計功效(Statistical power):
- 假設輸出是可以根據輸入進行預測的;
- 假設資料包含足夠多的資訊,足以學習輸入和輸出之間的關係;
構建
- 最後一層啟用函式:對網路的輸出進行限制;
- 損失函式:匹配要解決的問題的型別;
- 優化配置:使用的 優化器、學習率 【一般使用rmsprop與預設的學習率】
Step 6:擴大模型規模:開發過擬合的模型
獲得統計功效模型,判斷模型是否足夠強大,增加模型規模; (1)新增更多層; (2)讓每一層變得更大; (3)訓練更多的輪次; 出現過擬合後,準備正則化和調節模型;
Step 7:模型正則化與調節超引數
嘗試以下幾項,達到模型最佳效能: (1)新增 Dropout; (2)嘗試不同的架構:增加或減少層數; (3)新增 L1 和/或 L2 正則化; (4)嘗試不同的超引數(比如每層的單元個數或優化器的學習率),以找到最佳配置; (可選)反覆做特徵工程:新增新特徵或刪除沒有資訊量的特徵; 【驗證過程中,使用同一資料驗證模型效果,會出現模型對驗證過程過擬合,降低驗證過程的可靠性;】 最後開發出滿意的模型,在所有可用資料(訓練資料+驗證資料)訓練最終模型,並用測試資料評估;若結果不理想,表明驗證流程不可靠,可能需要更換可靠的評估方法,如重複的K折驗證;