训练损失在最初的几个时期减少,但突然跳到一个高值

Posted

技术标签:

【中文标题】训练损失在最初的几个时期减少,但突然跳到一个高值【英文标题】:training loss decrease at first several epochs but jump to a high value suddenly 【发布时间】:2019-08-05 21:29:43 【问题描述】:

我正在医疗数据集上训练 3D Unet。我试图在只有一个实例的小数据集上过度拟合模型。损失先减少,但突然上升到一个高值。我附上了下面的损失曲线。我在每个卷积层之后添加批量归一化,并在损失中添加 l2 正则化。 损失函数是加权的softmax交叉熵。 优化器是 Adam,初始学习率为 0.0001。 我想知道为什么损失不能稳定下来。这是否意味着损失函数过于平滑?

【问题讨论】:

【参考方案1】:

影响损失函数的因素有很多。正如您已经提到的,您更改了初始化权重的方式。其他因素可能是学习率、正则化因素、您正在使用的优化器类型。 虽然你已经提到了其中的一些。

有几点建议: 1.尝试使用dropout。 2. 尝试使用学习率和正则化的不同组合并绘制损失。

另外,我认为使用 Adam 优化器是个好主意。它确实提高了进程的速度。

归根结底,结果大多是经验性的,很大程度上取决于您的数据集。

【讨论】:

【参考方案2】:

我改变了初始化权重的方式。目前的训练过程非常稳定。该模型正在按预期收敛。

【讨论】:

以上是关于训练损失在最初的几个时期减少,但突然跳到一个高值的主要内容,如果未能解决你的问题,请参考以下文章

如何在训练期间在每个时期修改损失函数内的变量?

Tensorflow:损失减少,但准确度稳定

恢复具有不同损失功能的训练

GAN - 生成器损失减少,但鉴别器假损失在初始下降后增加,为啥?

损失函数正在减少,但度量函数保持不变?

通过分析损失曲线改进神经网络