如何防止NN忘记旧数据

时间:2015-11-30 10:32:03

标签: neural-network neuroscience

我已经为OCR实施了NN。我的计划获得了相当多的成功认可,但最近(两个月前)它的表现下降了约23%。在分析数据后,我注意到图像中出现了一些新的不规则性(附加扭曲,噪声)。换句话说,我的nn需要学习一些新数据,但也需要确保它不会忘记旧数据。为了实现它,我训练NN混合了新旧数据,我尝试的非常棘手的功能是防止权重变化很大(最初我限制的变化不超过3%,但后来接受了15%)。还有什么可以做的,以帮助NN不要忘记"旧数据?

1 个答案:

答案 0 :(得分:1)

这是一个目前正在积极研究的一个很好的问题。

听起来好像你的原始实现已从其原始数据集中过度学习,使其无法有效地推广新数据。有许多技术可以防止这种情况发生:

  1. 确保您的网络是仍然可以解决问题的最小尺寸。
  2. 使用某种形式的正则化技术。我最喜欢的(也是当前研究人员最喜欢的)之一就是辍学技术。基本上每次你前进时,每个神经元都有百分之几的机会返回0而不是典型的激活。其他常见技术包括L1,L2和重量衰减。
  3. 玩你的学习常数。也许你的常数太高了。
  4. 最后按照你描述的方式继续训练。创建所有数据点(新旧)的缓冲区,并以随机顺序训练随机选择的点。这有助于确保您的网络不会降到当地最低限度。
  5. 我个人会在尝试限制神经元在每次迭代中学习的方法之前尝试这些技巧。如果使用Sigmoid或Tanh激活,则.5(sigmoid)或0(tanh)附近的值将具有较大的导数并且将快速变化,这是这些激活的优点之一。要达到类似但不那么突兀的效果:玩你的学习常数。我不确定你的网的大小,或你的样本数量,但尝试学习常数〜.01