- Transformer modelinin yapısını ve çalışma prensibini görsel olarak açıklar; attention mekanizmasının paralel öğrenmeyi ve çeviri performansını nasıl iyileştirdiğini gösterir
- Model, encoder ve decoder yığınlarından oluşur; her encoder, self-attention ve feedforward sinir ağı olmak üzere iki katmandan meydana gelir
- Self-attention hesaplama sürecini vektör ve matris düzeyinde adım adım açıklar; multi-head attention ile bunun farklı temsil uzaylarını öğrenmesini sağlayacak şekilde genişletildiğini anlatır
- Positional encoding, residual connection, layer normalization, decoder’ın masking attention’ı gibi temel bileşenleri somut biçimde görselleştirir
- Bu yazı, Transformer’ın temel kavramlarını kolay anlamaya yardımcı olan en bilinen kaynaklardan biridir ve MIT, Stanford gibi önde gelen üniversitelerin derslerinde ve materyallerinde de kullanılır
Transformer’a genel bakış
- Transformer, attention tabanlı bir sinirsel makine çevirisi modelidir ve belirli görevlerde mevcut Google Neural Machine Translation’a göre daha yüksek performans gösterir
- Başlıca avantajı, paralelleştirmenin kolay olmasıdır; ayrıca Google Cloud TPU için referans model olarak önerilir
- Model, encoder ve decoder yığınlarından oluşur; her encoder aynı yapıya sahip olsa da ağırlıkları paylaşmaz
- Encoder girdisi, self-attention katmanından geçerek bağlam bilgisini bütünleştirir, ardından feedforward sinir ağından geçer
- Decoder, encoder yapısına ek olarak encoder-decoder attention katmanı içerir ve giriş cümlesinin ilgili bölümlerine odaklanır
Tensör akışı ve embedding
- Giriş cümlesi, word embedding algoritması aracılığıyla her kelime için 512 boyutlu vektörlere dönüştürülür
- Encoder’ın her katmanı, aynı boyuttaki vektör listelerini girdi olarak alır; cümle uzunluğu bir hiperparametre olarak ayarlanır
- Feedforward katmanı, her konumdaki vektörü bağımsız biçimde işlediği için paralel hesaplama mümkündür
Self-attention kavramı
- Self-attention, her kelimenin cümledeki diğer kelimelere başvurarak daha iyi bir temsil öğrenmesini sağlar
- Örnek: “The animal didn’t cross the street because it was too tired” cümlesinde “it”, “animal” ile ilişkilidir
- RNN’lerde gizli durumun korunmasından farklı olarak Transformer, bağlam bilgisini self-attention ile bütünleştirir
Self-attention hesaplama adımları
- Her kelime embedding’inden Query, Key, Value vektörleri üretilir (boyut 64)
- Query ve Key’in iç çarpımı (dot product) ile kelimeler arasındaki ilişki skorları hesaplanır
- Skorlar √64’e bölündükten sonra softmax uygulanarak olasılık dağılımı şeklinde normalize edilir
- Her Value vektörü, softmax skorlarıyla çarpılıp toplanarak nihai attention çıktısı oluşturulur
- Gerçek uygulamada bu süreç verimlilik için matris işlemleri ile gerçekleştirilir
Multi-head attention
- Birden fazla attention head’i (varsayılan 8 adet) kullanılarak farklı temsil uzayları öğrenilir
- Her head, bağımsız Q/K/V ağırlık matrislerine sahiptir
- Birden çok head’in çıktısı birleştirilir (concat) ve ardından ek bir ağırlık matrisi olan WO ile bir araya getirilir
- Bu sayede model, bağlamın farklı yönlerini aynı anda yakalayabilir
Positional encoding
- Transformer sıralamayı doğrudan işlemediği için her kelime embedding’ine bir konum vektörü eklenir
- Konum vektörü, sin ve cos fonksiyonları kullanılarak üretilir ve kelimeler arasındaki göreli mesafe bilgisini sağlar
- Bu yöntem, eğitim verisinden daha uzun cümlelere de genişletilebilir
- 2020 güncellemesinde iki sinyalin iç içe geçirilmesi (interleave) yöntemi de tanıtılmıştır
Residual connection ve normalizasyon
- Her alt katmanda (self-attention, feedforward) residual connection ve layer normalization uygulanır
- Bu yapı, gradyan kaybolmasının önlenmesine ve eğitim kararlılığının artmasına katkı sağlar
Decoder yapısı
- Decoder, encoder çıktısından Key/Value vektörlerini alarak encoder-decoder attention uygular
- Masking ile gelecekteki kelimelere bakması engellenir
- Son aşamada Linear katmanı ve Softmax katmanı üzerinden kelime olasılık dağılımı üretilir
- Örneğin sözlük boyutu 10.000 ise her çıktı vektörü 10.000 boyutlu bir olasılık dağılımına dönüştürülür
Eğitim ve kayıp fonksiyonu
- Eğitim sırasında modelin ürettiği olasılık dağılımı, doğru dağılımla (one-hot encoding) karşılaştırılır
- Hata, cross-entropy veya KL divergence kullanılarak hesaplanır ve geri yayılım ile ağırlıklar güncellenir
- Beam search ile birden fazla çeviri adayı korunarak doğruluk artırılır
Sonraki çalışmalar ve başvuru kaynakları
- İlgili makaleler: Attention Is All You Need, Training Tips for the Transformer Model, Self-Attention with Relative Position Representations vb.
- Uygulama kaynakları: Tensor2Tensor paketi, Harvard NLP PyTorch rehberi, Colab Notebook
- Transformer daha sonra LLM-book.com üzerindeki genişletilmiş sürüme (Chapter 3) evrilmiş, burada Multi-Query Attention ve RoPE positional embedding gibi daha yeni modeller ele alınmıştır
Sonuç
- Transformer, paralelleştirilebilir attention tabanlı yapısıyla modern derin öğrenmenin temel modellerinden biri haline gelmiştir
- Bu yazı, Transformer’ın yapısını, matematiğini ve sezgisel temelini görsel olarak anlatan temsilî bir kaynak olup Stanford, MIT, Harvard gibi önde gelen üniversitelerin derslerinde başvuru kaynağı olarak kullanılmaktadır
1 yorum
Hacker News görüşleri
Transformer’ın temellerini öğrenirken bu yazıyı okumuştum. Görselleştirmeler gerçekten çok yardımcı olmuştu.
Ama gerçek LLM uygulama işlerinde transformer mimarisini bilmenin neredeyse hiç faydası olmadı. Yine de iç işleyişi kabaca anlıyor olmanın verdiği bir psikolojik güven vardı.
LLM’nin davranışını mimariyle açıklamaya çalışma çabası bir tuzak. Çünkü en yeni modeller, reinforcement learning gibi etkenler nedeniyle öngörülemez emergent phenomena sergiliyor.
Eskiden LLM’lerin matematikte ya da kodlamada iyi olamayacağından emindim ama tamamen yanılmışım. Sonuçta yalnızca mimariye bakarak modelin yeteneklerini çıkarsamanın sınırları var.
Bu aralar tatilde PyTorch ile transformer’ı doğrudan implemente ederek tekrar ediyorum. İlginç ve eğlenceli.
Başlangıç için Sebastian Raschka’nın LLMs from Scratch materyalini tavsiye ederim.
Jay Alammar’ın 2024’te çıkan kitabını okuyan varsa, güncel bakış açısından tavsiye edip etmeyeceğini merak ediyorum.
Çünkü modelin kısıtlarını sezgisel olarak kavrama hissi kazandırıyor. Bunu zamanında Hugging Face’den Clem Delangue’dan bizzat duymuştum; o zamandan sonra LLM mimarisini derinlemesine çalıştım ve çok faydasını gördüm.
Aynı tavsiyeyi coding bootcamp mezunlarına da veriyorum — Python ve React ile rahatça çalışabilirsiniz, ama bilgisayar mimarisi ve düşük seviyeli dilleri anlarsanız uzun vadede çok daha güçlü bir geliştirici olursunuz.
Token’lar kelime parçaları değildir; dil işleme ya da görüntü işleme açısından anlamları yalnızca giriş aşamasında vardır. Bence bu yanlış anlama, transformer’ın potansiyelinin olduğundan düşük görülmesinin nedenlerinden biri.
Ama bu aslında kod kalitesini artıran bir durum. Causal transformer’daki positional encoding sayesinde model, yerel muhakeme için geçici token’lar bırakabiliyor ve sonra bunları kolayca unutabiliyor.
Yani bir tür tek kullanımlık scratchpad gibi çalışıyor. Çözüm LLM çıktısını sonradan işlemek; modele yorum üretimini bastırmayı öğretmek değil.
ChatGPT çıktıktan sonra bu üç grubun oranı neredeyse hiç değişmedi ve insanları kanıtla ikna etmek de nadiren mümkün oluyor.
Transformer Explainer ekibinin görselleştirmeleri gerçekten harikaydı.
Transformer Explainer ile 3blue1brown videolarını birlikte izleyince anlayış iyice netleşiyor.
Yazar Jay Alammar, bizzat bıraktığı bir yorumda transformer öğrenmek için başka iyi kaynaklar da paylaşıyor.
İlgili bağlantı
Transformer açıklayan içerikler o kadar çoğaldı ki artık monad tutorial’ları gibi hissettiriyor.
Bazı insanlar aydınlandığını sanıyor ama aslında hâlâ kafaları karışıkken bunu geniş kitlelerle paylaşmaya çalışıyor.
Matematik veya elektronik mühendisliği kavramlarını öğrenirken de ilk açıklama zor gelebilir, ama farklı versiyonları görünce sonunda anlayış derinleşiyor.
Belki çağın gerisinde kalmışımdır ama transformer’ların mevcut U-net gibi derin öğrenme mimarilerinin tamamen yerini alıp almadığını merak ediyorum.
Örneğin CNN’ler hâlâ güçlü ve özellikle tıbbi görüntüleme gibi özel görsel görevlerde daha uygun olabiliyor.
Rotasyon değişmez modellerde, graph neural network’lerde ve point cloud modellerinde transformer’lar hatta uygun bile olmayabilir.
Yani hâlâ çeşitli alternatif mimariler var.
İlgili makale: CNNs can still do just as well
Bu kitap bende var; ekip LLM’leri sisteme entegre etmeye karar verdiğinde gerçekten hayat kurtarıcı bir kaynak olmuştu.
LLM’ler sonuçta insansı muhakemeyi taklit eden sentetik sistemler, bu yüzden iç yapıyı bilseniz bile hata örüntülerini öngörmek zor.
Tecrübe ve deneyle sezgi kazanmak daha önemli.
Bence transformer’ın içi zamanla compiler içi gibi daha az önemli hale gelecek.
Geliştiricilerin çoğu iç implementasyondan çok “bunu nasıl kullanırım” kısmıyla ilgilenecek.
İşletim sistemi, compiler, GPU/TPU gibi donanımlar nasıl sürekli geliştiriliyorsa transformer’ların da sürekli iyileştirilmesi gerekiyor; dolayısıyla bu bilgiye sahip kişilerin rolü daha da önemli hale geliyor.
Harika bir yazı ve yakın tarihli Illustrated Evo 2 projesine de ilham vermiş gibi görünüyor.
NVIDIA Research blog bağlantısı
İnsanlar Key/Query/Value’yu özel kavramlar sanıyor ama aslında transformer sadece matris çarpımının genişletilmiş bir yapısı.
Sıradan bir sinir ağı katmanında
matrix * inputvarsa, transformerinput * MatrixA,input * MatrixB,input * MatrixChesaplayıp bunları birleştiriyor.Sonuçta her şey matris işlemlerinin tekrarı. Ayrıntılar için PyTorch blogu bakılabilir.
Attention da konumdan bağımsız biçimde öğreniliyor, girdinin geniş bölümlerini yeni değerlere dönüştürüyor ve birden fazla head paralel biçimde farklı yönleri öğreniyor. Bu, convolution kernel’ına benzer bir fikir.
Bu rehber gerçekten çok kapsamlı. PyTorch sözde kodu üretmek için Claude Code gibi araçlarla birlikte kullanmak, kavramları görsel olarak anlamada çok yardımcı oluyor.
Saatlerce içine dalıp öğrenmek için çok iyi bir kaynak.