神经网络训练过程的诊断

时间:2019-01-24 19:44:00

标签: optimization keras deep-learning autoencoder loss-function

我正在训练自动编码器DNN以解决回归问题。需要有关如何改进培训过程的建议。

训练样本的总数约为100,000。我使用Keras拟合模型,设置为validation_split = 0.1。训练后,我画出损失函数的变化,得到如下图。从这里可以看出,验证损失不稳定,平均值非常接近训练损失。

我的问题是:基于此,下一步我应该尝试改善培训过程的什么步骤?

[在2019年1月6日编辑] 网络体系结构的详细信息如下: 它具有1个包含50个节点的潜在层。输入和输出层分别具有1000个节点。隐藏层的激活是ReLU。损失函数是MSE。对于优化器,我将Adadelta与默认参数设置一起使用。我也尝试设置lr = 0.5,但是得到了非常相似的结果。数据的不同特征在-10和10之间缩放,平均值为0。

enter image description here

1 个答案:

答案 0 :(得分:0)

通过观察提供的图形,网络无法近似在输入和输出之间建立关系的函数。

  

如果您的功能过于多样化。如果其中一个较大,而其他一个具有很小的值,则应该对特征向量进行归一化。您可以阅读更多here

为获得更好的培训和测试结果,您可以按照以下提示进行操作,

  1. 使用小型网络。具有一个隐藏层的网络就足够了。
  2. 在输入以及隐藏层中执行激活。输出层必须具有线性函数。使用ReLU激活功能。
  3. 更喜欢小学习率,如0.001。使用RMSProp优化器。在大多数回归问题上都可以正常工作。
  4. 如果您不使用均方误差函数,请使用它。
  5. 尝试缓慢而稳定的学习,而不是快速学习。