簡體   English   中英

神經網絡訓練期間什么時候應該調用反向傳播算法?

[英]When should Back-propagation algorithm be called during Neural Network training?

我有一個有效的反向傳播算法,當在相同的奇異輸入上迭代 100,000 次時,它可以正確地最小化錯誤,例如 [1, 0] -> 1。

但是當有多個輸入時,我不確定如何擴展它來訓練神經網絡。

假設我們希望訓練 XOR 函數,具有四種可能的輸入和輸出狀態:

[ 0, 0 ] -> 0

[ 0, 1 ] -> 1

[ 1, 0 ] -> 1

[ 1, 1 ] -> 0

我嘗試在每個輸入輸出測試數據之后調用反向傳播算法。 即使經過大量迭代,網絡也根本不會以這種方式學習。

在調用反向傳播之前,我是否應該計算整個訓練集(即上述 4 種情況)的累積誤差?

在這個例子中,累積的錯誤如何存儲和用於整個訓練集?

謝謝你。

每個示例后的更新和累積版本都是正確的。 他們只是實現了兩種略有不同的算法,更新每一步將使其成為 SGD(隨機梯度下降),而另一個 GD(梯度下降)。 你也可以在兩者之間做一些事情,在那里你更新每一批數據。 您描述的問題(缺乏學習)與更新發生時無關。

請注意,“正確學習”一個樣本並不意味着您擁有無錯誤的算法! 如果您只有一個樣本,那么您只調整最后一層的偏差的網絡應該能夠這樣做,但會失敗。 這只是可以打破但通過“單樣本測試”的一個例子。

如果您的模型是單層網絡,它將無法學習 XOR 函數,因為它是線性不可分的。 如果它有多個層,您應該累積所有錯誤並按所有樣本的總數(在您的情況下為 4)對它們進行歸一化。 最后,你的問題的主要原因可能是由於高學習率導致參數變化太大。 嘗試降低學習率並增加迭代次數。 請參閱https://medium.com/analytics-vidhya/understanding-basics-of-deep-learning-by-solving-xor-problem-cb3ff6a18a06以供參考。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM