Nörondan
dil modeline

Bir beyin hücresinin mikroskop altındaki ilk çiziminden, sizinle sohbet eden milyarlarca parametreli modellere uzanan bir yolculuk. Her adımda oynayabileceğiniz bir deney var.

Anlatımlı tur yaklaşık 16 dakika sürer ve slaytlar kendiliğinden ilerler; istediğiniz an durup deneylerle oynayabilirsiniz. Kendi hızınızda gezerken → ile ilerleyin.

Yapay zekâ tek bir şey değil

"Yapay zekâ" bir teknoloji değil, bir hedefin adı: normalde insan zekâsı gerektiren işleri makinelere yaptırmak.

Bu hedefe giden iki büyük yol var. Sembolik yaklaşım bilgiyi insanların yazdığı kurallar ve mantıkla temsil eder. Öğrenen yaklaşım ise kuralları örneklerden kendisi çıkarır.

Bugün konuştuğumuz büyük dil modelleri (LLM) iç içe halkaların en içindedir: yapay zekâ ⊃ makine öğrenmesi ⊃ derin öğrenme ⊃ üretken modeller.

Halkalara ya da alttaki etiketlere tıklayın, her birinin ne olduğunu ve bir örneğini görün.

Uzman sistemler

Bir uzmanın bilgisini "EĞER … İSE …" kurallarına dökersek, bilgisayar da o uzman gibi akıl yürütebilir mi?

1970'lerin ve 80'lerin yıldızı buydu. Bir bilgi mühendisi doktorlarla, tamircilerle, jeologlarla saatlerce konuşup bilgilerini kurallara çevirirdi. Bir çıkarım motoru da bu kuralları sırayla tetikleyerek sonuca ulaşırdı.

  • MYCIN (Stanford, 1970'ler): ~600 kuralla kan enfeksiyonlarına antibiyotik önerdi, bazı testlerde uzman hekimler kadar iyiydi.
  • XCON (DEC, 1980): bilgisayar siparişlerini yapılandırdı, şirkete yılda milyonlarca dolar kazandırdı.

Sorun: dünya kurallara sığmıyor. Her istisna yeni bir kural ister, kurallar birbirleriyle çelişir, sistem hiç görmediği durumda çaresiz kalır. Buna bilgi edinme darboğazı denir.

Arabanızın belirtilerini işaretleyin; hangi kuralların sırayla tetiklendiğini izleyin.

Bulanık mantık

20 °C sıcak mı? Klasik mantıkta cevap ya evet ya hayır. İnsanlar ise "biraz sıcak" der.

Lotfi Zadeh 1965'te bulanık kümeler fikrini ortaya attı. Bir şey bir kümeye 0 ile 1 arasında bir üyelik derecesiyle ait olabilir: 20 °C, aynı anda %33 "soğuk" ve %67 "ılık" olabilir.

Kurallar yine insan dilinde yazılır ("EĞER sıcaksa fanı hızlı çalıştır"), ama aynı anda birden fazla kural kısmen devreye girer. Sonuçlar harmanlanınca keskin sıçramalar yerine yumuşak bir kontrol çıkar.

Japonya 1980'lerde bunu her yere koydu: Sendai metrosu (1987), çamaşır makineleri, pirinç pişiriciler, kamera odaklama sistemleri.

Sıcaklığı kaydırın. Keskin mantıkta fan 24,9 → 25,0 °C'de birden fırlar; bulanık mantıkta hızı yavaşça artar.

Kural yazmak yerine örnek göstermek

Bir kediyi tarif eden kuralları yazmayı deneyin: "dört bacak, kulaklar sivri, bıyıklı…" Peki ya köşeden yarısı görünen, uyuyan, tüysüz bir kedi?

Klasik programlamada kuralları biz yazarız, bilgisayar veriye uygular ve cevap üretir.

Makine öğrenmesinde bu tersine döner: bilgisayara veriyi ve doğru cevapları veririz, kuralları o bulur. "Kural" artık okunabilir cümleler değil, binlerce, hatta milyarlarca sayıdan oluşan bir ağırlık tablosudur.

Bu fikrin en başarılı biçimi, beyinden esinlenen yapay sinir ağları oldu. Onları anlamak için önce gerçek beyni nasıl keşfettiğimize bakalım.

Görünmeyeni görmek

Hikâye bir mercekle başlıyor.

Robert Hooke 1665'te Micrographia adlı kitabında bir mantar dilimini mikroskopla inceledi. Gördüğü küçük odacıklara manastır odalarına benzettiği için cell, yani hücre adını verdi.

Birkaç yıl sonra Hollandalı kumaş tüccarı Antonie van Leeuwenhoek, kendi yaptığı tek mercekli mikroskoplarla 200 katın üzerinde büyütmeye ulaştı. Bir damla suda bakterileri ve kıpır kıpır "hayvancıkları" gören ilk insan oldu.

Ama beyin dokusu inatçıydı: mikroskop altında yalnızca gri, iç içe geçmiş bir yumak görünüyordu. Hücrelerin tek tek seçilebilmesi için iki yüz yıl daha beklemek gerekecekti.

Merceği numunenin üzerinde sürükleyin. Numuneyi değiştirip Hooke'un mantarını ve sinir dokusunu karşılaştırın.

Golgi'nin boyası, Cajal'ın gözü

1873'te İtalyan hekim Camillo Golgi, gümüş kromat ile "kara reaksiyon" denen bir boyama yöntemi buldu.

Bu yöntemin sihri, rastgele seçilen birkaç hücreyi bütün dallarıyla simsiyah boyaması, geri kalanını şeffaf bırakmasıydı. İlk kez tek bir sinir hücresi baştan sona görülebiliyordu.

Golgi, sinir sisteminin kesintisiz tek bir ağ olduğuna inanıyordu (retiküler teori). İspanyol Santiago Ramón y Cajal aynı boyayla binlerce kesiti inceledi, olağanüstü çizimler yaptı ve tersini savundu. Ona göre beyin, birbirine dokunan ama kaynaşmayan ayrı hücrelerden, yani nöronlardan oluşuyordu. Sinyal de tek yönde akıyordu.

İkisi 1906 Nobel Ödülü'nü paylaştı ve törende bile tartıştılar. Cajal'ın haklı olduğu, ancak 1950'lerde elektron mikroskobu sinapstaki boşluğu gösterince kesinleşti.

İki görüş arasında geçiş yapın, sinyalin nasıl aktığını izleyin.

Beyinden makineye: kısa bir tarih

Yapay sinir ağları üç kez gözden düştü, üç kez geri döndü. Bir olaya tıklayıp ayrıntısını okuyun; mavi bantlar "yapay zekâ kışları"dır.

Bir nöron nasıl çalışır?

Beyninizde yaklaşık 86 milyar nöron var ve her biri binlerce başka nöronla bağlantılı.

  • Dendritler, diğer nöronlardan gelen sinyalleri toplayan dallardır.
  • Hücre gövdesi gelen sinyalleri biriktirir. Hücre zarının gerilimi yükselir.
  • Gerilim bir eşiği (~−55 mV) aşarsa nöron "ateşlenir". Bir aksiyon potansiyeli akson boyunca ilerler. Bu ya hep ya hiç türünden bir olaydır: yarım ateşleme yoktur.
  • Aksonun ucundaki sinapslar sinyali bir sonraki nörona aktarır. Bazı sinapslar güçlüdür, bazıları zayıf; bazıları karşı tarafı uyarır, bazıları bastırır.

Öğrenme büyük ölçüde bu sinapsların güçlenip zayıflamasıdır. Donald Hebb'in 1949'daki fikrinin özeti: birlikte ateşlenen nöronlar birbirine bağlanır.

Dendritlere tıklayarak sinyal gönderin. Pembe sinapslar engelleyicidir. Eşiği aşınca ne olduğunu izleyin.

Yapay nöron: bir toplama ve bir karar

1943'te Warren McCulloch ve Walter Pitts, nöronu tek bir formüle indirdiler.

  • Girişler (x) dendritlere gelen sinyallerdir.
  • Ağırlıklar (w) sinapsların gücüdür. Pozitif ağırlık uyarır, negatif ağırlık bastırır.
  • Toplam: her girişi kendi ağırlığıyla çarpıp toplarız. Buna bir sapma (bias, b) ekleriz: nöronun ne kadar "hevesli" olduğu.
  • Aktivasyon fonksiyonu: toplam eşiği aşıyor mu? Çıkışa karar verir.

z = w₁·x₁ + w₂·x₂ + w₃·x₃ + b    y = f(z)

Bu nöron, pikniğe gidip gitmemeye karar veriyor. Hava güzelse ve arkadaşlar geliyorsa istekli, ertesi gün sınav varsa isteksiz.

Girişleri ve ağırlıkları değiştirin. "Biyolojik karşılık" düğmesiyle her parçanın beyindeki eşini görün.

Aktivasyon fonksiyonları

Nöronun toplamı (z) çıkışa nasıl dönüşecek? Bu kararı aktivasyon fonksiyonu verir.

  • Eşik (basamak): z ≥ 0 ise 1, değilse 0. Biyolojik "ya hep ya hiç" ateşlemeye en yakın olanı budur. İlk perceptron bunu kullanıyordu.
  • Sigmoid: eşiğin yumuşatılmış hâli, 0 ile 1 arasında akar. Çıkışı bir olasılık gibi okunabilir.
  • tanh: sigmoid gibidir ama −1 ile 1 arasında.
  • ReLU: negatifse 0, pozitifse olduğu gibi. Basit ve hızlıdır; bugünkü derin ağların çoğu bunun türevlerini kullanır.

Neden yumuşak fonksiyonlar? Öğrenmek için "z'yi biraz değiştirirsem çıkış ne kadar değişir?" sorusunu sormamız gerekir; buna eğim (türev) denir. Basamak fonksiyonunun eğimi neredeyse her yerde sıfırdır, ağ ondan hiçbir şey öğrenemez.

z'yi kaydırın ve "Eğimi göster" düğmesine basın. Basamakta eğimin nerede kaybolduğuna bakın.

Nöronlardan ağa: katmanlar

Tek bir nöron basit kararlar verir. Onları katman katman dizince güçleniyorlar.

  • Giriş katmanı hesap yapmaz, sadece veriyi ağa sunar: bir pikselin parlaklığı, bir sensör değeri gibi.
  • Ara (gizli) katmanlar veriden kendi özelliklerini çıkarır: kenarlar, kıvrımlar, desenler. "Gizli" denmesinin sebebi, ne öğreneceklerini bizim söylememizdir.
  • Çıkış katmanı son kararı verir: "bu bir 7" ya da "cevap 1".

Her bağlantı bir ağırlıktır, her nöronun bir de sapması vardır. Bunların toplamına ağın parametre sayısı denir. Bu sayıyı aklınızda tutun; LLM'lere geldiğimizde milyarlarla konuşacağız.

Katmanlara nöron ekleyip çıkarın ve parametre sayısının nasıl büyüdüğünü izleyin. "Sinyal gönder" ile ileri yayılımı görün.

AND kapısını elle kurmak

Mantıksal AND iki girişi alır ve yalnızca ikisi de 1 ise 1 verir. Bunu tek bir nöronla yapabilir miyiz?

Nöronun iki ağırlığı ve bir sapması var. Sağdaki karede dört olası girişi görüyorsunuz: yeşil noktalar 1, pembe noktalar 0 cevabını bekliyor.

Nöron kareyi bir doğruyla ikiye bölüyor: w₁·x₁ + w₂·x₂ + b = 0. Doğrunun bir tarafı "1", diğer tarafı "0".

Ağırlıkları elle ayarlamak bu kadar küçük bir problemde kolay. Ama milyonlarca ağırlık olunca bunu makinenin kendisi yapmalı. Rosenblatt'ın 1958'deki perceptron öğrenme kuralı tam olarak buydu: yanlış cevap verdikçe ağırlıkları doğru yöne biraz it.

Önce kaydırıcılarla AND'i siz çözün. Sonra "Kendi öğrensin" ile perceptron kuralını izleyin. OR'u da deneyin.

Hata, kayıp ve dağdan inmek

Öğrenmenin ilk adımı ne kadar yanıldığımızı tek bir sayıyla ölçmektir. Bu sayıya kayıp (loss) denir.

Basit bir ölçü: çıkış ile doğru cevap arasındaki farkın karesi. Bütün örnekler için ortalaması alınır. Kayıp ne kadar düşükse ağ o kadar iyidir.

Kayıp, ağırlıkların bir fonksiyonudur. İki ağırlığımız olsaydı bunu bir arazi gibi çizebilirdik: her nokta bir ağırlık seçimi, yükseklik de o seçimin kaybı. Öğrenmek, bu arazinin en alçak noktasını bulmaktır.

Gözümüz bağlıyken dağdan nasıl ineriz? Ayağımızla eğimi yoklar ve en dik iniş yönüne küçük bir adım atarız. Buna gradyan inişi denir. Adımın büyüklüğü öğrenme hızıdır: çok küçükse yıllar sürer, çok büyükse vadinin üzerinden atlarız.

Arazide bir yere tıklayıp topu bırakın. Öğrenme hızını çok büyütüp ne olduğuna bakın. Sağ alttaki küçük çukura takılan bir başlangıç noktası bulabilir misiniz?

Backpropagation: hatayı geriye dağıtmak

Ağ yanlış cevap verdi. Peki suç hangi ağırlıkta?

Geri yayılım (backpropagation) bu soruyu tek bir geri geçişte, bütün ağırlıklar için birden cevaplar:

  • İleri: girişler katman katman ilerler, çıkış hesaplanır.
  • Hata: çıkış, beklenen cevapla karşılaştırılır.
  • Geri: hata çıkıştan girişe doğru geri akar. Her nöron sorumluluk payını alır; payı, sonraki nörona bağlandığı ağırlık kadardır. Bu, türevdeki zincir kuralıdır.
  • Güncelle: her ağırlık, kendi payının ters yönünde biraz değiştirilir.

Fikir 1970'lerde ortaya çıktı (Linnainmaa, Werbos). 1986'da Rumelhart, Hinton ve Williams'ın makalesiyle yaygınlaştı ve çok katmanlı ağları eğitilebilir hâle getirdi.

"Sonraki adım" ile dört aşamayı tek tek izleyin. Sağ panel her aşamadaki gerçek sayıları gösteriyor.

Eğitilmemiş ağdan eğitilmiş ağa

İki giriş, iki gizli nöron, bir çıkış. Ağırlıklar rastgele, yani ağ şu anda hiçbir şey bilmiyor.

Doğruluk tablosuna bakın: ağ her girişe 0,5 civarında, anlamsız cevaplar veriyor. Sağdaki renkli harita, ağın bütün giriş uzayındaki cevabını gösteriyor: sarı "1", pembe "0", koyu lacivert "kararsızım" demek.

Eğit düğmesine basınca ağ dört örneği tekrar tekrar görecek ve her seferinde backpropagation ile ağırlıklarını düzeltecek. Bir turun adı epochtur.

Kayıp eğrisinin düşüşünü, bağlantıların renk ve kalınlık değiştirmesini ve haritanın yavaş yavaş AND'in şeklini almasını izleyin.

Ağ dört örneğin hepsini ilk kez doğru bildiğinde eğitim kendiliğinden durur ve bunun kaçıncı epoch'ta olduğunu yazar. "Devam et" ile eğitmeyi sürdürürseniz cevaplar hedeflere daha da yaklaşır.

Eğitin, sonra "Sıfırla" ile yeni rastgele ağırlıklardan tekrar başlayın. Her seferinde farklı ağırlıklarla aynı sonuca ulaşıyor.

XOR: tek nöronun duvarı

XOR (özel veya) girişlerden yalnızca biri 1 ise 1 verir: 0 ⊕ 0 = 0, 0 ⊕ 1 = 1, 1 ⊕ 0 = 1, 1 ⊕ 1 = 0.

Karede bakın: yeşiller bir köşegende, pembeler diğerinde. Bunları tek bir düz çizgiyle ayırmak mümkün değil. Tek nöron yalnızca düz çizgi çizebildiğine göre, ne kadar uğraşsa da XOR'u öğrenemez.

Marvin Minsky ve Seymour Papert 1969'daki Perceptrons kitabında bunu ve benzeri sınırları matematiksel olarak gösterdi. Etkisi büyük oldu: sinir ağı araştırmalarına verilen destek kesildi, alan on yıldan uzun bir kışa girdi.

İronik olan şu: çözüm biliniyordu. Birden fazla katman. Ama o katmanları eğitmenin yolu henüz yoktu.

"Kendi öğrensin" deyin ve perceptron'un sonsuza kadar dönüp durmasını izleyin. Elle de deneyin: dört noktanın hepsini doğru tarafa alamazsınız.

Gizli katman XOR'u çözer

Aynı küçük ağ: iki giriş, iki gizli nöron, bir çıkış. Bu sefer görev XOR.

Sihir gizli katmanda. Gizli nöronların her biri kendi doğrusunu çiziyor: biri "en az biri 1 mi?" (OR) sınırını, diğeri "ikisi birden 1 mi?" (AND) sınırını buluyor; bazen ters işaretle. Çıkış nöronu ikisini birleştiriyor: OR ama AND değil, yani XOR.

Yani gizli katman problemi, çıkışın çözebileceği yeni bir temsile dönüştürdü. Derin öğrenmenin bütün gücü bu fikrin katman katman tekrarlanmasından gelir.

Bazen ağ takılır: kayıp düşmez, harita bulanık kalır. Bu, dağdan inerken yanlış çukura düşmektir. "Sıfırla" ile yeni bir başlangıç noktası seçin.

Eğitin ve "Gizli nöron çizgileri"ni açın. İki doğrunun kareyi nasıl üçe böldüğünü görün.

Bir ağ resmi nasıl görür?

Ağ için resim diye bir şey yoktur, yalnızca sayılar vardır.

Elle yazılmış rakamları tanıyan ağımız 28 × 28 piksellik gri görüntüler alıyor. Her piksel 0 (siyah) ile 1 (beyaz) arasında bir sayı. Satırları uç uca ekleyince 28 × 28 = 784 sayılık bir liste çıkıyor: ağın 784 giriş nöronu.

Ağı eğitmek için MNIST veri setini kullandık. 1998'de Yann LeCun ve arkadaşlarının hazırladığı bu set, öğrencilerin ve memurların el yazısıyla yazdığı 70.000 rakamdan oluşur. Yapay zekânın "merhaba dünya"sıdır.

Çiziminiz ağa verilmeden önce MNIST'teki gibi hazırlanıyor: rakam 20 × 20'lik bir kutuya sığdırılıyor ve ağırlık merkezi ortaya gelecek şekilde kaydırılıyor.

Izgaraya bir rakam çizin. Sağda ağın gördüğü 784 sayıyı izleyin; bir hücrenin üzerine gelince değerini görün.

Eğitilmemiş ve eğitilmiş ağ

Aynı mimari, aynı 50.890 parametre. Tek fark ağırlıkların değerleri.

Ağımız 784 giriş, 64 gizli nöron (ReLU) ve 10 çıkıştan oluşuyor; her çıkış bir rakam. Çıkışlar softmax ile olasılığa çevriliyor: on çıkışın toplamı her zaman %100.

  • Eğitilmemiş ağ: ağırlıklar rastgele. Ne çizerseniz çizin olasılıklar dağınık, tahmin rastgele.
  • Eğitilmiş ağ: 60.000 örnekle 18 epoch eğitildi ve hiç görmediği 10.000 test rakamının %98'ini doğru tanıyor.

Ortadaki 8 × 8 ızgara gizli katmandaki 64 nöron. Çiziminiz değiştikçe hangilerinin yandığına bakın. Her rakam kendine özgü bir ateşlenme deseni oluşturuyor.

Bir rakam çizin ya da "Örnek getir" ile test setinden rastgele bir rakam yükleyin. Ağı kandırmaya çalışın: eğik bir 7, kapalı bir 4, ya da bir harf.

Gözünüzün önünde eğitim

Şimdi aynı ağı rastgele ağırlıklardan başlayarak tarayıcınızda, şu anda eğitiyoruz.

Elimizde MNIST'ten 5.000 eğitim örneği var. Ağ her örnek için ileri geçiş yapıyor, hatasını hesaplıyor ve backpropagation ile 50.890 ağırlığın hepsini birden biraz düzeltiyor. AND ağındakiyle tamamen aynı algoritma, sadece daha büyük.

Sağdaki 64 kare, gizli nöronların her birinin 784 giriş ağırlığı, yeniden 28 × 28 resim olarak dizilmiş hâli. Yeşil pikseller nöronu uyarıyor, pembe pikseller bastırıyor.

Başta hepsi karıncalı bir parazit. Eğitim ilerledikçe kenarlar, kıvrımlar ve rakam parçaları belirmeye başlıyor. Kimse ağa "kenar ara" demedi; bunu kendi buldu.

Epoch ve öğrenme hızı

Epoch, 5.000 örneğin tamamının bir kez görülmesidir. "3. · %10", ağın veri setini iki kez bitirdiğini ve üçüncü turun %10'unda olduğunu gösterir. Ağırlıklar 16 örnekte bir güncellenir, yani bir epoch yaklaşık 312 güncellemedir.

Öğrenme hızı, her güncellemede atılan adımın büyüklüğüdür. Momentum yüzünden gerçek adım bunun yaklaşık 10 katıdır. Hız çok büyürse ağırlıklar vadinin üzerinden atlar; ReLU nöronlarının bir kısmı hiçbir girişte ateşlenmeyecek bir yere itilip "ölür" ve bir daha öğrenemez. Ölçümlerimizde 0,05'te %95'e yakın doğruluk, 0,15'te yarıya düşüş, 0,3'te rastgele tahmin düzeyi (%10) çıktı.

"Eğitimi başlat"a basın. İlk birkaç saniyede test doğruluğunun %10'dan nasıl fırladığını izleyin. Sonra "Sıfırla" deyip öğrenme hızını pembe bölgeye çekin.

Rakamdan kelimeye

Rakam ağımız şu soruyu cevaplıyordu: "Bu 784 sayı, 10 rakamdan hangisi?"

Büyük dil modelleri de aslında bir sınıflandırıcıdır. Sorduğu soru şudur: "Şu ana kadarki metne göre, sözlüğümdeki yaklaşık 100.000 parçadan hangisi sırada gelir?"

Çıkışta yine softmax, yine olasılıklar var. Yalnızca sınıf sayısı 10 değil, on binlerce. Model bir parça seçer, metnin sonuna ekler ve aynı soruyu tekrar sorar. Uzun cevaplar bu döngünün yüzlerce kez dönmesiyle oluşur.

Aradaki farklar ölçekte ve mimaride: girişler piksel değil kelime parçaları, 64 gizli nöron yerine on binlerce boyutlu katmanlar, 50 bin parametre yerine milyarlarca. Sırayla bakalım.

İki ağ arasında geçiş yapın ve hangi parçanın neye karşılık geldiğini karşılaştırın.

Token nedir?

Dil modelleri harf harf ya da kelime kelime okumaz, token denen parçalarla okur.

Harf harf okumak çok uzun diziler demek. Kelime kelime okumak ise sonsuz bir sözlük demek, özellikle Türkçede: "evlerinizden", "gidebileceklermiş"…

Çözüm arada bir yerde: sık geçen harf gruplarını tek parça yapmak. En yaygın yöntem Byte Pair Encoding (BPE). Her harf ayrı bir token olarak başlar, sonra metinde en sık yan yana gelen ikili birleştirilir ve bu işlem tekrar edilir. Sık kelimeler tek token olur, nadir kelimeler parçalara bölünür.

Her tokenin bir numarası (ID) vardır; modelin gördüğü aslında bu numaralardır. Modern modellerin sözlüğünde 50.000 ile 200.000 arası token bulunur.

Birleştirme sayısını artırın: "l + a + r" önce "lar" olur, sonra eklerle kökler ortaya çıkar. Kutuya kendi cümlenizi yazın.

Kelimeler uzayda: embedding

Token numarası (ör. 4821) anlamsız bir etikettir. Model her tokeni önce bir sayı listesine, yani bir vektöre çevirir.

Bu vektörlere embedding denir. Eğitim sırasında öğrenilirler ve benzer anlamlı kelimeler uzayda birbirine yakın düşer. Gerçek modellerde her vektörün binlerce boyutu vardır; burada anlamak için iki boyuta indirdik.

En şaşırtıcı özellik: yönler anlam taşır. "erkek" → "kadın" yönündeki ok, "kral" → "kraliçe" okuna paraleldir. Bu yüzden şu hesap işe yarar:

kral − erkek + kadın ≈ kraliçe

Yani model "cinsiyet", "başkent olmak", "çoğulluk" gibi kavramları, kimse öğretmeden vektör uzayında yönlere dönüştürür.

Bir kelimeye tıklayıp en yakın komşularını görün. Hazır hesaplardan birini seçip vektör aritmetiğini izleyin.

Tensör nedir?

Tensör, çok boyutlu bir sayı dizisidir. Yapay zekâda dolaşan her şey bir tensördür.

  • 0 boyut, skaler: tek bir sayı. Bir pikselin parlaklığı.
  • 1 boyut, vektör: bir sayı listesi. Bir kelimenin embedding'i.
  • 2 boyut, matris: bir sayı tablosu. Gri bir resim ya da iki katman arasındaki ağırlıklar.
  • 3 boyut: tabloların yığını. Renkli bir resim (yükseklik × genişlik × 3 renk) ya da bir cümledeki tüm tokenlerin embedding'leri.
  • 4 boyut ve üzeri: bunların bir grubu (batch). Aynı anda işlenen 32 cümle ya da 64 resim.

Bir tensörün şekli (shape) her boyuttaki uzunluğudur, ör. [32, 512, 4096]. GPU'lar tensörleri çarpmakta çok hızlıdır. Bir sinir ağının hesabının neredeyse tamamı büyük tensör çarpımlarından oluşur.

Boyutlar arasında geçiş yapın; her birinin yapay zekâda nerede karşımıza çıktığına bakın.

Attention: kelimeler birbirine bakıyor

"Hayvan caddeyi geçmedi çünkü o çok yorgundu." Buradaki "o" kim?

Siz hemen "hayvan" dediniz. Ama son kelimeyi "genişti" yapınca "o" caddeye döner. Bir kelimenin anlamı çevresindeki kelimelere bağlıdır.

2017'de Google araştırmacılarının "Attention Is All You Need" makalesiyle gelen Transformer mimarisinin kalbi bu fikir: her token, cümledeki diğer tüm tokenlere bakar ve hangilerinin kendisi için önemli olduğuna karar verir. Sonra onlardan bilgi toplayarak kendi vektörünü günceller.

Bir LLM, bu "dikkat + küçük bir sinir ağı" bloğunu üst üste onlarca kez tekrarlar. Her katmanda vektörler biraz daha bağlamı içerir hâle gelir.

Bir kelimeye tıklayıp nereye "baktığını" görün. Son kelimeyi değiştirince "o"nun dikkati nasıl kayıyor?

Sıradaki token ve sıcaklık

Model her adımda tüm sözlük için bir olasılık dağılımı üretir. Peki hangisini seçecek?

Her seferinde en olası tokeni seçmek güvenlidir ama sıkıcı ve tekrarlayıcı metinler üretir. Bu yüzden genellikle olasılıklara göre zar atılır: olasılığı %40 olan token her on denemenin yaklaşık dördünde seçilir.

Sıcaklık (temperature) bu zarın ne kadar "cesur" olduğunu ayarlar. Düşük sıcaklıkta dağılım sivrileşir ve model en olası seçeneğe yapışır. Yüksek sıcaklıkta dağılım düzleşir ve sürpriz kelimeler ihtimal kazanır; yaratıcılık artar, tutarlılık azalır.

Aynı soruya bir sohbet modelinin her seferinde farklı cevap vermesinin sebebi budur.

Sıcaklığı değiştirip çubukların şeklini izleyin. "Token üret" ile cümleyi adım adım uzatın.

"70 milyar parametre" ne demek?

Parametre, ağdaki her bir ağırlık ve sapma demek. AND ağımızda bağlantıların üzerinde yazan o küçük sayılardan biri.

AND ağımızda 9 parametre vardı. Rakam ağımızda 50.890. Bir LLM'de ise milyarlarca. "8B", "70B" gibi model isimlerindeki B, İngilizce billion, yani milyar demek.

Bu sayılar eğitim sırasında öğrenilen bilginin tamamı. Modelin dilbilgisine, dünyaya dair gerçeklere ve akıl yürütme kalıplarına dair "bildiği" her şey bu ağırlıklara dağılmış durumda. Hiçbiri tek başına bir şey ifade etmiyor.

Ölçeği hissetmek için: her A4 sayfasına 5.000 sayı yazdığımızı ve sayfaları üst üste koyduğumuzu düşünelim.

Bir model seçin, kâğıt yığınının hangi yapıyla yarıştığına ve modelin bellekte ne kadar yer kapladığına bakın.

Kuantizasyon: sayıları sıkıştırmak

Her ağırlığı 32 bitle saklamak zorunda mıyız? Çoğu zaman hayır.

Bir ağırlık normalde 32 bitlik (FP32) ya da 16 bitlik (FP16/BF16) bir ondalık sayıdır. Kuantizasyon, bu sayıları daha az bitle temsil edilebilecek sınırlı sayıda seviyeye yuvarlamaktır. 8 bitte 256 farklı değer, 4 bitte yalnızca 16 farklı değer kalır.

Kazanç büyük: 4 bitle model 32 bite göre 8 kat küçülür ve bellekten daha hızlı okunur. 70 milyarlık bir model 140 GB'tan ~35 GB'a iner; bir dizüstü bilgisayarda çalışabilir hâle gelir.

Bedeli biraz hassasiyet kaybı. Ağlar şaşırtıcı derecede dayanıklıdır, 8 bit neredeyse kayıpsızdır, 4 bit genellikle kabul edilebilir. Fakat bir noktadan sonra kalite çöker.

Bit sayısını azaltın. Rakam ağımızın gerçek ağırlıkları yuvarlanıyor ve 1.000 test rakamındaki doğruluğu canlı ölçülüyor. Nerede çöküyor?

Hepsi bir arada

Bir LLM'e soru sorduğunuzda olan biten, öğrendiğimiz parçaların zinciridir.

  • Metin tokenlere bölünür, her token bir numaraya dönüşür.
  • Her numara bir embedding vektörü olur. Hepsi birlikte bir tensör oluşturur.
  • Tensör, onlarca Transformer bloğundan geçer: attention ile tokenler birbirine bakar, sonra bildiğimiz türden nöron katmanları bilgiyi işler.
  • Son katman, sözlükteki her token için bir puan üretir; softmax bunları olasılığa çevirir.
  • Sıcaklığa göre bir token seçilir, metne eklenir ve döngü baştan başlar.

Bütün bunların içinde, 1943'teki McCulloch–Pitts nöronunun torunları çalışıyor: girişleri ağırlıklarla çarp, topla, bir aktivasyon fonksiyonundan geçir. Yalnızca milyarlarca kez.

"Oynat" ile bir tokenin modelin içindeki yolculuğunu izleyin.

Bir mercekten
bir sohbete

Hooke'un mantar hücreleri, Cajal'ın çizimleri, McCulloch–Pitts'in formülü, XOR'un duvarı, backprop ve milyarlarca ağırlık. Hepsi aynı fikrin büyüyen hâlleri: basit birimler, ayarlanabilir bağlantılar, örneklerden öğrenme.

Sorular? O ile istediğiniz slayta dönebilirsiniz.