ChatGPT Nasıl Öğreniyor? Yapay Zekânın İçini Baştan Sona Anlattım

ChatGPT'ye bir soru soruyorsun, saniyeler içinde anlamlı bir cevap alıyorsun. Peki bu modelin içinde gerçekte ne oluyor? "Öğrenmek" derken tam olarak ne kastediyoruz?
Bu yazıda, Andrej Karpathy'nin 2.5 saatlik "sıfırdan sinir ağı inşa etme" dersini izleyip kendi kodumu yazarak öğrendiğim her şeyi, hiç matematik dili kullanmadan, günlük hayattan analojilerle anlatıyorum. Amaç, konuyu teknik bir arka planı olmayan birinin bile takip edebileceği şekilde basitleştirmek.
Türev Nedir? (Fırın Analojisi)
Her şey bu soruyla başlıyor.
Bir fırında ekmek pişirdiğini düşün. Fırının sıcaklığını 1 derece arttırırsan, ekmek ne kadar daha çabuk pişer?
İşte türev, tam olarak bu sorunun matematiksel karşılığı: "Bunu biraz değiştirirsem, sonuç ne kadar değişir?"
Teknik tanımı bir limit formülüyle yapılır, ama özünde yapılan şey basittir: bir değeri çok küçük bir miktar arttırıp, sonucun ne kadar değiştiğine bakmak, oranı hesaplamak. Bu kavram önemlidir çünkü birazdan göreceğimiz gibi, bir yapay zeka modelini "eğitmek" dediğimiz şey, bu sorunun milyarlarca kez sorulmasından ibarettir.
Hafızalı Sayılar: Value Nesnesi
Sıradan bir sayı, mesela 4, sadece kendisidir geçmişini bilmez, nereden geldiğini hatırlamaz.
Karpathy'nin kullandığı Value nesnesi ise bir hafızalı sayı. Kendi değerini taşımanın yanında üç bilgi daha saklıyor:
- Beni hangi sayılar oluşturdu (ebeveynlerim kim)
- Nasıl oluştum (toplama mı, çarpma mı)
- Sonucu ne kadar etkiledim (bu, bir sonraki bölümün konusu)
Bunu bir dedikodu zincirine benzetebiliriz: zincirdeki her kişi, haberi kimden duyduğunu ve nasıl aktardığını hatırlıyor. Bu sayede, sonuçtan geriye doğru gidip tüm zinciri takip edebiliyoruz.
Zincirleme Etki: Grad ve Chain Rule
Burası konunun en can alıcı noktası.
Bir örnekle başlayalım: Bir insan yürüyor. Bisiklet, insandan 4 kat hızlı. Araba ise bisikletten 2 kat hızlı. Araba, insandan kaç kat hızlı?
Cevap basit: 4 × 2 = 8 kat.
Bu, matematikte chain rule (zincir kuralı) olarak bilinen prensibin ta kendisi ara adımların etkilerini birbirine çarparsın.
Bunu yapay zeka bağlamına taşıyalım: Elimizde bir sonuç var (buna "loss" diyelim). Bu sonucu etkileyen bir ara değer var, o ara değeri etkileyen bir başka değer var. Aralarındaki ilişki doğrudan değil tıpkı insan ile araba arasında bisikletin olması gibi.
Bir değerin nihai sonucu ne kadar etkilediğini bulmak için iki bilgiyi çarparız:
- O değerin, bir sonraki ara değeri ne kadar etkilediği (komşularla ilişki, kolayca hesaplanır)
- O ara değerin, nihai sonucu ne kadar etkilediği (bir önceki adımdan zaten biliniyor)
Bu iki bilgiyi çarpınca, en baştaki değerin nihai sonuç üzerindeki gerçek etkisini buluyoruz.
Özetle: Her değer, sadece kendi komşusuyla olan ilişkisini bilir. Ama bu küçük, yerel bilgileri zincirleme çarparak, en baştaki bir değişkenin en sondaki sonucu nasıl etkilediğini bulabiliriz. Backpropagation, bu zincirleme çarpma işleminin, tüm hesaplama grafiği boyunca otomatik ve sistemli şekilde yapılmasından ibarettir.
Otomatikleştirme: backward() Fonksiyonu
Karpathy'nin dersinde önce bu hesaplamayı elle yaptırıyor her değerin etkisini tek tek, satır satır hesaplamak zorunda kalıyorsun. Bu, oldukça yorucu bir süreç.
Peki neden önce elle yaptırıyor? Çünkü otomatikleştirilmiş bir sistemin değerini, önce onu elle yapmanın ne kadar zahmetli olduğunu yaşamadan takdir edemezsin.
Sonraki adımda, her matematiksel işlemin (toplama, çarpma, vb.) içine küçük bir "geri hesaplama" fonksiyonu gömülüyor. Ve en sonunda tek bir backward() metodu yazılıyor bu metot, tüm hesaplama grafiğini geziyor ve her noktanın kendi geri hesaplamasını otomatik olarak tetikliyor.
Sonuç: onlarca satır elle yazılan hesaplama, tek bir satıra iniyor. Artık bu satır çağrıldığında arka planda ne olduğu gerçekten biliniyor çünkü aynı iş bir kez elle yapılmış oluyor.
Sinir Ağının Yapı Taşları: Neuron, Layer, MLP
Şimdi bu "hafızalı sayı" sistemini kullanarak gerçek bir sinir ağı inşa etme aşamasına geliyoruz.
Bunu bir jüri üyesine benzetebiliriz. Jüri üyesine üç farklı özellik sunuluyor mesela bir yemeğin lezzeti, sunumu, yaratıcılığı. Jüri üyesinin her özelliğe verdiği önem farklı, buna ağırlık deniyor. Jüri üyesi hepsini kendi önem sırasına göre birleştirip bir karara varıyor.
Bu yapı üç kademede yükseliyor:
- Neuron — tek bir karar verici (tek jüri üyesi)
- Layer — bir grup neuron (bir jüri paneli, aynı girdiyi birden fazla üyeye gösteriyorsun)
- MLP (Multi-Layer Perceptron) birden fazla katmanın art arda dizilmesi (birden fazla jüri turu, her tur bir öncekinin kararlarını girdi olarak alıyor)
Karmaşık görünen sinir ağı diyagramları aslında bundan ibaret: küçük karar vericilerin katmanlar halinde art arda dizilmesi.
Öğrenme Süreci: Loss ve Eğitim Döngüsü
Peki bu sistem nasıl "öğreniyor"?
Bir dart oyununu düşün. Attığın her ok, hedeften bir mesafede duruyor. Bu mesafeyi ölçen şeye loss (kayıp/hata) denir. Loss ne kadar büyükse, tahmin o kadar kötü demektir.
Eğitim döngüsü dört basit adımdan oluşuyor:
- Tahmin et — sisteme bir girdi ver, bir çıktı al
- Hatayı ölç — bu çıktı, gerçek cevaptan ne kadar uzak?
- Sorumluları bul — geriye dön, her bileşenin bu hataya ne kadar katkısı olduğunu hesapla (chain rule burada devreye giriyor)
- Düzelt — her bileşeni, hatayı azaltacak yönde ufak bir adım kaydır
Bu döngü binlerce kez tekrarlanıyor. Zaman geçtikçe hata (loss) düşüyor, tahminler gerçek değerlere yaklaşıyor. Bu düşen eğri, bir yapay zeka modelinin gerçekten "öğrendiğinin" somut kanıtı.
Bunu Neden Öğreniyoruz?
Karpathy'nin dersinde inşa edilen bu küçük sistem ("micrograd"), production ortamlarında, yani gerçek şirketlerde doğrudan kullanılmıyor çok yavaş, tek tek sayılarla çalışıyor.
Ama PyTorch, TensorFlow gibi tüm modern yapay zeka kütüphanelerinin kalbinde birebir aynı mantık var. Tek fark, tek tek sayılar yerine devasa sayı dizileri (tensor) kullanılması bu da paralel işlemeyi ve inanılmaz bir hız artışını sağlıyor.
Bu küçük sistemi anlamak, arabanın kaputunu açıp motoru görmek gibi bir şey. Modern kütüphanelerde tek satırlık bir komutla yapılan işlemin arkasında gerçekte ne olduğunu artık biliyorsun.
ChatGPT ile Bağlantısı
Ve şimdi en kritik soruya geliyoruz: bunun ChatGPT ile, büyük dil modelleriyle ne ilgisi var?
Cevap basit ama çarpıcı: Bir büyük dil modeli, aynı mantığın milyarlarca kat büyütülmüş halidir.
ChatGPT gibi modeller tahmini 1 trilyonun üzerinde parametreye (ağırlığa) sahip. Ama temel kurallar aynı aynı ağırlık, aynı geri yayılım (backpropagation), aynı öğrenme döngüsü. Fark sadece ölçekte.
Bir modelin "eğitilmesi", trilyonlarca kelime örneği üzerinden, yukarıda anlatılan dört adımı (tahmin et, hatayı ölç, geriye yay, düzelt) milyarlarca kez tekrarlamaktan ibaret.
Bu bilgi, özellikle yapay zeka güvenliği (AI Security) alanında çalışmak isteyenler için önemli bir temel oluşturuyor. Bir modele yönelik saldırı tekniklerini (örneğin prompt injection) anlamak, modelin bu ağırlıklarla öğrendiği kalıpları nasıl istismar ettiğini görmekten geçiyor ve bu da modelin temel çalışma mantığını bilmeyi gerektiriyor.
Sonuç
Bir sinir ağı, ilk bakışta göründüğü kadar gizemli bir kara kutu değil. Sekiz basit fikrin üst üste binmesinden oluşuyor:
Türev, bir değişikliğin etkisini ölçer. Hafızalı sayılar, bu değişikliklerin izini tutar. Chain rule, bu izleri zincirleme çarpar. Otomatikleştirme, bu çarpma işini hızlandırır. Neuron'lar katmanlar halinde dizilir. Loss, ne kadar yanıldığımızı ölçer. Ve tüm bunlar, ölçek büyüdüğünde, günlük hayatta konuştuğumuz o yapay zeka asistanlarına dönüşür.
Karmaşık görünen teknik konuların çoğu, aslında en basit haline indirgendiğinde sandığımızdan çok daha anlaşılır hale geliyor. Önemli olan, doğru analojiyi bulup adım adım ilerlemek.


