Distance between two samples
Minkowski distance
即 Lp distance。
d(x,y)=(i∑∣xi−yi∣p)p1=(i∑∣di∣p)p1
以下是几个比较重要的 p
- p=∞,切比雪夫距离。d(x,y)=maxi∣xi−yi∣
- p=2,欧氏距离。d(x,y)=∑i(xi−yi)2
- p=1,曼哈顿距离。d(x,y)=∑i∣xi−yi∣
Cosine distance
通常和 cosine similarity 一起出现。
比较最常见的欧氏距离和余弦距离:
deuc(x,y)=∥x−y∥=∥x∥2+∥y∥2−2xTySimcos(x,y)=∥x∥∥y∥xTy
当 ∥x∥=∥y∥=1,有
deuc(x,y)=2−2xTy=2−2simcos(x,y)
Metric learning
- What if different dimension are heterogeneous?
比如有向量 u,一个维度为身高,另一个维度为体重。那么直接计算距离 ∥u1−u2∥ 是不合理的。此时可以考虑使用 Z-score normalization。
- What if different dimension are heterogeneous?

此时可以考虑将两个不同样本的特征从不同空间投影到相同的空间: d(x,y)⇒d(Px,Py)

Mahalanobis distance
首先引入欧氏距离的拓展:马氏距离。
d(x,y)=∥x−y∥=(xT−yT)(x−y)
d(Px,Py)=∥Px−Py∥=(xT−yT)PTP(x−y)=(xT−yT)M(x−y)
Metric learning
即学习 M,得到更好地距离度量。
Mmaxs.t.(xi,xj)∈D∑dM2(xi,xj)(xi,xj)∈S∑dM2(xi,xj)≤1,M⪰0.
式中 D 意为 different,表示 xi,xj 属于不同种类;S 意为 same,表示 xi,xj 属于相同种类。M⪰0 表示 M 为半正定矩阵。

Earth Mover’s Distance (EMD)
首先把两个样本转化为两个集合
ST={(x1s,w1s),(x2s,w2s),…,(xms,wms)}={(x1t,w1t),…,(xnt,wnt)}
式中 (x1s,w1s) 是一个 pair,可以理解为一个属性和这个属性的占比。
比如考虑两张图片的距离,集合中的 pair 可以理解为颜色以及颜色在图片中的占比。

算法可以按照如下图片理解:

我们需要将左侧的土堆推到右边的坑中。左侧每个土堆的即某种属性的占比;右侧每个坑的容量则是另一个样本中的某个属性的占比。一个土堆到一个坑之间的距离可以理解为两个属性的特征向量的距离。总的距离就是最小的运输代价:
fijmins.t.i=1∑mj=1∑nfijdijfij≥0,1≤i≤m,1≤j≤n,j=1∑nfij≤wis,1≤i≤m,i=1∑mfij≤wjt,1≤j≤n,i=1∑mj=1∑nfij=min(i=1∑mwis,j=1∑nwjt).
Application of distance
Retrieval
检索问题,在以图搜图等应用中会用到。比如下面的图希望找到最接近五角星的一个样本。

Classification: KNN
KNN 即找到离目标样本点最近的 k 个样本点,然后判断目标样本点属于哪一类。

Verification
判断两个样本点是否属于同一个种类。可以应用于人脸识别,比如判断两个样本点之间的距离是否会大于某个阈值。

Outlier detection
找到 outlier。可以对于每个样本,计算离它最近的其他样本的距离。

Distance between two distributions
想要计算两个分布之间的距离,可以先得到概率分布,然后计算概率分布的距离。

- Canberra distance: d(p,q)=∑i=1dpi+qi∣pi−qi∣
- Chi-Square distance: d(p,q)=∑i=1dpi(pi−qi)2
- Intersection between two histograms: d(p,q)=∑i=1dmin(pi,qi)
但是使用概率分布进行距离度量是比较粗糙的度量方式,忽略了 xi,xj 两两样本之间的关系。
Maximum Mean Discrepancy (MMD)
计算两个数据分布中心的欧氏距离。同样是比较粗糙的距离度量方式。

DMMD=[i∑xip(xi)−i∑xiq(xi)]2
Kullback-Leibler(KL) divergence
DKL(p∣q)=i∑p(xi)logq(xi)p(xi)=−i∑p(xi)logq(yi)+i∑p(xi)logp(xi)=H(p,q)−H(p)
上式中 H(p,q) 表示 p,q 之间的交叉熵,H(p) 为样本 p 的熵。
但是 KL divergence 是不对称的,即 d(p,q)=d(p,q),因此衍生出了一些解决不对称问题的度量方式。
DJD=DKL(p∣∣q)+DKL(q∣∣p)=i∑p(xi)logq(xi)p(xi)+i∑q(xi)logp(xi)q(xi)
- Jensen-Shannon(JS) divergence
DJD=21DKL(p∣∣21(p+q))+21DKL(q∣∣21(p+q))=i∑21p(xi)log21(p(xi)+q(xi))p(xi)+21i∑q(xi)log21(p(xi)+q(xi))q(xi)
Bregman divergence
这是一个广义的距离度量方式,可以通过修改参数 φ 来变成其他的距离度量方式。
p=[p(x1),p(x2),…,p(xn)]q=[q(x1),q(x2),…,q(xn)]Dφ(p,q)=φ(p)−φ(q)−(p−q)T∇φ(q)
Example
比如 φ(z)=21zTz 时,
Dφ(p,q) =φ(p)−φ(q)−(p−q)T∇φ(q)=21∥p−q∥2
变成欧式距离。

当 φ(z)=zTlogz 时,
Dφ(p,q)=φ(p)−φ(q)−(p−q)T∇φ(q)=i∑p(xi)logq(xi)p(xi)−i∑p(xi)+i∑q(xi)
得到的就是标准的 KL divergence。
