在深度学习中,距离计算是许多核心算法的基石。无论是图像识别中的特征比对、推荐系统中的相似度匹配,还是聚类任务中的样本分组,距离度量都扮演着关键角色。不同的场景需要不同的距离衡量方式,本文将介绍深度学习中常用的几种距离计算方法,并附上代码示例,助你快速掌握它们的应用场景。

1. 欧氏距离( )

定义:欧氏距离是最直观的“直线距离”,用于衡量多维空间中两点的实际距离。

公式:

应用场景:图像特征匹配、K-Means聚类、回归问题。

代码示例:

import numpy as np

a = np.array([123])
b = np.array([456])
distance = np.linalg.norm(a - b)
print("欧氏距离:", distance)  # 输出 5.196

2. 曼哈顿距离( )

定义:也称为“城市街区距离”,模拟网格路径的行走距离。

公式:

应用场景:文本分类、稀疏高维数据。

代码示例:

distance = np.sum(np.abs(a - b))
print("曼哈顿距离:", distance)  # 输出 9

3. 余弦相似度( )

定义:衡量两个向量的方向差异,忽略大小。

公式:

应用场景:文本相似度(如TF-IDF向量)、推荐系统。

代码示例:

dot_product = np.dot(a, b)
norm_a = np.linalg.norm(a)
norm_b = np.linalg.norm(b)
similarity = dot_product / (norm_a * norm_b)
print("余弦相似度:", similarity)  # 输出 0.974

4. 马氏距离( )

定义:考虑数据协方差结构的距离,消除特征相关性影响。

公式:

其中是协方差矩阵。

应用场景:分类任务(如LDA)、异常检测。

代码示例:

from scipy.spatial.distance import mahalanobis

# 假设数据已计算协方差矩阵的逆 S_inv
S_inv = np.linalg.inv(np.cov(data, rowvar=False))
distance = mahalanobis(a, b, S_inv)

5. 汉明距离( )

定义:比较两个等长字符串在相同位置上不同字符的数量。

应用场景:错误检测、DNA序列比对、二进制编码(如哈希编码)。

代码示例:

def hamming_distance(a, b):
    return np.sum(a != b)

a = np.array([1011])
b = np.array([0010])
print("汉明距离:", hamming_distance(a, b))  # 输出 2

6. KL散度(- )

定义:衡量两个概率分布之间的差异,非对称性。

公式:

应用场景:变分自编码器(VAE)、生成对抗网络(GAN)。

代码示例:

from scipy.special import kl_div

p = np.array([0.40.6])
q = np.array([0.50.5])
kl = np.sum(kl_div(p, q))
print("KL散度:", kl)  # 输出约 0.02

如何选择合适的距离度量?

距离类型适用场景特点

欧氏距离

连续特征、几何空间距离

对量纲敏感

余弦相似度

高维稀疏数据(如文本)

加入IP合伙人(站长加盟) | 全面包装你的品牌,搭建一个全自动交付的网赚资源独立站 | 晴天实测8个月运营已稳定月入3W+
限时特惠:本站每日持续更新海量内部创业教程,一年会员只需98元,全站资源免费无限制下载点击查看会员权益

站长微信: qtw123cn

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注