Skip to content
EssayJun 28, 20262 min read

The Illustrated Word2vec-图解 Word2vec(一)

Reader

Text size

当处于简单的二维数组时,1和2中选取最像Jay的人, 这个时候可以使用余弦相似度(cosine similarity)寻找最相似最接近之人

Jay 和 Person #1 的相似度

设:

A=Jay=[−0.4,0.8]A = Jay = [-0.4, 0.8]A=Jay=[−0.4,0.8] B = Person\ #1 = [-0.3, 0.2]

第一步:算点积

A⋅B=(−0.4×−0.3)+(0.8×0.2)A \cdot B = (-0.4 \times -0.3) + (0.8 \times 0.2)A⋅B=(−0.4×−0.3)+(0.8×0.2) =0.12+0.16= 0.12 + 0.16=0.12+0.16 =0.28= 0.28=0.28

第二步:算 Jay 的长度

∣∣A∣∣=(−0.4)2+0.82||A|| = \sqrt{(-0.4)^2 + 0.8^2}∣∣A∣∣=(−0.4)2+0.82​ =0.16+0.64= \sqrt{0.16 + 0.64}=0.16+0.64​ =0.80= \sqrt{0.80}=0.80​ ≈0.894\approx 0.894≈0.894

第三步:算 Person #1 的长度

∣∣B∣∣=(−0.3)2+0.22||B|| = \sqrt{(-0.3)^2 + 0.2^2}∣∣B∣∣=(−0.3)2+0.22​ =0.09+0.04= \sqrt{0.09 + 0.04}=0.09+0.04​ =0.13= \sqrt{0.13}=0.13​ ≈0.361\approx 0.361≈0.361

第四步:代入公式

cosine_similarity(A,B)=0.280.894×0.361cosine_similarity(A,B)=\frac{0.28}{0.894 \times 0.361}cosine_similarity(A,B)=0.894×0.3610.28​ =0.280.323= \frac{0.28}{0.323}=0.3230.28​ ≈0.87\approx 0.87≈0.87 Jay 和 Person #1 的相似度 ≈ 0.87,说明他们方向很接近,所以比较相似。

余弦相似度适用于任意数量的维度。这些得分比上次的得分要更好,因为它们是根据被比较事物的更高维度算出的。

在Word2vec / Embedding 里,余弦相似度最符合我们想比较的东西,也就是方向。Word2vec 更关心方向,不是长度,假如两个词语的语义接近,通常会指向相似方向。因此余弦相似度在这里很适用,即使长度差距很大,但方向极易判断出来。例如A = [1, 2] B = [10, 20] 长度差距很大,但是方向完全一样,最后得出的值是1.