Atlas’ta ara

Keşfetmeye buradan başla

Öğren/Transformer

Transformer Mimarisi Nasıl Çalışır?

Bir cümlenin tokenlardan tahmine uzanan yolculuğu. Modern dil modellerinin içini, adım adım ve etkileşerek keşfet.

ÖN BİLGİ

Bu yazıyı rahat izlemek için şunlara önce bakmış olman iyi olur:

01Tokenlar02Embedding03Attention04Transformer05Tahmin

00Bir sonraki kelimeden fazlası#

“Kedi koltuğa atladı. Çünkü çok…” Cümleyi tamamlarken yalnızca son kelimeye bakmazsın. Kediyi, hareketi ve önceki cümlenin bıraktığı ipuçlarını birlikte düşünürsün. Bir dil modeli de devamını üretirken önceki metni kullanır; ama bunu insanların düşünme biçiminin bir kopyasıyla değil, sayılar üzerindeki öğrenilmiş işlemlerle yapar.

Transformer, bu işlemleri düzenleyen bir sinir ağı mimarisidir. Temel fikir şu: her metin parçasının temsilini, diğer parçalardan gelen bilgiyle güncelle. Önce tekrarlı ağların neden yetmediğini merak ediyorsan Dizi modelleri yazısına bak. Bu yazıda bir cümleyi modelin içine kadar takip edeceğiz. Önce parçalara ayıracak, sonra vektörlere çevirecek, bağlantılarını inceleyecek ve bir sonraki tokenın nasıl seçildiğini göreceğiz.

Matrisleri önceden bilmen gerekmiyor. Bir vektörü “sayı listesi”, bir matrisi “sayı tablosu” olarak düşünebilirsin. Daha sistematik bir tekrar istersen, nokta çarpımı ve matrisleri küçük örneklerle anlatan ön bilgi yazısına bakabilirsin. Her görselin yanında neyin hesaplandığını, neyin yalnızca anlatımı kolaylaştırmak için seçildiğini belirtiyoruz.

01Cümle, küçük parçalara ayrılır#

Modelin girişine doğrudan harfler çizilmiş bir sayfa gitmez. Bir tokenizer, metni kendi sözlüğündeki birimlere ayırır. Bu birimler token olarak adlandırılır. Bir token tam bir kelime olabilir; bazen bir ek, bir noktalama işareti veya bir bayt dizisidir.

Türkçede “kedilerimizden” gibi bir kelimenin birden fazla parçaya ayrılması şaşırtıcı değildir. Yine de tokenizerın dil bilgisi kurallarını bilip kök ve ek aradığını varsayma. Örneğin BPE, eğitim metninde sık birlikte görünen birimleri birleştirerek bir sözlük oluşturur. Farklı sözlükler aynı metni farklı bölebilir. BPE’nin çalışma biçimi ↗

01

Metinden tokenlara

Temsili görselleştirme
Önce bir cümle
“Yapay zekâyı anla.”
?token
?token
?token
?token
?token

Modelin ilk işi anlam çıkarmak değil, metni işlenebilir birimlere ayırmaktır.

1 / 3
Parçalar ve kimlikler öğretim için elle seçilmiştir; gerçek bir tokenizer çıktısı değildir. ␣, baştaki boşluğu görünür kılar.

Sözlük, her parçayı bir tam sayı kimliğiyle eşler. Kimlik, anlamın kendisi değildir. Kitaplıktaki raf numarası gibi, modelin bir sonraki adımda doğru vektörü bulmasını sağlar. Bu nedenle token kimlikleri arasındaki sayısal uzaklık, kavramların benzerliği hakkında bilgi vermez.

02Parçalardan sayısal temsillere#

Bir embedding tablosunun her satırında, bir tokena ait öğrenilmiş sayı listesi bulunur. Model token kimliğini kullanarak o satırı seçer. Örneğin temsili sözlüğümüzdeki 42 numaralı öğe, dört sayıdan oluşan bir vektöre karşılık gelebilir. Gerçek modelde bu vektörün boyutu mimariye bağlıdır.

Bu sayılar eğitim sırasında ayarlanır. Benzer kullanım örüntülerine sahip tokenlar bazı açılardan benzer temsiller edinebilir. Fakat “ilk sayı canlılığı, ikinci sayı duyguyu anlatır” gibi sabit etiketler vermek genellikle doğru değildir. Temsil, bileşenlerin birlikte taşıdığı bilgidir. Embedding işleminin teknik tanımı ↗

02

Kelimelerin sayısal komşuluğu

Hesaplanan · temsili girdiler

Bir kelime seç, ardından başka bir kelimeyle vektörünü karşılaştır.

Temsili 2B görünüm · eksenlerin anlamsal etiketi yokkediköpekelmaarmutuçak
kedi→[ 0.82 , 0.68 , -0.15 , 0.30 ]
köpek→[ 0.76 , 0.81 , -0.10 , 0.18 ]
kedi ↔ köpek4B vektörlerden hesaplanan kosinüs0.985

Bu iki örnek vektör benzer yönlere bakıyor. Bu sayı bir olasılık veya kelimelerin “anlamca yüzde kaç aynı” olduğunun ölçüsü değildir.

Benzerlik nasıl hesaplanıyor?

cos(a, b) = Σ(aᵢ × bᵢ) / (‖a‖ × ‖b‖)

Aynı konumdaki değerleri çarpıp toplar, sonucu iki vektörün uzunluklarının çarpımına böleriz. Burada dört boyutun tamamı kullanılır; yukarıdaki çizimdeki uzaklık kullanılmaz. Pozitif bir sayıyla ölçeklemek yönü ve kosinüs benzerliğini değiştirmez.

Bir embedding’in her ekseni “canlılık” gibi tek bir özelliğe karşılık gelmek zorunda değildir. Gerçek bir modelde bu benzerliğin ne kadar yararlı olduğu, eğitime ve göreve bağlıdır.

Kosinüs benzerliği, gösterilen dört boyutlu vektörlerden gerçekten hesaplanır. Vektörler ve 2B konumlar elle seçilmiştir; çizim bu vektörlerin projeksiyonu veya eğitilmiş model çıktısı değildir.

Bir başlangıç embedding’i, aynı token kimliği için aynı vektördür. Buna karşılık, sonraki katmanlardaki bağlamsal temsil çevredeki tokenlara göre değişir. “Yüz metre” ve “gülen yüz” ifadelerindeki aynı token kimliği, farklı bağlamlarda farklı biçimde işlenebilir.

Sıra da önemlidir. “Kedi köpeği kovaladı” ile “Köpek kediyi kovaladı” aynı parçaları içerir ama aynı şeyi söylemez. Model bu ayrımı yapabilmek için konum bilgisi kullanır. Bu bilgi girişe eklenen konum vektörleriyle veya attention içindeki göreli konum yöntemleriyle taşınabilir. Bizim blok çizimimiz ilk yaklaşımı kullanır. Konum kodlamaları ve RoPE ayrı bir yazıda ele alınıyor. Konum bilgisinin mimarideki yeri ↗

03Attention: hangi bilgi, ne kadar katılsın?#

Her tokenın artık bir vektörü var. Şimdi bu vektörün diğer konumlardan bilgi toplamasını istiyoruz. Attention, her konum için üç farklı doğrusal dönüşüm üretir: query (Q, sorgu), key (K, anahtar) ve value (V, değer).

Sorgu ile anahtarın nokta çarpımı bir uyum skoru verir. Bu skor, anahtar vektörünün boyutunun kareköküne bölünür. Ardından softmax, aynı sorguya ait skorları toplamı 1 olan ağırlıklara çevirir. Sonuç, değer vektörlerinin bu ağırlıklarla toplanmasıdır. “Bilgi toplamak” burada somut bir çarpma ve toplama işlemidir. Attention hesabı ↗

Attention(Q, K, V) = softmax(QKᵀ / √dₖ + M) V

Buradaki M, izin verilen konumlarda 0, engellenen konumlarda −∞ olan maskedir. Bir metni soldan sağa üreten model, eğitimde de gelecekteki doğru cevaba bakmamalıdır. Nedensel maske, her konumun yalnızca kendisine ve önceki konumlara erişmesini sağlar. Aşağıdaki matriste sağ üst üçgenin neden boş kaldığını bu kuralla okuyabilirsin.

03

Kim, kime ne kadar bakıyor?

Hesaplanan · temsili girdiler
Decoder: gelecek kapalı

Satır = sorgu · Sütun = anahtar. Bir hücreye dokun.

Attention ağırlıkları. Satırdaki token sorgu, sütundaki token anahtardır.
Kedikoltuğaatladı.
Kedi
koltuğa
atladı
.
DüşükYüksek
SEÇİLİ BAĞLANTI

. → Kedi

17.3%

Bu satırın çıktısına, seçili sütunun değer vektörü bu ağırlıkla katılır.

skor = 0.495satır toplamı = 1
Seçili satırın çıktısı[0.399, 0.601]
Hesabın içini aç: Q, K ve V

Her satır iki boyutludur; ölçekleme böleni √2. Kaydırıcı Q’yu çarpar. Her satır için softmax uygulanır; çıktı Σ ağırlık × V olarak hesaplanır. Yüzdeler gösterimde yuvarlanır.

TokenQ (başlangıç)KV
Kedi1, 01.1, 0.21, 0
koltuğa0.3, 10.1, 1.20, 1
atladı1.2, 0.40.8, 0.50.8, 0.2
.0.4, 1.30.3, 10.2, 0.8
Q, K ve V vektörleri elle seçilmiştir. Skorlar, maskeli softmax ve ağırlıklı toplam tarayıcıda gerçekten hesaplanır. Eğitilmiş bir modelin dikkat haritası değildir.

Bir hücreye dokun. Sonra maskeyi kapat: daha önce kapalı olan konumlar da bilgi akışına katılır. Satır toplamı yine 1’dir; dolayısıyla bazı eski bağlantıların payı azalır. Q’yu ölçeklediğinde ise yüksek ve düşük skorlar arasındaki farkın dağılımı nasıl değiştirdiğini görebilirsin.

Tek bir attention başı bu işlemi bir kez yapar. Çok başlı attention, farklı öğrenilmiş dönüşümlerle birden fazla bilgi karışımı üretir; bunları birleştirip yeniden dönüştürür. Bir başa “özne bulucu” gibi kesin bir görev atamak zorunda değiliz. Başların hangi örüntülere odaklandığı modele, katmana ve girdiye bağlıdır.

04Bir bloktan derin bir modele#

Attention, Transformer’ın tamamı değildir. Bir blok, bilgi paylaşımını ileri beslemeli ağ, normalizasyon ve artık bağlantılarla birleştirir. İleri beslemeli ağ, her konumdaki temsili ayrı ayrı dönüştürür; attention ise konumlar arasında bilgi taşır.

Artık bağlantı, bir alt katmanın sonucunu o alt katmanın girdisine ekler. Böylece ana temsil korunurken üzerine bir güncelleme yapılır. Normalizasyon da sayısal ölçeği düzenler. Bu işlemlerin sırası mimariler arasında değişebilir; aşağıda normalizasyonun alt katmandan önce geldiği pre-norm düzenini kullanıyoruz. Çalışan blok uygulaması ↗

04

Bir transformer bloğunun içinde

Temsili görselleştirme
N × blokToken + konum vektörleriNorm → Maskeli çok başlı attention+ Artık bağlantıNorm → İleri beslemeli ağ+ Artık bağlantıSon norm → Doğrusal katmanSoftmax → Sonraki token
ADIM 01

Girdi temsili

Token embedding’leri ile konum bilgisi birleşir. Böylece model hangi parçanın nerede olduğunu kullanabilir. Burada öğrenilmiş konum vektörleri eklenen bir decoder şeması seçtik.

1 / 5
Şema, pre-norm kullanan sadeleştirilmiş bir decoder-only modeldir. 2017’deki özgün encoder–decoder mimarisinin birebir çizimi değildir; dropout gibi ayrıntılar gösterilmez.

Bu yapı art arda tekrarlandığında, her katman bir öncekinin temsillerini yeniden işler. Katman sayısı ve vektör boyutu modelin tasarımına bağlıdır. Aynı şemanın tekrarlanması, aynı parametrelerin paylaşılması demek değildir. Son katmandan çıkan bağlamsal vektör, artık tahmin üretmek için kullanılabilir.

05Tek bir cevap değil, bir dağılım#

Modelin çıkış katmanı, sözlükteki her token için logit adı verilen bir skor hesaplar. Softmax, bu skorları olasılıklara dönüştürür. Sonraki token bu dağılımdan seçilir: en yüksek olasılıklı adayı almak bir yöntemdir; olasılıklara göre rastgele örneklemek başka bir yöntemdir. Metin üretme stratejileri ↗

Sıcaklık, örneklemeden önce logitlerin bölündüğü pozitif sayıdır. Düşük sıcaklık dağılımı daha keskin, yüksek sıcaklık daha düz yapar. Bu bir doğruluk düğmesi değildir. Yanlış bir bilgi de yüksek olasılıkla gelebilir.

05

Sıradaki token ne olabilir?

Hesaplanan · temsili girdiler
Güneş?
Daha keskin dağılımDaha düz dağılım
parlıyor
55.1%
batıyor
22.4%
doğuyor
15.0%
ısıtıyor
7.5%

Sıcaklık sıralamayı değiştirmez; olasılıkları değiştirir. Örneklemede en olası token her zaman seçilmez.

Logitleri ve formülü gör

pᵢ = exp(zᵢ / T) / Σⱼ exp(zⱼ / T). Başlangıç logitleri: [2.8, 1.9, 1.5, 0.8]. İkinci adım: [2.6, 1.6, 1.1, 0.9]. Sözlüğümüz yalnızca dört adaydan oluşur; gerçek modeller çok daha geniş bir sözlük üzerinde dağılım üretir.

Dört aday ve logitleri elle seçilmiştir. Softmax ile örnekleme gerçektir; dil modeli çalışmaz. İkinci adımın skorları önceki seçime göre yeniden hesaplanmaz, sabit bir öğretim örneğidir.

Seçilen token metne eklenir. Gerçek bir model bir sonraki adımın skorlarını bu genişlemiş bağlamı kullanarak hesaplar. Böylece metin, tek bir büyük karar yerine birbirini izleyen seçimlerle oluşur. Uygulamalar çoğu zaman önceki anahtar ve değerleri yeniden hesaplamamak için bir KV cache kullanır; temel üretim mantığı aynı kalır. Otoregresif üretim ↗

06Peki bütün bunları nasıl öğreniyor?#

Şimdiye kadar eğitim tamamlandıktan sonraki çıkarım yolunu izledik. Eğitim sırasında model, gerçek metindeki bir sonraki tokena daha yüksek olasılık vermeyi öğrenir. Kayıp fonksiyonu, gradyan inişi ve öğrenme oranının küçük bir doğrusal modelde nasıl çalıştığını gördüysen, burada da aynı güncelleme kuralı geçerlidir; yalnızca ölçek ve hedefin biçimi değişir. Kayıp fonksiyonu, tahmin ile hedef arasındaki uyuşmazlığı ölçer. Geriye yayılım ve bir optimizasyon yöntemi, bu kaybı azaltacak parametre güncellemelerini hesaplar.

Nedensel maske sayesinde eğitimde bir dizinin birçok konumundaki tahmin aynı anda hesaplanabilir; her konum yine de geleceğini göremez. Metin üretiminde ise yeni token seçimi, bir önceki seçime bağlı olarak ilerler. Eğitimdeki paralellik ile üretimdeki ardışıklık farklı şeylerdir. Otoregresif dil modeli eğitimi ↗

Bu hedef, dilin ve verideki ilişkilerin kullanışlı temsillerini öğrenmeyi sağlayabilir. Ancak modelin akıcı yazması, dünyayla ilgili her iddiasının doğru olduğu anlamına gelmez. Kaynak kontrolü ve uygun değerlendirme hâlâ gereklidir.

Son dağılımdan tek bir sonraki tokena nasıl karar verildiğini burada greedy ve örnekleme ile kısaca gördün. Bu kararın tüm yollarını — top-k, top-p ve bunların riskleri dahil — Bir dağılımdan kelime seçmenin yolları yazısında derinleştirebilirsin.

↗Biraz daha derine#

Bu yazıdaki çizimler AI Atlas için hazırlanmış öğretim örnekleridir. Hiçbir görsel, belirli bir ticari modelin iç hesaplarını gösterdiğini iddia etmez.

KENDİNİ SINA

Bu yazıyı bitirdiğinde:

  • Bir cümlenin tokenlardan sayısal temsillere giden yolunu anlatabilirsin.
  • Attention’ın “hangi bilgi ne kadar katılsın?” sorusunu nasıl yanıtladığını açıklayabilirsin.
  • Modelin tek bir cevap değil bir olasılık dağılımı ürettiğini ve nasıl öğrendiğini özetleyebilirsin.

Cümlelerden birini kendi sözlerinle anlatamıyorsan, ilgili bölüme dön ve demoyu yeniden dene.

İlerleme yalnızca bu tarayıcıda saklanır.
BAĞLANTILI KAVRAMLAR

Bir fikri diğerine bağla.

Rotanı gör: sıradaki adım ne? Bütün dersler