Konu Başlıkları
Yükleniyor...

Üretken Yapay Zeka Nasıl Çalışır: Tahmin, Vektör, Dikkat

LLM Nasıl Çalışır? Olasılık Tahmini, Word Embedding ve Transformer

Bir modele soru yazdığınızda arka planda olan şey tahminden ibaret: hangi kelimenin ardından hangisinin gelme olasılığı yüksek. Bu kadar sade bir mekanizmanın tutarlı paragraflar üretmesi ilk bakışta tuhaf geliyor. Parçaları saymak zor değil: kelimelerin sayıya çevrilmesi, bir de bu sayıların birbirine bakma biçimi.

Model bir veritabanı değil

"Kar yağarsa yollar ..." cümlesini bir dil modeline verdiğinizde model bunu bir yerden çekip getirmiyor. Devamı için bir olasılık dağılımı hesaplıyor ve o dağılımdan bir kelime seçiyor. "Kapanır" yüksek olasılık taşıyor, "kızarır" taşımıyor; fark, eğitim verisinde bu iki kelimenin bu bağlamda kaç kez göründüğünden geliyor.

Burada sık tekrarlanan bir yanlış var: modelin karmaşık matematik yerine "anlam benzerliklerine" baktığı söylenir. Anlam benzerliği zaten matematiğin kendisi. Milyarlarca parametre, katman katman matris çarpımı demek; benzerlik dediğimiz şey o çarpımların çıktısı. Modeli "anlıyor" diye tarif eden açıklamaları, "olasılık dağılımından örnekliyor" diyenlerden belirgin biçimde daha zayıf buluyorum. İkincisi sadece daha doğru değil, modelin nerede hata yapacağını da önceden söylüyor: dağılımın tepesi yanlış yerdeyse çıktı kendinden emin bir şekilde yanlış olur.

Pratik sonucu şu: aynı soruyu iki kez sorup iki farklı cevap almanız arıza değil, örnekleme. Tekrarlanabilirlik istiyorsanız düğmeyi kısmanız gerekiyor.

Kelimeler sayıya dönüşür

Sinir ağı harflerle çalışmaz. Her kelime çok boyutlu bir uzayda vektöre çevrilir, buna word embedding deniyor. "Göl" ile "deniz" bu uzayda yakın, "göl" ile "fatura" uzak durur. Yakınlık gerçek bir sayı: iki vektör arasındaki kosinüs benzerliği.

Bu, arayüz tarafında doğrudan kullanılabilen bir şey. Arama kutusunda kullanıcı "para geri alma" yazdığında sayfada "iade koşulları" geçiyorsa, kelime eşleşmesi bunu ıskalar, vektör benzerliği yakalar. Embedding tabanlı aramayı bu yüzden tercih ediyorum, ama bedava değil: her doküman için vektör üretip saklamanız, içerik değiştiğinde yeniden üretmeniz gerekiyor.

Dikkat katmanı ne kazandırır, faturası ne

Transformer mimarisinin getirdiği şey, kelimeleri sırayla değil hep birlikte işlemek. Dikkat (self-attention) mekanizması her kelimenin diğer her kelimeye ne kadar bakacağını hesaplıyor. Uzun metinde bağlamın kaybolmamasının sebebi bu.

Fatura da tam buradan çıkıyor. Her kelime her kelimeyle karşılaştırıldığı için dikkat katmanının maliyeti bağlam uzunluğunun karesiyle büyüyor: 1.000 kelimelik girdi yerine 2.000 kelimelik girdi verdiğinizde bu katmanın işi dört katına çıkıyor. Paralel çalışmak gecikmeyi gizler, maliyeti gizlemez. "Modele ne kadar bağlam verirsek o kadar iyi" tavsiyesi bu yüzden bir yere kadar doğru. İlgisiz üç dokümanı prompt'a yapıştırmak, hem hesabı hem de hatayı büyütüyor; ilgili paragrafı seçip vermek daha iyi çalışıyor.

Sıcaklık: rastgeleliğin düğmesi

Model olasılık dağılımını hesapladıktan sonra oradan nasıl seçim yapacağı ayarlanabilir. Sıcaklık (temperature) düşükse hep en olası kelime gelir, çıktı sıkıcı ama kararlı olur. Yükseldikçe düşük olasılıklı kelimeler de şansa girer, metin yaratıcı görünür, uydurma riski artar.

Sınıflandırma, etiketleme, veriden alan çıkarma gibi işlerde sıcaklığı sıfıra yakın tutun. Metin taslağı üretiyorsanız yukarı çekmenin anlamı var. Test ederken de aynı prompt'u sıcaklık sıfırda çalıştırın, yoksa prompt değişikliğinin etkisini rastgeleliğin gürültüsünden ayırmanız mümkün olmaz.

Bunu bilmek pratikte ne değiştirir

Mekanizmayı bilmek modeli daha iyi kullanmanızı sağlamıyor, nerede kullanmayacağınızı gösteriyor. Kesinlik gereken yerde, kaynağı belli bir veriye ihtiyaç duyduğunuz yerde tahmin makinesine güvenmenin karşılığı yok; oraya bir arama katmanı ya da doğrudan veritabanı koyarsınız. Buna karşılık dili dönüştürmek, özetlemek, benzerini bulmak gibi işlerde tahmin tam olarak işe yarayan şey.