很多深度学习的应用里用余弦距离来表示特征向量之间的相似度。这怎么弄呢?
首先人为制造一个定义:两个向量的夹角越小,则两个向量越相似。
夹角可以通过 cosin \text{cosin} cosin 函数来算: cos ( θ ) = a ⃗ ⋅ b ⃗ ∣ a ⃗ ∣ ∣ b ⃗ ∣ \cos(\theta) =\frac{ \vec{a} \cdot \vec{b} } {|\vec{a}| |\vec{b}|} cos(θ)=∣a∣∣b∣a⋅b
先对 a ⃗ \vec{a} a 和 b ⃗ \vec{b} b 归一化之后再算也是一样的。
设 a ⃗ \vec{a} a 归一化后为 a \pmb{a} aaa, b ⃗ \vec{b} b 归一化后为 b \pmb{b} bbb。
则 cos ( θ ) = a ⋅ b \cos(\theta) = \pmb{a} \cdot \pmb{b} cos(θ)=aaa⋅bbb。
假设 θ ∈ [ 0 , π ] \theta \in [0, \pi] θ∈[0,π],则 cos ( θ ) \cos(\theta) cos(θ) 在这个区间是单调递减的。
所以夹角
θ
\theta
θ 越大,越不相似。
即
cos
(
θ
)
\cos(\theta)
cos(θ) 越小,越不相似。
这种反着看不直观,令 d = 1 − a ⋅ b d = 1 - \pmb{a} \cdot \pmb{b} d=1−aaa⋅bbb,则夹角越大, d d d 越大。
所以可以直接用 d d d 来表示余弦距离。