我们可以在预训练的同一数据集上微调模型吗?

数据挖掘 机器学习 无监督学习 迁移学习
2022-02-23 02:22:17

所以我正在阅读这篇论文(关于预训练然后自我训练的用例),这让我开始思考——假设我在特定数据集上预训练了一个模型,然后在同一个数据集上再次对其进行微调

从理论上讲,如果我们将其预训练为蒙面 LM 并进行微调,可能会导致过度拟合——但我不确定。也许它不能很好地概括,但仍然会提高准确性?

有谁知道一些研究或其他可靠的来源来解释为什么或为什么不应该这样做?

此外,如果这确实可行/建议我们是否必须在Tensorflow、Keras 或 HuggingFace (基本上是任何深度学习框架或库)中采取一些额外的步骤才能这样做?

编辑:-一个简单的例子,我的意思是,如果我们有一个特定的监督任务,并且对我们要微调的相同特征进行预训练——这会提高准确性吗?

1个回答

在该论文的上下文中,在同一数据集上进行预训练然后微调并没有真正意义,因为预训练是无监督的,而微调是使用标记数据进行的。

但是,一般来说,如果你已经在数据集 X 上训练了 N 个 epoch,然后你使用整体微调了一个 epoch X,这只是说你训练了 N+1 个 epoch 的另一种方式。没有错,除非您在问题中指出,如果您在 N 个时期后开始过度拟合,那么您现在会更加过度拟合。

什么是有意义的,我们在生产模型中使用的东西是在一个大型数据集上进行初始训练,该数据集是 X1、X2、X3 等的组合。然后,一旦学习曲线开始趋于平稳,我们就复制模型,然后在例如 X1 上进行微调。

这是在 NLP Transformer 模型的背景下,因此可能对其他领域没有意义,但我们尝试对来自所有领域的尽可能多的数据进行初始训练,然后我们可能只对医学论文进行微调,或者只是经济报告,取决于模型的用途。(我们还对数据的一个子集进行了最后的微调,让它学习一种特定的风格。令人惊讶的是,即使只有这个最终微调的一个时期,它也可以切换到使用不同的方式例如,写数字。)