Büyük Dil Modelleri: Kapsamlı bir bakış

Large Language Models: A comprehensive overview

Published

December 24, 2024

Prof. Dr. Ibrahim Halil Tanboga, MD, PhD

Nisantasi Üniversitesi Tıp Fakültesi

Biyoistatistik ve Biyoinformatik Anabilim Dalı

Istanbul

halil.tanboga@nisantasi.edu.tr

1 Giriş

Büyük Dil Modelleri (LLM’ler), insan dilinin karmaşık doğasını anlamak için üç kritik anlam katmanına ihtiyaç duyar:

  1. Semantik Anlam: Kelimelerin özündeki anlamı yakalama
  2. Bağlamsal Anlam: Sosyal ve durumsal yorumlama
  3. Kavramsal Anlam: Soyut düşünce ve çıkarımsal akıl yürütme

LLM Perspektifinden Önemi: - İnsan benzeri dil anlayışı sağlama - Yanlış anlamaları minimize etme - Daha esnek ve zeki yanıtlar üretme - Çok boyutlu iletişim kurabilme

Temel Zorluklar

  • Çok Anlamlılık: Aynı kelimenin farklı anlamları
  • Örtük Anlamlar: Söylenmeyeni anlama
  • Kültürel Nüanslar: Sosyal bağlam farklılıkları

Pratik Örnekler

1. Semantic (Anlamsal) Analiz Örneği

Code
# Kelime gömme (word embedding) simülasyonu
semantic_vectors <- list(
  "mutlu" = c(0.2, 0.7, 0.1),
  "memnun" = c(0.22, 0.68, 0.12),
  "üzgün" = c(-0.6, -0.3, 0.05)
)

# Semantik benzerlik hesaplama
cosine_similarity <- function(vec1, vec2) {
  sum(vec1 * vec2) / (sqrt(sum(vec1^2)) * sqrt(sum(vec2^2)))
}

# "mutlu" ve "memnun" kelimelerinin benzerliği
benzerlik <- cosine_similarity(
  semantic_vectors$mutlu, 
  semantic_vectors$memnun
)

print(paste("Mutlu ve Memnun Kelimelerinin Semantik Benzerliği:", round(benzerlik, 3)))
[1] "Mutlu ve Memnun Kelimelerinin Semantik Benzerliği: 0.999"

2. Context (Bağlamsal) Analiz Örneği

Code
# Bağlamsal anlam örneği
context_examples <- list(
  "Bahçedeki anahtar" = "Kapıyı açma aracı",
  "Müzikteki anahtar" = "Şarkının temel tonu",
  "Bilgisayar anahtar komutu" = "Klavye kombinasyonu"
)

# Bağlamsal yorumlama fonksiyonu
context_interpret <- function(phrase, context) {
  paste(phrase, "->", context_examples[[phrase]])
}

# Örnekler
sapply(names(context_examples), context_interpret)
                                 Bahçedeki anahtar 
          "Bahçedeki anahtar -> Kapıyı açma aracı" 
                                 Müzikteki anahtar 
        "Müzikteki anahtar -> Şarkının temel tonu" 
                         Bilgisayar anahtar komutu 
"Bilgisayar anahtar komutu -> Klavye kombinasyonu" 

3. Conceptual (Kavramsal) Analiz Örneği

Code
# Kavramsal çıkarım simülasyonu
conceptual_network <- list(
  "okul" = list(
    alt_kavramlar = c("ilkokul", "lise", "üniversite"),
    iliskili_kavramlar = c("eğitim", "öğrenme", "gelişim")
  ),
  "öğrenme" = list(
    alt_kavramlar = c("ezber", "anlama", "yaratıcı düşünme"),
    iliskili_kavramlar = c("bilgi", "beceri", "gelişim")
  )
)

# Kavramlar arası ilişki bulma
find_related_concepts <- function(kavram) {
  if(kavram %in% names(conceptual_network)) {
    list(
      alt_kavramlar = conceptual_network[[kavram]]$alt_kavramlar,
      iliskili_kavramlar = conceptual_network[[kavram]]$iliskili_kavramlar
    )
  } else {
    "Kavram bulunamadı"
  }
}

# Örnek kullanım
print(find_related_concepts("okul"))
$alt_kavramlar
[1] "ilkokul"    "lise"       "üniversite"

$iliskili_kavramlar
[1] "eğitim"  "öğrenme" "gelişim"

Semantic (Anlamsal) Analiz

Semantik analiz, kelimelerin ve ifadelerin temel anlamını matematiksel vektörlerle temsil eder. LLM’ler için kritik bileşenler:

  • Kelime Gömme (Word Embedding): Kelimelerin çok boyutlu uzayda vektörel temsili
  • Anlamsal Benzerlik: Farklı kelimelerin anlam yakınlığını hesaplama
  • Çok Anlamlılık Çözümleme: Kelimelerin farklı anlamlarını ayırt etme

Context (Bağlamsal) Analiz

Bağlamsal analiz, dilin sosyal ve durumsal boyutunu inceler:

  • Bağlam Algılama: Kelimelerin kullanım ortamına göre yorumlanması
  • Pragmatik Anlam: Sosyal ve kültürel ipuçlarını yakalama
  • Çok Modlu Öğrenme: Farklı bağlamlardan bilgi çıkarımı

Conceptual (Kavramsal) Analiz

Kavramsal analiz, dilin en üst düzey soyut anlam katmanını oluşturur:

  • Soyut Düşünce: Somut ifadelerden soyut kavrayışlara geçiş
  • Çıkarımsal Akıl Yürütme: Dolaylı anlamları ve ilişkileri anlama
  • Bilgi Grafları: Kavramlar arası bağlantıları modelleme

LLM’ler, semantic, context ve conceptual analiz katmanlarını entegre ederek insan benzeri dil anlama ve üretme yeteneği kazanmaktadır. Her bir katman, dilin farklı bir boyutunu temsil eder ve birlikte çalışarak derin bir dil anlayışı sağlarlar.

Günümüzde yapay zeka ve doğal dil işleme (NLP) alanında, Büyük Dil Modelleri (LLM - Large Language Models), insan benzeri metin üretimi ve metin anlamlandırma konularında devrim yaratmıştır. GPT, BERT, T5 ve benzeri modeller, devasa miktarda verilerle önceden eğitilmiş (pre-trained) genel amaçlı modellerdir. Ancak, bu modellerin spesifik bir kullanım alanı veya dil gereksinimi için optimize edilmesi gerektiğinde, fine-tuning (ince-ayar) adı verilen bir süreç devreye girer.

Doğal dil işleme (NLP) alanındaki tarihsel ilerleme, istatistiksel dil modellemesinden nöral dil modellemeye, ardından önceden eğitilmiş dil modellerinden (pretrained language model, PLM’ler) büyük dil modellerine (LLM’ler) doğru evrilmiştir. Geleneksel dil modelleme (LM), görev bazlı (task-specific) modelleri gözetimli (supervised) öğrenme yöntemleriyle eğitirken, PLM’ler geniş bir metin korpusu üzerinde gözetimsiz (unsupervised) öğrenme yaklaşımıyla eğitilir. Amaç, çeşitli NLP görevleri arasında paylaşılabilir genel bir temsil öğrenmektir. PLM’ler, aşağı akış görevleri (downstream tasks) için ince ayar (fine-tuning) yapıldığında, geleneksel dil modellemenin performansını aşar. Daha büyük PLM’ler, daha fazla performans artışı getirir ve bu durum, model parametrelerinin (on milyarlarca ila yüz milyarlarca) ve eğitim veri setinin (GB’lar ve TB’lar) önemli ölçüde artırılmasıyla PLM’lerin LLM’lere dönüşmesine yol açmıştır.

PLM ve LLM Karşılaştırması

Özellik PLM LLM
Boyut Küçük/Orta (milyonlar-milyar) Çok büyük (10B+ parametre)
Eğitim Verisi Gigabayt ölçeği Terabayt ölçeği
Görev Uyarlaması Fine-tuning gerektirir Zero-shot/Few-shot ile genel kullanım
Genelleştirme Sınırlı Çok geniş
Kullanım Alanları Belirli görevler Çok yönlü görevler ve etkileşim
Örnekler BERT, T5, GPT-2 GPT-3, GPT-4, Claude, PaLM

Bu gelişmeleri takiben, literatürde çok sayıda LLM önerilmiştir. Yayınlanan LLM sayısındaki artış eğilimi ile yıllar içinde önerilen bazı önemli LLM’lerin isimleri Şekil 1’de gösterilmiştir.

Şekil1: LLM sürümlerinin kronolojik gösterimi: Mavi kartlar ‘önceden eğitilmiş’ modelleri, turuncu kartlar ise ‘talimatlarla ince ayar yapılmış’ modelleri temsil etmektedir. Üst yarıda yer alan modeller açık kaynaklı, alt yarıdaki modeller ise kapalı kaynaklıdır. Grafik, talimatlarla ince ayar yapılmış ve açık kaynaklı modellere yönelik artan eğilimi göstermekte olup, doğal dil işleme araştırmalarındaki değişen manzara ve trendleri vurgulamaktadır.

LLM’lerin erken çalışmaları olan T5 ve mT5, aktarım öğrenimini (transfer learning) kullanmıştır. Ancak GPT-3, LLM’lerin, herhangi bir ince ayar yapılmadan (fine-tuning), sıfır atış (zero-shot) öğrenme ile aşağı akış görevlerine aktarılabildiğini göstermiştir. LLM’ler, görev açıklamaları ve örneklerle desteklendiğinde, görev sorgularına doğru şekilde yanıt verebilir. Bununla birlikte, önceden eğitilmiş LLM’ler, kullanıcı niyetini takip etmede başarısız olabilir ve sıfır atış öğrenme ayarlarında, birkaç atış öğrenme (few-shot) ayarına kıyasla daha kötü performans gösterir. Görev talimatlarıyla (task instructions) ince ayar yapılması ve insan tercihleriyle uyumlandırılması (alignment), sıfır atış performansını önemli ölçüde artırır ve yanlış alignment davranışı azaltır.

Fine-tuning (ince ayar), bir modelin, genel bilgi dağarcığından çıkarak belirli bir görev (örneğin, Türkçe özetleme, duygu analizi veya soru cevaplama) için eğitilmesini sağlar. Bu süreçte, modelin mevcut öğrenme kapasitesi, daha küçük ve genellikle etiketlenmiş bir veri seti ile beslenerek yeniden ayarlanır. Fine-tuning sürecinin avantajları şunlardır:

Görev Spesifikliği: Modelin, belirli bir işlevde daha doğru sonuçlar vermesini sağlar.

Kaynakların Daha Verimli Kullanımı: Mevcut büyük modelleri sıfırdan eğitmek yerine, halihazırda güçlü bir temel üzerine inşa edilmesi, işlem maliyetlerini ve zamanı azaltır.

Dil ve Kültüre Özgünlük: Türkçe gibi özgün dil yapıları veya yerel kullanım senaryoları için özel modeller geliştirilmesine olanak tanır.

Büyük Dil Modellerinin (LLM’ler), çeşitli görevleri insan seviyesinde çözebilme yetenekleri, yavaş eğitim ve çıkarım süreçleri, kapsamlı donanım gereksinimleri ve yüksek çalışma maliyetleri gibi dezavantajlarla birlikte gelir. Bu tür gereksinimler, modellerin benimsenmesini sınırlamış ve daha iyi mimariler ve eğitim stratejileri geliştirmek için fırsatlar yaratmıştır.

LLM’lerin verimli bir şekilde kullanılabilmesi için yaygın olarak çalışılan yöntemlerden bazıları şunlardır:

  • Parametre Verimliliği için İnce Ayar (Parameter Efficient Tuning),

  • Budama (Pruning),

  • Nicemleme (Quantization),

  • Bilgi Yoğunlaştırma (Knowledge Distillation),

  • Bağlam Uzunluğu Enterpolasyonu (Context Length Interpolation).

Bu yöntemler, LLM’lerin daha verimli hale getirilmesini ve daha geniş bir ölçekte kullanılabilmesini sağlamak için geliştirilmektedir.

Aşağıda LLM lere genel bakışı özetleyen şekil-2 göürlmektedir.

Bu yazıda, LLM’lerin fine-tuning süreçlerine, kullanılan yöntemlere, veri seti hazırlığına ve dikkat edilmesi gereken teknik noktalara değineceğiz.

2 LLM genel özellikler

2.0.1 Foundation model ve özellikleri:

Foundation model, makine öğrenimi dünyasında büyük ölçekli yapay zeka modellerini tanımlamak için kullanılan bir terimdir. Bu terim, genellikle geniş bir yelpazede görevleri yerine getirmek için eğitilmiş ve farklı alanlarda özelleştirilebilen modelleri ifade eder. Bu modeller, daha küçük ve özelleştirilmiş modellerin temelini oluşturur.

  1. Genel Amaçlı Eğitilmiştir:

    • Foundation modelleri, belirli bir göreve değil, genel dil anlama, görsel işleme veya multimodal işleme gibi geniş bir yelpazeye uygun şekilde eğitilir.
  2. Özelleştirilebilir:

    • Genel olarak eğitilmiş foundation modelleri, farklı görevler için ince ayar (fine-tuning) yapılabilir.

    • Örneğin, bir foundation model dil modeli olarak eğitildikten sonra, tıbbi metin analizi gibi bir alanda özelleştirilebilir.

  3. Büyük Ölçekli ve genellikle transformer mimarisine dayalıdır:

    • Bu modeller genellikle devasa veri setleriyle eğitilir ve milyonlarca hatta milyarlarca parametre içerir.

    • Örnek: GPT-4, PaLM, BLOOM, LLaMA.

  4. Farklı Alanlarda Kullanılabilirlik:

    • Foundation modelleri, dil anlama (NLP), görüntü işleme (CV), kod yazma ve daha fazlası için kullanılabilir.

    • Multimodal Foundation Modelleri: Metin ve görsel gibi birden fazla veri türüyle çalışabilir.

  5. Self-Supervised Learning (Kendinden Denetimli Öğrenme):

    • Foundation modelleri, genellikle etiketlenmemiş büyük veri setlerinde kendi başına öğrenme yöntemleriyle eğitilir.

2.0.2 Foundation model mimarisi:

Foundation modelinin hesaplama ve öğrenme süreçlerini etkileyen en kritik yapı taşlarından biri mimarisidir.

Özellik Dense Models Sparse Models MoE Models
Mimari Tüm parametreler aktif Sadece önemli bölümler aktif Girdiye uygun uzmanlar aktif
Hesaplama Verimliliği Yüksek maliyet Daha verimli Çok büyük modellerde yüksek verim
Uzmanlaşma Genel amaçlı Görev odaklı olabiliyor Görev bazlı uzmanlık
Bilgi Erişimi Genellikle statik Genellikle statik Statik veya dinamik olabilir
  1. Dense Models (Yoğun Modeller):

    • Tüm parametreler aktiftir. Modeldeki her bir parametre, verilen giriş için hesaba katılır.
    • Daha yüksek hesaplama maliyeti vardır çünkü tüm model her girdide çalışır.

    • Örnekler:

      • GPT-3, GPT-4 (dense mimariye sahiptir).

      • BERT (bidirectional transformer).

  2. Sparse Models (Seyrek Modeller):

    • Sadece gerekli parametreler aktiftir. Modelin belirli bir bölümü (örneğin attention mekanizmasının bir kısmı) çalışır. (=sparse attention)

    • İnputtaki bağlama göre sadece ilgili olabilecek paramtreleri aktifleştirir.

    • Daha az hesaplama gücü kullanır.

    • Örnekler:

      • Reformer: Uzun sekanslarda sparse attention kullanır.

      • Sparse Transformer: Daha büyük bağlam uzunlukları için tasarlanmıştır.

  3. MoE (Mixture of Experts):

    • Model, belirli girdiler için, gating denen mekanizma ile, en uygun uzmanları (experts) seçer ve sadece o uzmanlar aktif olur. (mesela gating, inputun ne olduğunu; text, kodlama, matematik vs anlamaya çalışır ve ona uygun parametreleri aktive eder. Mesela bir input için tüm parametreleri değilde, belki de %1’ini sadece aktive edip kullanır.
    • Çok büyük modellerde parametrelerin sadece bir kısmı aktif hale gelir, bu da büyük bir verimlilik sağlar.

    • Örnekler:

      • Switch Transformer: Google tarafından geliştirilen MoE modeli.

      • GLaM (Generalist Language Model): MoE’nin Google versiyonu.

Kriter Sparse Models (Seyrek Modeller) MoE (Mixture of Experts)
Hedef Parametrelerin veya işlemlerin bir kısmını seyrekleştirerek verimlilik sağlamak Uzman modüllerinden sadece gerekli olanları çalıştırarak verimlilik sağlamak
Çalışma Mekanizması Modelin içindeki bağlantıları veya hesaplamaları seyrekleştirir Gating mekanizmasıyla en uygun uzman(lar) seçilir ve yalnızca onlar çalışır
Kapsam Modelin her bir kısmında seyrek işlemler gerçekleştirilir Modelin yalnızca belirli uzmanları (expert) çalışır
Uzmanlaşma Uzmanlaşma yoktur, genel bir modeldir Uzmanlar belirli görevlerde özelleşmiştir
Hesaplama Verimliliği Seyrek bağlantılar nedeniyle hesaplama yükü azalır Aktif uzman sayısı azaldığı için hesaplama yükü azalır
Örnek Sparse Transformer, Reformer Switch Transformer, GLaM

2.0.3 Foundation modellerde hesaplama verimliliği (Computational efficiency):

Hesaplama verimliliği, bir modelin hesaplama kaynaklarını ne kadar etkili ve verimli kullandığını ifade eder. Büyük dil modelleri (LLM’ler), genellikle milyonlarca veya milyarlarca parametre içerir, bu da yüksek hesaplama maliyetine yol açar. Hesaplama verimliliği, bu maliyeti azaltmak ve modellerin hızlı, ekonomik ve uygun donanımlarda çalışmasını sağlamak için geliştirilmiş stratejilerle artırılır.

  1. Quantization:

    • Modelin parametrelerini tam hassasiyetle (ör. 32-bit) temsil etmek yerine, daha düşük hassasiyet seviyelerinde (ör. 8-bit, 4-bit) temsil eder.
  2. Sparse Models (Seyrek Modeller):

  3. Parameter Sharing (Parametre Paylaşımı):

    • Modelin farklı katmanlarında aynı parametrelerin tekrar kullanılmasıdır. Örneğin, dil modellerinde benzer görevler için aynı parametreler tekrar tekrar kullanılabilir.
  4. Knowledge Distillation (Bilgi Damıtımı):

    • Büyük bir modelin (öğretmen model) bilgisi, daha küçük bir modele (öğrenci model) aktarılır. Öğretmen modelin çıktıları, öğrenci modeli eğitmek için kullanılır. Bu da, daha küçük bir modelle neredeyse aynı performansı elde etmek için fırsat tanıyabilir. Örneğin; GPT-4’ün bilgilerini daha küçük bir modele aktarıp, mobil cihazlarda çalıştırmak.
  5. Gradient Checkpointing:

    • Modelin ara hesaplamalarını kaydetmek yerine, gerektiğinde tekrar hesaplar.
    • Eğitim sırasında ara bellek tüketimini azaltır.
    • Çok büyük modelleri sınırlı GPU belleğiyle eğitme imkanı sunar.
  6. Mixture of Experts (MoE):

  7. Low-Rank Adaptation (LoRA):

    • Büyük bir modeli tamamen yeniden eğitmek yerine, belirli bir görev için daha küçük bir adaptasyon katmanı ekler. Temel model sabit tutulur ve yalnızca adaptasyon katmanında öğrenme yapılır.
  8. Pipeline Parallelism:

    • Modelin farklı bölümlerini farklı GPU’larda paralel olarak çalıştırır. Model bir “boru hattı” gibi parçalara ayrılır ve bu parçalar farklı donanımda aynı anda çalıştırılır.
  9. Dynamic Computation (Dinamik Hesaplama):

    • Model, girişin karmaşıklığına göre daha fazla veya daha az hesaplama yapar. Örneğin, bir model basit bir soru için yalnızca birkaç katmanı çalıştırırken, daha karmaşık bir soru için tüm ağı aktif hale getirir.
  10. LayerDrop ve Pruning (Katman Atlatma ve Budama):

    • Modelin bazı katmanlarını eğitim sırasında rastgele devre dışı bırakır (LayerDrop) veya az kullanılan parametreleri tamamen kaldırır (Pruning).

2.0.4 Diğer özellikler:

  1. RAG (Retrieval-Augmented Generation):

    • RAG, yani Bilgi Çekme Destekli Üretim, yapay zeka modellerinin bilgi üretme yeteneklerini artırmak için harici veri kaynaklarından bilgi çekme işlemini entegre eden bir yöntemdir.

    • Geleneksel modeller, yalnızca eğitim sırasında gördükleri verilere dayanırken, RAG modelleri dinamik bir şekilde veri tabanlarından veya bilgi kaynaklarından bilgi alabilir.

    • Bu yöntem genellikle iki bileşenden oluşur: bir bilgi çekme sistemi (retriever) ve bir metin üretme modeli (generator). İlk adımda, bilgi çekme sistemi kullanıcının sorusuna uygun belgeleri veya bilgi parçalarını bir veri tabanından alır. Daha sonra, üretim modeli, bu çekilen bilgileri kullanarak yanıt oluşturur.

    • RAG, özellikle geniş bilgiye dayalı soruların cevaplanmasında, statik modellere göre çok daha etkili sonuçlar verir. Örneğin, güncel olaylarla ilgili sorulara yanıt verirken modelin sürekli güncellenmesine gerek kalmaz, çünkü bilgi harici kaynaklardan dinamik olarak alınır.

    • Bu yöntem, kullanıcıya daha doğru ve güvenilir bilgiler sunma potansiyeline sahip olsa da, çekilen bilgilerin kalitesine ve güvenilirliğine bağımlıdır.

  2. RLHF (Reinforcement Learning with Human Feedback):

    • RLHF, yani İnsan Geri Bildirimiyle Pekiştirmeli Öğrenme, yapay zeka modellerinin çıktılarının insan beklentilerine ve değerlerine daha uygun hale getirilmesi için kullanılan bir eğitim yöntemidir. Geleneksel modeller, yalnızca veri üzerinde eğitilirken, RLHF bir adım öteye geçerek modelin çıktılarının insanlar tarafından değerlendirilmesiyle öğrenir.
    • Süreç, genellikle bir temel modelin (pre-trained model) üzerine kurulur ve insan etkileşimi ile desteklenir. İnsanlar, modelin verdiği yanıtları sıralar veya derecelendirir ve bu geri bildirim, bir “ödül modeli” oluşturmak için kullanılır. Daha sonra bu ödül modeli, yapay zeka modelini optimize etmek için bir pekiştirmeli öğrenme algoritması (örneğin PPO - Proximal Policy Optimization) ile birleştirilir.
    • Bu yöntem, özellikle ChatGPT gibi sohbet botlarında modelin daha doğal, güvenilir ve uygun yanıtlar vermesini sağlamak için kritik öneme sahiptir. RLHF’nin en büyük avantajı, modelin sadece doğru bilgiyi değil, aynı zamanda kullanıcı deneyimini iyileştiren çıktılar üretebilmesidir. Ancak, bu yöntem insan geri bildirimine dayalı olduğu için önyargılar ve yanlılıklar taşıyabilir.

3 LLM mimari ve katmanları

Transformer mimarisi, girişten (input) çıktıya (output) kadar bir dizi işlemi içeren oldukça sistematik bir yapıdır. Bu yapıda katmanlar sırayla düzenlenmiştir.

3.1 Transformer modelindeki temel katmanlar ve bileşenler:

Bölüm Bileşen Açıklama
Giriş Katmanları (input layers) Token Embedding Katmanı Giriş kelimelerini (token’ları) vektör temsillerine dönüştürür.
Positional Encoding Katmanı Transformer’lar sırayı anlamak için pozisyon bilgisi ekler.
Encoder Katmanları Self-Attention Mekanizması Giriş token’ları arasındaki bağlamı anlamak için çalışır; Query, Key ve Value matrislerini hesaplar.
Feed-Forward Ağı (FFN) Her token için bağımsız olarak çalışan iki dense (tam bağlantılı) katmandan oluşur.
Layer Normalization Parametre güncellemelerini stabilize eder ve öğrenmeyi iyileştirir.
Residual Connections Giriş bilgisini koruyarak derin öğrenme sürecini optimize eder.
Encoder-Decoder Bağlantıları Encoder’dan Decoder’a Bağlantı Encoder çıktıları decoder’a aktarılır (örneğin, çeviri modellerinde).
Decoder Katmanları Masked Self-Attention Gelecekteki token’ları maskeler; model yalnızca önceki kelimelere bakar.
Cross-Attention Mekanizması Encoder’dan gelen bilgilerle decoder’in kendi çıktısını birleştirir.
Feed-Forward Ağı (FFN) Encoder’daki gibi bağımsız dense katmanlarından oluşur.
Layer Normalization Her adımda stabilize edici bir katman olarak çalışır.
Residual Connections Bilgi kaybını önlemek için kullanılır.
Çıkış Katmanları Linear Projeksiyon Katmanı Decoder çıktıları kelime olasılıklarını hesaplamak için dense bir katmana projekte edilir.
Softmax Katmanı Çıkışta olasılık dağılımı oluşturur; model, en yüksek olasılığa sahip kelimeyi seçer.

*3 temel bölüm: Embedding + transformer blok + output

3.2 Tokenizasyon:

Tokenization, bir metni kelimeler, alt kelimeler veya karakterler gibi daha küçük parçalara ayırma işlemidir. Bu parçalar, modelin üzerinde çalışabileceği “token” adı verilen birimlerdir. Transformer modelleri gibi yapılar, metinleri doğrudan anlayamaz; bu nedenle metinlerin sayısal bir forma dönüştürülmesi gerekir. Tokenization bu dönüşümün ilk adımıdır.

  • Kelime Bazlı Tokenization (Word-level Tokenization): Metni doğrudan kelimelere böler. Örneğin: “Transformer mimarisi çok güçlüdür”. Tokenlar: [“Transformer”, “mimarisi”, “çok”, “güçlüdür”, “.”]. Dezavantaj: Kelime bazlı tokenization, bilinmeyen kelimelerle karşılaştığında zorlanır ve büyük bir kelime dağarcığı gerektirir.

  • Alt Kelime Bazlı Tokenization (Subword Tokenization): Kelimeleri daha küçük birimlere böler. Örneğin, BERT ve GPT gibi modellerde kullanılır: Metin: “Transformers are powerful.”, Tokenlar: [“Trans”, “former”, “s”, “are”, “power”, “ful”, “.”]. Avantaj: Az kullanılan kelimeleri daha iyi işler ve kelime dağarcığı daha küçüktür. Kullanılan Algoritmalar: Byte Pair Encoding (BPE): En sık kullanılan alt kelime algoritmalarından biridir. Sık kullanılan kelime parçalarını birleştirerek daha verimli bir kelime dağarcığı oluşturur. WordPiece: BERT modeli tarafından kullanılır ve alt kelime birimlerini seçerken olasılık temelli bir yaklaşım uygular. SentencePiece: mT5 ve diğer çok dilli modellerde kullanılır; dil bağımsızdır ve tüm metni birleştirip tokenizasyon yapar.

  • Karakter Bazlı Tokenization (Character-level Tokenization): Metni karakterlere ayırır. Metin: “AI”, Tokenlar: [“A”, “I”]. Avantaj: Çok esnektir ve tüm dilleri destekleyebilir. Dezavantaj: Daha uzun dizilerle çalışmak zorunda kalır.

    Her bir token, modelin eğitim sırasında öğrendiği bir kelime dağarcığına (vocabulary) karşılık gelir. Örneğin, “Transformer” kelimesi dağarcıkta 1234 numaralı token ile eşleşebilir. Modelin anlayabilmesi için tokenlar, pozitif tamsayılara (id’lere) çevrilir. Örneğin: [“Transformer”, “mimarisi”] → [1234, 5678]. Ayrıca PAD (padding için), CLS (sınıflandırma için), SEP (cümle ayırımı için), UNK (bilinmeyen kelimeler için) gibi özel tokenlar eklenir

    Farklar: Sıfırdan Model Geliştirme vs. Fine-Tuning

    Özellik Sıfırdan Model Geliştirme Fine-tuning
    Kelime Dağarcığı Oluşturma Eğitim verisinden tamamen yeni kelime dağarcığı oluşturulur. Mevcut kelime dağarcığı genellikle kullanılır.
    Tokenizasyon Tokenizer, modelin ihtiyaçlarına göre sıfırdan tasarlanır. Modelin mevcut tokenizer'ı kullanılır.
    Özel Terimler Tüm kelimeler eğitim verisinden türetilir. Gerekirse kelime dağarcığına yeni terimler eklenebilir.
    Zorluk Seviyesi Daha karmaşık ve zaman alıcıdır. Daha kolay ve hızlıdır.

Örnek:

['Transformer', 'mimarisi', 'çok', 'güçlüdür.', 
 'Doğal', 'dil', 'işleme', 'modellerinde', 'kullanılır.', 
 'Transformer', 'mimarisi', 'doğal', 'dil', 'işleme', 
 'için', 'bir', 'devrimdir.']

Her bir tokenın metindeki tekrar sıklığı:

Token Frekansları
Token Frekans
Transformer 2
mimarisi 2
dil 2
işleme 2
çok 1
güçlüdür. 1
Doğal 1
modellerinde 1
kullanılır. 1
doğal 1
için 1
bir 1
devrimdir. 1

Elde edilen kelime dağarcığındaki her bir token için atanan ID’ler:

Code
# Kelime Dağarcığı ve ID'ler
kelime_dagarcigi <- data.frame(
  Token = c("<PAD>", "<UNK>", "<CLS>", "<SEP>", "<MASK>", 
            "Transformer", "mimarisi", "dil", "işleme", "çok", 
            "güçlüdür.", "Doğal", "modellerinde", "kullanılır.", 
            "doğal", "için", "bir", "devrimdir."),
  ID = c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
)
knitr::kable(kelime_dagarcigi, caption = "Kelime Dağarcığı ve ID'ler")
Kelime Dağarcığı ve ID’ler
Token ID
0
1
2
3
4
Transformer 5
mimarisi 6
dil 7
işleme 8
çok 9
güçlüdür. 10
Doğal 11
modellerinde 12
kullanılır. 13
doğal 14
için 15
bir 16
devrimdir. 17

Metindeki kelimeler, kelime dağarcığındaki karşılık gelen ID’ler ile değiştirilir.

[5, 6, 9, 10, 11, 7, 8, 12, 13, 5, 6, 14, 7, 8, 15, 16, 17]

Mesela bu cümleyin https://gptforwork.com/tools/tokenizer adresinden, GPT-4o-mini vocabulary ile analiz edebilriz: ikinci sırada tokenlerin renklendirilmesi ve 3. sırada bu tokenlara karşılık gelen vocabulary’deki ID ler görülmektedir. Sonuç raporunda ise 17 kelime ve 33 token oluşturulduğu görülmeketdir.

Padding Nedir?

Padding, kısa olan dizilere (örneğin, kelime veya token dizileri) özel bir token ekleyerek bunların uzunluklarını eşitleme işlemidir. Bu işlem, birden fazla diziyi aynı anda (batch olarak) modele beslemek için gereklidir. Daha kısa dizilere genelde <PAD> adlı bir özel token eklenir. Bu özel token, model tarafından dikkate alınmaz ve yalnızca uzunluk eşitlemek için kullanılır.

Girdi Dizileri:

  • Dizi 1: [101, 102, 103] (Uzunluk: 3)

  • Dizi 2: [201, 202] (Uzunluk: 2)

Padding Uygulanmış Diziler:

  • Dizi 1: [101, 102, 103]

  • Dizi 2: [201, 202, <PAD>] (Uzunluk eşitlendi)

Truncation Nedir?

Truncation, uzun olan dizileri belirli bir maksimum uzunluğa kesme işlemidir. Bu, özellikle çok uzun metinlerle çalışırken kullanılır. Çok uzun diziler, modelin hesaplama kapasitesini aşabilir veya gereksiz bilgi yükü getirebilir. Belirlenen maksimum uzunluk (örneğin, 128 token) üzerindeki tokenlar kesilir.Daha kısa diziler olduğu gibi bırakılır.

Girdi Dizileri:

  • Dizi 1: [101, 102, 103, 104, 105] (Uzunluk: 5)

  • Maksimum Uzunluk: 3

Truncation Uygulanmış Diziler:

  • Dizi 1: [101, 102, 103]

Text uzunluğu, bir metnin işlenebilecek maksimum token sayısını ifade eder ve bu değer genellikle Transformer modellerinin giriş boyutlarını belirler. Transformer modelleri, sabit uzunlukta girdilerle çalışmak üzere tasarlanmıştır ve bu uzunluk 256, 512, 1024 gibi önceden belirlenmiş değerlerle sınırlandırılmıştır. Metin, tokenlere bölündükten sonra oluşan token dizisinin uzunluğu, modelin maksimum işleyebileceği token sayısını aşmamalıdır. Örneğin, bir modelin maksimum uzunluğu 512 ise, 600 token uzunluğunda bir metin truncation ile 512 tokena kesilir.

256 Token: Daha kısa metinler için uygundur. Örneğin, tweet analizi veya kısa cümlelerin sınıflandırılması gibi görevler.

512 Token: BERT gibi birçok model için standarttır. Ortalama uzunluktaki metinler için idealdir.

1024+ Token: GPT gibi modellerde kullanılır ve daha uzun metinleri işlemek için uygundur. Daha uzun metinler, daha fazla bellek kullanımı ve hesaplama gerektirir. Örneğin, 512 tokenlık bir metin, 1024 tokenlık bir metine göre yaklaşık 4 kat daha az hesaplama gerektirir (çünkü self-attention karmaşıklığı O(n2)O(n^2)O(n2) ile artar). Uzun metinlerde truncation işlemi, metnin sonundaki bilgilerin kaybolmasına neden olabilir.

Model Maksimum Uzunluk
BERT (base) 512
GPT-2 1024
GPT-3 2048 veya 4096
RoBERTa 512
T5 512
Longformer 4096

3.3 Positional encoding

Positional Encoding (Konumsal Kodlama), transformer modellerinde sıralı verilerin (örneğin cümlelerin) sırasını kodlamak için kullanılan bir tekniktir. Transformer modelleri, sıralı bilgiyi doğrudan anlamaz, çünkü bu modeller giriş verilerini sıralı olmaktan çok bağımsız bir “topluluk” olarak işler. Bu nedenle, sıralı veri için pozisyon bilgisinin eklenmesi gerekir.

  • Dil işleme gibi görevlerde kelimelerin sırası anlamı değiştirebilir. Örneğin: “Kitap okumayı seviyorum.” ile “Seviyorum kitabı okumayı.” farklı anlamlar taşır. Yada: “Yemeği ben yaptım.” ile “Ben yemeği yaptım.” farklı anlam taşır. İkinci cümlede vurgunun pozisyonu değişiyor; kimseyle paylaşmak istemeyen biri gibi duruyor!

  • Transformer modellerinde pozisyon bilgisi yerleşik olarak bulunmaz. Bu nedenle, sıralı bilginin korunması için pozisyon bilgisi modele dışarıdan eklenir.

Positional encoding, işte bu tür bağlamsal farklılıkların modeller tarafından daha iyi anlaşılmasına yardımcı olur.

Metin işleme sürecinde, tokenizasyon, yani her bir kelimeye, daha doğrusu her bir token’a bir ID atanır. Daha sonra, her kelime (token) matematiksel olarak vektörler ile temsil edilir (Kelime temsili veya word embedding). Bu vektörler, kelimenin anlamını ifade eder. Ancak, bu vektörler tek başına kelimelerin sıralarını (order) bilmez. Kelimelerin cümledeki sırasını (pozisyon bilgisini) eklemek için positional encoding kullanılır.

Sırayla şu işlemler yapılır:

  1. Tokenizasyon
  2. Word Embedding (Kelime Gömmeleri)
  3. Vektör Temsilleri ve Boyut
  4. Pozisyonel Kodlama (Positional Encoding)

Tokenizasyon

Tokenizasyon, bir metni daha küçük parçalara (tokenlere) ayırma işlemidir. Bu tokenler kelimeler, kelime parçaları (subwords) veya karakterler olabilir. Her bir token, model tarafından işlenebilecek birimlerdir.

Örnek

Aşağıdaki örnek, bir cümlenin tokenizasyon sürecini göstermektedir:

# Örnek bir metin
metin <- "Transformers are powerful models."

# Tokenize etmek (kelimelere bölmek)
tokenler <- strsplit(metin, " ")[[1]]

# Tokenleri yazdırma
print(tokenler)

Çıktı:

[1] "Transformers" "are" "powerful" "models."

Word Embedding (Kelime Gömmeleri, vektör temsilleri)

Tokenler, modelde sayısal olarak ifade edilmelidir. Ancak, sadece bir kimlik (ID) atamak yeterli değildir. Word embedding, her tokeni bir yoğun vektör ile temsil eder. Bu vektörler, kelimelerin anlamlarını ve aralarındaki ilişkileri taşır. Embedding matrisi, modelin kelime hazinesindeki her token için bir vektör saklar. Örneğin, bir vocabulary (kelime hazinesi) 10.000 kelime içeriyor ve embedding boyutu 512 ise embedding matrisi şu boyuttadır:

Boyut: (10,000 x 512)

Örnek (burada 4x4)

# Basitleştirilmiş embedding matrisi
embedding_matrisi <- list(
  "Transformers" = c(0.1, 0.3, 0.8, 0.4),
  "are" = c(0.9, 0.2, 0.3, 0.5),
  "powerful" = c(0.7, 0.8, 0.6, 0.3),
  "models." = c(0.4, 0.1, 0.9, 0.2)
)

# Örnek bir token için embedding
embedding_matrisi[["Transformers"]]

Çıktı:

[1] 0.1 0.3 0.8 0.4

Vektör Temsilleri ve Boyut: Embedding boyutu, her kelimenin anlamını ifade eden vektörün uzunluğudur.

  • Örneğin, bir embedding boyutu 512 ise, her kelime 512 elemanlı bir vektör ile ifade edilir.

Neden 512 veya 768? : Daha yüksek boyutlar (örneğin 512 veya 768), kelimenin daha karmaşık anlamlarını ifade edebilir. Ancak, boyut arttıkça hesaplama maliyeti de artar. Bu nedenle genellikle 512 veya 768 gibi dengeli değerler kullanılır.

3.3.1 Örnek

# Örnek bir kelime vektörü (boyut = 4)
vektor <- c(0.1, 0.3, 0.8, 0.4)

# Boyutu öğrenme
length(vektor)

Çıktı:

[1] 4

Pozisyonel Kodlama (Positional Encoding)

Transformer modelleri sıralı bilgiyi (kelimelerin pozisyonlarını) doğal olarak işlemez. Bu nedenle, kelimelerin cümledeki sırasını eklemek için pozisyonel kodlama kullanılır. Pozisyonel kodlama, sinüs ve kosinüs fonksiyonları ile her pozisyon için bir vektör oluşturur.

3.3.2 Formül

  • Çift pozisyonlar:

[ PE(pos, 2i) = () ]

  • Tek pozisyonlar:

[ PE(pos, 2i+1) = () ]

Burada: - ( pos ): Pozisyon - ( i ): Vektörün birimi (dimension index) - ( d ): Vektörün boyutu (örneğin 512)

3.3.3 Örnek (R Koduyla Hesaplama)

# Pozisyonel kodlama fonksiyonu
positional_encoding <- function(pos, d) {
  PE <- numeric(d)
  for (i in seq(0, d - 1, 2)) {
    PE[i + 1] <- sin(pos / (10000^(i / d)))
    if (i + 2 <= d) {
      PE[i + 2] <- cos(pos / (10000^(i / d)))
    }
  }
  return(PE)
}

# Örnek: Pozisyon = 2, Boyut = 4
positional_encoding(2, 4)

Çıktı:

[1] 0.8414710 0.5403023 0.1986693 0.9800666

Ortaya çıkan posizyonel vektörde, tıpkı word embedding vektörü gibidir (aynı boyutta).

3.3.4 Transformer Modellerinde Matris Boyutları ve Embedding İşlemleri

  • Word Embedding ve Positional Encoding aynı boyutta matrisler üretir
  • İki matris toplanarak birleşik bir matris oluşturulur
  • Matris boyutları: (samples, sequence length, embedding size)
  • Transformer boyunca bu boyut korunur
  • Bu süreç, dil modellerinin kelime anlamını ve sırasını eş zamanlı öğrenmesini sağlar

3.3.4.1 Detaylı Örnek

Örnek cümle: “Ben bir robotum.” - Tokenlar: [“Ben”, “bir”, “robotum”, “.”] - Örnek parametreler: - samples = 1 (tek bir cümle) - sequence length = 4 (4 token) - embedding size = 3 (basitleştirilmiş vektör boyutu).

Matris Boyutu: (samples, sequence length, embedding size)

Sample (batch size): bir derin öğrenme modeline aynı anda verilen veri örneklerinin sayısıdır. Bu kavram batch processing (toplu işleme) sırasında kullanılır. Derin öğrenme modelleri tek bir örnek yerine, aynı anda birden fazla örnekle işlem yaparak daha verimli öğrenir.

Sequence length, bir cümledeki toplam token (kelime veya kelime parçaları) sayısını ifade eder.

3.3.5 Word Embedding Adımları: (1 x 4 x 3)

3.3.5.1 1. Kelime ID’leri

"Ben"      → ID: 0  
"bir"      → ID: 1  
"robotum"  → ID: 2  
"."        → ID: 3

3.3.5.2 2. Embedding Matrisi;

Word embedding vektörü; GPT lerde bu 512 vs’dir, burda basit olsun diye her kelime 3 vektörle gösterilmiş.

ID: 0 → [0.1, 0.2, 0.3]   # "Ben"
ID: 1 → [0.4, 0.5, 0.6]   # "bir"
ID: 2 → [0.7, 0.8, 0.9]   # "robotum"
ID: 3 → [0.0, 0.1, 0.2]   # "."

3.3.6 Positional Encoding Örneği (1x4x3)

3.3.6.1 Pozisyon Kodlaması

Pozisyon 0 → [sin(0), cos(0), sin(0.1)] → [0.0, 1.0, 0.0998]
Pozisyon 1 → [sin(1), cos(1), sin(0.1)] → [0.8415, 0.5403, 0.0998]
Pozisyon 2 → [sin(2), cos(2), sin(0.1)] → [0.9093, -0.4161, 0.0998]
Pozisyon 3 → [sin(3), cos(3), sin(0.1)] → [0.1411, -0.9899, 0.0998]

3.3.7 Birleşik Matris

Toplama sonucu elde edilen birleşik matris, Transformer modelinin giriş katmanına beslenir.

Bir batch’te 2 cümle olduğunu düşünelim: Cümle 1: “Ben bir robotum.” → 4 token, Cümle 2: “Merhaba dünya!” → 3 token

Bu durumda:

  • samples = 2 → İki giriş örneği var.

  • sequence length = 4 → En uzun cümlenin token sayısı (genellikle padding ile eşitlenir).

  • embedding size = 3 → Örneği basitleştirmek için boyutu 3 alıyoruz.

Sample 1 (Cümle 1):
[
  [0.1, 0.2, 0.3],  # "Ben"
  [0.4, 0.5, 0.6],  # "bir"
  [0.7, 0.8, 0.9],  # "robotum"
  [0.0, 0.1, 0.2]   # "." (padding gerekmez)
]

Sample 2 (Cümle 2, padding ile):
[
  [0.3, 0.4, 0.5],  # "Merhaba"
  [0.6, 0.7, 0.8],  # "dünya"
  [0.0, 0.1, 0.2],  # "!" 
  [0.0, 0.0, 0.0]   # Padding (sequence length = 4'e eşitleme)
]

Word embedding vektörü: 2x4x3

Temel Çıkarımlar

  • Word Embedding: Tokenlerin semantik anlamlarını temsil eder
  • Positional Encoding: Tokenlerin sıra bilgisini kodlar
  • Birleşik matris, modelin hem anlam hem de sıra bilgisini yorumlamasına olanak sağlar

3.4 Pozisyonel Kodlama Türleri

Transformer modelleri, kelimelerin sırasını öğrenmek için pozisyonel kodlama kullanır. Üç ana türü vardır:

  1. Absolute Positional Encoding (Mutlak Pozisyon Kodlama)

    • Sinüs ve kosinüs fonksiyonları kullanılarak sabit bir pozisyon vektörü oluşturulur.

    • Kelimenin bulunduğu mutlak konumu temsil eder.

    • “Attention Is All You Need” makalesindeki klasik yöntem budur.

  2. Relative Positional Encoding (Göreli Pozisyon Kodlama)

    • Kelimenin mutlak pozisyonu yerine, kelimeler arasındaki göreli mesafeyi temsil eder.

    • Bu yöntem, sıralı verilerde bağıl konum bilgisini daha etkin şekilde işler.

    • Örnekler: Alibi ve RoPE

  3. Learned Positional Encoding (Öğrenilmiş Pozisyon Kodlama)

    • Pozisyon vektörleri, model tarafından eğitim sırasında öğrenilir.

    • Mutlak pozisyon yerine, model kendisi hangi pozisyon bilgisinin önemli olduğunu öğrenir.

Alibi vs RoPE Karşılaştırması

Özellik Alibi RoPE
Yöntem Attention skorundan lineer bias çıkarılır Query ve Key vektörleri pozisyona bağlı döner
Temsil Şekli Göreli pozisyonları lineer bias ile işler Göreli pozisyonları trigonometrik dönüşümle işler
Mesafe Etkisi Uzak tokenlara verilen dikkat azalır Uzak tokenların etkisi döndürme ile zayıflar
Verimlilik Uzun sekanslarda hızlı ve etkili Daha kesin ve sürekli temsil sağlar
Kullanım Alanı Performans odaklı uygulamalar Yüksek doğruluk gerektiren görevler

Açıklama

Alibi (Attention Bias) ve RoPE (Rotary Position Embedding), transformer modellerinde pozisyonel bilgiyi temsil etmek için kullanılan iki farklı yaklaşımdır. Her iki yöntem de modellerin uzun dizilerdeki performansını artırmayı hedefler, ancak farklı mekanizmalar kullanırlar.

Yukarıdaki şekilde 3 katmanlı bir transformer modeli görülmektedir. Pratikte, LLM lerde bu 6-96 arasında değişmektedir. Ayrıca şekil sadece encoder veya sadece decode modelini göstermektedir. Ayrıca Encoder-Decoder modelleri de vardır. Aşağıda transformer katmanları anlatılmıştır.

Model Encoder Katman Sayısı Decoder Katman Sayısı
Transformer (Base) 6 6
BERT (Base) 12 -
GPT-2 (Base) - 12
GPT-3 (Large) - 96
T5 12 12

4 Transformer blok:

4.1 1. Transformer blok: giriş matrisi - embedding input

Transformer bloklarının katmanlarının iki ana yapısı vardır: Multi-head attention ve FNN. Her bir katman input embedding (ilk katman için input embedding ama sonraki katmanların girdisi, bir önceki katmanın çıktısı olacaktır) ile beslenir ve her bir katmanda bulunan multihead attention ve FNN çıktısı layer normalization ve residuel connection ile ayarlanır.

Positional encoding ve word embedding matrislerinin toplandıktan sonra oluşan input embedding matrisi, Transformer modelinin ilk girişidir. Bu aşamadan sonra bu matris, attention mekanizması ve feed-forward ağlar üzerinden geçirilerek işlenir. Birleşmiş word embedding + positional encoding matrisi şu boyuttadır: [Batch size, Sequence length, Embedding size]

4.2 2. Transformer blok: Attention

Attention, Transformer gibi modellerin, hangi tokenların (kelimelerin) diğerlerine göre daha önemli olduğunu belirleyebilmesini sağlar. Örneğin, bir cümledeki her kelime, diğer kelimelere dikkatini (attention) farklı yoğunlukta verir.

Basit bir örnek: Transformer’daki Attention mekanizmasını bir bilgi arama sistemi gibi düşünebiliriz:

  • Query (Q): Bir token’ın neyi aramak istediğini temsil eder.

  • Key (K): Diğer token’ların ben kimim ve neyi temsil ediyorum? bilgisidir.

  • Value (V): Token’ın taşıdığı gerçek bilgi veya içeriktir.

Bu matrisler arasındaki etkileşim, “hangi kelimenin diğer kelimelere ne kadar dikkat etmesi gerektiğini” anlamaya çalışır.

Cümledeki her bir token için input embedding matrisi hesaplanır. Daha sonra, her bir token’in embedding matrisi, rasgele belirlenen ve daha sonra back propagation ile güncellenecek olan, Q, K ve V matrisleri ile çarpılır ve Q, K, V vektörleri elde edilir. Bu işlemler sadece tek bir attention-head’de yapılmaz, pek çok attention head de yapılır (multi-head attention).

Cümle: > “On the deserted planet they discovered a …”

Modelin görevi, boşluğa en olası kelimeyi bulmaktır. Olası kelimeler ve tahmin edilen olasılıklar:

Kelime Olasılık (%)
strange 34%
mysterious 21%
planet 19%
large 15%
massive 11%

Dil modeli bu tahmini Transformer mimarisi ve Attention mekanizmasını kullanarak yapar. Adım adım inceleyelim:

4.2.0.1 1. Input Embedding

Cümledeki her kelime, sayısal vektörlere dönüştürülür.

Kelime Embedding Vektörü
On [0.1, 0.2, …, 0.5]
the [0.3, 0.1, …, 0.4]
deserted [0.7, 0.8, …, 0.6]
planet [0.5, 0.3, …, 0.9]
they [0.2, 0.4, …, 0.1]
discovered [0.6, 0.7, …, 0.2]
a [0.1, 0.3, …, 0.4]

4.2.0.2 2. Positional Encoding

Kelime sıraları önemli olduğu için Positional Encoding eklenir. Her kelimenin yeni vektörü şu şekilde hesaplanır:

[ Input = Word_Embedding + Positional_Encoding ]

Kelime Pozisyon Bilgisi Yeni Vektör
On [0.0, 1.0, …] [0.1, 1.2, …, 0.6]
a [0.3, 0.9, …] [0.4, 1.2, …, 0.4]

4.2.0.3 3. Q, K, V Matrislerinin Oluşturulması

Her kelimenin Query (Q), Key (K) ve Value (V) matrisleri oluşturulur:

\[ Q = X W_Q, \quad K = X W_K, \quad V = X W_V \]

( X ): Input embedding matrisi ve WQ, WK, WV : Öğrenilebilir ağırlıklar (örğrenme sürecinde güncellenecektir). Bias: Opsiyonel olarak bQ,bK,bV​ bias terimleri eklenir.

Q, K ve V matrislerinin boyutları → (Batch size,Sequence length,dk)

4.2.0.4 4. Attention Hesaplanması

Attention skorlarını hesaplamak için Query (Q) ve Key (K) matrisleri arasında dot product (çarpım) yapılır (MatMul=Matrix Multiplication). Bu işlem tokenlar arasındaki ilişkileri/benzerlikleri ölçer.

\[ \text{Attention skoru} =\frac{Q \cdot K^T}{\sqrt{d_k}}\ \]

Q: Query matrisi. K^T: Key matrisinin transpozu. dk​​: Skorların aşırı büyük olmasını önlemek için kullanılan bir normalize terimi.

Attention skorlarının boyutu → (Batch size,Sequence length,Sequence length). Burada her token diğer token’lara karşı bir skor üretir.

Attention skorları, softmax fonksiyonundan geçirilerek normalize edilir. Bu, tokenların birbirine olan dikkat ağırlıklarını (probability) oluşturur.

\[ \text{Attention Weight} = \text{softmax}\left(\frac{Q \cdot K^T}{\sqrt{d_k}}\right) \ \]

Attention ağırlıklarının boyutu → (Batch size,Sequence length,Sequence length)

Attention output, her kelimenin boşluğa (….. ile gösterilen, tahmin edilecek token) olan katkısını hesaplar. Böylece “hangi token’ın bilgisine ne kadar dikkat edeceğimizi” öğreniriz. Formül:

\[ \text{Attention output}(Q, K, V) = \text{softmax}\left(\frac{Q \cdot K^T}{\sqrt{d_k}}\right) \cdot V \]

Q: “a” kelimesine ait Query vektörü (neyi arıyor). K: Tüm kelimelerin Key vektörleri (kim olduklarını temsil ediyor). dk​: Query ve Key vektörlerinin boyutu. (normalize etmek için bu değerin karekökü kullanılır)

Attention Output boyutu → (Batch size,Sequence length,dk​)

Örneğin: “On the deserted planet they discovered a …” için;

Kelime Key (K)
deserted [0.3, 0.4]
planet [0.5, 0.6]
they [0.2, 0.1]
discovered [0.1, 0.3]

“a” kelimesinin Query (Q): [0.4, 0.5]

Kelime Softmax Ağırlığı
deserted 0.26
planet 0.31
they 0.21
discovered 0.22

4.2.0.5 5. Value (V) ile Bilgi Toplama

Attention ağırlıkları, Value (V) matrislerine uygulanır:

Kelime Value (V) Ağırlık Katkı
deserted [0.2, 0.3] 0.26 [0.052, 0.078]
planet [0.4, 0.6] 0.31 [0.124, 0.186]
they [0.1, 0.2] 0.21 [0.021, 0.042]
discovered [0.3, 0.1] 0.22 [0.066, 0.022]

Toplayarak Attention Output hesaplanır:

= [0.263, 0.328]

- Tüm Head’lerden Gelen Bilgilerin Birleştirilmesi: Tüm head’lerden gelen çıktılar birleştirilir (concat işlemi): $$ \text{MultiHead} = \text{Concat}(\text{head}_1, \text{head}_2, \dots, \text{head}_h) $$- Birleştirilen Sonucun Yeniden Projeksiyonu: Bir çıktı ağırlığı (\( W_O \)) ile yeniden projeksiyon yapılır: $$ \text{Attention Output} = \text{MultiHead} \cdot W_O $$- Çıktı Boyutu: Final Attention Output boyutu şu şekildedir: $$ (\text{Batch size}, \text{Sequence length}, d_{\text{model}}) $$

  • Attention Output, bir sonraki katman olan feed-forward ağına iletilir.
  • Bu Attention Output, kelimenin bağlamını temsil eder ancak henüz logits ya da olasılık dağılımı oluşturmak için kullanılmaz.

4.2.0.6 3. Residual Connection ve Layer Normalization

Residual Connections ve Layer Normalization, Transformer mimarisinin başarısında önemli bir rol oynayan iki temel mekanizmadır. Her ikisi de derin ağların eğitimi sırasında stabiliteyi artırır, gradyan akışını iyileştirir ve optimizasyon sürecini hızlandırır.

Residual connections, bir katmanın çıktısını doğrudan girdi ile toplayarak bir sonraki adıma aktarılmasını sağlayan bir bağlantı türüdür. Bu mekanizma, “skip connections” veya “shortcut connections” olarak da bilinir. Output = \( F(x) \) + \( x \)

Neden Önemlidir?

  1. Gradyan Akışını İyileştirir:

    • Derin ağlarda gradyanların kaybolması (vanishing gradient) problemi yaşanabilir. Residual bağlantılar, gradyanların doğrudan akmasını sağlayarak bu sorunu azaltır.
  2. Performans Bozulmasını Önler:

    • Daha derin katmanlar bazen ağı daha kötü hale getirebilir. Residual bağlantılar, orijinal girdiyi korunarak derin katmanların performansı bozmasını engeller.
  3. Etkili Öğrenme:

    • Bir katman, doğrudan girdiyi geçirebilir veya üzerine küçük iyileştirmeler ekleyebilir. Bu sayede her katman, önceki katmanların çıktısını iyileştirici bir şekilde kullanır.

Layer Normalization (LN):
Layer normalization, bir katmanın çıktısındaki özellikleri normalize eden bir yöntemdir. Batch Normalization’dan farklı olarak, normalizasyon işleminde örnek bazında çalışır ve özellikler üzerinde normalize edilir. Normalizasyon işlemi şu formüle göre yapılır:
\[ \text{LN}(x) = \gamma \cdot \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} + \beta \]

- \( \mu \): Giriş \( x \)’in ortalaması. - \( \sigma^2 \): Giriş \( x \)’in varyansı. - \( \epsilon \): Sayısal kararlılığı artırmak için küçük bir sabit. - \( \gamma \): Ölçeklendirme parametresi (learnable). - \( \beta \): Kaydırma parametresi (learnable).

Neden Önemlidir?

  1. Stabilite Sağlar:

    • Layer normalization, her bir örnek için katman çıktılarının ölçeğini normalize eder. Bu, eğitimi stabil hale getirir.
  2. Batch Bağımsızlığı:

    • Batch Normalization küçük batch boyutlarında kötü performans gösterir. Ancak Layer Normalization, batch boyutundan bağımsız çalışır ve tek bir örnek üzerinde bile etkili çalışabilir.
  3. Daha Hızlı Yakınsama:

    • Girdileri normalize ederek gradyanların stabil kalmasını sağlar ve eğitimi hızlandırır.

\[\text{Output} = \text{LayerNorm}(\text{Attention Output} + \text{Original Output})\]

Orijinal transformer yazısında (attention is all you need), postlayer normalizasyon kullanılmıştı, ancak son zmanlarda yapıaln çalışmalar prelayer normalizasyonun daha etkili olduğunu göstermiştir. Yani multihead attention’dan önce layer normalizasyon sonra rezidüel conneciton (add), FFN içinde benzer şekilkde önce layer normalizasyon sonra rezidüel conneciton (add).

Prelayer normalizasyon basamakları:

Transformer’ın bir katmanında iki alt katman bulunur:

1. Çok Başlı Dikkat Mekanizması (Multi-Head Attention - MHA)

2. İlerlemeli İleri Beslemeli Ağ (Feed Forward Network - FFN)

Her iki alt katmanda da şu işlem sırası izlenir:

1. Katman Normalizasyonu (Layer Normalization - LN) uygulanır.

2. Alt Katman (MHA veya FFN) uygulanır.

3. Artık Bağlantı (Residual Connection) ile orijinal girdi eklenir.

Multihead attention için işlem

Girdi: x, önceki katmandan gelen veya ilk katmanda input embeding + positional encoding olan vektördür.

  1. layer Normalizasyonu Öncesi: x üzerinde layer Normalizasyonu uygulanır: \[x_{\text{norm}} = \text{LN}(x)\]

  2. Multihead Dikkat Mekanizması (MHA): Normalize edilmiş girdi \(x_{\text{norm}}\), Çok Başlı Dikkat Mekanizması katmanına girer: \[\text{MHAÇıktısı} = \text{ÇokBaşlı}(x_{\text{norm}})\]

  3. Rezidüel connection (Toplama): MHA çıktısına, orijinal girdi x eklenir: \[\text{Çıktı} = \text{MHAÇıktısı} + x\]

FFN için işlem

Girdi: MHA katmanının çıktısı (Çıktı)

  1. Katman Normalizasyonu Öncesi: MHA katmanından gelen çıktı üzerinde Katman Normalizasyonu uygulanır: \[x_{\text{norm}} = \text{LN}(\text{MHAÇıktısı} + x)\]

  2. İlerlemeli İleri Beslemeli Ağ (FFN): Normalize edilmiş girdi \(x_{\text{norm}}\), FFN katmanına girer: \[\text{FFNÇıktısı} = \text{FFN}(x_{\text{norm}})\]

  3. Artık Bağlantı (Toplama): FFN çıktısına, FFN katmanına girmeden önceki orijinal girdi (MHAÇıktısı+x) eklenir: \[\text{Çıktı} = \text{FFNÇıktısı} + (\text{MHAÇıktısı} + x)\]

4.2.0.7 4. Feed-Forward Neural Network (FFN)

FFN, Multi-Head Attention’dan çıkan bağlam bilgisini alır ve her token için ayrı ayrı işler. FFN, iki lineer dönüşüm ve arada bir aktivasyon fonksiyonundan oluşur.

Formül

\[FFN(x) = ReLU(x \cdot W_1 + b_1) \cdot W_2 + b_2\]

Formül Bileşenleri:

  • \(x\): Multi-Head Attention’dan gelen vektör (boyutu \(d_{model}\), örneğin 512)
  • \(W_1\): İlk lineer katman ağırlıkları, boyutu \(d_{model} \times d_{ffn}\)
  • \(b_1\): İlk katmanın bias terimi
  • \(W_2\): İkinci lineer katman ağırlıkları, boyutu \(d_{ffn} \times d_{model}\)
  • \(b_2\): İkinci katmanın bias terimi
  • \(ReLU\): Aktivasyon fonksiyonu

Örnek Üzerinden Hesaplama

Cümle: “On the deserted planet they discovered a”

Multi-Head Attention Output:

Her token için \(d_{model} = 512\) boyutunda bir vektör gelir. Örneğin: - “a” → \([0.263, 0.328, ..., 0.512]\)

FFN Ağırlıkları:

  • \(W_1\): \(512 \times 2048\)
  • \(W_2\): \(2048 \times 512\)

FFN İki Aşamada Çalışır

  1. İlk Dönüşüm: \[\text{Hidden} = ReLU(x \cdot W_1 + b_1) \text{ (Boyut: 2048)}\]

  2. İkinci Dönüşüm: \[\text{FFN Output} = \text{Hidden} \cdot W_2 + b_2 \text{ (Boyut: 512)}\]

Sonuç: Her token için FFN çıktısı yine 512 boyutlu bir vektördür. Bu vektör, Multi-Head Attention’dan gelen bağlam bilgisini zenginleştirir.

4.2.0.8 6. Olasılık Dağılımının Oluşturulması

Model, Final Output’u (FFN’den sonra residüel connectiondan geçmiş) kullanarak kelime hazinesi (vocabulary) üzerinde bir tahmin yapar. Final Output (örneğin 512 boyutlu bir vektör), kelime hazinesindeki her bir kelimeye karşılık gelen olasılığı hesaplamak için bir lineer dönüşümden geçirilir:

\[\text{Final Output Shape} = (B, T, d_{model})\]

  • Final Output = \(d_{model}\) (Örneğin, 512)
  • Cümledeki token sayısı: \(T\)
  • Model boyutu: \(d_{model}\)
  • Batch size: \(B\)

Örnek

  • Cümle: “On the deserted planet they discovered a” → 7 token
  • Model Boyutu: \(d_{model} = 512\)
  • Batch Size: \(B = 1\)
  • Final output boyutu: \((1, 7, 512)\)

\[\text{Logits} = \text{Final Output} \cdot W + b\]

  • \(W\): \(d_{model} \times \text{Vocabulary Size}\) (Örneğin, \(512 \times 50,000\))
  • \(b\): Bias terimi, boyutu \(\text{Vocabulary Size}\) (Örneğin, \(50,000\))
  • Final Output: Bir kelimenin bağlam bilgisini taşıyan vektör. → [0.263, 0.328]

Örnek Logit Değerleri

Kelime Logits
strange 2.3
mysterious 1.8
planet 1.7
large 1.5
massive 1.2

Softmax ile Olasılıkların Hesaplanması

$$ \text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}} $$

Kelime Olasılık (%)
strange 34%
mysterious 21%
planet 19%
large 15%
massive 11%

4.2.0.9 7. Sonuç

En yüksek olasılığı taşıyan kelime “strange” olarak seçilir. Bu, dil modelinin boşluğa en uygun kelimeyi seçmek için Attention Mekanizmasını nasıl kullandığını gösterir.

  • Attention Output: Boşlukta hangi kelimenin uygun olacağına dair bağlam bilgisini içerir.

  • Lineer Dönüşüm: Bu bağlam bilgisi, kelime hazinesi üzerindeki skorlar (logits) için kullanılır.

  • Softmax: Logits’leri olasılıklara dönüştürerek tüm kelime hazinesi için bir tahmin yapar.

5 Farklı Transformer Mimarileri:

Orijinal Transformer yazısında tanımlanan Encoder-Decoder modelleriyidi. Ancak, pek çok model sadece Encoder, ve hatta çoğu model sadece Decoder şeklinde çalışmakatdır.