Inside AI Models
← Tüm makaleler
TransformerDerin Öğrenme

Attention'ı Sıfırdan Anlamak

23 Haz 2026 · 3 dk okuma

Attention, bugün konuştuğumuz neredeyse tüm büyük dil modellerinin içindeki motordur. Transformer mimarisini transformer yapan da, bu mekanizmadır. İlk karşılaşıldığında matematiği gözü korkutabilir; oysa altında yatan fikir tek bir sezgisel soruya dayanır: bir cümledeki bir kelimeyi işlerken, anlamını doğru kurmak için diğer kelimelerden hangilerine dikkat etmem gerekir? Bu yazıda o soruyu adım adım formüle edecek, query–key–value üçlüsünü kuracak ve attention'ın neden bir mimari devrimi tetiklediğini göreceğiz.

Problemi doğru koymak

"Banka kenarında oturdu" cümlesindeki "banka" ile "Bankadan para çekti" cümlesindeki "banka" aynı kelime olsa da bambaşka şeyleri kasteder. Bir modelin bu farkı yakalayabilmesi için, her kelimeyi tek başına değil, bağlamındaki diğer kelimelerle ilişkisi içinde temsil etmesi gerekir. Attention tam olarak bu ilişkiyi kurar: her kelimenin temsiline, cümledeki ilgili diğer kelimelerden "toplanan" bilgiyi katar.

Query, key ve value

Bu toplama işlemini düzenli kılmak için model, her token (kelime parçası) için üç ayrı vektör üretir. Bunları bir kütüphanede arama yapmaya benzetmek sezgiyi güçlendirir. Query (QQ), o token'ın "ne arıyorum?" sorusudur. Key (KK), her token'ın "bende şu var" diyen etiketidir. Value (VV) ise o token'ın gerçekten taşıdığı içeriktir. Bir token'ın query'sini bütün token'ların key'leriyle karşılaştırarak hangilerinin ne kadar alakalı olduğunu ölçer, bu alaka skorlarını ağırlığa çevirir ve value'ların bu ağırlıklarla harmanlanmış ortalamasını alırsınız. Sonuç, o token'ın bağlamla zenginleştirilmiş yeni temsilidir.

Bütün bu süreç tek bir denkleme sığar:

Attention(Q,K,V)=softmax ⁣(QKdk)V\text{Attention}(Q, K, V) = \text{softmax}\!\left(\frac{QK^\top}{\sqrt{d_k}}\right)V

Denklemi parçalarına ayıralım. QKQK^\top çarpımı, her query ile her key arasındaki benzerliği — bir iç çarpım aracılığıyla, yani yine lineer cebirle — hesaplar; sonuçta her token çiftine bir skor düşer. Paydadaki dk\sqrt{d_k} terimi, vektör boyutu büyüdükçe şişen bu skorları ölçekleyerek sayısal kararlılığı korur. Softmax ise ham skorları, toplamı bire eşit olan ağırlıklara çevirir; böylece "şu kelimeye yüzde altmış, bu kelimeye yüzde kırk dikkat et" diyebilen bir dağılım elde ederiz. Son olarak bu ağırlıklarla value'ları çarpıp toplarız.

Birkaç satır kodla

Mekanizmayı en sade hâliyle koda dökmek, denklemin soyutluğunu dağıtır:

import torch
import torch.nn.functional as F
 
def attention(Q, K, V):
    d_k = Q.size(-1)
    scores = Q @ K.transpose(-2, -1) / d_k**0.5  # her token çifti için benzerlik
    weights = F.softmax(scores, dim=-1)          # kim kime ne kadar dikkat ediyor
    return weights @ V                           # value'ların ağırlıklı toplamı
 
# oyuncak örnek: 5 token, her biri 16 boyutlu
Q = K = V = torch.randn(5, 16)
print(attention(Q, K, V).shape)  # torch.Size([5, 16])

Buradaki scores matrisinin her satırı bir token'ın diğer tüm token'lara verdiği dikkati, softmax sonrası weights ise bunun olasılık dağılımına dönmüş hâlini taşır. weights @ V çarpımıyla her token, kendisi için en alakalı token'ların içeriğini ağırlıklı biçimde devralır.

Neden bir devrim

Attention'dan önceki nesil modeller, metni katı bir biçimde soldan sağa, kelime kelime işliyordu. Bu yaklaşımda, cümlenin başındaki bir özneyle sonundaki bir zamiri ilişkilendirmek için bilginin uzun bir zincir boyunca taşınması gerekir ve bu zincir uzadıkça bilgi sönükleşir. Attention bu kısıtı tümden ortadan kaldırır: her token, tek bir adımda diğer bütün token'lara doğrudan bakabilir. "O" zamiri, on kelime önce geçen ismine zincirden bağımsız olarak anında bağlanabilir. Üstelik bu işlemler birbirinden bağımsız olduğu için modern donanımda paralelleştirilebilir; işte transformer'ların hem daha isabetli hem de devasa ölçeklerde eğitilebilir olmasının altında bu özellik yatar.

Buradan sonrası

Burada attention'ın tek başlı (single-head) ve sade biçimini ele aldık. Gerçek transformer'lar, modelin farklı türden ilişkileri eşzamanlı yakalayabilmesi için bu mekanizmayı paralel "kafalar" hâlinde çalıştırır (multi-head attention) ve kelime sırasını modele bildirmek için ayrıca positional encoding ekler. İlerleyen yazılarda bu iki parçayı da aynı titizlikle açacağız.

okunma

Benzer makaleler