将训练集的一部分用作验证数据的需求很简单,但我不太清楚应该如何以及在训练的哪个阶段不使用它?
是在训练结束时(在达到训练数据的最小值之后)吗?如果是这样,如果验证数据出现大错误该怎么办?
是否在整个培训过程中(在培训和验证数据的错误都不令人满意时继续寻找最小值)?
无论我尝试什么,当验证集达到一定大小时,网络似乎都难以同时学习训练和验证(我记得在某处读到 70% 训练 30% 验证是一个常见比例,我陷入了困境小得多),而完全用于训练时学习相同的数据没有问题。
将训练集的一部分用作验证数据的需求很简单,但我不太清楚应该如何以及在训练的哪个阶段不使用它?
是在训练结束时(在达到训练数据的最小值之后)吗?如果是这样,如果验证数据出现大错误该怎么办?
是否在整个培训过程中(在培训和验证数据的错误都不令人满意时继续寻找最小值)?
无论我尝试什么,当验证集达到一定大小时,网络似乎都难以同时学习训练和验证(我记得在某处读到 70% 训练 30% 验证是一个常见比例,我陷入了困境小得多),而完全用于训练时学习相同的数据没有问题。
验证数据集主要用于提前停止。
因此,它可以帮助您查看网络何时过度拟合,这意味着它对测试数据的细节进行了过多建模。这个想法是,使用人工神经网络,您希望实现从训练数据到未见数据的良好泛化。验证集可帮助您确定何时达到该点时它过于专注于训练数据。
重要的是你的验证集必须没有关于训练的反馈。您可以在验证集上绘制错误率,但训练算法只能使用训练集上的错误率来进行自我纠正。
表示过度训练,我建议在训练期间检查验证集的 MSE,请参阅FannTool的过度训练警告系统 http://fanntool.googlecode.com/files/FannTool_Users_Guide.zip