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

时间:2014-03-04 18:00:04

标签: c# neural-network backpropagation mse

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

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

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

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

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

提前感谢您的时间!

1 个答案:

答案 0 :(得分:3)

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

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

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

检查此问题的第一个答案中的伪代码 whats is the difference between train, validation and test set, in neural networks?