Simurg Okulu #10 — Transformer ve attention: model bir cümledeki kelimeleri birbirine nasıl bağlar
"Banka" kelimesi bir cümlede para, ötekinde oturulacak yer demek. Çırak öğle bölümünde modelin bu farkı nasıl yakaladığını, 2017'de tanıtılan transformer mimarisini ve kalbindeki attention mekanizmasını öğreniyor.

Yol günlüğü
Talep vadisinde öğle vakti. Sabah system prompt'un modelin önüne konan görünmez bir metin olduğunu öğrenmiştim. Ama bir soru takıldı: model o uzun metni okurken hangi kelimenin hangisiyle ilgili olduğunu nereden biliyor? İlk bölümde adını anıp geçtiğim transformer'ın içine bugün ilk kez bakıyorum.
Bugün öğrendim
Nedir?
Transformer, bugünkü büyük dil modellerinin çoğunun dayandığı mimaridir. 2017'de Google araştırmacılarının yayımladığı *Attention Is All You Need* makalesiyle tanıtıldı. Kalbinde attention (dikkat) adı verilen bir mekanizma var: model bir token'ı işlerken metindeki diğer token'lardan hangilerine ne kadar "bakacağını" hesaplar.
Örnek: "Bankaya gittim, hesabımı kapattım" ile "Parkta bir bankaya oturdum" cümlelerinde "banka" aynı kelime. Attention, birinci cümlede "banka"yı "hesap" ile, ikincide "park" ve "oturmak" ile ilişkilendirerek kelimenin anlamını bağlama göre ayarlar.
Nasıl çalışıyor?
Formülsüz anlatmaya çalışayım. Her token önce bir sayı listesine (vektöre) çevrilir. Attention katmanında her token üç rol üstlenir: bir soru (query: "ben neyle ilgiliyim?"), bir etiket (key: "ben şuyum") ve bir içerik (value: "bende şu bilgi var"). Bir token'ın sorusu diğer tüm token'ların etiketleriyle karşılaştırılır; uyum yüksekse o token'ın içeriğinden daha fazla pay alınır. Sonuçta her token, çevresinden süzülmüş bilgiyle zenginleşmiş yeni bir temsile dönüşür.
Bu işlem tek seferde yapılmaz. Makaledeki adıyla multi-head attention, aynı anda birkaç farklı "bakış" çalıştırır; biri dil bilgisi ilişkilerine, öteki anlam yakınlığına odaklanabilir. Ardından bu katmanlar üst üste dizilir. Kelime sırası ayrıca bir konum bilgisiyle (positional encoding) eklenir, çünkü attention tek başına sırayı bilmez.
Transformer'ı öncekilerden ayıran şey, metni kelime kelime sırayla değil, aynı anda işleyebilmesi. Makale bunun eğitimi çok daha paralel hâle getirdiğini anlatıyor. Bedeli de var: her token diğer her token'a baktığı için iş yükü metin uzadıkça hızla büyür. Token bölümünde gördüğüm context window sınırının bir nedeni de bu.
Ne yapılabilir?
- Uzun metinde kritik bilgiyi öne almak: Attention her şeye eşit bakmıyor; "Lost in the Middle" çalışması da ortadaki bilginin kaçabildiğini göstermişti. Önemli talimatı başa ya da sona koymak işe yarayan bir alışkanlık.
- Model boyutunu işe göre seçmek: Aynı mimari küçük modellerde de var. Bugün Amazon'un iç ticket sınıflandırmasında 4.096 token'lık pencereye sahip küçük bir modelle iş gördüğünü okudum; pencere dar olunca uzun kayıtların eski kısımlarının atıldığı da yazıda açıkça var.
- Görselleştirmek: Açık kaynak araçlarla küçük bir modelin attention haritası çizdirilebiliyor; hangi kelimenin hangisine baktığını görmek kavramı oturtuyor.
Tüyü yaktım
"Bankaya gittim ama kapalıydı, ben de karşıdaki bankta oturdum" gibi kasıtlı olarak karışık bir cümle yazıp bir asistana "Bu cümlede kaç farklı 'banka' anlamı var?" diye sordum. Cevap doğruydu. Sonra aynı cümleyi uzun ve alakasız bir metnin ortasına gömüp sordum; bu sefer cevap daha kararsızdı. Tek denemeden genel sonuç çıkarmıyorum, ama uzun metinde bağlamın zayıflayabildiğini kendi gözümle görmüş oldum. Attention haritasını çizdirmeyi ise henüz başaramadım; bilmiyorum, bir sonraki denemem bu.
Heybeme koyduğum
Transformer her kelimeyi diğer kelimelere bakarak anlamlandırır; anlam kelimede değil, kelimeler arasındaki ilişkidedir.
Kafama takılan
Attention haritası modelin "neden" böyle cevap verdiğini gerçekten açıklıyor mu, yoksa yalnızca nereye baktığını mı gösteriyor?
Son söz
Akşam bölümünde Talep vadisinde bir adım daha atıyorum: benchmark'lar. Model karşılaştırma tablolarındaki o yüzdeler gerçekte neyi ölçüyor, neyi ölçmüyor? Bu öğle ders şuydu: modelin dünyası tek tek kelimelerden değil, aralarındaki bağlardan örülü.