向量的常见运算
「相似」可以被计算吗?——加法、点积、余弦相似度
距离闹了个笑话
假设你在做一个「找相似文章」的程序。两篇文章的内容用词频向量表示—— 「AI」出现几次、「数据」出现几次,以此类推。 现在有三篇文章:
文章A(8次AI,6次数据):一篇详细讨论 AI 和数据的长文,约 3000 字。
文章B(2次AI,1次数据):内容和 A 相近,但只是摘要版,约 800 字。
文章C(1次AI,7次数据):大篇幅谈数据库,偶尔提到 AI。
直觉上,A 和 B 最相似——同一个话题,只是篇幅不同。 我们用最自然的方式来量「像不像」:两个点在图上离多远。 初中学的勾股定理就够用——横向差多少、纵向差多少,斜边就是距离:
按这个算法,A 和 C 更接近——一篇谈 AI 的长文,和一篇几乎不谈 AI 的数据库文章, 竟比同主题的摘要更像?这个结果明显不对。
长度为什么干扰了判断
把 A、B、C 从原点画成箭头,答案就一目了然了: A 和 B 的箭头方向高度一致——都指向「AI+数据」的方向,只是 B 短一截。 C 的箭头方向完全不同,偏向纯「数据」轴。
「两点之间的直线距离」量的是箭头末端有多远,所以 B 的「短」拉近了它和 C 的表面距离。 但「内容是否相似」应该看箭头的方向,和长度无关。
点积:数字背后的几何
要算夹角,得先认识一个工具:点积(dot product)。 计算方法很简单——对应分量相乘后加起来:
这个公式好记,但更重要的是它的几何含义。 想象把向量 b 的末端沿垂直方向「投影」到向量 a 所在的直线上, 落脚点到原点的距离叫做「b 在 a 方向上的投影」:
这给了点积一个直觉:两个向量有多「一致」?b 有多少成分「朝着」a 的方向走,点积就有多大。
余弦相似度
从点积公式 ,可以把 单独解出来:
这个值叫余弦相似度(cosine similarity)。 除以两个向量的模长,把长度的影响完全消掉,只剩下方向信息。 取值范围在 −1 到 1 之间: 1 表示方向完全相同(完全相似),0 表示正交(没有关系),−1 表示方向相反(完全对立)。
这就是 AI 里最常用的「像不像」工具。搜索引擎、推荐系统、语义搜索—— 背后几乎都在用余弦相似度比较文本向量,而不是直线距离。
向量加法:语义的算术
向量还能相加减。规则非常简单——对应分量分别加减:
几何上,两个向量相加就是把第二个箭头接在第一个箭头的末端——「平行四边形法则」。 但这在 AI 里发生了一件令人惊叹的事。
当词向量由神经网络从海量文本中学出来之后,有人发现:
这个结果意味着什么?词的「含义」被编码成了向量空间里的方向。 「男 → 女」是空间里的某个固定偏移向量,「平民 → 王室」是另一个。 这两个偏移可以独立叠加,结果自然就对了。
第 15 课(词向量)会完整讲这是怎么学出来的。现在只需要记住: 向量加减,可以对「意义」做算术。
总结
直线距离量「末端有多远」,余弦相似度量「方向有多一致」。 当向量的长度无意义(如词频受文章长度影响)时,余弦相似度才是正确的「像不像」工具。 点积不只是公式,它有鲜明的几何含义:衡量一个向量在另一个向量方向上的投影有多长。 向量还能相减做类比:「国王−男人+女人≈女王」,语义变成了可以计算的方向偏移。
这一课你亲手发现了
- 直线距离的盲点:同方向但长度不同的向量,两点距离可能比不同方向的向量还大。
- 点积:a · b = Σ aᵢbᵢ = |a||b|cosθ;几何上等于 a 的模长 × b 在 a 方向上的投影。
- 余弦相似度:cos θ = (a·b)/(|a||b|),排除长度干扰,只看方向。
- 向量加法:「含义」可以做算术——国王−男人+女人≈女王。
学习小测验
做完这一课,来检测一下核心知识点。选出你的答案后点击「提交」,即可看到正确选项与讲解。
什么是矩阵
神经网络的每一层都在做「把一组数字变成另一组数字」的变换——这个操作用什么数学对象来表示?