Self-Attention (Öz-Dikkat)

Bir dizideki her tokenin aynı dizinin diğer tokenleriyle ilişkisini hesaplayarak bağlam bilgisi kazandığı, transformer mimarisinin temel yapı taşı olan dikkat mekanizması.

Öz-dikkat (self-attention), bir dizideki her tokenin aynı dizinin diğer tüm tokenleriyle ilişkisini hesaplayarak her konuma bağlam bilgisi kazandıran dikkat mekanizmasının özel bir biçimidir. Klasik dikkat mekanizmasında kaynak ve hedef diziler farklıydı; örneğin makine çevirisinde giriş cümlesi ile çıkış cümlesi ayrı dizilerdi. Öz-dikkatte ise sorgu (Q), anahtar (K) ve değer (V) vektörlerinin üçü de aynı girişten türetilir. 2017 yılında "Attention Is All You Need" makalesiyle tanıtılan transformer mimarisinin temel yapı taşı olan öz-dikkat, RNN ya da CNN katmanlarına gerek kalmadan uzun mesafeli bağımlılıkları paralel hesaplamayla öğrenir. Hesaplama üç adımda ilerler. Önce giriş gömmeleri üç ayrı projeksiyon matrisiyle Q, K ve V uzaylarına dönüştürülür. Ardından her konumun sorgu vektörü tüm anahtar vektörleriyle nokta çarpımına girer, sonuç sqrt(d_k) ile ölçeklenir ve softmax uygulanarak dikkat ağırlıkları elde edilir. Son olarak bu ağırlıklar değer vektörleri üzerinde ağırlıklı toplam alınarak her token için yeni bir bağlamsal temsil üretir. "Banka kıyısında oturdu" cümlesindeki "banka" tokeni, "kıyı" tokenine yüksek ağırlık vererek finans kurumu değil nehir kenarı anlamını kodlar. Matematiksel olarak n uzunluğundaki bir dizi için öz-dikkat O(n^2 · d) hesaplama ve bellek maliyeti gerektirir; bu nedenle çok uzun dizilerde düşük ranklı yaklaşımlar (Linformer), yerel pencere dikkati (Longformer, Sliding Window Attention) ve FlashAttention gibi IO-farkında verimlilik teknikleri geliştirilmiştir. Maskeli öz-dikkat (masked self-attention), GPT ve Llama gibi otoregresif dil modellerinde kullanılır: her konum yalnızca önceki konumlara bakabilir, gelecekteki tokenlere erişim üst üçgen maskeyle kapatılır. BERT gibi çift yönlü kodlayıcılarda ise tam öz-dikkat uygulanır; her token hem öncesindeki hem sonrasındaki tokenleri görür ve sınıflandırma görevleri için güçlü bir bağlam temsili oluşur. Uygulamada öz-dikkat tek başına değil, çok başlı dikkat (multi-head attention) biçiminde birden fazla paralel başla çalıştırılır; her baş sözdizimi, eş gönderim ya da konum yakınlığı gibi farklı ilişki türlerini yakalar. Vision Transformer görüntü yamalarını, AlphaFold2 ise protein kalıntılarını token olarak işleyerek aynı mekanizmayı dil dışına taşımıştır.

Öz-Dikkat Nasıl Çalışır?

Öz-dikkat, bir dizinin her elemanının aynı diziyi anahtar-değer havuzu olarak kullanıp kendi bağlam temsilini oluşturması ilkesine dayanır. Giriş gömmeleri üç projeksiyon matrisiyle Q (sorgu), K (anahtar) ve V (değer) uzayına dönüştürülür. Her konum için Q vektörü tüm K vektörleriyle nokta çarpımına girer, sonuç sqrt(d_k) ile ölçeklenir ve softmax uygulanarak dikkat ağırlıkları elde edilir. Bu ağırlıklar V vektörleri üzerinden ağırlıklı toplam alınarak her token için yeni bir çıkış vektörü üretir. Ölçekleme adımı, boyut büyüdükçe nokta çarpımlarının aşırı büyüyüp softmax'ı doygunluğa sokmasını önler. Bir transformer katmanında bu hesap tüm tokenler için aynı anda matris çarpımıyla yapıldığından GPU paralelliğinden tam olarak yararlanılır; RNN'in sıralı işleme zorunluluğu ortadan kalkar.

Maskeli ve Çift Yönlü Öz-Dikkat

Öz-dikkat iki ana modda çalışır. Çift yönlü (bidirectional) öz-dikkatte her token dizinin tamamını görebilir; BERT ve diğer encoder-only transformer modelleri bu modu kullanır. Bu yaklaşım maskeli dil modelleme (MLM), sınıflandırma ve varlık tanıma gibi görevler için güçlü bir bağlam temsili kazandırır. Maskeli (causal ya da otoregresif) öz-dikkatte ise her konum yalnızca kendisinden önceki tokenlere dikkat edebilir; üst üçgen bir maske softmax öncesinde gelecek konumları eksi sonsuza çekerek ileriye bakışı engeller. GPT-2, GPT-3, Llama ve benzeri decoder-only modeller bu modla bir sonraki tokeni tahmin eder. T5 ve BART gibi encoder-decoder mimarilerinde iki mod birlikte kullanılır: encoder tarafında tam öz-dikkat, decoder tarafında maskeli öz-dikkat ve encoder çıktısına bakan çapraz dikkat.

Dikkat Mekanizması Türleri

  • check_circle Self-Attention (Öz-Dikkat): Q, K ve V aynı diziden gelir; her token kendi bağlam temsilini oluşturmak için diğer tokenlere bakar. Transformer encoder ve decoder bloklarının omurgasıdır.
  • check_circle Cross-Attention (Çapraz Dikkat): Q decoder'dan, K ve V encoder'dan gelir. Makine çevirisi, görüntü-metin ve ses-metin modellerinde diziler arası bilgi aktarımı burada gerçekleşir.
  • check_circle Masked Self-Attention (Maskeli Öz-Dikkat): Gelecekteki tokenleri maskeleyerek yalnızca geçmişe bakar; GPT ailesi ve Llama gibi otoregresif dil modellerinin temel dikkat modudur.
  • check_circle Multi-Head Attention (Çok Başlı Dikkat): Öz-dikkati birden fazla paralel başla çalıştırır; her baş sözdizimi, eş gönderim ya da konum yakınlığı gibi farklı ilişki türlerini yakalar.
  • check_circle FlashAttention: Dikkat hesabını GPU SRAM'ine sığan bloklar halinde yapan IO-farkında çekirdek; standart uygulamaya göre 2-4 kat hız ve çok daha düşük bellek kullanımı sunar.

Uzun Dizi Sorunu ve Çözümler

Standart öz-dikkat dizi uzunluğuyla O(n^2) karmaşıklığa sahip olduğundan 128K ya da 1M tokenlik bağlam pencereleri geleneksel uygulamalarda bellek sınırını aşar. Bu sorun için geliştirilen yaklaşımların en yaygını FlashAttention'dır: GPU SRAM'ini akıllıca kullanan blok tabanlı hesaplama ile n x n boyutundaki dikkat matrisini hiç belleğe yazmadan sonucu üretir, böylece hem hız artar hem bellek düşer. Longformer ve BigBird kayan pencere dikkatiyle yerel ilişkilere odaklanır, seçili global tokenlerle uzak bağlantıyı korur. Linformer anahtar ve değer matrislerini düşük ranklı projeksiyonla küçülterek doğrusal karmaşıklığa yaklaşır. Ring Attention dikkat hesabını birden fazla GPU'ya dağıtarak teorik dizi sınırını yükseltir. Çıkarım tarafında KV önbelleği ve Grouped-Query Attention (GQA) bellek trafiğini azaltır; Llama 3.1 gibi üretim modelleri 128K bağlamda GQA ve FlashAttention birlikteliğiyle çalışır.

Öz-Dikkatin Dil Dışındaki Kullanımları

Öz-dikkat token kavramını genel tuttuğu için dil dışındaki alanlara doğrudan taşınabilir. Vision Transformer (ViT) bir görüntüyü 16x16 piksellik yamalara böler, her yamayı bir token olarak gömer ve yamalar arasında öz-dikkat uygular; bu yaklaşım büyük veri kümelerinde evrişimli ağlarla rekabet eder. AlphaFold2 protein kalıntı çiftleri arasındaki ilişkileri öz-dikkat tabanlı Evoformer bloğuyla modelleyerek üç boyutlu yapı tahmininde çığır açmıştır. Ses alanında Whisper ve wav2vec 2.0 spektrogram karelerini token olarak işler; video modelleri uzamsal ve zamansal dikkati ayrı eksenlerde uygular. Öneri sistemlerinde kullanıcı etkileşim dizileri, çizge sinir ağlarında ise komşu düğümler dikkat ağırlıklarıyla harmanlanır. Ortak nokta, sıralı ya da kümesel her verinin eleman çiftleri arasındaki ilişkisini öğrenilebilir ağırlıklarla ifade edebilmesidir.

Sık Sorulan Sorular

  • check_circle Self-attention ile cross-attention arasındaki fark nedir? Self-attention'da Q, K ve V aynı diziden üretilir; model dizinin kendi içindeki ilişkileri öğrenir. Cross-attention'da Q bir diziden (decoder), K ve V başka bir diziden (encoder) gelir; farklı modaliteler ya da diziler arasında bilgi aktarımı bu yolla yapılır.
  • check_circle Maskeli öz-dikkat neden gerekli? Otoregresif dil üretiminde model o ana kadar üretilen tokenleri bilir ama gelecekteki tokenlere bakamamalıdır; aksi halde eğitimde cevabı görür, çıkarımda ise o bilgi zaten yoktur. Üst üçgen maske gelecek konumlara erişimi kapatır.
  • check_circle Öz-dikkat neden O(n^2)? Daha verimli yapılabilir mi? Her token diğer n-1 tokenle karşılaştırıldığından n^2 nokta çarpımı yapılır. Linformer düşük ranklı yaklaşımla bu maliyeti düşürür; FlashAttention aynı matematiği daha verimli bellek erişimiyle hesaplar (karmaşıklık aynı kalır, gerçek hız çok daha yüksektir).
  • check_circle Self-attention PyTorch'ta nasıl uygulanır? torch.nn.MultiheadAttention sınıfı ya da PyTorch 2.0 ile gelen F.scaled_dot_product_attention fonksiyonu kullanılır. İkincisi uygun donanımda FlashAttention çekirdeğini otomatik seçer ve basit uygulamalar için en iyi başlangıç noktasıdır.
  • check_circle Dikkat ağırlıkları yorumlanabilir mi? Dikkat ağırlıkları sezgisel yorumlar sunsa da Jain ve Wallace (2019) gibi çalışmalar bunların nedensellik değil korelasyon taşıdığını göstermiştir. Integrated Gradients gibi gradyan tabanlı yöntemler daha güvenilir kabul edilir; alan hâlâ tartışmalıdır.
  • check_circle Self-attention NLP dışında kullanılıyor mu? Evet. Vision Transformer görüntü yamalarını token olarak işler, AlphaFold2 protein kalıntı çiftlerini öz-dikkatle modeller. Ses, video, öneri sistemleri ve çizgeler üzerinde de transformer tabanlı yaklaşımlar yaygınlaştı.