gpt4 book ai didi

python - 为什么训练期间损失曲线会出现大幅跳跃(向上)?

转载 作者:行者123 更新时间:2023-11-30 08:56:31 30 4
gpt4 key购买 nike

我已经训练了完全相同的模型(使用完全相同的训练数据集)两次,但结果非常不同,而且我对它们的损失曲线的行为感到困惑。

第一个实验的损失曲线(红色曲线)在第一个时期结束时突然上升,然后缓慢稳定下降。

enter image description here

但是,第二次实验的损失曲线(蓝色曲线)并没有任何跳跃,并且始终稳定下降以收敛。 20 epoch 后的损失比第一个实验低得多,并且我得到了非常好的质量输出。

enter image description here

我不知道是什么原因导致第一次出现如此大的跳跃。两个实验都使用相同的模型和训练数据集。

型号说明:我的项目是稀疏 View CT 图像重建。我的目标是通过在每次迭代中使用迭代方法+ CNN 来重建稀疏 View 图像。这与Chen提出的LEARN算法非常相似。

该过程包含 30 次迭代,在每次迭代中,我使用 CNN 来更好地训练正则化项。

由于我进行了 30 次迭代,并且每次迭代中都有 3+(我一直在尝试不同复杂的架构)CNN 层,因此我知道会有大量参数和层。

到目前为止,对于我测试过的所有 CNN 架构,“大跳跃”在每个架构中都发生得很常见。

训练数据由3600张512*512稀疏 View CT图像组成,测试数据由360张稀疏 View CT图像组成。

批量大小为 1,纪元 = 20。

更新:谢谢大家的建议。阅读完答案后,我开始思考梯度爆炸/消失问题。所以我将ReLU改为ELU,并将权重初始化从Xavier改为He,并添加了梯度裁剪。结果很好。我又运行了标准模型(与我上面提到的相同的模型)五次,它们都在稳步减慢。对于其他具有 CNN 拱门的模型,其损失也有所减少,并且没有发生重大罢工。

代码已经在每个时期开始时对训练数据集进行了改组。我下一步计划做的是添加批量归一化,并尝试 max_norm 正则化。

最佳答案

这将是对 @Anant 的类似回答,但以不同的方式表达。我通常更喜欢使用回溯方法来获得直觉。

  1. 已知:损失函数在第 110 纪元突然上升(我们假设)。
  2. 可能发生什么:
    • 在第 109 纪元,您设置的权重可能会导致 y_hat 出现偏差。

在深度神经网络的情况下,这可能是由于梯度爆炸/消失而发生的。您可能需要权重裁剪调整权重初始化,使权重更接近 1,从而减少爆炸的可能性。

另外,如果你的学习率很大,那么就会出现这样的问题。在这种情况下,您可以降低学习率或使用学习率衰减

关于python - 为什么训练期间损失曲线会出现大幅跳跃(向上)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58633177/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com