2014-03-04 44 views
3

我正在開發一個程序來研究神經網絡,現在我理解將數據集劃分爲3組(訓練,驗證&測試)的區別(我猜)。根據數據集和問題,我的網絡可能只有一個輸出或多個輸出。學習算法是反向傳播。多輸出神經網絡中的訓練錯誤和驗證錯誤

所以,問題基本上是我對每個錯誤和計算方式感到困惑。

哪個是訓練錯誤?如果我想使用MSE,那麼(期望 - 輸出)^ 2?但是,如果我的網絡有2個或更多輸出,會發生什麼情況,訓練錯誤將會是所有輸出的總和?

然後,驗證錯誤只是使用驗證數據集來計算輸出並將獲得的結果與期望的結果進行比較,這會給我一個錯誤,它是否與訓練錯誤中的計算方法相同?並有多個輸出?

最後,不完全清楚,驗證何時應該運行?我在某處讀到它可能是每5個時代一次,但是,對此有什麼規定?

感謝提前的時間!

回答

2

對於多個輸出神經元,爲了計算訓練誤差,在每個曆元/迭代中,您取每個輸出值,得出與該神經元的目標值的差值。對其他輸出神經元做相同的處理,然後得到平均值。 所以例如具有兩個輸出神經元,

MSE =(| OP1 - targ1 |^2 + | OP2 - targ2 |^2)/ 2

培訓,計算的檢驗和測試錯誤的方式相同。不同之處在於它們運行的​​時間和使用方式。
完整的驗證集通常在每個培訓時期進行檢查。也許爲了加速計算,您可以每5次運行一次。
驗證測試/檢查的結果不用於更新權重,僅用於決定何時退出培訓。它用來決定網絡是否對數據進行了概括,而不是過度配置。

入住這個問題的第一個答案的僞
whats is the difference between train, validation and test set, in neural networks?

+0

感謝@andrelucas – gkapellmann

+0

你的答案是非常有用的。現在,如果在每個時期計算完整的驗證集,可以說我們有70個樣本要訓練,20個用於驗證,10個用於測試。所以一個時代將是70個訓練集+ 20個驗證集,對吧?現在,在每個時代,我將會有70個不同的訓練錯誤?還有20分鐘的熱火?或者我是否也計算了訓練誤差的平均值(平均值爲70)和驗證(平均值爲20),那些將是我的訓練錯誤和一個曆元的驗證錯誤? (我希望我能解釋我的問題) – gkapellmann

+1

不。在一個時代,你有一個訓練錯誤和一個驗證錯誤。他們在每個時代都會有所不同。訓練錯誤用於更新權重。驗證錯誤不是。它可以用來在適當的時候退出訓練,通常在兩個錯誤開始分歧的地方。這是爲了避免過度配合。再看看我給出的鏈接中的僞代碼。 – andrelucas