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

gka*_*ann 3 c# backpropagation mse neural-network

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

因此,问题基本上是让我对每个错误及其计算方法感到困惑。

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

然后,验证错误只是使用验证数据集来计算输出,并将获得的结果与所需结果进行比较,这会给我带来错误,它的计算方法与训练错误中的计算方法相同吗?并有多个输出?

最后,不清楚的是,验证何时开始运行?我在某处读到它可能每5个周期出现一次,但是,对此有任何规定吗?

提前感谢时间!

and*_*cas 5

对于多个输出神经元,要计算训练误差,请在每个时期/迭代中获取每个输出值,并获得与该神经元目标值的差。将其平方,对其他输出神经元执行相同的操作,然后获得均值。例如,有两个输出神经元

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

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

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

  • 不会。在一个时期中,您会遇到一个训练错误和一个验证错误。在每个时期它们都会有所不同。训练错误用于更新权重。验证错误不是。它通常可以在两个错误开始发散的适当位置用于退出训练。这是为了避免过度拟合。再看看我给出的链接中的伪代码。 (2认同)