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 matrisi içinde düzenlenmişse, bir dikkat başlığı genellikle şunları oluşturur:
burada , ve öğrenilen matrislerdir.
Standart ölçeklenmiş skaler çarpım dikkat formülü şöyledir:
Burada anahtar boyutudur. 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 kullanalım.
Mevcut token’ın sorgusunun
ve iki aday token’ın
olduğunu varsayalım; değerleri ise
Ham dikkat skorları skaler çarpımlardır:
olduğundan ölçekleme katsayısı olur; dolayısıyla ölçeklenmiş skorlar yine ve ’dir.
Şimdi bu iki skora softmax uygulayalım:
Dikkat çıktısı şu ağırlıklı birleşimdir:
Temel fikir basittir: çıktı, sorgu ile ’ye göre daha güçlü eşleştiği için ’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 , ve 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ç →