在小型自定义语料库上预训练语言模型

时间:2020-04-24 19:38:46

标签: deep-learning transfer-learning huggingface-transformers language-model bert-language-model

我很好奇是否可以在文本生成中使用转移学习,然后对特定类型的文本进行重新训练/预训练。

例如,具有一个预先训练的BERT模型和一小块医学(或任何“类型”)文本的语料库,可以制作一种能够生成医学文本的语言模型。前提是您没有大量的“医学文献”,这就是为什么您必须使用迁移学习的原因。

将其放入管道中,我将其描述为:

  1. 使用预训练的BERT令牌生成器。
  2. 从我的新文本中获取新令牌,并将其添加到现有的预先训练的语言模型(即Vanilla BERT)中。
  3. 使用组合标记器在自定义语料库上重新训练预训练的BERT模型。
  4. 生成类似于小型自定义语料库中的文本的文本。

这听起来很熟悉吗?拥抱脸有可能吗?

1 个答案:

答案 0 :(得分:3)

我没有听说您刚才提到的管道。为了为您的用例构造一个LM,您基本上有两个选择:

  1. 在您自己的语料库上进一步训练BERT(基本/大)模型。此过程称为 domain-adaption ,如本recent paper中所述。这将使BERT模型的学习参数适应您的特定领域(生物/医学文本)。尽管如此,对于此设置,您将需要相当大的语料库来帮助BERT模型更好地更新其参数。

  2. 使用预先训练的语言模型,该模型可以从头开始或在原始BERT模型上进行微调后,对大量特定领域的文本进行预先训练。您可能知道,Google发布的香草BERT模型已在Wikipedia文本上进行了训练。香草BERT之后,研究人员试图在Wikipedia之外的其他领域训练BERT体系结构。您也许可以使用对领域特定语言有深刻理解的这些经过预训练的模型。对于您的情况,有一些模型,例如:BioBERTBlueBERTSciBERT

拥抱脸有可能吗?

我不确定拥抱的开发人员是否开发了一种健壮的方法来对自定义语料库上的BERT模型进行预训练,因为他们声称其代码仍在进行中,但是如果您有兴趣进行此步骤,建议使用{{3} }已经用Tensorflow编写的代码,而且完全健壮(由BERT的作者发布)。在他们的自述文件中的Pre-training with BERT部分,已经声明了确切的过程。