Attention Mechanism
Dikkat mekanizması, sorguları, anahtarları ve değerleri kullanarak girdi özelliklerine önemlerine göre ağırlık verir. Matematiği, dikkat türleri ve dikkat ile evrişim karşılaştırması.
Dikkat mekanizması, her çıktıyı girdi özelliklerinin ağırlıklı ortalaması olarak oluşturan bir sinir ağı işlemidir; ağırlıklar, işlenen öğeyle her girdinin ne kadar ilgili olduğuna göre hesaplanır. İlgililik, bir sorgu vektörünün anahtar vektörleriyle karşılaştırılmasıyla puanlanır ve ortaya çıkan puanlar, eşleşen değer vektörlerine ağırlık verir. Dikkat mekanizması, makine çevirisi için 2014'te tanıtıldı. Bu sayede yinelemeli bir sinir ağı (RNN) kod çözücüsü, tüm cümleyi sabit uzunlukta tek bir vektöre sıkıştırmak yerine kaynak cümledeki her sözcüğe geri dönebiliyordu. 2017'deki Transformer, tüm mimariyi dikkat mekanizması üzerine kurdu. Dikkat artık büyük dil modellerinin, görü Transformer'larının ve pek çok nesne algılama modelinin temel işlemidir.
Dikkat Nasıl Çalışır#
Dikkat mekanizması, girdisinin öğrenilen üç doğrusal izdüşümünü kullanır. Sorgu (Q), mevcut belirtecin ne aradığını ifade eder; her anahtar (K), bir belirtecin ne sunduğunu tanımlar; her değer (V) ise aktarılan içeriği taşır. Model, sorguyu tüm anahtarlarla karşılaştırır, karşılaştırma puanlarını ağırlıklara dönüştürür ve değerlerin ağırlıklı toplamını döndürür. Bir çeviri modeli "The black cat" ifadesi için "noir" ürettiğinde, o adıma ait sorgu en yüksek puanı "black" anahtarından alır; Fransızcada sıfat isimden sonra gelse bile.
Çok başlıklı dikkat, bu hesaplamalardan birkaçını her biri kendi düşük boyutlu izdüşümlerini kullanacak şekilde paralel yürütür ve sonuçları birleştirir. Böylece farklı başlıklar aynı katmandaki farklı ilişki türlerinde uzmanlaşabilir.
Ölçeklendirilmiş İç Çarpım Dikkati#
Transformer'ın dikkat mekanizması Attention(Q, K, V) = softmax(QKᵀ / √d_k) V biçiminde yazılır. Her sorgu, iç çarpımla her anahtarla karşılaştırılır ve puanlar, vektör boyutuyla artıp softmax fonksiyonunu doyuma ulaştırmamaları için anahtar boyutu d_k'nın kareköküne bölünür. Softmax, her sorgunun puanlarını toplamı 1 olan ağırlıklara dönüştürür; çıktı ise değer vektörlerinin ağırlıklı toplamıdır.
import torch
import torch.nn.functional as F
torch.manual_seed(0)
# Her biri 8 boyutlu, 4 belirteçten oluşan bir dizi için sorgular, anahtarlar ve değerler
q, k, v = torch.randn(3, 4, 8).unbind(0)
# Her sorguyu her anahtarla karşılaştır, sqrt(d_k) ile ölçeklendir ve her satırı softmax ile normalize et
weights = (q @ k.T / k.shape[-1] ** 0.5).softmax(dim=-1)
# Her çıktı belirteci, değer vektörlerinin ağırlıklı ortalamasıdır
output = weights @ v
print("Attention weights of token 0:", [round(w, 3) for w in weights[0].tolist()])
print("Matches PyTorch SDPA:", torch.allclose(output, F.scaled_dot_product_attention(q, k, v), atol=1e-6))[0.121, 0.741, 0.106, 0.032] ve True değerlerini yazdırır: Belirteç 0, çıktısının %74'ünü belirteç 1'in değer vektöründen alır; dört ağırlığının toplamı 1'dir ve elle hesaplanan sonuç, desteklenen GPU'larda FlashAttention gibi bellek açısından verimli çekirdeklere yönlendiren, PyTorch içindeki birleştirilmiş scaled_dot_product_attention işlemiyle eşleşir.
Dikkat Türleri#
- Öz dikkat: Sorgular, anahtarlar ve değerler aynı diziden gelir; böylece her belirteç diğer tüm belirteçlerden bağlam toplar. Transformer kodlayıcılarının ve ViT'lerin içindeki dikkat türüdür.
- Çapraz dikkat: Sorgular bir diziden, anahtarlar ve değerler başka bir diziden gelir. Bir çeviri kod çözücüsü kaynak cümleye, metinden görüntü üreten bir difüzyon modeli isteme, bir DETR kod çözücüsünün nesne sorgularıysa görüntü özelliklerine dikkat eder.
- Nedensel dikkat: Bir maske, her belirtecin kendisinden sonraki belirteklere dikkat etmesini engeller; böylece dil modeli metni soldan sağa üretir ve önceki belirteçlerin anahtarları ile değerleri bir KV önbelleğinde saklanabilir.
- Verimli dikkat: Seyrek dikkat, kayan pencere dikkati ve doğrusal dikkat, her belirteci diğer tüm belirteçlerle karşılaştırmanın karesel maliyetini düşürür. Deforme edilebilir dikkat ise her referans konumunun çevresinde öğrenilmiş yalnızca birkaç noktadan örnek alır.
- CNN'lerde kanal dikkati: Sıkıştırma ve uyarım ağları özellik haritasının küresel ortalamasını kullanarak haritanın kanallarını yeniden ağırlıklandırır; bu düşük maliyetli dikkat biçimi, ILSVRC 2017 sınıflandırma yarışmasını kazanan modelin temelini oluşturmuştur.
Dikkat ve Evrişim#
Bir evrişim her konumda aynı küçük filtreyi uygular; bu nedenle her çıktı sabit bir yerel pencereyi görür ve filtre ağırlıkları görüntüye bağlı değildir. Dikkat mekanizması ağırlıklarını içerikten hesaplar ve tek bir katmanda herhangi iki konumu birbirine bağlayabilir. Bunun bedeli, token sayısının karesiyle artan bir hesaplama maliyetidir. 640×640 boyutundaki bir görüntü, stride 32'de 400 token içeren 20×20'lik bir ızgara ve 160.000 sorgu-anahtar çifti üretir; aynı görüntünün stride 8'deki ızgarası ise 6.400 token ve yaklaşık 41 milyon çift içerir. YOLO26 dikkat bloklarını buna göre yerleştirir: Hem omurgayı sonlandıran C2PSA bloğu hem de boyun kısmında yer alan ve dikkat mekanizması içeren bir C3k2 bloğu 20×20 boyutundaki stride-32 özellik haritasında çok başlı öz dikkati uygular; daha yüksek çözünürlüklü tüm katmanlar ise evrişimli kalır.










