句向量的 CLS、Mean Pooling 和加权池化如何选择?
先用自己的话答,再看参考说法
60 秒是练习上限,不是必须凑满。原理题讲清因果,设计题讲清约束,项目题只讲真实证据。
别照着背。参考说法只用于对照;直接回答问题,简单题说清楚就收尾。项目题只用自己的经历和数字。
参考内容当前已显示;开始口述后会暂时隐藏。
面试时怎么答
先说池化方式必须与训练目标配套。CLS 只有在预训练或微调时被明确当作句级表示,才天然有优势;Mean Pooling 利用所有有效 Token,通常是稳健基线;加权池化能突出关键信息,但多了参数和过拟合风险。
被问如何选择时,提到正确处理 Padding Mask,再在目标检索、聚类或相似度数据上比较,而不是仅看向量维度。长文本还要关注无关 Token 稀释。
可以这样答:
CLS Pooling 直接取特殊位置表示,做法最简单,但前提是模型训练时让这个位置承载句级语义;否则它未必比其他 Token 更能代表整句。Mean Pooling 对所有非 Padding Token 求平均,通常是稳健基线,不过长句里的无关词会稀释重点。加权池化能突出关键信息,却多了一套需要学习的权重,也更依赖训练数据。
核心回答
CLS Pooling 取特殊位置表示,速度简单,但只有模型训练目标让该位置承载句级语义时才可靠。Mean Pooling 对非 Padding Token 求平均,通常是稳健基线;Max 或注意力加权池化可突出显著特征,却可能过分依赖个别 Token。没有脱离训练目标的最佳池化方式,应与对比学习或下游任务一起训练,并在目标数据上验证。
展开说明
基础 BERT 的 [CLS] 参与预训练分类目标,但其原始空间不一定适合直接用余弦做语义相似度。Mean Pooling 汇聚所有位置,需用 Attention Mask 排除 Padding;长文本中大量一般性 Token 可能稀释关键信息。加权池化增加可学习参数,如果只有少量监督数据,也更容易过拟合。
工程实践
固定编码器、层选择、Pooling、归一化和相似度做完整消融,用检索 Recall@k 或语义相似度而不是只看训练损失。超长文档通常先分块编码再做层次聚合,避免一次 Mean Pooling 抹平主题。导出模型时为全 Padding 或空文本定义明确行为。
常见追问
- Mean Pooling 为什么必须使用 Mask? 否则 Padding 的表示也进入平均,且不同批次填充长度会改变同一句子的向量。
- 取最后一层一定最好吗? 不一定,不同层包含的信息不同;可验证倒数几层或学习层加权。
- 池化后是否还要 L2 归一化? 若用余弦或归一化对比损失通常会做,但点积模型的模长可能有信息,应遵循训练配方。
一句话复习
CLS 依赖句级训练,Mean 是带 Mask 的稳健基线,加权池化更灵活;最终必须连同训练目标和检索指标一起选。
参考资料
- 面试主题:LLMs Interview Questions
- 技术依据:Sentence-BERT、SimCSE
评论与补充
评论会直接显示在这道题下面。可以写自己的答法、继续追问或指出错误,不需要 GitHub 账号,也不会跳转到 Issue;内容会公开,请勿填写个人隐私、公司机密或受保密约束的材料。
正在连接站内评论服务…
正在加载评论…
还没有评论,你可以先写下自己的理解或追问。