Gha*_*nem 6 python bert-language-model
给定一个情感分类数据集,我想微调 Bert。
如您所知,BERT 创建是为了在给定当前句子的情况下预测下一个句子。因此,为了让网络意识到这一点,他们[CLS]在第一个句子的开头插入了一个标记,然后他们添加[SEP]了一个标记以将第一个句子与第二个句子分开,最后在第二个句子[SEP]的末尾添加另一个标记(我不清楚为什么他们在末尾附加另一个标记)。
无论如何,对于文本分类,我在一些在线示例中注意到(参见Keras 中的 BERT with Tensorflow hub)是它们添加[CLS]标记,然后是句子,最后是另一个[SEP]标记。
在其他研究工作中(例如,使用实体信息为关系分类丰富预训练语言模型)他们删除了最后一个[SEP]标记。
[SEP]当我的任务仅使用单个句子时,为什么在输入文本的末尾添加标记会/无益?
[SEP]我不太清楚为什么 BERT在单句任务的末尾需要分隔标记,但我的猜测是 BERT 是一种自动编码模型,如上所述,最初是为语言建模和下一句预测而设计的。因此,BERT 的训练方式是始终期望令牌[SEP],这意味着令牌涉及 BERT 在训练过程中建立的基础知识。
随后的下游任务,例如单句用例(例如文本分类),结果也可以与 BERT 一起使用,但是,[SEP]BERT 是正常工作的遗留物,因此即使对于这些任务也是需要的。
如果将 附加在单个句子的末尾,BERT 可能会学得更快[SEP],因为它在该标记中编码了一些知识,这标志着输入的结束。如果没有它,BERT 仍然会知道句子在哪里结束(由于填充标记),这解释了前面提到的研究忽略了标记,但这可能会稍微减慢训练速度,因为 BERT 可能能够通过附加[SEP]标记更快地学习,特别是如果截断的输入中没有填充标记。
| 归档时间: |
|
| 查看次数: |
1322 次 |
| 最近记录: |