3. Token Embeddings
Token Embeddings
Metin verilerini tokenize ettikten sonra, GPT gibi büyük dil modelleri (LLM'ler) için verileri hazırlamanın bir sonraki kritik adımı token embedding'leri oluşturmaktır. Token embedding'leri, ayrık token'leri (örneğin kelimeler veya alt kelimeler) modelin işleyip öğrenebileceği sürekli sayısal vektörlere dönüştürür. Bu açıklama, token embedding'lerini, başlatılmasını, kullanımını ve modelin token dizilerini anlamasını artırmada pozisyonel embedding'lerin rolünü ele alır.
Bu üçüncü aşamanın amacı çok basit: Sözlükteki önceki her token'e modelin eğitimi için istenen boyutlarda bir vektör atamak. Sözlükteki her kelime, X boyutlu bir uzayda bir noktaya karşılık gelecektir. Her kelimenin uzaydaki konumunun başlangıçta "rastgele" başlatıldığını ve bu konumların eğitilebilir parametreler olduğunu unutmayın (eğitim sırasında geliştirilecektir).
Ayrıca, token embedding sırasında başka bir embedding katmanı oluşturulur ki bu da (bu durumda) kelimenin eğitim cümlesindeki mutlak konumunu temsil eder. Bu şekilde, cümledeki farklı konumlarda bir kelime farklı bir temsil (anlam) alacaktır.
Token Embedding Nedir?
Token Embedding'leri, token'ların sürekli bir vektör uzayındaki sayısal temsilleridir. Sözlükteki her token, sabit boyutlarda benzersiz bir vektörle ilişkilendirilir. Bu vektörler, token'lar hakkında anlamsal ve sözdizimsel bilgileri yakalar, böylece modelin verilerdeki ilişkileri ve kalıpları anlamasını sağlar.
Sözlük Boyutu: Modelin sözlüğündeki benzersiz token'ların (örneğin, kelimeler, alt kelimeler) toplam sayısı.
Embedding Boyutları: Her token'ın vektöründeki sayısal değerlerin (boyutların) sayısı. Daha yüksek boyutlar daha ince bilgileri yakalayabilir ancak daha fazla hesaplama kaynağı gerektirir.
Örnek:
Sözlük Boyutu: 6 token [1, 2, 3, 4, 5, 6]
Embedding Boyutları: 3 (x, y, z)
Token Embedding'lerin Başlatılması
Eğitimin başlangıcında, token embedding'leri genellikle küçük rastgele değerlerle başlatılır. Bu başlangıç değerleri, eğitim verilerine dayalı olarak token'ların anlamlarını daha iyi temsil etmek için eğitim sırasında ayarlanır (ince ayar yapılır).
PyTorch Örneği:
Çıktı:
Açıklama:
Her satır, kelime dağarcığındaki bir token'a karşılık gelir.
Her sütun, gömme vektöründeki bir boyutu temsil eder.
Örneğin,
3
indeksindeki token'ın gömme vektörü[-0.4015, 0.9666, -1.1481]
'dir.
Bir Token'ın Gömme Vektörüne Erişim:
Çıktı:
Yorum:
3
indeksindeki token,[-0.4015, 0.9666, -1.1481]
vektörü ile temsil edilmektedir.Bu değerler, modelin token'ın bağlamını ve anlamını daha iyi temsil etmesi için eğitim sırasında ayarlayacağı eğitilebilir parametrelerdir.
Token Gömme İşlemleri Eğitim Sırasında Nasıl Çalışır
Eğitim sırasında, giriş verilerindeki her token, karşılık gelen gömme vektörüne dönüştürülür. Bu vektörler, model içinde dikkat mekanizmaları ve sinir ağı katmanları gibi çeşitli hesaplamalarda kullanılır.
Örnek Senaryo:
Batch Boyutu: 8 (aynı anda işlenen örnek sayısı)
Maksimum Dizi Uzunluğu: 4 (örnek başına token sayısı)
Gömme Boyutları: 256
Veri Yapısı:
Her batch,
(batch_size, max_length, embedding_dim)
şeklinde 3D tensör olarak temsil edilir.Örneğimiz için şekil
(8, 4, 256)
olacaktır.
Görselleştirme:
Açıklama:
Sıra içindeki her bir token, 256 boyutlu bir vektörle temsil edilir.
Model, bu gömme vektörlerini işleyerek dil kalıplarını öğrenir ve tahminler üretir.
Pozisyonel Gömme: Token Gömme İçin Bağlam Eklemek
Token gömmeleri bireysel tokenların anlamını yakalarken, bir dizideki tokenların konumunu doğrudan kodlamaz. Tokenların sırasını anlamak, dil anlayışı için kritik öneme sahiptir. İşte bu noktada pozisyonel gömmeler devreye girer.
Pozisyonel Gömme Neden Gereklidir:
Token Sırası Önemlidir: Cümlelerde, anlam genellikle kelimelerin sırasına bağlıdır. Örneğin, "Kedi minderde oturdu" ile "Minder kedinin üstünde oturdu."
Gömme Sınırlaması: Pozisyonel bilgi olmadan, model tokenları "kelime torbası" olarak ele alır ve sıralarını göz ardı eder.
Pozisyonel Gömme Türleri:
Mutlak Pozisyonel Gömme:
Dizideki her bir konuma benzersiz bir pozisyon vektörü atar.
Örnek: Herhangi bir dizideki ilk token aynı pozisyonel gömme vektörüne sahiptir, ikinci token başka birine ve devam eder.
Kullananlar: OpenAI’nin GPT modelleri.
Göreli Pozisyonel Gömme:
Tokenlar arasındaki göreli mesafeyi, mutlak konumları yerine kodlar.
Örnek: İki tokenın ne kadar uzak olduğunu, dizideki mutlak konumlarına bakılmaksızın belirtir.
Kullananlar: Transformer-XL gibi modeller ve bazı BERT varyantları.
Pozisyonel Gömme Nasıl Entegre Edilir:
Aynı Boyutlar: Pozisyonel gömmeler, token gömmeleriyle aynı boyutluluğa sahiptir.
Toplama: Token kimliğini pozisyonel bilgiyle birleştirerek, genel boyutluluğu artırmadan token gömmelerine eklenir.
Pozisyonel Gömme Ekleme Örneği:
Diyelim ki bir token gömme vektörü [0.5, -0.2, 0.1]
ve pozisyonel gömme vektörü [0.1, 0.3, -0.1]
olsun. Model tarafından kullanılan birleşik gömme şöyle olacaktır:
Pozisyonel Gömme Faydaları:
Bağlamsal Farkındalık: Model, token'ları konumlarına göre ayırt edebilir.
Dizi Anlayışı: Modelin dilbilgisi, sözdizimi ve bağlama bağlı anlamları anlamasını sağlar.
Kod Örneği
Aşağıda https://github.com/rasbt/LLMs-from-scratch/blob/main/ch02/01_main-chapter-code/ch02.ipynb adresinden alınan kod örneği ile devam edilmektedir:
Referanslar
Last updated