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

Attention'ı Sıfırdan Anlamak

23 Haz 2026 · 3 dk okuma

Paylaş

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 bakışta matematiği gözünüzü korkutabilir; ama altındaki fikir tek bir sezgisel soruya dayanır: bir cümledeki kelimeyi işlerken, onun anlamını doğru kurmak için diğer kelimelerin hangilerine dikkat etmeliyim? Önce bu soruyu netleştirelim, sonra query–key–value üçlüsünü kuralım; attention'ın neden bütün bir mimariyi değiştirdiğini de yol boyunca 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 şeyler kasteder. Modelin bu farkı yakalayabilmesi için her kelimeyi tek başına değil, bağlamındaki öbür kelimelerle ilişkisi içinde temsil etmesi gerekir. Attention tam da bu ilişkiyi kurar: her kelimenin temsiline, cümledeki ilgili kelimelerden "toplanan" bilgiyi ekler.

Query, key ve value

Bu toplama işlemini düzenli hâle getirmek için model, her token (kelime parçası) için üç ayrı vektör üretir. Bunu kafanızda canlandırmak için bir kütüphanede kitap aramayı düşünün. Query (QQ), o token'ın "ne arıyorum?" sorusudur. Key (KK), her token'ın "bende şu var" diyen etiketi. Value (VV) ise o token'ın asıl taşıdığı içerik. Bir token'ın query'sini bütün token'ların key'leriyle karşılaştırıp her birinin ne kadar alakalı olduğunu ölçersiniz; sonra bu skorları ağırlığa çevirip value'ları bu ağırlıklarla harmanlayarak ortalamasını alırsınız. Çıkan sonuç, o token'ın bağlamla zenginleşmiş 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

Gelin denklemi parça parça okuyalım. QKQK^\top çarpımı, her query ile her key arasındaki benzerliği bir iç çarpımla, yani yine lineer cebirle hesaplar; böylece 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çekleyip sayısal kararlılığı korur. Softmax ham skorları, toplamı bire eşit ağırlıklara çevirir; böylece "şu kelimeye yüzde altmış, buna yüzde kırk dikkat et" diyen bir dağılım elde ederiz. Son adımda bu ağırlıklarla value'ları çarpıp toplarız.

Birkaç satır kodla

Denklem biraz soyut geldiyse, birkaç satır kod onu hemen yere indirir:

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 öbür token'lara verdiği dikkati tutar; softmax'tan sonra weights ise bunun olasılık dağılımına dönmüş hâlidir. 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. Böyle bir modelde cümlenin başındaki özneyle sonundaki zamiri bağlamak için bilgi uzun bir zincir boyunca elden ele taşınmak zorundaydı; zincir uzadıkça da o bilgi sönükleşiyordu. Attention bu kısıtı baştan kaldırır: her token, tek adımda diğer bütün token'lara doğrudan bakabilir. "O" zamiri, on kelime önce geçen ismine zincire takılmadan anında bağlanır. Üstelik bu işlemler birbirinden bağımsız olduğu için modern donanımda paralel çalıştırılabilir; transformer'ların hem daha isabetli hem de devasa ölçeklerde eğitilebilir olmasının asıl sebebi de budur.

Buradan sonrası

Burada attention'ı tek başlı (single-head) ve en sade hâliyle gördük. Gerçek transformer'lar, modelin farklı türden ilişkileri aynı anda 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. İlerideki yazılarda bu iki parçayı da aynı titizlikle açacağız.

okunma

Yeni makale yayınlandığında haberiniz olsun ister misiniz?

Yeni bir yazı yayınlandığında size e-posta gelsin. Dilediğiniz an iptal edebilirsiniz.

Yorumlar

Benzer makaleler