在训练卷积神经网络开始时的高训练误差

时间:2016-03-15 20:28:22

标签: image-processing neural-network conv-neural-network recurrent-neural-network biological-neural-network

在卷积神经网络中, 我正在培训CNN,在培训过程中,特别是在训练开始时,我得到了极高的训练错误。之后,此错误开始缓慢下降。在大约500个时期之后,训练误差接近零(例如0.006604)。然后,我采用最终获得的模型来测量其对测试数据的准确性,我得到了大约89.50%。 这看起来很正常吗?我的意思是在训练过程的一开始就获得很高的训练错误率。 我想提到的另一件事是,我注意到每当我减少隐藏节点的数量时,结果在训练结束时变得更好。

我的CNN结构是:

 config.forward_pass_scheme = {'conv_v', 'pool', 'conv_v', 'pool', 'conv_v', 'pool', 'conv_v','full', 'full', 'full', 'out'};

以下是我的一些超级参数:

  config.learning_rate = 0.01;
  config.weight_range = 2;
  config.decay = 0.0005;
  config.normalize_init_weights = 1;
  config.dropout_full_layer = 1;
  config.optimization = 'adagrad';

我们非常感谢您对此方面的帮助和建议,并提前感谢您。

2 个答案:

答案 0 :(得分:1)

如果在完全连接(fc)层中有大量隐藏单元且没有足够的训练数据,则网络将过度匹配到训练集。卷积层不太容易过度拟合,因为它们具有较少的参数。减少fc层中隐藏单元的数量可以减少过度拟合。为了调整这些超参数(如fc层中隐藏节点的数量),使用验证集,以便模型在测试集上提供良好的性能。虽然辍学有助于减少fc图层中的过度拟合,但如果添加太多隐藏单位可能还不够。

是的,一开始,预计训练误差会很高。 CNN使用随机优化进行训练,因此学习参数需要一些时间。

答案 1 :(得分:0)

隐藏的层/神经元越多,NN中的权重就越多。它意味着更多参数来模拟您的问题。因此,添加神经元/层可以提供更好的学习。

另一方面,训练更多的重量意味着更多的过度拟合风险。确保你的训练集中至少有5倍的样本,你的NN中有权重。

另一种防止过度拟合的解决方案是使用辍学。

顺便说一句,您使用哪个库?