持续预训练与使用 MLM 微调语言模型
Posted
技术标签:
【中文标题】持续预训练与使用 MLM 微调语言模型【英文标题】:Continual pre-training vs. Fine-tuning a language model with MLM 【发布时间】:2021-09-28 08:09:08 【问题描述】:我有一些自定义数据想用于进一步预训练 BERT 模型。到目前为止,我已经尝试了以下两种方法:
-
从预训练的 BERT 检查点开始,然后使用 Masked Language Modeling (
MLM
) + Next Sentence Prediction (NSP
) 头继续预训练(例如,使用 BertForPreTraining 型号)
从具有 MLM
目标的预训练 BERT 模型开始(例如,使用 BertForMaskedLM 模型,假设我们不需要 NSP 进行预训练部分。)
但我仍然感到困惑的是,如果使用 BertForPreTraining 或 BertForMaskedLM 实际上对 BERT 进行了持续的预训练,或者这些只是用于微调的两个模型分别使用 MLM+NSP 和 MLM 来微调 BERT。使用 MLM+NSP 微调 BERT 或使用这两个头不断预训练它之间有什么区别吗?或者这是我们需要测试的东西?
我已经查看了类似的问题,例如 this one,但我仍然想确保从技术上讲,从初始检查点持续预训练模型和使用相同的目标/头部对其进行微调之间是否存在差异.
【问题讨论】:
【参考方案1】:答案只是所用术语的不同。当模型在大型通用语料库上进行训练时,称为“预训练”。当它适应特定的任务或数据集时,它被称为“微调”。
从技术上讲,在任何一种情况下(“预训练”或“微调”),都会更新模型权重。
例如,通常,您可以只采用预训练模型,然后针对特定任务(例如分类、问答等)对其进行微调。但是,如果您发现目标数据集来自特定领域,并且您有一些未标记的数据可能有助于模型适应特定领域,那么您可以进行 MLM 或 MLM+NSP 的“微调”(无监督学习)(一些研究人员确实将其称为“预训练”,尤其是当使用庞大的语料库来训练模型时),然后使用目标语料库和目标任务微调。
【讨论】:
我还得出结论,这更像是术语使用上的差异。 有没有人有一个脚本可以从检查点使用 MLM 和 NSP 进行持续预训练?以上是关于持续预训练与使用 MLM 微调语言模型的主要内容,如果未能解决你的问题,请参考以下文章
使用 Simple Transformers 微调预训练的语言模型
《自然语言处理实战入门》深度学习 ---- 预训练模型的使用(ALBERT 进行多标签文本分类与CPU 下的微调 fine tune)