5 puan yazan GN⁺ 2024-01-04 | 1 yorum | WhatsApp'ta paylaş

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

 
GN⁺ 2024-01-04
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.

    • Hesaplama grafiğini öğrenilebilir parametrelere genelleştirmenin bir yolu ortaya çıkana kadar daha fazla ilerleme görmek zor.
    • Mevcut gradyan yöntemleriyle bunun geleneksel anlamda mümkün olup olmadığı net değil; çünkü küçük değişiklikler performansta büyük dalgalanmalara yol açan kaos etkileri yaratıyor.
    • Muhtemelen genetik algoritmalar veya PSO gibi bir şeyin içeride gerçekleşmesi gerekecek.
  • 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.

    • "Hello" ve "World"e karşılık gelen vektörler rastgele görünüyor, ama sanki bir örüntü de varmış gibi.
    • Vektörde 2 sayısının tekrarlanmasının bir anlamı olup olmadığını, yoksa tüm kümenin bütünüyle benzersiz mi olduğunu merak ediyorum.
  • 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.

    • Örneğin pandas'ta "sdsfs_ff", "fsdf_value" sütunlarına sahip bir tablo oluşturmak ya da eğitim veri setinde olmayan örnekler üretip LLM'den benzer çıktılar istemek gibi.
    • Position embedding üzerine tartışmalar içeren bağlantılar da güzel olurdu. Sinüs/kosinüs kullanımına ve (çarpma karşılaştırmaya karşı) konusuna dair tatmin edici bir yanıt bulamadım.
  • 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.

    • ChatGPT'den matris veya vektör terimlerini kullanmadan temel bir ANN'yi self-attention uygulayacak şekilde nasıl değiştireceğimi açıklamasını istediğimde, gerçekten çok basit bir açıklama yaptı.
    • Her şeyi düğümler, ağırlıklar ve katmanlar açısından düşünmeyi tercih ediyorum. Matrisler ve vektörler, ANN içinde neler olduğunu ilişkilendirmeyi zorlaştırıyor.
    • ANN yazarken alışık olduğum biçimde her giriş düğümü bir skaler, ancak feed-forward algoritması vektör-matris çarpımı gibi görünüyor; çünkü tüm giriş düğümleri ağırlıklarla çarpılıp sonra toplanıyor.
  • 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) yerine Z_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?