Encoder
- Metnin vektörlere dönüştürülme süreci ve bu süreçte elde edilen embedding'lere konum bilgisinin nasıl eklendiği açıklanıyor.
- Amaç, giriş metninin anlamsal bilgisini yakalayan embedding'ler üretmektir.
1. Metin embedding'i
- "Hello World" vektörlere dönüştürülerek embedding oluşturulur.
- Her token için rastgele değerler atanarak vektörler oluşturulur.
2. Konumsal kodlama
- Embedding'lere kelimelerin konum bilgisini eklemek için konumsal kodlama eklenir.
- Her konuma özgü ama tutarlı sayı desenleri atamak için sabit vektörler kullanılır.
3. Konumsal kodlama ile embedding'in birleştirilmesi
- Konumsal kodlama ile embedding toplanarak encoder girdisi olarak kullanılacak yeni bir matris oluşturulur.
Self-attention
- Modelin girdinin belirli bölümlerine odaklanmasını sağlayan attention mekanizması açıklanıyor.
- Çoklu başlıklı attention kullanılarak farklı temsil uzaylarında bilgiye aynı anda odaklanılabilir.
4.1 Matris tanımı
- Her attention head için K, V, Q matrisleri tanımlanır.
4.2 Anahtar, sorgu ve değer hesaplama
- Giriş embedding'i ile ağırlık matrisleri çarpılarak anahtar, sorgu ve değer matrisleri hesaplanır.
4.3 Attention hesaplama
- Sorgu ile her anahtar vektörün iç çarpımı hesaplanır ve sonuç, anahtar vektör boyutunun kareköküne bölünür.
- Attention ağırlıklarını elde etmek için softmax fonksiyonu uygulanır.
- Her değer vektörü attention ağırlıklarıyla çarpılır.
Feed-forward layer
- Encoder'da self-attention katmanının ardından bir feed-forward sinir ağı bulunur.
- Bu ağ iki doğrusal dönüşüm ve ReLU aktivasyon fonksiyonu kullanır.
5.1 Temel feed-forward katmanı
- İlk doğrusal katman giriş boyutunu genişletir, ReLU aktivasyon fonksiyonu uygulanır, ardından ikinci doğrusal katman boyutu yeniden orijinal haline küçültür.
5.2 Encoder'ın tüm sürecini birleştirme
- Çoklu başlıklı attention ve feed-forward katmanını içeren encoder bloğu kodla yazılır.
5.3 Residual bağlantılar ve layer normalization
- Residual bağlantı, katmanın girdisini çıktıya eklemektir; layer normalization ise katmanın girdisini normalize eden bir tekniktir.
GN⁺'nin görüşü
- Bu yazı, transformer modellerinin matematiksel olarak anlaşılmasını kolaylaştırmak için karmaşık matematiği sadeleştirerek açıklıyor.
- Özellikle self-attention mekanizması ile feed-forward sinir ağının nasıl çalıştığını anlamaya yardımcı oluyor.
- Residual bağlantılar ve layer normalization gibi tekniklerin sinir ağlarının kararlılığına ve performansına nasıl katkı sunduğunu göstererek, derin sinir ağlarının öğrenme problemlerini çözme yöntemlerine dair içgörü sunuyor.
1 yorum
Hacker News görüşleri
Transformer'ın "gizemi", her katmanda statik ağırlıklar ve değerlerin doğrusal dizisi yerine, aynı girdiden öğrenilmiş ağırlıkların çarpımıyla elde edilen 3 farklı matris kullanması ve bu matrisleri birbiriyle çarpmasıdır. Bu, daha fazla paralel işlemeyi mümkün kılar, ancak attention formülü statik olduğu için çok sınırlıdır.
Daha kuru, resmi ve kısa bir yaklaşım istiyorsanız, John Thickstun'ın "The Transformer Model in Equations" yazısına bakabilirsiniz. Tüm içerik standart matematiksel gösterim kullanılarak tek bir sayfaya sığıyor.
Yazıyı okurken bazı sorular doğuyor.
Transformer'ın yalnızca bir "sonraki token tahmincisi" gibi çalışmasına rağmen, eğitim veri setinde olmayan kelimeleri veya subword/token'ları nasıl işleyebildiğini açıklayan makale ya da yazılar bulmak istiyorum.
Transformer eğitimleri yeni monad eğitimleri olabilir. Anlaması zor bir kavram, ama bilgisayar biliminin birçok alanında olduğu gibi anlamak için uğraşmak ve örneklerle pratik yapmak gerekiyor.
Bazı kelimeleri biliyorum.
TensorFlow kullanmadan sıfırdan ANN yazmış biri olarak, bu açıklama bana hâlâ kafa karıştırıcı geliyor.
Quarto web sitesini beğendim. Daha fazla Python kullanıcısının yayıncılık için Quarto kullandığını görüyorum.
Decoder'ın 7. adımında
Z_encoder_decoder = layer_norm(Z_encoder_decoder + Z)yerineZ_encoder_decoder = layer_norm(Z_encoder_decoder + Z_self_attention)olması gerekip gerekmediğini ve decoder'ın 8. adımında layer_norm'un eksik olup olmadığını merak ediyorum.LLM'lerin sinir ağları kullanıp kullanmadığını ve "nöron"u oluşturan şeyin ne olduğunu merak ediyorum. Yani, nöronun arkasında bir kod yapısı mı var, yoksa "sadece" karmaşık matematikten mi ibaret?