如何微调 BERT 以进行问答?

人工智能 自然语言处理 伯特 微调 问答
2021-11-01 13:05:31

我希望训练两个特定领域的模型:

  • 领域 1:宪法和相关法律文件
  • 领域 2:技术和相关文件。

对于域 1,我可以访问包含来自宪法的文本且没有问题-上下文-答案元组的文本语料库。对于域 2,我可以访问问答对。

是否可以仅使用上述数据来微调用于问答的轻量级 BERT 模型?

如果有,完成这项任务的资源是什么?

来自拥抱脸/模型库的一些示例是 mrm8488/bert-tiny-5-finetuned-squadv2、sshleifer/tiny-distilbert-base-cased-distilled-squad、/twmkn9/albert-base-v2-squad2。

1个回答

答案是肯定的,但“轻量级”需要一个“轻量级”模型。

您的“域一”申请称为开放域问答 (ODQA)。这是使用 BERT 的 ODQA 演示:https ://www.pragnakalp.com/demos/BERT-NLP-QnA-Demo/

您的“域二”申请略有不同。它是关于从序列中学习序列。更具体地说,这些被称为序列到序列模型。 是一个使用在斯坦福问答 (SQuAD) 数据集上微调的预训练 BERT 模型的示例。

斯坦福问答数据集 (SQuAD)是一个阅读理解数据集,由众包工作人员在一组 Wikipedia 文章中提出的问题组成,其中每个问题的答案都是来自相应阅读文章或问题的一段文本或跨度可能无法回答。

在这两个应用程序中,所需的资源将取决于您所需的性能。BERT 模型有多种尺寸。一般来说,模型越大,对GPU显存的要求就越大,性能也越高(即accuracy、precision、recall、F1-score等)。例如,我可以在 GTX 1080Ti 和 RTX 2080Ti 上运行 BERT Base,但不能在 BERT Large 上运行。

这篇文章NVIDIA Quadro RTX 6000 BERT Large Fine-tune Benchmarks with SQuAD Dataset展示了 BERT 在四个 NVIDIA Quadro RTX 6000 GPU 上使用 TensorFlow 的性能。

BERT 有一个“移动”版本,称为 MobileBERT,可在智能手机等小型设备上运行。这是一篇关于使用 SQuAD 的文章:https ://www.tensorflow.org/lite/models/bert_qa/overview

cdQA-suite 是一个很好的软件包。以下内容应该有助于对您自己的语料库进行微调: