神经网络训练过程诊断

Posted

技术标签:

【中文标题】神经网络训练过程诊断【英文标题】:diagnosis on training process of neural network 【发布时间】:2019-06-18 15:15:55 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

为了获得更好的训练和测试结果,您可以遵循这些提示,

    使用小型网络。一个隐藏层的网络就足够了。 在输入层和隐藏层中执行激活。输出层必须具有线性函数。使用 ReLU 激活函数。 更喜欢小的学习率,比如 0.001。使用 RMSProp 优化器。它适用于大多数回归问题。 如果您不使用均方误差函数,请使用它。 尝试缓慢而稳定的学习,而不是快速学习。

【讨论】:

我实际上是在训练一个自动编码器。它有 50 个节点的 1 个潜在层。输入和输出层有 1000 个节点。隐藏层的激活是 ReLU。对于优化器,我使用带有默认参数设置的 Adadelta。我也尝试设置 lr=0.5,但得到了非常相似的结果。数据的不同特征在 -10 和 10 之间缩放,平均值为 0。非常欢迎您基于此架构的 cmets。我在问题中添加了网络架构的细节。 尝试将学习率降低到 0.001。并对特征进行归一化(范围从 0 到 1 )。

以上是关于神经网络训练过程诊断的主要内容,如果未能解决你的问题,请参考以下文章

DBN分类基于matlab深度置信网络DBN变压器故障诊断含Matlab源码 2284期

如何诊断长短期记忆网络模型的过拟合和欠拟合?

中科大利用神经网络端到端训练

故障诊断分析基于matlab BP神经网络三相逆变器故障诊断研究含Matlab源码 1736期

论文研读《Highly Accurate Machine Fault Diagnosis Using Deep Transfer Learning》采用深度转移学习的高精度机械故障诊断——2019

电路仿真基于matlab BP神经网络三相逆变器故障诊断含Matlab源码 1655期