Derin Öğrenme: NLP & LLM
- 1NLP'ye giriş
Zıt anlamlı iki cümle -- 'çok iyi, hiç kötü değil' ve 'hiç iyi değil, çok kötü' -- bag-of-words'te BİREBİR AYNI sayı dizisine dönüşüyor. Sorun nedir?
- 2Metin ön işleme
'değil'i durak kelime sayıp çıkarınca cümle sadece ['iyi','kötü'] kalıyor -- OLUMSUZLUK kayboluyor. Gövde bulma da 'masa'yı yanlışlıkla 'mas'a kırpıyor.
- 3Tokenization ve BPE
Aynı tokenizer ile İngilizce kelimeler ortalama 1.33 token'a inerken Türkçe kelimeler 6.67 token'a bölünüyor -- 5 kat fark. Neden?
- 4Bag-of-words'ten gömmeye
One-hot'ta 'kral'-'kraliçe' benzerliği 0.00 -- 'kral'-'masa' ile BİREBİR AYNI. TF-IDF bile bu kelime-anlamı sorununu çözmüyor.
- 5Word embedding (Word2Vec, GloVe)
4. derste 'kral-kraliçe' benzerliği 0.00'dı. Embedding'lerde kraliçe kralın en yakın komşusu oluyor -- 'kral-erkek+kadın' aritmetiği de kraliçe'yi buluyor.
- 6RNN
1. derste bag-of-words AYNI vektörü verdi. Eğitilmemiş bir RNN bile bu iki cümleyi FARKLI son gizli durumlara çeviriyor -- sadece SIRAYA duyarlı olduğu için.
- 7LSTM ve GRU
50 adımlık dizide RNN'in gradyanı 4.6e-16'ya çöküyor. LSTM'inki aynı uzunlukta 58.759 kat büyük -- hücre durumu, ResNet'in atlama fikrini zamanda uyguluyor.
- 8Sekans modellerinin sınırı
100 kelimelik bir dizide LSTM'nin gradyanı 5.7e-22'ye çöküyor -- ilk kelime fiilen unutuluyor. Üstelik dizi 16 kat uzayınca işlem süresi de 8 kat artıyor.
- 9Attention fikri
'kral ülkeyi adaletle yönetti'de bir sorgu, kral'a 0.614, ülkeyi'ye 0.337 ağırlık verir -- tek vektör yerine, kelimelerin ağırlıklı karışımı alınır.
- 10Self-attention mekaniği (Q, K, V)
'Kedi masaya çıktı çünkü o yorulmuştu' cümlesinde self-attention, 'o' zamirinin %52 ağırlıkla 'Kedi'ye baktığını hiçbir dilbilgisi kuralı olmadan buluyor.
- 11Attention'ın Python'la adım adım kurulumu
Elle yazılan attention fonksiyonu, PyTorch'un yerleşiğiyle 2.4e-07 farkla eşleşiyor. Nedensel maskeyle bir token, gelecekteki kelimeleri artık hiç göremiyor.
- 12Multi-head attention
Tek başlık 'çıktı'nın nereye baktığını bulamadı (ağırlıklar 0.136-0.204 arası düz). İki başlıkla, biri 'o→Kedi'yi biri 'çıktı→masaya'yı yakalıyor.
- 13Pozisyonel kodlama
Token sırası karıştırılıp geri sıralanınca self-attention çıktısı değişmiyor (fark ~0) -- konum kavramı yok. Sinüzoidal kodlama eklenince fark 1.40'a çıkıyor.
- 14Layer norm ve artık bağlantılar
50 katman üst üste yığılınca, artık bağlantı olmadan gradyan 1.23e-06'ya çöküyor. Artık bağlantıyla 448'de kalıyor -- layer norm da büyüklüğü 4.0'da sabitliyor.
- 15Position-wise feed-forward ağ
0. token'ı değiştirince attention'da diğer token'ların çıktısı değişiyor (fark 3-12); FFN'de fark tam sıfır. FFN, parametrelerin attention'ın 2 katını taşıyor.
- 16Encoder-decoder yapısı
'cat' üretilirken çapraz dikkat, kaynak cümledeki 'Kedi'ye 0.658 ağırlıkla bakıyor. Decoder, encoder çıktısına bu yeni dikkat türüyle bağlanır.
- 17Transformer'ın eğitimi ve çıkarımı
Eğitilen bir decoder, 'ABCABC...' örüntüsünü kayıp 0.0001'e inene kadar öğrendi ve kendi tahminleriyle 20 token doğru üretti. Çıkarım, eğitimin 7.3 katı yavaş.
- 18GPT ile "Attention is All You Need" farkı
GPT çapraz dikkati atıp sadece decoder kullanır (%75 parametre). Post-norm'da 10 katman sonra gradyan sıfıra çöküyor; GPT'nin pre-norm'u 100 katmanda sağlıklı.
- 19Transformer mimarisi: bütün resim
6.179 parametrelik eğitilmiş bir mini-GPT, 'ABCAB'den sonra 'C'yi %99.99 olasılıkla tahmin ediyor -- 9-18. dersin tüm parçaları burada birleşiyor.
- 20Dil modeli nedir, ne yapar
Eğitilmemiş modelin şaşırması (perplexity) 3.94; eğitilmiş modelinki 1.0001'e iniyor. Model, hiç görmediği bağlam uzunluklarında bile doğru tahmin yapıyor.
- 21Ön eğitim, ince ayar, hizalama (RLHF/DPO)
Aynı yönlü yeni görevde ince ayar adım 0'da kayıpsız başlıyor (pozitif transfer). Ters yönlü görevde sıfırdan eğitimden bile yavaş kalıyor (negatif transfer).
- 22Bir sonraki token: örnekleme, temperature, top-k/top-p
Model 'AB'den sonra %61.6 C, %38.4 D öğreniyor. Açgözlü çözme her zaman C üretir; 1000 örneklemede gerçek oran %61.5/%38.5 -- örnekleme belirsizliği korur.