Büyük Dil Modelleri (LLM’ler), insan dilinin karmaşık doğasını anlamak için üç kritik anlam katmanına ihtiyaç duyar:
Semantik Anlam: Kelimelerin özündeki anlamı yakalama
Bağlamsal Anlam: Sosyal ve durumsal yorumlama
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
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.
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.
Ö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.
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.
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.
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
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).
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.
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.
Quantization:
Modelin parametrelerini tam hassasiyetle (ör. 32-bit) temsil etmek yerine, daha düşük hassasiyet seviyelerinde (ör. 8-bit, 4-bit) temsil eder.
Sparse Models (Seyrek Modeller):
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.
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.
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.
Mixture of Experts (MoE):
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.
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.
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.
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:
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.
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.
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.2Tokenizasyon:
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.
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:
Tokenizasyon
Word Embedding (Kelime Gömmeleri)
Vektör Temsilleri ve Boyut
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 metinmetin <-"Transformers are powerful models."# Tokenize etmek (kelimelere bölmek)tokenler <-strsplit(metin, " ")[[1]]# Tokenleri yazdırmaprint(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 matrisiembedding_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 embeddingembedding_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 öğrenmelength(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)
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.
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.
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:
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)
Ö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?
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.
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.
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?
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.
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.
Daha Hızlı Yakınsama:
Girdileri normalize ederek gradyanların stabil kalmasını sağlar ve eğitimi hızlandırır.
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)
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.
layer Normalizasyonu Öncesi: x üzerinde layer Normalizasyonu uygulanır: \[x_{\text{norm}} = \text{LN}(x)\]
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}})\]
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ı)
Katman Normalizasyonu Öncesi: MHA katmanından gelen çıktı üzerinde Katman Normalizasyonu uygulanır: \[x_{\text{norm}} = \text{LN}(\text{MHAÇıktısı} + x)\]
İlerlemeli İleri Beslemeli Ağ (FFN): Normalize edilmiş girdi \(x_{\text{norm}}\), FFN katmanına girer: \[\text{FFNÇıktısı} = \text{FFN}(x_{\text{norm}})\]
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.
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\]
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.