我们正在为具有六个标签的序列标记任务训练一个 BERT 模型(使用 Huggingface 库):五个标签表示一个标记属于我们感兴趣的类别,一个标签表示该标记不属于任何类别.
一般来说,这很有效:损失随着每个时期而减少,我们得到了足够好的结果。但是,如果我们在测试集上的每个 epoch 之后计算精度、召回率和 f-score,我们会发现它们波动很大。我们训练了 1000 个 epoch。在 100 个 epoch 之后,性能似乎已经趋于平稳。在过去的 900 个 epoch 中,精度不断跃升至 0.677 到 0.709 之间看似随机的值;召回在 0.729 和 0.798 之间。该模型似乎并没有稳定下来。为了缓解这个问题,我们已经尝试了以下方法:
- 我们增加了测试数据集的大小。
- 我们尝试了不同的学习率和批量大小。
- 我们使用了 Huggingface 库中的不同变压器模型,例如 RoBERTa、GPT-2 等。这些都没有帮助。
有人对我们可以在这里做什么有任何建议吗?我们如何选择“最佳模型”?目前,我们选择在测试集上表现最好的那个,但我们不确定这种方法。