Attention Mechanism Self-Attention Transformer LLM Derin Öğrenme Multi-Head Attention

Attention Mechanism Nedir? Transformer ve Self-Attention

Orta
person Yapay Zeka Uzmanı
list_altİçindekilerexpand_more
  1. 01Attention Neden Gerekli?
  2. 02Self-Attention Nasıl Çalışır: Q, K ve V
  3. 03Somut Bir Örnek
  4. 04Dikkat Matrisi Örneği
  5. 05Formül
  6. 06Multi-Head Attention
  7. 07Positional Encoding: Konum Bilgisi Nereden Geliyor?
  8. 08Scaled Dot-Product Attention’ın Matematiksel Mantığı
  9. 09Attention Tipleri: Self, Cross ve Causal
  10. 10Self-Attention
  11. 11Cross-Attention
  12. 12Causal (Masked) Self-Attention
  13. 13Attention Başları Ne Öğreniyor?
  14. 14Attention ve Context Window
  15. 15Gerçek Hayatta Attention: BERT’ten GPT’ye
  16. 16KV Cache ve Çıkarım Optimizasyonu
  17. 17Grouped Query Attention: KV Belleğini Küçültmek
  18. 18Attention’ın Modern Yapay Zekadaki Yeri

Bir metni okurken gözler her kelimeye eşit süre harcamaz. Kritik bir sözcük karşısında okuyucu farkında olmadan bir önceki cümleye ya da paragraf başına döner. Zihin önemli olanı seçiyor, gereksizi geçiyor. Transformer modelleri tam bunu yapıyor: her kelimeyi işlerken diğer kelimelerin ne kadarıyla ilişkilendirmesi gerektiğini sayısal olarak hesaplıyor.

Bu makale attention’ın neden gerekli olduğunu, Q/K/V matrislerinin nasıl çalıştığını ve self-attention ile cross-attention arasındaki farkı kapsıyor. Flash Attention, KV Cache ve context window sınırlarına da değiniyoruz.

Attention Neden Gerekli?

2017 öncesinde dizi-dizi (sequence-to-sequence) görevler için en yaygın yapı RNN (Recurrent Neural Network) ve LSTM (Long Short-Term Memory) mimarileriydi. Bu ağlar metni soldan sağa, sıralı biçimde işliyordu. Her adımda önceki gizli durumu (hidden state) ileri taşıyarak bellek oluşturmaya çalışıyordu.

Bu yaklaşımın ciddi bir kırılganlığı vardı: uzun cümlelerde bilgi sıkışıyordu. “Dün sabah markete giden ve saatlerce sıra bekleyen Mehmet yoruldu” gibi bir cümlede, bir RNN “Mehmet” ile “yoruldu” arasındaki ilişkiyi kurmak için aradaki tüm tokenleri tek bir vektörde taşımak zorundaydı. Cümle uzadıkça bu taşıma güçleşiyor, erken tokenlere ait bilgi zayıflıyordu. Çeviri görevlerinde bu kaybın faturası ağır oluyordu.

Attention mekanizması bu problemi farklı bir yaklaşımla çözdü: sıralı işleme yerine, her token için tüm girdilere aynı anda bakılıyor ve her girdi-çifti arasında bir ilgi skoru hesaplanıyor. Bu skor, ağın hangi kelimelere daha fazla odaklanması gerektiğini dinamik olarak belirliyor.

Transformer mimarisinin bu temele nasıl oturduğunu anlamak için önce attention’ın çalışma prensibini kavramak gerekiyor.

Self-Attention Nasıl Çalışır: Q, K ve V

Attention’ın kalbinde üç matris yatıyor: Q (Query), K (Key) ve V (Value). İsimleri bir arama motorunun mantığından geliyor: arama sorgusu (query), indeksteki anahtar kelimeler (keys) ve bulunan sonuçların içeriği (values).

Somut Bir Örnek

“Kedi fareyi kovaladı” cümlesini ele alalım. Bu cümledeki her kelime önce bir embedding vektörüne dönüştürülüyor. Ardından her embedding, üç farklı ağırlık matrisiyle çarpılarak Q, K ve V vektörleri üretiliyor.

“Kovaladı” sözcüğünün Q vektörü “bu fiil neyle ilişkili?” sorusunu soruyormuş gibi davranıyor. Bu Q vektörü, cümledeki diğer tüm kelimelerin K vektörleriyle karşılaştırılıyor:

  • “Kovaladı” Q × “Kedi” K → yüksek skor (özne ilişkisi)
  • “Kovaladı” Q × “fareyi” K → yüksek skor (nesne ilişkisi)
  • “Kovaladı” Q × “kovaladı” K → orta skor (kendi başvurusu)

Çıkan skorlar softmax ile olasılık dağılımına çevriliyor. Bu dağılım, her V vektörüne uygulanan ağırlıkları belirliyor. “Kovaladı” kelimesi için nihai temsil, tüm kelimelerin V vektörlerinin bu ağırlıklarla alınmış toplamı.

Dikkat Matrisi Örneği

KediFareyiKovaladı
Kedi0.700.100.20
Fareyi0.100.600.30
Kovaladı0.400.400.20

Satırlar “hangi kelime neye bakıyor” diye okunuyor. “Kovaladı” hem özneye hem nesneye dengeli dikkat ediyor; bu, fiilin her iki bağımlısını da temsiline kattığı anlamına geliyor.

Formül

Attention hesabı şu formülle özetleniyor:

Attention(Q, K, V) = softmax(QK^T / √d_k) · V

Burada d_k, Key vektörünün boyutu. Neden bu değere bölünüyor? Boyut büyüdükçe skalar çarpımlar çok büyük sayılar üretiyor ve softmax neredeyse tek bir değere odaklanmaya başlıyor. √d_k ile bölmek bu etkiyi dengeliyor ve gradyanların sıfıra yaklaşmasını önlüyor.

Tokenization’ın bu vektörlerin oluşumunu nasıl etkilediğini ayrıca incelemeye değer.

Multi-Head Attention

Tek bir attention başlığı yeterli mi? Çoğu zaman değil. Bir cümlede birden fazla ilişki türü aynı anda devreye girebilir: sözdizimsel bağlar, anlamsal benzerlikler, zamirlerle isimler arasındaki bağlantılar ve çok daha fazlası.

Multi-head attention, bu sorunu h adet paralel attention başlığıyla çözüyor. Her baş, girdi vektörlerine farklı bir lineer dönüşüm uyguluyor ve bu sayede her biri farklı bir ilişki kalıbını öğrenebiliyor.

Her baş için bağımsız Q, K, V projeksiyon matrisleri öğreniliyor; h adet attention hesabı paralel yapılıyor. Çıktılar birleştiriliyor (concat) ve final projeksiyon matrisiyle işleniyor.

GPT-2 12 baş kullanırken modern büyük modeller 32 veya daha fazla baş barındırıyor. Tipik değerler: 8, 12, 16, 32. Her baş, modelin farklı bir “bakış açısı” kazanmasına katkıda bulunuyor; biri sözdizimsel yapıyı yakalarken bir diğeri anlamsal benzerlikleri öğrenebilir.

Positional Encoding: Konum Bilgisi Nereden Geliyor?

Self-attention, token çiftleri arasındaki ilişkileri hesaplar ama sıra bilgisine duyarsız. “Kedi fareyi kovaladı” ile “Fareyi kedi kovaladı” cümlelerini düşünün: aynı kelimeler, farklı anlam. Saf attention bu iki cümleyi ayırt edemez, çünkü formül kelimelerin sırasını görmüyor.

Bu boşluğu kapatmak için transformer her token embeddingine bir pozisyonel vektör ekliyor. Orijinal “Attention Is All You Need” makalesi sinüzoidal PE kullandı: her pozisyona frekans-tabanlı sabit bir vektör ekleniyor, model hem mutlak konumu hem de relatif mesafeleri çıkarabilir hale geliyor.

Bugün yaygın kullanılan yöntemler farklı. RoPE (Rotary Position Embedding), Q ve K vektörlerini bağıl pozisyona göre döndürüyor; uzun bağlamlarda daha iyi genelleme yapmasını mümkün kılıyor. Llama 2, Llama 3 ve Mistral ailesi RoPE kullanıyor. ALiBi (Attention with Linear Biases) ise pozisyon embeddingi yerine attention skoruna mesafe-tabanlı bir ceza ekliyor; eğitimde görülmeyen bağlam uzunluklarına da genelleyebiliyor.

Scaled Dot-Product Attention’ın Matematiksel Mantığı

1. Dot-product: Q ve K^T çarpımı, her sorgu-anahtar çifti arasındaki benzerlik skorunu üretiyor. (seq_len × seq_len) boyutunda bir matris üretiyor.

2. Ölçekleme: √d_k ile bölme işlemi gradyan stabilitesi için kritik. Ölçekleme olmadan yüksek boyutlu vektörler büyük skalar çarpımlar üretiyor, softmax ise bu durumda keskin bir dağılım üretiyor ve gradyanlar sıfıra yaklaşıyor.

3. Softmax + V çarpımı: Skorlar olasılığa çevriliyor ve bu olasılıklar V matrisinin satırlarını ağırlıklandırıyor. Nihai çıktı, değerlerin öğrenilmiş önem sırasına göre bir karışımı.

Decoder tarafında ek bir adım devreye giriyor: masked (causal) attention. Gelecekteki tokenlara ait K değerleri softmax’tan önce -∞ ile maskeleniyor. Böylece modelin henüz üretmediği tokenlara bakması engelleniyor ve otoregressif üretim tutarlı kalıyor.

Attention Tipleri: Self, Cross ve Causal

Self-Attention

Girdi dizisi hem Q hem K hem de V olarak kullanıldığında self-attention ortaya çıkıyor. Encoder katmanlarında standart yapı bu; metin kendi içindeki ilişkileri keşfediyor. Her token, cümlenin tamamına bakarak kendi bağlamsal temsilini güncelliyor.

Cross-Attention

Encoder-decoder mimarilerinde (makine çevirisi, özetleme gibi) decoder, encoder çıktılarından K ve V alırken kendi ara temsili Q olarak kullanılıyor. Bu yapı, hedef dil üretilirken kaynak dile sürekli atıfta bulunulmasını mümkün kılıyor.

Causal (Masked) Self-Attention

GPT ailesi gibi otoregressif modeller yalnızca geçmiş tokenlara bakabiliyor. Her adımda yalnızca o pozisyona kadar olan kısıma bakma kısıtı, maske matrisiyle uygulanıyor. Akıl yürüten modellerde bu kısıt daha da belirginleşiyor: model ara adımlar üretirken her adım bir öncekini görüyor ama bir sonrakini görmüyor.

Attention Başları Ne Öğreniyor?

Multi-head attention teoride farklı ilişki tiplerini yakalıyor, ama hangi baş tam olarak ne öğreniyor? Jesse Vig’in BertViz aracı BERT modelinin attention matrislerini katman katman görselleştirerek birkaç somut bulgu ortaya koydu. Bazı başlar zamiri ilgili isme bağlıyor (anaforik çözümleme), bazıları fiil-özne bağlarını takip ediyor, bazıları virgül veya nokta gibi noktalama işaretlerini komşu tokenlerle ilişkilendiriyor.

Bu çeşitlilik, başların rastlantısal değil görev-odaklı yapılar öğrendiğini gösteriyor. Modeli kör etmek amacıyla tek tek başları devre dışı bırakıp etkisini ölçen çalışmalar, bazı başların belirli dilbilgisel işlevler için kritik olduğunu doğruladı. Bununla birlikte, başların büyük kısmının çıkarım sırasında budanabildiği de görüldü. “Attention head pruning” bu gözleme dayanan bir sıkıştırma tekniği.

Attention ve Context Window

Attention’ın zarif matematiksel yapısının ciddi bir bedeli var: hesaplama karmaşıklığı O(n²) ile büyüyor. Girdideki token sayısı n iken, attention matrisi n×n boyutunda. n=1.000 için bir milyon eleman; n=100.000 için on milyar eleman.

Long context LLM’lerin 1 milyon token bağlamı nasıl yönettiği bu yüzden ciddi bir mühendislik sorusu. Birkaç yaklaşım bu karmaşıklığı kontrol altına alıyor:

  • Flash Attention: Belleği daha verimli kullanmak için hesabı parçalara bölen, GPU I/O maliyetini düşüren çekirdek optimizasyonu.
  • Sparse Attention: Her tokenin tüm diğer tokenlara değil, yalnızca seçilmiş bir alt kümeye baktığı yaklaşım.
  • Sliding Window Attention: Yerel bağlam pencereleriyle uzun diziyi kapsayan yöntem; Mistral modellerinde kullanılıyor.

Bu optimizasyonlar olmadan 128K veya 1M tokenlik bağlam pratikte işlenemez.

Gerçek Hayatta Attention: BERT’ten GPT’ye

Attention mekanizması aynı olsa da nasıl kullanıldığı modelin amacını belirliyor.

BERT çift yönlü attention kullanıyor: her token hem sol hem sağ komşularına bakabiliyor. Bu nedenle BERT metin üretmiyor; metni temsil ediyor ve anlama görevlerinde (NER, soru cevaplama, metin eşleştirme) güçlü.

GPT ise yalnızca causal (masked) attention ile çalışıyor. Her token yalnızca önceki tokenlara bakabiliyor; bu kısıt otoregressif metin üretimi için zorunlu. GPT ve türevleri bir sonraki tokeni tahmin ederek metin üretiyor.

İkisi aynı temel mekanizmayı kullanıyor ama çok farklı görevler için optimize edilmiş.

KV Cache ve Çıkarım Optimizasyonu

Bir LLM her yeni token ürettiğinde, tüm önceki tokenlerin K ve V matrislerini yeniden hesaplamak ciddi bir maliyet oluşturur. KV Cache bu hesabı önbelleğe alıyor.

Fikir basit: bir kez hesaplanan K ve V değerleri GPU belleğinde tutuluyor. Yeni token üretilirken yalnızca o tokenin Q vektörü hesaplanıyor ve önbellekteki K/V’lerle karşılaştırılıyor. Uzun bağlamlarda çıkarım hızını birkaç kat artıran bu yöntem, modern servis altyapısının temel bileşenlerinden biri.

Grouped Query Attention: KV Belleğini Küçültmek

Multi-head attention’ın standart versiyonunda her Q başına ayrı bir K ve V başı var. 32 Q başı, 32 K başı ve 32 V başı demek; KV Cache bu başların tamamını bellekte tutmak zorunda.

Grouped Query Attention (GQA), Llama 3 ve Mistral 7B’de kullanılan bir optimizasyon. Birden fazla Q başı aynı K/V başını paylaşıyor. 32 Q başı 8 KV grubuna bölündüğünde, her 4 Q başı tek bir K/V çiftini okuyor; bu KV Cache boyutunu dörtte birine indiriyor ve bellek baskısını azaltıyor. Llama 3 değerlendirmeleri, tam multi-head attention ile GQA arasında anlamlı bir kalite farkı görmedi. Production’daki büyük decoder modellerinin büyük kısmı bu tekniği şu an uyguluyor.

Attention’ın Modern Yapay Zekadaki Yeri

RNN çağında birkaç cümleyle sınırlı olan “bellek”, attention ile teorik olarak tüm bağlam penceresine uzanıyor. Bu fark, pratikte büyük: bir LLM 128K tokenlik bir belgeyi işlerken her kelime diğer her kelimeyle ilişkilendirilebiliyor.

Konuyu pekiştirmek isteyenler için iki yön var. RLHF bu temel üzerine nasıl inşa ediliyor, prompt engineering ise attention’ı dolaylı olarak nasıl etkiliyor. Her iki konu da attention’ı daha somut kılıyor.

auto_stories İlgili Makaleler