Vektörler ve Benzerlik
Nokta çarpım, matris, kosinüs ve gömme.
Önceki yazılarda “sayı listesi” dedik: tokenizer bir satır numarası verir, tablodaki o satır ondalıklardan oluşur. O listeye vektör denir. number[]. Yeni bir nesne modeli yoktur. Modelin bütün çarpma-toplaması bu listeler üzerinedir. “Kedi” ile “köpek”in yakın olması, iki listenin birbirine bakmasıdır; makinenin kedi tanıması değildir.
Vektör ve nokta çarpım
n boyutlu vektör x = (x₁, …, xₙ). Toplama bileşen bileşen, skaler çarpım her bileşeni katlar. Norm (Öklid) ‖x‖ = √(x·x). Sıfır vektörün uzunluğu 0’dır; yönü belirsizdir.
Nokta çarpım x · y = Σᵢ xᵢ yᵢ = ‖x‖ ‖y‖ cos θ. Aynı yöne bakıyorlarsa pozitif, dikse 0, zıtlarsa negatiftir. x · y aynı zamanda x’in y yönündeki izdüşümünün ‖y‖ ile çarpımıdır.
function dot(a: number[], b: number[]): number {
return a.reduce((sum, value, i) => sum + value * b[i], 0);
}
const a = [1, 0];
const b = [0.6, 0.8];
// a·b = 0.6, ‖a‖ = 1, ‖b‖ = 1, θ = arccos(0.6) ≈ 53°
Kosinüs benzerliği cos θ = (x·y) / (‖x‖ ‖y‖) uzunluğu atar, açıyı bırakır. Metinde cümle boyu (norm) sık gürültüdür; açı daha kararlıdır. Norm 0 ise tanımsızdır; sıfır gömme ayrı ele alınır.
Öklid mesafe ‖x − y‖² = ‖x‖² + ‖y‖² − 2 x·y. Birim vektörlerde (‖x‖ = ‖y‖ = 1) mesafeyi küçültmek kosinüsü büyütmekle aynıdır. Bu yüzden gömmeler sık sık normalize edilir.
Matris bir yığındır
Matris W (m × n), n boyutlu vektörü m boyuta doğrusal taşır: h = Wx. hᵢ = satırᵢ · x. Her satır bir “ne arıyorum” vektörüdür. Katman, tam bu çarpımdır.
function matVec(W: number[][], x: number[]): number[] {
return W.map((row) => dot(row, x));
}
const W = [
[1, 2],
[0, 1],
];
const x = [3, 4];
// Wx = [1*3+2*4, 0*3+1*4] = [11, 4]
W (x + y) = Wx + Wy ve W(cx) = c Wx. Doğrusal harita orijini korur; kayma b ayrı eklenir: Wx + b. Affine harita budur. Birden fazla vektörü sütun sütun dizip tek matris çarpımı yapmak (H = XW) GPU’nun işidir: aynı işlem, yığın.
Boyut uyumu zorunludur. W m × n, x n. Dikkatte Q Kᵀ bu yüzden d_k boyutunda anlaşır. Uyumsuz boyut, “anlam” değil, tanımsız çarpımdır.
Yüksek boyutta rastgele vektörler neredeyse dikleşir; mesafeler birbirine yaklaşır. Ham pikselde “en yakın komşu” bu yüzden zayıftır. Gömme, mesafenin anlamlı olacağı az boyuta (veya yapılaşmış boyuta) indirgemektir.
Gömme
Gömme e: nesne → ℝᵈ, benzer nesneleri yakın noktalara basar. Hedef eğitim sinyalidir: eşdizim (word2vec), cümle çifti, tıklama. Aynı kelime, farklı hedefte farklı komşu edinir.
Sürekli uzay, görülmemiş cümleye de bir nokta verir. Bu, genelleme gibi durur; aslında eğitimde görülen yönlere izdüşümdür. “kral − erkek + kadın ≈ kraliçe” aritmetiği, uzayın bazı eksenlerde cinsiyet/rol ayrımı taşıdığını gösteren bir gözlemdir; ispat veya garanti değildir.
Sonraki yazı, bu noktaları kayıp yüzeyinde hareket ettiren aracı verir: türev.
Alıştırma
u = [1, 2], v = [2, 1], w = [−2, −4] için u·v, u·w ve kosinüsleri hesaplayın. w = −2u iken kosinüs neden −1’dir? Üç boyutta konu/duygu/uzunluk eksenine kendi üç cümlenizi 0–1 koyup aynı hesabı tekrarlayın.