多输出神经网络中的训练误差和验证误差



我正在开发一个研究神经网络的程序,现在我已经了解了将数据集划分为3组(训练、验证和测试)的区别(我想)。我的网络可能只有一个输出,也可能有多个输出,这取决于数据集和问题。学习算法是反向传播。

所以,问题基本上是我对每个错误和计算方法都感到困惑

哪一个是训练错误?如果我想使用MSE是(期望的输出)^2?但是,如果我的网络有2个或更多输出,训练误差将是所有输出的总和,会发生什么?

那么,验证错误只是使用验证数据集来计算输出,并将获得的结果与期望的结果进行比较,这会给我一个错误,它的计算方式与训练错误相同吗?并且具有多个输出?

最后,还不完全清楚的是,验证应该在什么时候运行?在某个地方,我读到它可能是每5个时代一次,但是,这有什么规则吗?

感谢提前的时间!

对于多个输出神经元,为了计算训练误差,在每个epoch/迭代中,您获取每个输出值,得到该神经元与目标值的差值。平方它,对其他输出神经元做同样的操作,然后得到平均值。例如,有两个输出神经元,

MSE=(|op1-targ1|^2+|op2-targ2|^2)/2

训练、验证和测试误差的计算方法相同。不同之处在于它们的运行时间和使用方式
通常在每个训练时期检查完整的验证集。也许为了加快计算速度,你可以每5次运行一次。
验证测试/检查的结果不用于更新权重,只用于决定何时退出训练。它用于决定网络是否对数据进行了泛化,而不是过度拟合。

检查这个问题的第一个答案中的伪代码
在神经网络中,训练、验证和测试集之间的区别是什么?