fbpx

如何優化神經網路?

原文 : How To Optimise A Neural Network?

简体中文版

當我們解決一個涉及到神經網路的業界問題時,我們經常以糟糕的效能告終。 本篇將給你關於應該做什麼,可以提高效能的建議。

是否你的模型彌合不足( underfitting )還是過度彌合( overfitting )?

你必須將輸入資料集分成兩部分 – 培訓和測試。 一般做法是 80% 用於培訓, 20% 用於測試。

你應該用訓練集來訓練你的神經網路,用測試集來測試。 這聽起來像是常識,但我們經常跳過它。

將模型的效能(迴歸情況下的 MSE 和分類情況下的 accuracy / f1 /  recall  / precision )與訓練集和測試集進行比較。

如果它在測試和訓練都表現不好,它就是彌合不足; 如果它在訓練集中表現很好,但在測試集中表現不好,它就是過度彌合。

如果是彌合不足

如果測試集上的效能在迭代或時期(完整資料集通過神經網路一次並返回一次)中不斷提高,那麼這意味著你需要增加迭代 / 時期。 如果花費的時間太多,你可能需要使用 GPUs。 你也可以嘗試新增一個優化器,比如 Adam,而不是只新增普通的梯度下降法( Gradient Descent )。

如果表現沒有改善,這意味著你有一個真正的彌合不足的情況。 在這種情況下,有三種可能性:

  1. 資料不足
  2. 資料間沒有相關性 – 隨機資料
  3. 你需要一個更好的模型

如果資料不足,你可以做以下事情:

  • 你可以生成更多的資料。 這就是所謂的資料增強( data augmenting )。 例如,你可以從不同的角度拍攝更多的照片,你可以重新調整一下它們的形狀,安裝更多的色彩濾鏡,從邊框上去掉一些畫素等等
  • 你可以從網際網路上下載類似的資料。 假設你想建立一個神經網路來識別你辦公室裡的面孔。 你可以下載更多來自世界各地的人臉圖片,然後首先在這些人臉上訓練模型,然後使用你辦公室的人臉來訓練模型
  • 你可以下載一個預先訓練好的神經網路,在它上面加一層,然後用你的資料進一步訓練它

如果資料間沒有相關性,就不能做很多事情。 你可以重新檢查標籤( label )。 一個常見的錯誤是標籤不批配。 假設有兩個檔案,一個包含特徵,另一個包含標籤,而這兩個檔案的順序不同,或者我們只跳過一行,這兩種情況都會導致標籤不匹配。 因此,重新檢查標籤是否與特徵的順序相同。 此外,如果資料有問題,請與資料收集團隊聯絡。

最後一種需要改進模型的情況是最困難的。 對於神經網路,你可以這樣做:

  • 新增更多層( layers )
  • 增加更多的神經元以達到完全連線 / 密集層 ( layers )但偏好增加較多的神經元到正在增加的神經元上
  • 加更多的過濾器
  • 嘗試不同的步伐( strides )
  • 新增 RELU,如果你還沒有使用它
  • 如果你有遞減( diminishing )或激增梯度( exploding gradients )的問題
    • 使用批量標準化( batch normalization )
    • 嘗試使用 xavier_initializer 或其他啟發法( heuristics )初始化權重
    • 同時,嘗試梯度裁剪( gradient clipping )
  • 使用最小最大縮放或標準化做特徵的規格化
  • 也試著將標籤標準化。 雖然不建議一開始就使用

如果過度彌合

如果你注意到你的模型是過度彌合,你應該做正規化( regularization ),並且確保你在每次迭代中都改組訓練集,這樣每個批次每次都是不同的。

為了正規化,你可以使用 L1 或 L2 規格化( normalization )或丟包( dropout )層。

這些是我的快速筆記。 歡迎隨時回饋指教。

CLOUD x LAB 的實驗室功能介紹

Soft&Share 為 Cloudxlab 聯盟,獲授權翻譯 CloudxLab 上所有資訊

 歡迎使用 e-mail 訂閱 Soft & Share 

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料

Powered by WordPress.com.

Up ↑

%d 位部落客按了讚: