NLP:相似性算法详解
点积相似性与余弦相似性详解
点积相似性与余弦相似性详解
1. 点积相似性(Dot Product Similarity)
定义:两个向量的点积是各对应元素乘积之和,数学表示为:
$\text{Dot}(A, B) = A \cdot B = \sum_{i=1}^{n} A_i \times B_i$
其中,A 和 B 为n维向量。
特点:
- 长度敏感:结果受向量模长影响,模长大的向量点积可能更大。
- 无界性:结果范围从负无穷到正无穷,具体取决于向量方向和维度。
应用场景:
- 信息检索:TF-IDF加权的文档向量点积用于计算查询与文档的相关性分数(如BM25变种)。
- 推荐系统:用户和物品的潜在因子向量点积直接预测评分(如矩阵分解)。
- 注意力机制:点积注意力(如Transformer中的Scaled Dot-Product Attention),通过计算查询和键的点积获取权重。
算法示例:
点积注意力:在Transformer模型中,计算查询矩阵 QQ 和键矩阵 KK 的点积,缩放后通过Softmax归一化:
$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$
其中,$d_k$为向量维度,缩放避免梯度消失。
优缺点:
- 优点:计算高效,无需归一化;适合保留向量长度信息的场景。
- 缺点:对向量长度敏感,长向量可能主导结果,不适合直接比较不同长度向量。
2. 余弦相似性(Cosine Similarity)
定义:两个向量的余弦相似性为点积除以模长乘积,数学表示为:
$\text{CosSim}(A, B) = \frac{A \cdot B}{|A| \times |B|} = \frac{\sum_{i=1}^{n} A_i B_i}{\sqrt{\sum_{i=1}^{n} A_i^2} \times \sqrt{\sum_{i=1}^{n} B_i^2}}$
结果范围在 [−1,1](或 [0,1]当向量非负时)。
特点:
- 方向敏感:仅关注向量方向,忽略模长差异。
- 归一化:结果标准化,适合比较不同长度向量。
应用场景:
- 词向量比较:Word2Vec、GloVe等词嵌入的语义相似度计算(如“king”与“queen”)。
- 文本聚类/分类:TF-IDF或BERT句向量的文档相似性度量。
- 语义搜索:通过余弦相似性匹配查询与候选文本(如Elasticsearch的语义插件)。
算法示例:
归一化点积:若向量已归一化为单位向量($|A| = |B| = 1$),则点积等于余弦相似性,简化计算:
$\text{CosSim}(A, B) = A \cdot B$
预训练模型应用:Sentence-BERT生成句向量后,直接计算余弦相似性用于语义匹配。
优缺点:
- 优点:消除长度影响,适合文本等方向敏感的任务。
- 缺点:忽略模长信息(如TF-IDF中,词频可能反映重要性),需两次模长计算。
3. 对比与选择
数学关系:
余弦相似性是归一化的点积,即:
$\text{CosSim}(A, B) = \frac{\text{Dot}(A, B)}{|A| \times |B|}$
当向量被归一化后,两者等价。
选择依据:
- 使用点积:需保留长度信息(如推荐系统中用户活跃度、物品热度)。
- 使用余弦相似性:需纯方向比较(如语义相似性、短文本匹配)。
典型NLP应用:
- 点积:推荐系统评分预测、注意力机制中的原始得分计算。
- 余弦相似性:词/句相似度、文档聚类、语义检索。
4. 实战示例
词向量比较(余弦相似性):
1
2
3
4
5import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
# 假设vec_king和vec_queen为归一化后的词向量
similarity = cosine_similarity([vec_king], [vec_queen])[0][0]注意力计算(缩放点积):
1
2
3
4
5def scaled_dot_product_attention(Q, K, V):
d_k = Q.shape[-1]
scores = np.dot(Q, K.T) / np.sqrt(d_k)
attention_weights = softmax(scores) # 伪代码,需实现softmax
return np.dot(attention_weights, V)
5. 总结
- 点积相似性:直接高效,适合长度敏感场景,但需注意模长影响。
- 余弦相似性:消除模长干扰,专注方向差异,是NLP语义任务的首选。
- 算法选择:根据任务需求(是否需保留长度信息)和计算环境(是否允许额外归一化步骤)权衡。