6

给定一个情绪分类数据集,我想微调 Bert。

如您所知,BERT 创建的目的是在给定当前句子的情况下预测下一个句子。因此,为了让网络意识到这一点,他们[CLS]在第一句的开头插入了一个标记,然后他们添加[SEP]了一个标记以将第一句与第二句分开,最后在第二句的末尾添加另一个标记[SEP](我不清楚为什么他们在最后附加了另一个令牌)。

无论如何,对于文本分类,我在一些在线示例中注意到(参见带有 Tensorflow hub 的 Keras 中的 BERT),它们添加[CLS]了标记,然后是句子,最后是另一个[SEP]标记。

在其他研究工作中(例如,使用实体信息丰富预训练语言模型以进行关系分类),他们删除了最后一个[SEP]标记。

[SEP]当我的任务仅使用单个句子时,为什么在输入文本的末尾添加标记是/没有好处?

4

2 回答 2

2

我不太清楚为什么 BERT[SEP]在单句任务的末尾需要分离标记,但我猜 BERT 是一种自动编码模型,如前所述,最初是为语言建模和下一句预测设计的。所以 BERT 是这样训练的,总是期待[SEP]令牌,这意味着令牌涉及到 BERT 在训练期间建立的基础知识。

后来出现的下游任务,例如单句用例(例如文本分类),结果证明也可以与 BERT 一起使用,但是[SEP]作为 BERT 正常工作的遗留物,即使是这些任务也需要它。

如果将 BERT 附加在单个句子的末尾,BERT 可能会学得更快,[SEP]因为它在该标记中编码了一些知识,这标志着输入的结束。没有它,BERT 仍然会知道句子在哪里结束(由于填充标记),这解释了前面提到的研究留下了标记,但这可能会稍微减慢训练速度,因为 BERT 可能能够通过附加[SEP]标记更快地学习,特别是如果在截断的输入中没有填充标记。

于 2021-01-20T14:55:33.643 回答
1

正如BERT 的论文中提到的,BERT 是使用两个新颖的无监督预测任务进行预训练的:Masked Language Model 和 Next Sentence Prediction。在 Next Sentence Prediction 任务中,模型将一对句子作为输入,并学习预测第二个句子是否是原始文档中的下一个序列。

因此,我认为 BERT 模型在文本分类任务以及其他任务中使用了两个文本句子之间的关系。这种关系可以用来预测这两个句子是否属于同一类。因此,[SEP]需要token来合并这两个句子,并确定它们之间的关系。

于 2020-08-15T21:16:26.997 回答