【问题标题】:Pretraining a language model on a small custom corpus在小型自定义语料库上预训练语言模型
【发布时间】:2020-08-08 11:43:33
【问题描述】:

我很好奇是否可以在文本生成中使用迁移学习,并在特定类型的文本上重新训练/预训练它。

例如,拥有一个预训练的 BERT 模型和一个小的医学(或任何“类型”)文本语料库,可以创建一个能够生成医学文本的语言模型。假设您没有大量的“医学文本”,这就是您必须使用迁移学习的原因。

把它作为一个管道,我会这样描述:

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

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

【问题讨论】:

  • 请参阅here,了解 fastai 是如何做到的。忽略带有_clas 的任何内容,这是用于分类位的。而您的用例正是 fastai 的设计目的。
  • 你能检查一下链接吗?它似乎坏了,如果您能分享任何其他参考资料,我将不胜感激。
  • @John 我也在考虑同样的方法。你有什么关于使用拥抱脸的实现吗?

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


【解决方案1】:

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

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

  2. 使用预训练的语言模型,该模型在大量特定领域的文本上进行预训练,无论是从头开始还是在普通 BERT 模型上进行微调。你可能知道,谷歌发布的 vanilla BERT 模型已经在 Wikipedia 和 BookCorpus 文本上进行了训练。在香草 BERT 之后,研究人员试图在除了初始数据收集之外的其他领域训练 BERT 架构。您也许可以使用这些对特定领域语言有深刻理解的预训练模型。对于您的情况,有一些模型,例如:BioBERTBlueBERTSciBERT

拥抱脸可以吗?

我不确定 huggingface 开发人员是否已经开发出一种强大的方法来在自定义语料库上预训练 BERT 模型,因为他们声称他们的代码仍在进行中,但如果您有兴趣执行此步骤,我建议使用 Google research's bert 代码它是用 Tensorflow 编写的,非常健壮(由 BERT 的作者发布)。在他们的自述文件和Pre-training with BERT 部分下,已经声明了确切的过程。这将为您提供 Tensorflow 检查点,如果您想使用 Pytorch/Transformers,可以轻松地将其转换为 Pytorch 检查点。

【讨论】:

    猜你喜欢
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    相关资源
    最近更新 更多