2010-01-27 24 views
1

將部分訓練集作爲驗證數據的必要性很簡單,但我不清楚如何以及在何種訓練階段進行訓練?培訓ANN時,驗證數據在哪裏?

它是否在訓練結束時(達到訓練數據的最低限度後)?如果是這樣,如果驗證數據存在很大的錯誤應該怎麼辦?

是否在整個培訓過程中(在培訓和驗證數據的錯誤都不盡如人意的情況下繼續尋找最低限度)?

無論我嘗試什麼,似乎網絡在驗證集合達到一定大小時都難以學習訓練和驗證(我記得在某處閱讀70%培訓30%驗證是一個常見比例,我被困在一個更小的一個),而完全用於訓練時學習相同的數據沒有問題。

回答

1

重要的是您的驗證集必須對培訓沒有反饋。您可以在驗證集上繪製錯誤率,但訓練算法只能使用訓練集上的錯誤率自行糾正。

+0

過度訓練警告系統我得到了部分正常的。問題是我該如何使用驗證數據? – sold

+0

用於繪圖。而你的「錯誤不令人滿意」會產生一個反饋循環。 – Tobu

+0

那麼,如果網絡在驗證中表現不佳,我該怎麼辦? – sold

1

驗證數據集主要用於提前停止。

  1. 訓練網絡爲時代我在測試數據。讓測試錯誤是e(t,i)。
  2. 在驗證集上評估網絡。讓它成爲e(v,i)。
  3. 如果e(v,i)> e(v,i-1)停止訓練。否則,轉至1.

所以它可以幫助你看,當網絡overfits,這意味着它的模型測試數據的細節太多。這個想法是,用人工神經網絡,你希望從訓練數據到不可見的數據達到很好的泛化。驗證集可以幫助您確定何時達到該點時,如果過於專注於訓練數據。

+2

有時作爲停止標準,我們在驗證集上尋找連續X個不斷惡化的錯誤,而不是在第一個錯誤後停止(以避免過度敏感) – Amro

+0

是的,您就在那裏。 :) – bayer