基于Transformer模型的词嵌入余弦相似度为何始终在70%-100%之间?
Transformer编码器词嵌入余弦相似度的疑问解答
问题场景
使用BERT(Transformer编码器)生成词嵌入时,观察到以下现象:
- 词1:"cat"(对应嵌入向量em1)
- 词2:"dog"(em2)
- 词3:"driver"(em3)
- 词4:"lion"(em4)
计算余弦相似度得到:
- cs(em1, em2) = 0.90
- cs(em1, em3) = 0.70
- cs(em1, em4) = 0.73
所有词对的余弦相似度均处于70%-100%区间,即便语义差异较大的"cat"与"driver"也不会低于70%。但将768维向量通过PCA降至50维后,部分词对的相似度会低于70%。
核心疑问
- 高维向量保留了更多语义信息,为何余弦相似度始终集中在70%-100%?
- 降维后相似度下降的原因是什么?
- 该现象是否在所有Transformer模型中普遍存在?
解答
1. 高维下相似度集中在70%-100%的原因
- 嵌入空间的紧凑性:BERT这类预训练Transformer的词嵌入是在大规模语料上优化得到的,向量空间本身分布就很紧凑。预训练目标(如掩码语言模型)让语义相关向量靠近,同时所有词嵌入都朝着“能有效捕捉上下文语义”的方向优化,不会出现向量在空间中极度分散的情况,因此任意两个向量的夹角都不会过大。
- 层归一化的约束:Transformer模型普遍使用层归一化(Layer Normalization),它会将每个向量的模长约束在相近范围,同时让向量的分布更稳定。这种约束进一步缩小了向量之间的夹角,使得余弦相似度不会过低。
- 底层语义特征的重叠:哪怕是看似不相关的词,在高维空间中也可能共享底层语义特征——比如都是名词、实体,或者在训练语料中存在间接的上下文关联。这些重叠的维度拉高了它们的余弦相似度。
2. 降维后相似度下降的原因
- PCA优先保留核心区分维度:PCA会优先保留数据中方差最大的维度,这些维度对应模型学到的最核心、最具语义区分度的特征。降维时,那些对应通用特征(如词性、基础统计特征)的低方差维度被丢弃,剩下的维度更聚焦于词之间的核心语义差异。
- 去除冗余关联维度:高维空间中,一些让不相关词产生相似度的“冗余关联维度”(比如所有名词共有的特征)被过滤掉了。没有了这些冗余维度的干扰,语义不相关词对的向量夹角会变大,余弦相似度自然下降。
- 信息压缩的必然结果:降维本质是信息压缩,会丢弃部分细节。原本高维中存在的细微关联被抹去,向量之间的区分度变得更明显,相似度数值也就随之降低。
3. 现象的普遍性
是的,几乎所有Transformer编码器模型(如RoBERTa、ALBERT、Electra等)都会出现该现象。这类模型的预训练目标、层归一化机制、向量空间优化逻辑本质一致,都会导致高维嵌入的相似度分布相对紧凑,降维后区分度提升。
内容的提问来源于stack exchange,提问作者Sukesh Ram
相关产品推荐
相关产品推荐

