我正在使用Accord.Net训练一个ResilientBackpropagation神经网络,以便为一组特征进行评分。
这个网络非常简单,结构如下:
-
26个输入
-
1个隐藏层,包含3个节点
-
1个输出
我使用以下方式进行训练:
- SigmoidFunction
- 随机初始化
- 训练集3000个样本
- 验证集1000个样本
我的问题
如果我使用相同的参数运行训练5次,并在我的交叉验证集上验证网络,我会得到5个不同的F1分数,介于88-91%之间。因此,很难决定何时停止训练并采用最终算法。这是正常的吗?所以,如果我想部署,我需要运行训练X次,并在我认为达到最佳结果时停止吗?
回答:
神经网络的权重是随机初始化的,因此训练后会生成不同的网络,从而给出不同的性能。虽然训练过程是确定性的,但初始值不是!结果,你可能会陷入不同的局部最小值,或者在不同的地方停止。