Transformer mimarisi, self-attention etrafında kurulmuş bir sinir ağı tasarımıdır. Ağırlıklı olarak adım adım işlemeye dayanmak yerine, dizideki her token’ın diğer ilgili token’lardan bilgi toplamasına izin verir.

Bu yüzden transformer’lar dil ve diğer dizi görevlerinde iyi çalışır. Bir kelime uzaktaki başka bir kelimeye bağlıysa, dikkat mekanizması modelin bu ikisi arasında doğrudan bir yol kurmasını sağlar.

Transformer mimarisi ne anlama gelir

Bir transformer bloğu tek bir formülü uygulamaktan fazlasını yapar, ancak merkezi fikir self-attention’dır. Self-attention’da her token üç vektör üretir:

  • sorgu (query): bu token’ın ne aradığını temsil eder
  • anahtar (key): bu token’ın eşleşme için ne sunduğunu temsil eder
  • değer (value): aktarılabilecek bilgiyi temsil eder

Token temsilleri bir XX matrisi içinde düzenlenmişse, bir dikkat başlığı genellikle şunları oluşturur:

Q=XWQ,K=XWK,V=XWVQ = XW_Q, \qquad K = XW_K, \qquad V = XW_V

burada WQW_Q, WKW_K ve WVW_V öğrenilen matrislerdir.

Standart ölçeklenmiş skaler çarpım dikkat formülü şöyledir:

Attention(Q,K,V)=softmax ⁣(QKTdk)V\operatorname{Attention}(Q, K, V) = \operatorname{softmax}\!\left(\frac{QK^T}{\sqrt{d_k}}\right)V

Burada dkd_k anahtar boyutudur. dk\sqrt{d_k} ile ölçekleme, boyut büyüdükçe ham skaler çarpım skorlarının fazla büyümesini önlemeye yardımcı olur.

Softmax satır satır uygulanır. Her satır bir token’ın şu sorusunu yanıtlar: “Diğer token’lara ne kadar dikkat vermeliyim?”

Self-attention sade bir dille nasıl çalışır

Self-attention genellikle bir token’ı seçip geri kalanını yok saymaz. Bunun yerine değer vektörlerinin ağırlıklı ortalamasını oluşturur.

Bir token başka bir token’ın anahtarıyla güçlü biçimde eşleşirse, o token daha büyük bir ağırlık alır. Eşleşme zayıfsa ağırlık daha küçük olur. Bu nedenle bir token için çıktı, dizideki bilgilerin bağlama duyarlı bir karışımıdır.

Bu, özne-yüklem uyumu, zamir gönderimi ve diğer uzun menzilli ilişkilerde yardımcı olur. Modelin, bilgi kullanılabilir hale gelmeden önce birçok ara adımdan geçmesine gerek kalmaz.

Çözümlü self-attention örneği

Tek bir dikkat başlığında bir sorgu ve iki aday token ele alalım. Hesabı basit tutmak için dk=1d_k = 1 kullanalım.

Mevcut token’ın sorgusunun

q=[2]q = [2]

ve iki aday token’ın

k1=[2],k2=[1]k_1 = [2], \qquad k_2 = [1]

olduğunu varsayalım; değerleri ise

v1=[10],v2=[4].v_1 = [10], \qquad v_2 = [4].

Ham dikkat skorları skaler çarpımlardır:

qk1T=4,qk2T=2.qk_1^T = 4, \qquad qk_2^T = 2.

dk=1d_k = 1 olduğundan ölçekleme katsayısı 1=1\sqrt{1} = 1 olur; dolayısıyla ölçeklenmiş skorlar yine 44 ve 22’dir.

Şimdi bu iki skora softmax uygulayalım:

α1=e4e4+e20.881,α2=e2e4+e20.119.\alpha_1 = \frac{e^4}{e^4 + e^2} \approx 0.881, \qquad \alpha_2 = \frac{e^2}{e^4 + e^2} \approx 0.119.

Dikkat çıktısı şu ağırlıklı birleşimdir:

α1v1+α2v2=0.881(10)+0.119(4)9.29.\alpha_1 v_1 + \alpha_2 v_2 = 0.881(10) + 0.119(4) \approx 9.29.

Temel fikir basittir: çıktı, sorgu k1k_1 ile k2k_2’ye göre daha güçlü eşleştiği için v1v_1’e daha yakın olur.

Bu, çok daha büyük bir modelin içindeki temel örüntüdür. Gerçek transformer’lar bunu daha yüksek boyutlarda ve aynı anda birçok token üzerinde yapar, ancak hesap fikri aynıdır.

Bir transformer bloğunun içinde başka neler vardır

Bir transformer, tek bir dikkat formülünden fazlasıdır. Standart bir blok genellikle şunları içerir:

  • çok başlı dikkat; böylece model aynı anda birkaç farklı ilişki türünü öğrenebilir
  • konum bazlı bir feedforward ağ; bu ağ dikkat sonrasında her token temsilini dönüştürür
  • residual bağlantılar; bunlar katmanlar boyunca bilginin korunmasına ve iyileştirilmesine yardımcı olur
  • layer normalization; bu da eğitimi daha kararlı hale getirmeye yardımcı olur

Sequence-to-sequence görevler için özgün transformer mimarisinde modelin bir encoder yığını ve bir decoder yığını vardı.

  • Encoder, giriş dizisi üzerinde self-attention kullanır.
  • Decoder, bir konumun gelecekteki çıktı token’larına bakamaması için maskeli self-attention kullanır.
  • Decoder ayrıca cross-attention da kullanabilir; burada sorgular decoder’dan, anahtarlar ve değerler ise encoder çıktısından gelir.

Birçok modern dil modeli yalnızca decoder tarafını kullanır. Temel dikkat fikri hâlâ aynıdır, ancak genel mimari bir sonraki token tahmini için özelleştirilmiştir.

Transformer’ların neden konumsal bilgiye ihtiyaç duyduğu

Dikkat mekanizması tek başına giriş token’larına göre permütasyon eşdeğerlidir. Basitçe söylemek gerekirse, aynı token vektörleri kümesine konum eklemeden yalnızca dikkat uygularsanız, model hangi token’ın önce geldiğini doğal olarak bilemez.

Bu yüzden transformer’lar öğrenilen konum gömmeleri veya konumsal kodlamalar gibi konumsal bilgiler ekler. Bu ek sinyal olmadan, dil gibi sıraya duyarlı görevleri doğru biçimde modellemek çok daha zor olurdu.

Transformer mimarisi hakkında yaygın hatalar

Dikkatin transformer’ın tamamı olduğunu düşünmek

Bu merkezi fikirdir, ancak mimari aynı zamanda feedforward katmanlara, residual yollara, normalizasyona ve konumsal bilgiye de dayanır.

Self-attention ile cross-attention’ı karıştırmak

Self-attention’da QQ, KK ve VV aynı diziden gelir. Cross-attention’da ise hepsi aynı kaynaktan gelmez.

Maskelemenin rolünü unutmak

Yalnızca decoder kullanan dil modelleri, bir token’ın gelecekteki token’lara dikkat verememesi için eğitim ve çıkarım sırasında nedensel maskelemeye ihtiyaç duyar.

Dikkat ağırlıklarını tam bir açıklama olarak görmek

Dikkat ağırlıkları bilgilendirici olabilir, ancak modelin akıl yürütmesinin tam bir kanıtı değildir. Nihai davranış ayrıca değer vektörlerine, sonraki katmanlara ve doğrusal olmayan dönüşümlere de bağlıdır.

Transformer modelleri ne zaman kullanılır

Transformer’lar dil modelleme, çeviri, özetleme, kod üretimi, konuşma ve birçok görme görevinde yaygın olarak kullanılır. Özellikle bir dizi veya küme içindeki ilişkiler, tamamen yerel örüntülerden daha önemli olduğunda çok iyi çalışırlar.

Her durumda sihirli bir çözüm değildirler. Çok küçük veri kümelerinde, katı gerçek zamanlı kısıtlarda veya yerel tümevarımsal yapının en önemli olduğu problemlerde başka bir mimari daha uygun olabilir.

Benzer bir problem deneyin

Üç kelimelik bir ifade alın ve bir kelimeye odaklanın. Diğer kelimelerden hangisinin yüksek dikkat ağırlığı alması gerektiğine ve nedenine karar verin, sonra bu sezgiye uyan küçük bir sorgu-anahtar-değer örneği çizin.

Bir adım daha ileri gitmek isterseniz, küçük bir dikkat çıktısını elle hesaplayın. Bu genellikle “Formülü biliyorum” noktasından “Mimarinin ne yaptığını anlıyorum” noktasına giden en hızlı yoldur.

Bir soruyla yardıma mı ihtiyacın var?

Sorunuzu yükleyin ve saniyeler içinde doğrulanmış adım adım çözüm alın.

GPAI Solver Aç →