我正在尝试为句子分类任务训练模型。输入是一个句子(整数向量),输出是一个标签(0 或 1)。我在这里和那里看到了一些关于使用 Bert 和 GPT2 进行文本分类任务的文章。但是,我不确定我应该从哪一个开始。您将从 NLP 中的哪些最新模型开始使用,例如原始 Transformer 模型、Bert、GPT2、XLNet?为什么?我宁愿在 Tensorflow 中实现,但我也可以灵活地选择 PyTorch。谢谢!
4 回答
我同意 Max 的回答,但如果限制是使用最先进的大型预训练模型,那么有一种非常简单的方法可以做到这一点。HuggingFace 的库称为 pytorch-transformers。无论您选择 BERT、XLNet 还是其他任何东西,它们都可以轻松更换。这是有关使用该库进行文本分类的详细教程。
编辑:我刚刚遇到了这个 repo,pytorch-transformers-classification(Apache 2.0 许可证),它是一个可以完全按照您的意愿进行操作的工具。
它高度依赖于您的数据集,并且是数据科学家工作的一部分,即根据所选的性能指标、训练成本、模型复杂性等来寻找更适合特定任务的模型。
当您处理该问题时,您可能会测试所有上述模型并进行比较。首先选择哪一个?Andrew Ng 在“机器学习向往”中建议从简单的模型开始,这样您就可以快速迭代和测试您的想法、数据预处理管道等。
不要一开始就试图设计和构建完美的系统。相反,快速构建和训练一个基本系统——也许只需几天
根据这个建议,您可以从一个更简单的模型(例如ULMFiT)作为基线开始,验证您的想法,然后转向更复杂的模型,看看它们如何改进您的结果。
请注意,现代 NLP 模型包含大量参数,如果没有大型数据集,很难从头开始训练它们。这就是您可能想要使用迁移学习的原因:您可以下载预训练模型并将其用作基础,并将其微调到您的任务特定数据集,以实现更好的性能并减少训练时间。
就像其他人提到的那样,这取决于数据集,应该尝试多个模型,并且必须选择最好的一个。
然而,分享我的经验,XLNet 迄今为止以良好的优势击败了所有其他模型。因此,如果学习不是目标,我会简单地从 XLNET 开始,然后再尝试一些并得出结论。它只是节省了探索的时间。
下面的 repo 非常适合快速完成所有这些工作。向他们致敬。
https://github.com/microsoft/nlp-recipes
它使用拥抱面部变形器,使它们变得非常简单。
我使用 XLNet、BERT 和 GPT2 来完成摘要任务(仅限英文)。根据我的经验,GPT2 在所有 3 种短段落笔记中效果最好,而 BERT 在较长文本(最多 2-3 页)上表现更好。您可以使用 XLNet 作为基准。