【问题标题】:Training a new dataset on bert在 bert 上训练一个新的数据集
【发布时间】:2021-11-24 03:03:44
【问题描述】:
我是 BERT 新手
我有一个亚马逊评论数据集,我想根据评论预测星级
我知道我可以使用预训练的 bert 模型,如图所示 here
但我想在我自己的数据集上训练 bert 模型。这是在做什么here?我可以在任何数据集的预训练模型上应用这种类型的“微调”以获得更准确的结果,还是我必须做其他事情来从头开始训练模型
如果我确实想从头开始训练模型,我应该从哪里开始
【问题讨论】:
标签:
python
tensorflow
nlp
tokenize
bert-language-model
【解决方案1】:
首先什么是预训练?该过程帮助模型使用大量原始文本 (40GB) 和处理能力来学习语言的句法 语义(这是一个频谱)特征。目标函数:随意语言模型和掩码语言模型
如何微调预训练模型?假设有一个模型了解英语的一般方面(POS、依存关系树、主题......一切都有一点)。微调帮助我们将模型的重点放在数据集中最重要的特征上,假设在您的数据集中,某些句法特征改变了游戏规则,模型应该小心它!
目标函数:基于下游任务
从头开始训练对我们大多数人来说是不可行的,但是有一种方法可以使用您自己的语料库/语料库(特定于任务)继续预训练阶段,而不会破坏模型的知识片段(希望如此)!
目标函数:随意语言模型和掩码语言模型
Here 是一篇关于这种方法及其有效性的文章,您可以从Scibert 和COVIDbert 获得启发。正如您所期望的那样,使用预训练好的 bert 作为起点,继续使用领域指定语料库进行预训练!
【讨论】:
-
好的,这样就更清楚了。澄清一下,如果我从here 下载预训练的 bert 模型并按照article 的步骤进行操作,但是使用我自己的数据集,我将能够获得比预训练模型更好的结果,对吗?
-
您可能认为您提到的文章试图在下游任务上微调现有的预训练模型,而且目标函数是分类错误!在进一步的预训练过程中,目标函数是与语言建模相关的错误。请看这个Article