这个公式写法我不理解 cosine-sim(u,v) 他的写法怎么跟相减一样???

你说的 “跟相减一样”,应该是疑惑 cosine - sim(u, v) 里的减号是不是代表减法 ,其实这是个命名小误会,拆成两部分讲清楚:

一、符号本质:只是函数命名,和减法无关!

cosine - sim(u, v) 里的 - 不是数学运算的 “减号”,而是 函数名称的连接符 ,完整含义是 “cosine similarity(余弦相似度)” ,可以简单理解成: cosine_sim(u, v) = 用余弦相似度算法,计算向量 u 和 v 的相似程度
如果写成数学公式,标准符号是:
\(\cos(\theta) = \frac{u \cdot v}{\|u\| \times \|v\|}\)
(这里的 \(\cos(\theta)\) 就是代码里 cosine_sim(u, v) 的数学表达,\(\theta\) 是两个向量的夹角 )

二、为啥会被误解成 “相减”?

这是 函数命名习惯 导致的:
  • 在编程里,为了让名字直观,常用 - 连接单词(比如 cosine_similarity 、sentence_bert ),但它和数学运算的减法 完全没关系 。
  • 你可以把 cosine - sim(u, v) 当成一个整体,理解成 “计算 u 和 v 余弦相似度的工具”,别纠结 - 的数学含义~

三、举个例子,彻底区分 “减号” 和 “命名符”

假设:
  • 数学里的减法:u - v (实实在在的向量相减,结果是新向量 )
  • 余弦相似度函数:cosine_sim(u, v) (计算 u 和 v 的相似度,结果是一个数值,范围 [-1, 1] )
用代码对比更清楚:
python
 
运行
 
 
 
 
import torch
import numpy as np

u = np.array([1, 2])
v = np.array([3, 4])

# 1. 数学减法:u - v 是向量相减,结果是新向量
subtract_result = u - v  # 输出: [-2, -2]

# 2. 余弦相似度:cosine_sim(u, v) 是计算相似度,结果是数值
def cosine_sim(u, v):
    dot = np.dot(u, v)
    norm_u = np.linalg.norm(u)
    norm_v = np.linalg.norm(v)
    return dot / (norm_u * norm_v)

similarity_result = cosine_sim(u, v)  # 输出: ~0.9849(和之前计算的一样)
print("减法结果:", subtract_result)
print("余弦相似度结果:", similarity_result)
 
 
 
 

四、总结

cosine - sim(u, v) 里的 - 是 命名符号 ,不是数学减法!记住:
  • 看到 cosine_sim 或 cosine-sim ,就联想 “余弦相似度” 这个算法;
  • 数学里的减法是 u - v ,和余弦相似度的计算逻辑完全不同~
下次再看到类似命名(比如 sentence-bert 、text-classify ),就知道是用 - 连接功能 / 算法名称啦,不用再和数学运算混淆咯 ~
 
 
 
posted @ 2025-07-10 16:43  m516606428  阅读(12)  评论(0)    收藏  举报