【问题标题】:Why would a neural networks validation loss and accuracy fluctuate at first?为什么神经网络验证损失和准确性一开始会波动?
【发布时间】:2019-03-22 14:48:41
【问题描述】:

我正在训练一个神经网络,在训练开始时,我的网络损失和验证数据的准确性波动很大,但在训练结束时它会稳定下来。我正在降低这个网络的高原学习率。会不会是网络从高学习率开始,随着学习率的降低,准确率和损失都稳定下来了?

【问题讨论】:

    标签: machine-learning neural-network


    【解决方案1】:

    对于SGD,参数的变化量是学习率和参数值相对于损失的梯度的倍数。

    θ = θ − α ∇θ E[J(θ)]

    它采取的每一步都将处于次优方向(即稍微错误),因为优化器通常只看到一些值。在训练开始时,您相对于最优解,因此梯度 ∇θ E[J(θ)] 很大,因此每个次优步骤对您的损失和准确率都有很大影响.

    随着时间的推移,随着您(希望)越来越接近最优解,梯度会变小,因此步数会变小,这意味着稍微错误的影响会减弱。每一步的错误越小,您的损失减少越平滑,从而减少波动。

    【讨论】:

    • 对于adam 或rmsprop 等自适应优化器是否也是如此?另外,为什么验证会发生巨大变化,而不是培训?我假设因为优化器在次优方向上迈出了巨大的步伐以获得更好的训练结果,所以在测试验证集时它可能无法很好地泛化。
    • 是的:在其他优化器中使用动量和加权衰减通过平均更新步骤的方向来抑制这些波动。您的验证损失远大于训练损失。考虑应用一些正则化来防止过度拟合。 *不是真正的平均值,但我发现将平均值概念化更容易。
    猜你喜欢
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2017-08-31
    相关资源
    最近更新 更多