1

将训练集的一部分用作验证数据的需求很简单,但我不太清楚应该如何以及在训练的哪个阶段不使用它?

是在训练结束时(在达到训练数据的最小值之后)吗?如果是这样,如果验证数据出现大错误该怎么办?

是否在整个培训过程中(在培训和验证数据的错误都不令人满意时继续寻找最小值)?

无论我尝试什么,当验证集达到一定大小时,网络似乎都难以同时学习训练和验证(我记得在某处读到 70% 训练 30% 验证是一个常见比例,我陷入了困境小得多),而完全用于训练时学习相同的数据没有问题。

4

3 回答 3

1

验证数据集主要用于提前停止。

  1. 在测试数据上训练第 i 个时期的网络。设测试 eerror 为 e(t, i)。
  2. 在验证集上评估网络。让它成为e(v,i)。
  3. 如果 e(v, i) > e(v, i-1) 停止训练。否则转到 1。

因此,它可以帮助您查看网络何时过度拟合,这意味着它对测试数据的细节进行了过多建模。这个想法是,使用人工神经网络,您希望实现从训练数据到未见数据的良好泛化。验证集可帮助您确定何时达到该点时它过于专注于训练数据。

于 2010-01-28T09:46:10.567 回答
1

重要的是你的验证集必须没有关于训练的反馈。您可以在验证集上绘制错误率,但训练算法只能使用训练集上的错误率来进行自我纠正。

于 2010-01-27T18:17:08.003 回答
0

表示过度训练,我建议在训练期间检查验证集的 MSE,请参阅FannTool的过度训练警告系统 http://fanntool.googlecode.com/files/FannTool_Users_Guide.zip

于 2010-01-29T20:30:07.427 回答