我有一个AI项目,它使用Backpropagation神经网络。
训练约1小时,并且训练了来自所有100个输入的60-70个输入。我的意思是,在反向传播的条件下,60-70输入是正确的。 (受过训练的输入数量在60到70之间)。
目前,已经完成了10000多个时期,每个时代花了将近0.5秒。
如果长时间离开它,如何知道神经网络是否可以成功训练? (或者它不能更好地训练?)
答案 0 :(得分:7)
查看我对此问题的回答:whats is the difference between train, validation and test set, in neural networks?
您应该使用3组数据:
验证数据集告诉您何时应停止(正如我在另一个答案中所述):
验证数据集用于最小化过度拟合。你不是 用这个数据集调整网络的权重,你就是这样 验证培训数据集的准确性是否有所提高 实际上,相对于没有的数据集,准确度会提高 之前已经向网络展示过,或者至少网络没有展示过 对其进行培训(即验证数据集)。 如果准确度超过 训练数据集增加,但准确性超过验证 数据集保持不变或减少,那么你就是过度拟合了 神经网络,你应该停止训练。
一种好的验证方法是使用10-fold (k-fold) cross-validation。此外,还有一些特定的“策略”可用于将数据集拆分为培训,验证和测试。这本身就是一门科学,所以你也应该阅读它。
关于你对错误的评论,我会指出一些资源,可以让你更好地理解神经网络(它有点数学,但请参阅下面的更多信息):
Section 5.9 of Colin Fahey article最能说明这一点:
向后错误传播公式:
神经网络输出的误差值使用以下公式计算:
Error = (Output - Desired); // Derived from: Output = Desired + Error;
根据神经元体的输出和输出误差(由连接到神经元体的链路指定)调整神经元体中的误差累积。 每个输出错误值以下列方式对错误累加器有所贡献:
ErrorAccumulator += Output * (1 - Output) * OutputError;