00Bir sonraki kelimeden fazlası#
“Kedi koltuğa atladı. Çünkü çok…” Cümleyi tamamlarken yalnızca son kelimeye bakmazsın. Kediyi, hareketi ve önceki cümlenin bıraktığı ipuçlarını birlikte düşünürsün. Bir dil modeli de devamını üretirken önceki metni kullanır; ama bunu insanların düşünme biçiminin bir kopyasıyla değil, sayılar üzerindeki öğrenilmiş işlemlerle yapar.
Transformer, bu işlemleri düzenleyen bir sinir ağı mimarisidir. Temel fikir şu: her metin parçasının temsilini, diğer parçalardan gelen bilgiyle güncelle. Önce tekrarlı ağların neden yetmediğini merak ediyorsan Dizi modelleri yazısına bak. Bu yazıda bir cümleyi modelin içine kadar takip edeceğiz. Önce parçalara ayıracak, sonra vektörlere çevirecek, bağlantılarını inceleyecek ve bir sonraki tokenın nasıl seçildiğini göreceğiz.
Matrisleri önceden bilmen gerekmiyor. Bir vektörü “sayı listesi”, bir matrisi “sayı tablosu” olarak düşünebilirsin. Daha sistematik bir tekrar istersen, nokta çarpımı ve matrisleri küçük örneklerle anlatan ön bilgi yazısına bakabilirsin. Her görselin yanında neyin hesaplandığını, neyin yalnızca anlatımı kolaylaştırmak için seçildiğini belirtiyoruz.
01Cümle, küçük parçalara ayrılır#
Modelin girişine doğrudan harfler çizilmiş bir sayfa gitmez. Bir tokenizer, metni kendi sözlüğündeki birimlere ayırır. Bu birimler token olarak adlandırılır. Bir token tam bir kelime olabilir; bazen bir ek, bir noktalama işareti veya bir bayt dizisidir.
Türkçede “kedilerimizden” gibi bir kelimenin birden fazla parçaya ayrılması şaşırtıcı değildir. Yine de tokenizerın dil bilgisi kurallarını bilip kök ve ek aradığını varsayma. Örneğin BPE, eğitim metninde sık birlikte görünen birimleri birleştirerek bir sözlük oluşturur. Farklı sözlükler aynı metni farklı bölebilir. BPE’nin çalışma biçimi ↗
Metinden tokenlara
Modelin ilk işi anlam çıkarmak değil, metni işlenebilir birimlere ayırmaktır.
Sözlük, her parçayı bir tam sayı kimliğiyle eşler. Kimlik, anlamın kendisi değildir. Kitaplıktaki raf numarası gibi, modelin bir sonraki adımda doğru vektörü bulmasını sağlar. Bu nedenle token kimlikleri arasındaki sayısal uzaklık, kavramların benzerliği hakkında bilgi vermez.
02Parçalardan sayısal temsillere#
Bir embedding tablosunun her satırında, bir tokena ait öğrenilmiş sayı listesi bulunur. Model token kimliğini kullanarak o satırı seçer. Örneğin temsili sözlüğümüzdeki 42 numaralı öğe, dört sayıdan oluşan bir vektöre karşılık gelebilir. Gerçek modelde bu vektörün boyutu mimariye bağlıdır.
Bu sayılar eğitim sırasında ayarlanır. Benzer kullanım örüntülerine sahip tokenlar bazı açılardan benzer temsiller edinebilir. Fakat “ilk sayı canlılığı, ikinci sayı duyguyu anlatır” gibi sabit etiketler vermek genellikle doğru değildir. Temsil, bileşenlerin birlikte taşıdığı bilgidir. Embedding işleminin teknik tanımı ↗
Kelimelerin sayısal komşuluğu
Bir kelime seç, ardından başka bir kelimeyle vektörünü karşılaştır.
Bu iki örnek vektör benzer yönlere bakıyor. Bu sayı bir olasılık veya kelimelerin “anlamca yüzde kaç aynı” olduğunun ölçüsü değildir.
Benzerlik nasıl hesaplanıyor?
cos(a, b) = Σ(aᵢ × bᵢ) / (‖a‖ × ‖b‖)
Aynı konumdaki değerleri çarpıp toplar, sonucu iki vektörün uzunluklarının çarpımına böleriz. Burada dört boyutun tamamı kullanılır; yukarıdaki çizimdeki uzaklık kullanılmaz. Pozitif bir sayıyla ölçeklemek yönü ve kosinüs benzerliğini değiştirmez.
Bir embedding’in her ekseni “canlılık” gibi tek bir özelliğe karşılık gelmek zorunda değildir. Gerçek bir modelde bu benzerliğin ne kadar yararlı olduğu, eğitime ve göreve bağlıdır.
Bir başlangıç embedding’i, aynı token kimliği için aynı vektördür. Buna karşılık, sonraki katmanlardaki bağlamsal temsil çevredeki tokenlara göre değişir. “Yüz metre” ve “gülen yüz” ifadelerindeki aynı token kimliği, farklı bağlamlarda farklı biçimde işlenebilir.
Sıra da önemlidir. “Kedi köpeği kovaladı” ile “Köpek kediyi kovaladı” aynı parçaları içerir ama aynı şeyi söylemez. Model bu ayrımı yapabilmek için konum bilgisi kullanır. Bu bilgi girişe eklenen konum vektörleriyle veya attention içindeki göreli konum yöntemleriyle taşınabilir. Bizim blok çizimimiz ilk yaklaşımı kullanır. Konum kodlamaları ve RoPE ayrı bir yazıda ele alınıyor. Konum bilgisinin mimarideki yeri ↗
03Attention: hangi bilgi, ne kadar katılsın?#
Her tokenın artık bir vektörü var. Şimdi bu vektörün diğer konumlardan bilgi toplamasını istiyoruz. Attention, her konum için üç farklı doğrusal dönüşüm üretir: query (Q, sorgu), key (K, anahtar) ve value (V, değer).
Sorgu ile anahtarın nokta çarpımı bir uyum skoru verir. Bu skor, anahtar vektörünün boyutunun kareköküne bölünür. Ardından softmax, aynı sorguya ait skorları toplamı 1 olan ağırlıklara çevirir. Sonuç, değer vektörlerinin bu ağırlıklarla toplanmasıdır. “Bilgi toplamak” burada somut bir çarpma ve toplama işlemidir. Attention hesabı ↗
Buradaki M, izin verilen konumlarda 0, engellenen konumlarda −∞ olan maskedir. Bir metni soldan sağa üreten model, eğitimde de gelecekteki doğru cevaba bakmamalıdır. Nedensel maske, her konumun yalnızca kendisine ve önceki konumlara erişmesini sağlar. Aşağıdaki matriste sağ üst üçgenin neden boş kaldığını bu kuralla okuyabilirsin.
Kim, kime ne kadar bakıyor?
Satır = sorgu · Sütun = anahtar. Bir hücreye dokun.
| Kedi | koltuğa | atladı | . | |
|---|---|---|---|---|
| Kedi | ||||
| koltuğa | ||||
| atladı | ||||
| . |
. → Kedi
17.3%Bu satırın çıktısına, seçili sütunun değer vektörü bu ağırlıkla katılır.
skor = 0.495satır toplamı = 1[0.399, 0.601]Hesabın içini aç: Q, K ve V
Her satır iki boyutludur; ölçekleme böleni √2. Kaydırıcı Q’yu çarpar. Her satır için softmax uygulanır; çıktı Σ ağırlık × V olarak hesaplanır. Yüzdeler gösterimde yuvarlanır.
| Token | Q (başlangıç) | K | V |
|---|---|---|---|
| Kedi | 1, 0 | 1.1, 0.2 | 1, 0 |
| koltuğa | 0.3, 1 | 0.1, 1.2 | 0, 1 |
| atladı | 1.2, 0.4 | 0.8, 0.5 | 0.8, 0.2 |
| . | 0.4, 1.3 | 0.3, 1 | 0.2, 0.8 |
Bir hücreye dokun. Sonra maskeyi kapat: daha önce kapalı olan konumlar da bilgi akışına katılır. Satır toplamı yine 1’dir; dolayısıyla bazı eski bağlantıların payı azalır. Q’yu ölçeklediğinde ise yüksek ve düşük skorlar arasındaki farkın dağılımı nasıl değiştirdiğini görebilirsin.
Tek bir attention başı bu işlemi bir kez yapar. Çok başlı attention, farklı öğrenilmiş dönüşümlerle birden fazla bilgi karışımı üretir; bunları birleştirip yeniden dönüştürür. Bir başa “özne bulucu” gibi kesin bir görev atamak zorunda değiliz. Başların hangi örüntülere odaklandığı modele, katmana ve girdiye bağlıdır.
04Bir bloktan derin bir modele#
Attention, Transformer’ın tamamı değildir. Bir blok, bilgi paylaşımını ileri beslemeli ağ, normalizasyon ve artık bağlantılarla birleştirir. İleri beslemeli ağ, her konumdaki temsili ayrı ayrı dönüştürür; attention ise konumlar arasında bilgi taşır.
Artık bağlantı, bir alt katmanın sonucunu o alt katmanın girdisine ekler. Böylece ana temsil korunurken üzerine bir güncelleme yapılır. Normalizasyon da sayısal ölçeği düzenler. Bu işlemlerin sırası mimariler arasında değişebilir; aşağıda normalizasyonun alt katmandan önce geldiği pre-norm düzenini kullanıyoruz. Çalışan blok uygulaması ↗
Bir transformer bloğunun içinde
Girdi temsili
Token embedding’leri ile konum bilgisi birleşir. Böylece model hangi parçanın nerede olduğunu kullanabilir. Burada öğrenilmiş konum vektörleri eklenen bir decoder şeması seçtik.
Bu yapı art arda tekrarlandığında, her katman bir öncekinin temsillerini yeniden işler. Katman sayısı ve vektör boyutu modelin tasarımına bağlıdır. Aynı şemanın tekrarlanması, aynı parametrelerin paylaşılması demek değildir. Son katmandan çıkan bağlamsal vektör, artık tahmin üretmek için kullanılabilir.
05Tek bir cevap değil, bir dağılım#
Modelin çıkış katmanı, sözlükteki her token için logit adı verilen bir skor hesaplar. Softmax, bu skorları olasılıklara dönüştürür. Sonraki token bu dağılımdan seçilir: en yüksek olasılıklı adayı almak bir yöntemdir; olasılıklara göre rastgele örneklemek başka bir yöntemdir. Metin üretme stratejileri ↗
Sıcaklık, örneklemeden önce logitlerin bölündüğü pozitif sayıdır. Düşük sıcaklık dağılımı daha keskin, yüksek sıcaklık daha düz yapar. Bu bir doğruluk düğmesi değildir. Yanlış bir bilgi de yüksek olasılıkla gelebilir.
Sıradaki token ne olabilir?
Sıcaklık sıralamayı değiştirmez; olasılıkları değiştirir. Örneklemede en olası token her zaman seçilmez.
Logitleri ve formülü gör
pᵢ = exp(zᵢ / T) / Σⱼ exp(zⱼ / T). Başlangıç logitleri: [2.8, 1.9, 1.5, 0.8]. İkinci adım: [2.6, 1.6, 1.1, 0.9]. Sözlüğümüz yalnızca dört adaydan oluşur; gerçek modeller çok daha geniş bir sözlük üzerinde dağılım üretir.
Seçilen token metne eklenir. Gerçek bir model bir sonraki adımın skorlarını bu genişlemiş bağlamı kullanarak hesaplar. Böylece metin, tek bir büyük karar yerine birbirini izleyen seçimlerle oluşur. Uygulamalar çoğu zaman önceki anahtar ve değerleri yeniden hesaplamamak için bir KV cache kullanır; temel üretim mantığı aynı kalır. Otoregresif üretim ↗
06Peki bütün bunları nasıl öğreniyor?#
Şimdiye kadar eğitim tamamlandıktan sonraki çıkarım yolunu izledik. Eğitim sırasında model, gerçek metindeki bir sonraki tokena daha yüksek olasılık vermeyi öğrenir. Kayıp fonksiyonu, gradyan inişi ve öğrenme oranının küçük bir doğrusal modelde nasıl çalıştığını gördüysen, burada da aynı güncelleme kuralı geçerlidir; yalnızca ölçek ve hedefin biçimi değişir. Kayıp fonksiyonu, tahmin ile hedef arasındaki uyuşmazlığı ölçer. Geriye yayılım ve bir optimizasyon yöntemi, bu kaybı azaltacak parametre güncellemelerini hesaplar.
Nedensel maske sayesinde eğitimde bir dizinin birçok konumundaki tahmin aynı anda hesaplanabilir; her konum yine de geleceğini göremez. Metin üretiminde ise yeni token seçimi, bir önceki seçime bağlı olarak ilerler. Eğitimdeki paralellik ile üretimdeki ardışıklık farklı şeylerdir. Otoregresif dil modeli eğitimi ↗
Bu hedef, dilin ve verideki ilişkilerin kullanışlı temsillerini öğrenmeyi sağlayabilir. Ancak modelin akıcı yazması, dünyayla ilgili her iddiasının doğru olduğu anlamına gelmez. Kaynak kontrolü ve uygun değerlendirme hâlâ gereklidir.
Son dağılımdan tek bir sonraki tokena nasıl karar verildiğini burada greedy ve örnekleme ile kısaca gördün. Bu kararın tüm yollarını — top-k, top-p ve bunların riskleri dahil — Bir dağılımdan kelime seçmenin yolları yazısında derinleştirebilirsin.
↗Biraz daha derine#
- Vaswani ve diğerleri, Attention Is All You Need (2017) — Özgün encoder–decoder mimarisi ve ölçekli nokta çarpımı attention.
- Dive into Deep Learning, The Transformer Architecture — Açıklama ve çalıştırılabilir uygulamalar.
- Hugging Face, BPE tokenization — Alt kelime sözlüğünün nasıl oluştuğu.
- PyTorch, Embedding — Token kimliğinden vektöre tablo erişimi.
- Hugging Face, Generation strategies — Greedy decoding ve örnekleme.
- Jain ve Wallace, Attention is not Explanation (2019) — Dikkat haritalarını yorumlamanın sınırları.
Bu yazıdaki çizimler AI Atlas için hazırlanmış öğretim örnekleridir. Hiçbir görsel, belirli bir ticari modelin iç hesaplarını gösterdiğini iddia etmez.
Bu yazıyı bitirdiğinde:
- Bir cümlenin tokenlardan sayısal temsillere giden yolunu anlatabilirsin.
- Attention’ın “hangi bilgi ne kadar katılsın?” sorusunu nasıl yanıtladığını açıklayabilirsin.
- Modelin tek bir cevap değil bir olasılık dağılımı ürettiğini ve nasıl öğrendiğini özetleyebilirsin.
Cümlelerden birini kendi sözlerinle anlatamıyorsan, ilgili bölüme dön ve demoyu yeniden dene.
Model sırayı nasıl bilir, neden çok başı var?
Orta · 8 dk okuma