我的损失值在最初几个epoch内是下降的,但随后开始上升,上升到某一点后停止变化。我认为现在它已经收敛了。那么,现在我们可以说我的模型出现了欠拟合吗?因为我的理解是(幻灯片93页 链接),如果我的损失值先下降然后上升,这意味着我设置的学习率过高,并且每2个epoch后我都在衰减学习率,所以在几个epoch后损失值停止上升,因为现在学习率已经很低了。由于我还在继续衰减学习率,根据幻灯片93页的解释,损失值应该会再次开始下降,因为学习率已经很低了,但实际上并没有。我们能说损失值不再进一步下降是因为我的模型出现了欠拟合吗?
回答:
总结来说,训练数据上的损失值表现如下:
- 首先下降
- 然后再次上升
- 接着保持在同一水平
- 然后学习率被衰减
- 但损失值并没有再次下降(在学习率衰减后仍然保持不变)
对我来说,这听起来像是最初的学习率设置得过高,导致模型随后陷入了一个局部最小值。在模型已经陷入局部最小值后再去衰减学习率,并不会帮助模型逃离这个最小值。将初始学习率设置得更低可能会更有益,这样可以避免一开始就陷入“坏”的局部最小值。
你的模型现在可能确实出现了欠拟合,使模型更加复杂(例如增加隐藏层的节点数)可能会有所帮助。不过,这也不一定是事实。
你使用了什么技术来避免过拟合吗?例如,正则化和/或dropout?如果使用了这些技术,那么在损失值下降之前(当损失值再次上升之前),你的模型可能最初是过拟合的。为了更好地了解发生了什么,除了绘制训练数据上的损失值之外,还应该绘制验证集上的损失值。如果训练数据上的损失值显著低于验证数据上的损失值,那么你就知道这是过拟合了。