【发布时间】:2022-01-25 15:42:42
【问题描述】:
我正在训练变形金刚。在我的许多设置中,我获得了如下所示的验证和训练损失:
然后,我知道我应该在 epoch 1 左右停止训练。但是训练损失非常高。这是一个问题吗?训练损失的价值真的意味着什么吗?
谢谢
【问题讨论】:
标签: pytorch huggingface-transformers transformer gpt-2 trainingloss
我正在训练变形金刚。在我的许多设置中,我获得了如下所示的验证和训练损失:
然后,我知道我应该在 epoch 1 左右停止训练。但是训练损失非常高。这是一个问题吗?训练损失的价值真的意味着什么吗?
谢谢
【问题讨论】:
标签: pytorch huggingface-transformers transformer gpt-2 trainingloss
您在描述overfitting:您的模型的表达能力太强了,它正在记忆训练数据,而不是学习可以泛化到验证数据的有用表示。
为了缓解这个问题,您应该对模型应用更强的正则化,以防止它记忆并引导它使用有用的表示。
正则化方法包括(但不限于):
【讨论】:
关于您的第一个问题 - 您的训练损失很高并不一定是个问题,因为对于被认为是高训练损失的情况没有阈值。这取决于您的数据集、您的实际测试指标和您的业务目标。
更具体地说,训练损失值的问题:
这个数字并不直观,因为损失目标是针对梯度下降优化的指标(即一个可微函数,通常是它的对数版本)。 您可能拥有面向最终目标的直观业务指标(例如精度、召回率),您应该使用这些指标来确定您的模型是否良好。
您的训练损失是根据训练数据集计算的,这并不总是代表一个好的模型,这可以从您发布的过度拟合模型中看出。您不应该使用这个数字来为模型的优劣做出决定。
这取决于您要达到的目标。 80%的准确率是高还是低?
关于您的第二个问题 - 从技术上讲,数字越大,模型在收敛方面的表现越差,因此您应该始终尝试降低它(同时考虑过拟合)。 相比之下,您可以说一个模型比另一个模型具有更高的损失,然后尝试多个超参数(例如,dropout、不同的优化器)以最小化验证集的分歧点。
【讨论】: