论文 BERT 中的 [SEP] 有什么用?

数据挖掘 机器学习 nlp 变压器 伯特
2021-10-12 10:04:09

我知道 [CLS] 意味着一个句子的开始,而 [SEP] 让 BERT 知道第二个句子已经开始。

但是,我有一个问题。

如果我有 2 个句子,分别是 s1 和 s2,我们的微调任务是一样的。

在一种方式中,我添加了特殊标记,输入看起来像 [CLS]+s1+[SEP] + s2 + [SEP]。

在另一个中,我使输入看起来像 [CLS] + s1 + s2 + [SEP]。

当我分别将它们输入到BERT时,它们之间有什么区别?

  • 第二个中的 s1 会比第一个中的 s1 集成更多来自 s2 的信息吗?

  • 两种方法之间的令牌嵌入会发生很大变化吗?

谢谢你的帮助!

2个回答

首先让我们了解为什么格式是这样的。

BERT 使用格式进行了预训练[CLS] sen A [SEP] sen B [SEP]Next Sentence Prediction 任务有必要:确定 sen B 是否是与 A 没有链接的随机句子。
中间[SEP]是帮助模型理解哪个token属于哪个句子。

在微调时,如果您使用与预训练格式不同的格式,您可能会混淆模型:他从未见过 2 个句子格式为[CLS] Sen A Sen B [SEP]. 该模型不知道有 2 个句子,并将其视为一个句子。

如果你对足够多的数据进行微调,BERT 可以学习新格式。如果您需要更改输入格式,这会很有帮助。

但在你的情况下,你不需要这样做。为了改变格式而改变格式只会混淆你的模型,他将不得不学习更多的东西,并且会出现预训练和微调之间的不一致。


第二个中的 s1 会比第一个中的 s1 集成更多来自 s2 的信息吗?

不会。插入或不插入SEP令牌不会改变两个句子的令牌之间的信息交换量。在这两种情况下,模型都将根据 2 个句子计算注意力。每个句子都可以看到另一个句子的标记,不管SEP.
通过删除令牌,您唯一要做的SEP就是混淆您的模型。

两种方法之间的令牌嵌入会发生很大变化吗?

我们不知道。它肯定会改变,但有多少?我们无法回答。我的猜测是令牌表示不会有太大变化(因为令牌是相同的),但CLS表示会发生很大变化(而不是表示 2 个句子之间的链接,它将表示其他内容)。

神经网络是黑盒子,任何答案都是纯粹的猜测,尤其是不知道我们在说什么微调任务。

只有通过进行实验,你才能得到实际的答案,即使那样,考虑到问题中“整合更多信息”和“改变很多”的公式的松散定义。