400次元程度の高次元においてコサイン類似度0.2は1万回に1回の激レア
- 本当は768次元で試したかったんだけど100万回試しても0だった : | dim | over 0.20 | over 0.22 | over 0.24 | | — | — | — | — | | 2 | 4297 | 4245 | 4177 | | 10 | 2760 | 2554 | 2379 | | 100 | 228 | 140 | 76 | | 200 | 25 | 9 | 1 | | 300 | 5 | 4 | 1 | | 400 | 1 | 0 | 0 |
py
import numpy as np
for dim in [2, 10, 100, 200, 300, 400]:
over020 = 0
over022 = 0
over024 = 0
for i in range(10000):
x = np.random.randn(dim)
x = x / np.linalg.norm(x)
if x[0] > 0.2:
over020 += 1
if x[0] > 0.22:
over022 += 1
if x[0] > 0.24:
over024 += 1
print(dim, over020, over022, over024)