网易首页 > 网易号 > 正文 申请入驻

Python 线性代数 07:向量范数、距离与相似度

0
分享至

向量由有序分量表示,还可以通过非负数描述其整体大小,并比较两个向量之间的差异或接近程度。对于具有几何意义的非零向量,还可以研究它们的方向关系。范数用于度量单个向量的大小,距离用于度量两个向量相隔多远,相似度则用于描述它们在某种意义上有多接近。

在 Python 中,可以使用基本语法计算常见范数,也可以使用 NumPy 的 np.linalg.norm() 完成范数、距离和向量单位化。不同度量关注的特征不同,选择合适的度量方式是数据分析和 AI 编程中的重要环节。

一、范数、距离与相似度

1、范数描述向量的大小

范数(Norm)将一个向量映射为非负标量,用于描述向量的整体大小。这种从向量到非负标量的映射,就是定义在 ℝⁿ 上的函数。

设 n 维实向量为:

向量 v 的范数通常写成:

范数越大,表示向量在相应度量下越大;零向量的范数为 0。

这里的“向量长度”指向量的几何大小,不是向量所含分量的数量。向量包含多少个分量,通常称为它的维数。

2、距离描述两个向量的差异

向量距离(Vector Distance)用于描述两个同维向量之间的差异。

许多常用距离都可以通过两个向量之差的范数定义:

也就是说,先计算从一个向量到另一个向量的差向量,再度量这个差向量的大小。

3、相似度描述两个向量的接近程度

相似度(Similarity)通常用一个数值表示两个向量有多相似。

一般来说,距离越小,两个向量越接近;相似度越大,两个向量越相似。

距离和相似度并不是简单互换的概念。不同相似度可能关注方向、分量重合程度或其他结构,具体含义取决于所采用的计算方法。

二、范数的基本性质

一个用于描述向量大小的函数,需要满足以下基本性质才能称为范数。设 u、v ∈ ℝⁿ,c ∈ ℝ。

1、非负性与确定性

范数始终大于或等于 0:

并且:

只有零向量的范数为 0。

2、绝对齐次性

向量乘以标量 c 后,范数变为原来的 |c| 倍。对于非零向量,负号会使方向反转,但不会改变范数。

3、三角不等式

两个向量之和的范数不会超过两个向量范数之和。这与几何中“三角形任意一边不超过另外两边之和”相对应。

三、常见的向量范数

1、L1 范数

L1 范数(L1 Norm)是各分量绝对值之和:

例如:

则:

L1 范数累加每个分量的绝对大小,不会通过平方进一步放大较大的分量。

2、L2 范数

L2 范数(L2 Norm)也称欧几里得范数(Euclidean Norm),定义为各分量平方和的平方根:

对于上例的向量:

L2 范数对应欧几里得空间中的直线长度,也是几何和机器学习中最常用的向量范数之一。

3、L∞ 范数

L∞ 范数(L-infinity Norm)取所有分量绝对值中的最大值:

对于上例的向量:

L∞ 范数只关注绝对值最大的分量,可以表示向量在单个分量上的最大幅度。

4、Lp 范数

L1 范数和 L2 范数都属于更一般的 Lp 范数(Lp Norm):

当 p = 1 时得到 L1 范数;当 p = 2 时得到 L2 范数。

随着 p 增大,较大的绝对分量对结果的影响更加明显。当 p 趋近于无穷大时,Lp 范数趋近于 L∞ 范数:

四、向量单位化

范数为 1 的向量称为单位向量(Unit Vector)。

对于非零向量 v,可以将它除以自身的 L2 范数,得到方向不变的单位向量:

这个过程称为 L₂ 单位化(L2 Normalization),也称向量归一化。它将向量的 L₂ 范数调整为 1,不同于把数据缩放到某个数值区间。

例如:

其 L2 范数为:

因此:

单位化后的向量满足:

单位化改变向量的大小,但不改变非零向量的方向。

零向量的范数为 0。若直接计算:

就会出现除以 0,因此零向量不能按照上述方式单位化。

五、向量距离

1、由范数定义距离

对于两个同维向量 a 和 b,可以使用不同范数度量差向量 a − b,从而得到不同类型的距离:

由范数定义的距离满足以下基本性质:

它们分别表示非负性、确定性、对称性和三角不等式。

2、曼哈顿距离

曼哈顿距离(Manhattan Distance)由 L1 范数定义:

它将各个分量方向上的差异相加,类似于在规则街区中只能沿各坐标轴方向移动。

3、欧几里得距离

欧几里得距离(Euclidean Distance)由 L2 范数定义:

它表示欧几里得空间中两个点之间的直线距离。

4、切比雪夫距离

切比雪夫距离(Chebyshev Distance)由 L∞ 范数定义:

它只关注所有分量差异中的最大值。

5、距离计算示例

设:

差向量为:

曼哈顿距离为:

欧几里得距离为:

切比雪夫距离为:

六、向量相似度

1、余弦相似度

余弦相似度(Cosine Similarity)通过夹角余弦衡量两个非零向量的方向接近程度:

对于实数向量,其取值范围为:

一般可以理解为:

接近 1:两个向量的方向接近;

接近 0:两个向量的方向接近正交;

接近 −1:两个向量的方向接近相反。

余弦相似度主要关注方向,对向量的正比例缩放不敏感。

若将一个向量乘以负数,其方向会反转,因此余弦相似度的符号也会发生变化。

2、点积相似度

在一些向量检索和机器学习任务中,可以直接使用点积作为相似度:

点积相似度同时受到向量方向和大小影响。即使两个向量方向相同,范数更大的向量通常也会得到更大的点积。

当两个向量都经过 L2 单位化时:

此时:

3、距离与相似度的关系

距离关注两个向量相差多少,余弦相似度关注两个向量的方向是否接近。

因此,两个向量可能方向相同,但欧几里得距离仍然较大。例如,一个向量可能只是另一个向量的较大正比例倍数。

对于两个经过 L2 单位化的向量 a 和 b,有:

因此,在单位向量条件下,欧几里得距离越小,余弦相似度越大,两者会产生一致的排序关系。

实践中常将:

称为余弦距离(Cosine Distance)或余弦差异。

不过,它在一般情况下不一定满足距离函数的全部性质,因此更准确地说是一种不相似度。

七、使用 Python 计算范数、距离与相似度

1、使用 Python 基本语法计算范数

可以使用列表和内置函数计算常见范数:

print(norm_linf)

输出:

12

L1 范数累加绝对值,L2 范数计算平方和的平方根,L∞ 范数取最大绝对分量。

2、使用 NumPy 计算范数

NumPy 可以使用 np.linalg.norm() 计算不同范数:

print(norm_linf)

输出:

12.0

对于一维数组,np.linalg.norm(v) 默认计算 L2 范数。

3、计算向量距离

两个向量之间的距离可以通过差向量的范数计算:

print(distance_linf)

输出:

3.0

其中,欧几里得距离约为 3.606。

4、单位化与余弦相似度

print(cosine_similarity)

输出可能为:

0.8888888888888888

两个向量经过 L2 单位化后,它们的点积就等于余弦相似度。

八、范数、距离与相似度在 AI 编程中的典型应用

1、批量单位化嵌入向量

不同数据生成的嵌入向量可能具有不同范数。在只需要比较方向时,可以对每个嵌入向量进行 L2 单位化:

print(normalized_embeddings)

axis=1 表示分别计算每一行的范数,keepdims=True 将被聚合的轴保留为长度 1,使除法能够通过广播按行完成。

2、寻找距离最近的向量

在分类、聚类和向量检索中,可以根据距离寻找最接近查询向量的候选项:

print(candidates[nearest_index])

输出可能为:

[1.2 2.1]

candidates - query 通过广播计算每个候选向量与查询向量的差,axis=1 再分别计算每一行的 L2 范数。

np.argmin() 返回距离最小元素的位置,因此第 0 个候选向量与查询向量最接近。

3、约束模型参数

范数还可以用于限制模型参数的大小。常见的 L1 和 L2 正则化形式分别为:

其中,L_data 是原始数据损失,w 是参数向量,λ 是控制正则化强度的非负系数。

L1 正则化通常更容易产生较多接近 0 或等于 0 的参数;L2 正则化则倾向于整体抑制过大的参数。具体效果还与模型、数据和优化方法有关。

九、常见问题及使用建议

1、不要混淆维数与范数

向量的维数表示分量数量,范数表示向量的大小。

例如,向量 [3, 4] 是二维向量,但其 L2 范数为 5。二维和长度为 5 描述的是不同概念。

2、单位化前检查零向量

零向量的范数为 0,不能直接作为除数。进行单位化或计算余弦相似度前,应先检查范数是否接近 0。

对于浮点数,可以使用:

np.isclose(norm_value, 0.0)

避免只依赖严格比较:

norm_value == 0.0

3、注意不同特征的尺度

欧几里得距离和曼哈顿距离会直接受到分量尺度影响。

如果一个特征的数值范围为 0 到 1,另一个特征的数值范围为 0 到 10000,后者通常会主导距离结果。因此,比较距离前常需要根据数据含义进行标准化或其他尺度处理。

4、不要把相似度直接理解为距离

相似度和距离都可以描述对象之间的关系,但关注角度不同。相似度通常衡量对象之间的相似程度,数值越大表示越接近;距离通常衡量对象之间的差异程度,数值越小表示越接近。

不同的度量方式可能关注不同的信息。例如,余弦相似度主要反映两个向量的方向关系,而欧几里得距离反映两个向量端点之间的空间差异。余弦相似度为 0 表示两个非零向量方向正交,并不表示两个向量相同或它们之间的距离为 0。

5、批量计算时明确指定轴

对于二维及更高维 NumPy 数组,np.linalg.norm() 的结果取决于 axis 和 ord 参数。

例如:

np.linalg.norm(data, axis=1)

表示分别计算每一行的 L2 范数。

对于二维数组,如果同时省略 axis 和 ord,np.linalg.norm() 会将其作为矩阵计算 Frobenius 范数,而不是分别计算每一行或每一列的向量范数。

小结

范数度量向量大小,距离度量向量差异,相似度描述向量的接近程度。L1、L2 和 L∞ 范数关注不同特征,Python 可以通过 np.linalg.norm() 完成范数、距离和单位化计算,并结合点积计算余弦相似度。


“点赞有美意,赞赏是鼓励”

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
医生发现:早期脑梗不是头晕,而是频繁出现这5个异常!

医生发现:早期脑梗不是头晕,而是频繁出现这5个异常!

健康之光
2026-10-02 10:30:23
减少对外援助,优先把农民养老金提到500元:这件事应该怎么看

减少对外援助,优先把农民养老金提到500元:这件事应该怎么看

三农雷哥
2026-10-02 16:55:51
全网吵翻!《现在就出发4》大换血,王楚然顶替金晨当唯一女常驻,争议背后藏太多无奈

全网吵翻!《现在就出发4》大换血,王楚然顶替金晨当唯一女常驻,争议背后藏太多无奈

阿废冷眼观察所
2026-10-02 19:30:36
《兰香如故》直到韩梁活活冻死,林锦岐才知,兰香不肯在京城买地买宅,帮了林家大忙

《兰香如故》直到韩梁活活冻死,林锦岐才知,兰香不肯在京城买地买宅,帮了林家大忙

可乐谈情感
2026-10-01 18:38:55
上海房东不再低价卖房了,上海浦东一小区去年113平从1060万跌到960万,今年又反弹到988万。房东又有涨价的底气

上海房东不再低价卖房了,上海浦东一小区去年113平从1060万跌到960万,今年又反弹到988万。房东又有涨价的底气

捣蛋窝
2026-10-01 18:03:35
离正式开火只差一步,中方表态前所未有强硬,菲律宾问题摆上明面

离正式开火只差一步,中方表态前所未有强硬,菲律宾问题摆上明面

福建睿平
2026-09-30 07:34:27
董璇分享女儿照片并配文,祝福伟大的祖国母亲生日快乐

董璇分享女儿照片并配文,祝福伟大的祖国母亲生日快乐

动物奇奇怪怪
2026-10-02 06:38:07
奚梦瑶陪婆婆逛街太乖巧!穿白外套比何猷君高半头,四太这双腿绝了

奚梦瑶陪婆婆逛街太乖巧!穿白外套比何猷君高半头,四太这双腿绝了

时间巡查
2026-10-02 03:12:33
太贪心!仗没打完就向中方伸手,伊朗要钱要技术,还想平起平坐

太贪心!仗没打完就向中方伸手,伊朗要钱要技术,还想平起平坐

徐云流浪中国
2026-10-01 14:29:45
孙心然vs布克沙时间敲定!CCTV5直播,三大优势有望拿下胜利!

孙心然vs布克沙时间敲定!CCTV5直播,三大优势有望拿下胜利!

烟雨洛神生
2026-10-02 15:14:52
西方为何猛批中国治沙?真相:动的不是沙子,是老外的奶酪

西方为何猛批中国治沙?真相:动的不是沙子,是老外的奶酪

百科密码
2026-10-02 17:50:05
拉塞尔加盟上海遭嘲讽!两大NBA球星喊话:打CBA从来都不丢人

拉塞尔加盟上海遭嘲讽!两大NBA球星喊话:打CBA从来都不丢人

体育见习官
2026-10-01 15:39:39
员工集体沉默拒绝加班!央国企领导叫不动人,背后四本账太扎心

员工集体沉默拒绝加班!央国企领导叫不动人,背后四本账太扎心

侃故事的阿庆
2026-10-01 01:21:39
女股民投入122万加盟赵一鸣,经营半年算账,全家为何沉默?

女股民投入122万加盟赵一鸣,经营半年算账,全家为何沉默?

放开他让wo来
2026-10-01 16:43:17
发生在国庆高速一幕:电量1%趴窝推到桩前,仍需排队5个多小时,车主崩溃!

发生在国庆高速一幕:电量1%趴窝推到桩前,仍需排队5个多小时,车主崩溃!

DeepAuto车探
2026-10-02 21:34:05
英国公布的圆明园被毁前照片,美如仙境,引发世界关注

英国公布的圆明园被毁前照片,美如仙境,引发世界关注

贱议你读史
2026-05-23 15:23:34
普京:若领土遭袭,考虑动用全武库,网友:俄罗斯用常规武器已经打不赢乌克兰了

普京:若领土遭袭,考虑动用全武库,网友:俄罗斯用常规武器已经打不赢乌克兰了

东方豪侠
2026-10-02 09:55:27
广东新帅压力拉满!手握外援拍板大权,战绩不佳没有任何甩锅余地

广东新帅压力拉满!手握外援拍板大权,战绩不佳没有任何甩锅余地

弄月公子
2026-10-02 21:17:31
亚运会奖牌榜最新排名!日韩单日金牌大爆发,中国仍然155金领跑

亚运会奖牌榜最新排名!日韩单日金牌大爆发,中国仍然155金领跑

领悟看世界
2026-10-02 02:59:02
悲惨!因辅导作业,情绪失控,母女相继跳楼,双双坠亡!

悲惨!因辅导作业,情绪失控,母女相继跳楼,双双坠亡!

闲侃闲侃
2026-06-25 07:43:49
2026-10-02 22:12:49
MediaTea
MediaTea
专业的数字媒体、新媒体技术
2209文章数 85关注度
往期回顾 全部

科技要闻

“分手”15天后,华为与赛力斯签约新五年

头条要闻

陕西小哥1000元接单 乘高铁往返1200公里到武汉买奶茶

头条要闻

陕西小哥1000元接单 乘高铁往返1200公里到武汉买奶茶

体育要闻

30天30队·快船:被莱纳德挂在半空的未来?

娱乐要闻

潘玮柏老婆被猜怀二胎 中秋vlog露馅

财经要闻

珠宝黑马爆雷,老板全家跑路泰国!

汽车要闻

方程豹9月热销破4万 首款皮卡鲨鱼将于四季度上市

态度原创

本地
艺术
亲子
教育
公开课

本地新闻

中秋逛白塔寺,体验国医妙荟雅集

艺术要闻

中国第二高楼的“毛笔”方案,落选为什么让人遗憾?

亲子要闻

工程车小故事 :开盲盒

教育要闻

开了延时服务,作业却背回家?高新区家长问政,教体局回了三个实情

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版