Mah*_*asi 2 artificial-intelligence backpropagation
我有一个AI项目,它使用Backpropagation神经网络.
它训练了大约1个小时,并且已经训练了来自所有100个输入的60-70个输入.我的意思是,在反向传播的条件下,60-70输入是正确的.(受过训练的输入数量在60到70之间).
目前,已完成超过10000个时期,每个时期花费近0.5秒.
如果长时间离开它,如何知道神经网络是否能够成功训练?(或者它不能更好地训练?)
看看我对这个问题的回答:什么是神经网络中训练,验证和测试集之间的区别?
你应该使用3组数据:
验证数据集会告诉您何时应该停止(正如我在另一个答案中所述):
验证数据集用于最小化过度拟合.您没有使用此数据集调整网络的权重,您只是验证训练数据集的准确度的任何提高实际上都会提高准确性,而不是之前未向网络显示的数据集,或者至少网络没有接受过培训(即验证数据集).如果训练数据集的准确度增加,但是验证数据集的准确度保持不变或降低,那么你的神经网络就过度拟合,你应该停止训练.
一种好的验证方法是使用10倍(k倍)交叉验证.此外,还有一些特定的"策略"可用于将数据集拆分为培训,验证和测试.这本身就是一门科学,所以你也应该阅读它.
关于你对错误的评论,我会指出一些资源可以让你更好地理解神经网络(它有点数学,但请参阅下面的更多信息):
Colin Fahey文章第5.9节最好地描述了它:
向后错误传播公式:
神经网络输出的误差值使用以下公式计算:
Error = (Output - Desired); // Derived from: Output = Desired + Error;
Run Code Online (Sandbox Code Playgroud)
根据神经元体的输出和输出误差(由连接到神经元体的链节指定)调节神经元体中的误差累积.每个输出错误值以下列方式对错误累加器有贡献:
ErrorAccumulator += Output * (1 - Output) * OutputError;
Run Code Online (Sandbox Code Playgroud)