3

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

所以,问题基本上是我对每个错误和计算它的方式感到困惑。

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

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

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

提前感谢时间!

4

1 回答 1

5

对于多个输出神经元,要计算训练误差,在每个时期/迭代中,您获取每个输出值,获取与该神经元目标值的差异。平方它,对其他输出神经元做同样的事情,然后得到平均值。所以例如有两个输出神经元,

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

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

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

于 2014-03-06T23:10:45.523 回答