[SEP] 令牌的输出在 BERT 中捕获了哪些信息?

数据挖掘 nlp 词嵌入 伯特
2022-02-21 05:56:12

在网上阅读之后,我了解到特殊标记 [CLS] 的输出表示捕获了一个句子的表示(我正确吗?)。

我的主要问题是 [SEP] 令牌 (T_SEP) 的输出嵌入捕获了哪些信息?

我的另一个疑问是,如果我将一堆句子输入到由 [SEP] 分隔的 BERT 中,[CLS] 的输出嵌入是否包含有关所有句子的信息?

1个回答

你是对的,CLS 令牌尝试捕获句子表示,因为在预训练期间,此令牌用于确定 2 个句子是否连续。

但作者提到 CLS token 不应该是一个句子表示,应该谨慎使用。


SEP token 是一个简单地用来分隔句子的 token,目的是让 BERT 更容易知道输入是由几个句子组成的。由于在预训练时不使用 SEP 令牌,因此 SEP 令牌不代表任何东西。


关于你的最后一个问题:我们不知道。

在预训练中,模型不是用几个句子训练的,所以模型不会知道如何处理几个句子。

但是如果你对其进行微调,模型可能能够学习新的表示,并且可以学习到 CLS 令牌包含有关所有句子的信息。

例如,此代码使用新模式微调 BERT:

[CLS] Sen 1 [SEP] [CLS] Sen 2 [SEP] [CLS] Sen 2 [SEP] ...

并且 CLS 令牌用于表示每个句子。由于模型经过微调,BERT 正在学习用相应的 CLS 令牌表示每个句子。