【问题标题】: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。

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

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