2024/6/3 9:40:00
あれ『Fast top-K Cosine Similarity Search through XOR-Friendly Binary Quantization on GPUs』ビット列のコサイン類似度あれあれxorの微分xorはビットの微分xorでビット列の類似度が出せるあれxorの逆関数はxorxorshiftxorの回転あれあれXOR = (x, y) => (1-Math.cos(Math.PI * x - (Math.PI * y))) / 2XOR = (x,y) => 2 * (Math.max(x, y) - Math.min(x,y)) - 1 あれxorrotate『ARC124 B XOR Matching 2 - Example's Shojin』あれxor(x)=or(X)-and(X)xor(X)=max(X)-min(X)xorは繰り上がり無しの加算実数にしたxorXNORあれあれ
『ARC124 B XOR Matching 2 - Example's Shojin』
2024/6/12 22:48:00
あれ
2024/6/10 23:25:00
xor・rotate_right・rotate_leftで、ベクトル化された微分可能な述語論理が構成できる気がするんだ……。
述語論理の述語と個体を{0,1}
のベクトルであるところのビット列で表現したい。
正規表現の微分が定義できるんだから、述語論理の微分ぐらいイケるやろ。
あれ
2024/6/10 23:08:00
XOR = (x, y) => (1-Math.cos(Math.PI * x - (Math.PI * y))) / 2
2024/6/10 22:50:00
あれあれxorxorの回転あれXOR = (x, y) => (1-Math.cos(Math.PI * x - (Math.PI * y))) / 2XOR = (x,y) => 2 * (Math.max(x, y) - Math.min(x,y)) - 1 あれ
あれ
2024/6/10 22:48:00
XOR = (x,y) => Math.max(x,y) - Math.min(x,y)
この定義からは更に回転している臭いがむんむんにしている。
図で見ると、位相の移動を感じる。
こうしてやると、更に回転っぽくなる。原点を中心に回っている感じがする。
XOR = (x, y) => (1-Math.cos(Math.PI * x - (Math.PI * y))) / 2
xorをcosとsinで定義できた。
xやyが1.0より大きい値にはみ出したときにもxorっぽく振る舞うのが嬉しい。
ビット列のコサイン類似度
2024/6/10 20:38:00
ビット列のコサイン類似度 = popcount(xor(a,b)) / ((popcount(a)**0.5)*(popcount(b)**0.5))