2010-01-27 23 views
1

将部分训练集作为验证数据的必要性很简单,但我不清楚如何以及在何种训练阶段进行训练?培训ANN时,验证数据在哪里?

它是否在训练结束时(达到训练数据的最低限度后)?如果是这样,如果验证数据存在很大的错误应该怎么办?

是否在整个培训过程中(在培训和验证数据的错误都不尽如人意的情况下继续寻找最低限度)?

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

回答

1

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

+0

过度训练警告系统我得到了部分正常的。问题是我该如何使用验证数据? – sold

+0

用于绘图。而你的“错误不令人满意”会产生一个反馈循环。 – Tobu

+0

那么,如果网络在验证中表现不佳,我该怎么办? – sold

1

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

  1. 训练网络为时代我在测试数据。让测试错误是e(t,i)。
  2. 在验证集上评估网络。让它成为e(v,i)。
  3. 如果e(v,i)> e(v,i-1)停止训练。否则,转至1.

所以它可以帮助你看,当网络overfits,这意味着它的模型测试数据的细节太多。这个想法是,用人工神经网络,你希望从训练数据到不可见的数据达到很好的泛化。验证集可以帮助您确定何时达到该点时,如果过于专注于训练数据。

+2

有时作为停止标准,我们在验证集上寻找连续X个不断恶化的错误,而不是在第一个错误后停止(以避免过度敏感) – Amro

+0

是的,您就在那里。 :) – bayer