通过培训其他数据来改善BERT

时间:2019-09-29 12:54:17

标签: python tensorflow nlp finetunning

我有一个来自Google的BERT多语言模型。而且我有很多使用我的语言(韩语)的文本数据。我希望BERT为使用该语言的文本制作更好的矢量。因此,我想在我拥有的文本语料库上对BERT进行培训。就像我要对某些数据训练w2v模型,并希望继续训练它。 BERT可以吗?

在某些特定任务上,有很多“微调” BERT的例子,甚至在original one from Google上,您都可以在它们上进一步训练BERT。但是据我所知(可能是错误的),我们在特定于任务的模型中进行此操作(例如,用于分类任务)。所以...我们在训练分类器(??)的同时做到了

我想要的是分别进一步训练BERT,然后获取我的数据的固定向量。不要将其构建到某些任务指定的模型中。但是,就像在here中所做的那样,只需获取我的数据的矢量表示(使用get_features函数)即可。我只需要在特定语言的更多数据上训练BERT模型即可。

将不胜感激任何关于如何进一步训练BURT模型的建议/链接(最好是Tensorflow)。谢谢。

2 个答案:

答案 0 :(得分:1)

一切似乎都比我想的要容易。.我只是跟随these instructions ..最初,我认为它们仅是从头开始的培训,但实际上您可以继续进行此培训。 如果遇到OOM错误,请减小批次大小。

答案 1 :(得分:0)

软件包transformers提供了用于使用和微调当前最流行的预训练变压器(包括BERT,XLNet,GPT-2等)的代码。您可以轻松加载模型并继续进行训练。

您可以获取多语言BERT模型:

tokenizer = BertTokenizer.from_pretrained('bert-base-multiligual-cased')
model = TFBertForSequenceClassification.from_pretrained('bert-base-multiligual-cased')

令牌生成器既用于令牌化输入,又用于将子单词转换为嵌入ID。在子词索引上调用模型将为您提供模型的隐藏状态。

不幸的是,该程序包未实现训练过程,即屏蔽语言模型和下一句预测。您将需要自己编写它,但是本文中很好地描述了培训过程和实现过程将非常简单。