2015-04-06 61 views
1

你能幫我一個神經網絡嗎?反向傳播:何時更新權重?

如果我有一個任意的數據集:

+---+---------+---------+--------------+--------------+--------------+--------------+ 
| i | Input 1 | Input 2 | Exp.Output 1 | Exp.Output 2 | Act.output 1 | Act.output 2 | 
+---+---------+---------+--------------+--------------+--------------+--------------+ 
| 1 | 0.1 | 0.2 |  1  |  2  |  2  |  4  | 
| 2 | 0.3 | 0.8 |  3  |  5  |  8  |  10  | 
+---+---------+---------+--------------+--------------+--------------+--------------+ 

比方說,我有不同的神經元的不同類型的每次激活功能X隱藏層。

當運行反向傳播(特別是iRprop +)時,我何時更新權重?在計算數據集中的每一行後,我會更新它們嗎?

我讀過批量學習通常沒有「在線」培訓那麼高效。這意味着最好在每行之後更新權重,對吧?

我的理解是否正確:一個時代就是當你在輸入數據集中的每一行循環時?如果是這樣,那意味着在一個時代,權重會被更新兩次?

然後,總的網絡錯誤(見下文)在哪裏起作用?

[image,從here]


TL;博士: 請幫幫我瞭解如何backprop工作

回答

0

通常情況下,你會在數據中的每個例子之後更新權重設置(我認爲這是你的意思是每一行)。因此,對於每個示例,您都會看到神經網絡認爲輸出應該是什麼(將每個神經元的輸出存儲在過程中),然後傳回錯誤。因此,從最終輸出開始,將ANN的輸出與實際輸出(數據集應該是什麼)進行比較,並根據學習速率更新權重。

學習率應該是一個很小的常量,因爲您正在爲每個示例更正權重。在數據集中每個例子都是一個迭代,通過

+0

葉,「每行」,我的意思是每個例子。那麼在這裏的簡單數據集中,我有兩個例子? 因此,每個時代,權重將被更新n次,其中n =示例的數量,對吧? – Mierzen

+0

如果我然後更新每行的權重,並且我想繪製網絡的錯誤(那麼我可以看到錯誤會降低,希望),我會繪製哪個錯誤?每個例子的錯誤? – Mierzen

+0

您可以將誤差平均在每個時期並查看總體趨勢。 – zcleghern