[CLS] 向量是 BERT 类模型中一个特别重要的输出向量,它代表整个句子或文本的全局语义信息
[CLS]
向量是 BERT 类模型中一个特别重要的输出向量,它代表整个句子或文本的全局语义信息。
✅ 什么是 [CLS]
在 BERT 模型中,每条输入前会加一个特殊的 token:[CLS]
(classification 的缩写)。这个 token 没有具体语义,它的作用是:
充当整个句子的“代表”,最终用于下游任务,比如分类、回归、句子匹配等。
✅ 结构上发生了什么?
举个例子,假设我们输入一句话:
text = "今天北京天气很好"
经过 tokenizer 编码后,变成:
['[CLS]', '今天', '北京', '天气', '很', '好', '[SEP]']
经过 BERT 编码器后,每个 token 都会有一个向量(比如维度是 768)。其中:
[CLS]
对应的向量:是模型设计用来表示“整句话”的向量北京
、天气
等 token 也会有自己的向量,但它们是词级别的
✅ 举个例子说明 [CLS]
的用途
假设你要做情感分类任务,比如判断一句话是“正面”还是“负面”:
text = "这个产品很好用,我很喜欢"
你输入这句话,BERT 模型就会输出一组向量,包括一个 [CLS]
向量。
然后你会这样用它:
logits = classifier(cls_embedding) # 把 [CLS] 向量输入分类器
这个 classifier 通常是一个线性层或者小 MLP,用来输出二分类结果(正面/负面)。
✅ [CLS]
向量 vs Sentence-BERT 向量
对比点 | [CLS] 向量 | Sentence-BERT 向量 |
---|---|---|
目的 | 原生是为分类服务的 | 特别为句子表示训练过(句子检索、语义匹配) |
训练方式 | 原始 BERT 没训练 句子级别相似度 | SBERT 专门训练了 句子对 相似度任务 |
效果 | 用于分类不错,用于 句子匹配 较差 | 更适合做语义检索和句子表示 |
表达方式 | 单个 [CLS] 向量 | 通常是 mean pooling 所有 token 向量 |
✅ 总结一句话:
[CLS]
向量是 BERT 的“全句代表”,适合分类任务;但如果你要做语义检索、句子相似度,Sentence-BERT 更合适。