2015-11-30 41 views
1

我已經實現了OCR的NN。我的計劃有很好的成功率,但最近(兩個月前)它的表現下降了23%。在分析數據後,我注意到圖像中出現了一些新的不規則現象(額外的扭曲,噪音)。換句話說,我需要學習一些新的數據,但也需要確保它不會忘記舊數據。爲了實現它,我對新老數據混合進行了NN訓練,並且我嘗試的非常複雜的功能是防止權重變化太大(最初我限制的變化不超過3%,但後來接受15%)。還有什麼可以做的,以幫助神經網絡不「忘記」舊數據?如何防止NN遺忘舊數據

回答

1

這是一個很好的問題,目前正在積極研究。

聽起來好像您的原始實現已經從其原始數據集過度學習,使其無法有效地概括新數據。有許多技術可以防止這種情況發生:

  1. 請確保您的網絡是仍然可以解決問題的最小尺寸。
  2. 使用某種形式的正則化技術。我最喜歡的一個(也是目前最受歡迎的研究人員)是退出技術。基本上每次你前進時,每個神經元都有一個返回0的機會,而不是典型的激活。其他常見的技術包括L1,L2和重量衰減。
  3. 玩你的學習常數。也許你的常數太高了。
  4. 最後繼續以你描述的方式進行訓練。創建所有數據點(新舊)的緩衝區,並隨機選擇隨機選擇的點進行訓練。這將有助於確保您的網絡不會落入本地最低限度。

就個人而言,我會嘗試這些技術之前,試圖限制神經元可以在每次迭代學習。如果您使用Sigmoid或Tanh激活,則0.5(sigmoid)或0(tanh)左右的值將具有較大的導數,並且將迅速改變,這是這些激活的優勢之一。要達到類似但不太突出的效果:玩你的學習常數。我不確定你的網絡的大小,或者你有的樣本數量,但是試試一個學習常數〜.01