Kısım III · Merak · Bölüm 47
Yapay Zekâ Haritası
AI, makine öğrenmesi, sinir ağları (AI, machine learning, neural networks)
Neden burada: Kısım III'ün kat planı burada çizilir. Kısım II boyunca bir program yazmanın, bir bilgisayara kuralları söylemek olduğunu gördün: if, for, fonksiyon, sınıf. Şimdi ters bir soru soruyoruz: kuralı yazamıyorsak ne yapacağız? Bir el yazısı rakamın 3 mü 8 mi olduğunu söyleyen kuralı kimse bilmiyor; ama bir çocuk bunu kolayca yapıyor. Bu bölüm, "kuralı yazmak yerine örnekten çıkarmak" fikrini ve onunla gelen dört sözcüğü (model, parametre, eğitim, çıkarım) tanıtır; sonraki on iki bölümün haritasını verir.
Neye dayanıyor: Bölüm 1 (girdi → işlem → çıktı şeması; burada işlem kutusunun içini kuralla değil örnekle dolduracağız) ve Bölüm 21 (bir programın, bir dilde yazılmış kurallar bütünü olması). Matematik bilgisi gerekmiyor; sonraki bölümde (Bölüm 48) lise düzeyinden sezgiyle başlayacağız.
- Kat 10Bizim uygulamamız — ve yapay zekâ uygulamalarıKısım III'ün konusu olan yapay zekâ, bir uygulama olarak burada, Kat 10'da yaşar: bir sohbet penceresi, bir kodlama agent'ı. Bu bölüm: hangi iş buraya ait?
- Kat 9Web ve tarayıcıYapay zekâ uygulamalarına çoğu zaman bir tarayıcı ya da uygulama arayüzünden erişirsin (Bölüm 20, 23–26).
- Kat 5Diller: PythonKısım III'ün kodları Python'dur; Karpathy'nin motoru yaklaşık yüz satırlık Python. Bölüm 21.
- Kat 3İşlemci ve ekran kartları (GPU)Yapay zekâ modellerini eğitmek ve çalıştırmak çok sayıda basit hesabı aynı anda yapmak demektir; bu iş için özelleşmiş donanım (GPU) kullanılır. Gücünü buradan alır. Bölüm 6, 8.
- Kat 0–2Bit, kapılar, devrelerBütün bu hesaplar sonunda sayılar, yani bitler üzerinde yapılır. Bölüm 2–5.
Kısım III'e hoş geldin
İlk iki kısımda bir bina inşa ettik. Kısım I temeli ve taşıyıcı sistemi, Kısım II inşaatı kurdu. Kısım III bu kitabın merak katı: binanın en üstünde, her gün birlikte çalıştığın yapay zekânın içinde ne olduğunu açan bölüm. Bu kısım uygulamayı yapmak için şart değildir; onu yapmak için zaten agent'ın yeterince güçlü. Ama kitabın baştaki sözünü hatırla: anlamadığın bir şeyin seni sürüklemesini istemiyorsun. Her gün konuştuğun, kod yazdırdığın, öğretmenin olarak kullandığın sistemin ne olduğunu, ne olmadığını ve neden bazen yanıldığını bilmek, onu yönetmek için de gerekli.
Kısım III'ün yöntemi şu: metin okuyarak, küçük kod çalıştırarak, bir sinir ağının nasıl öğrendiğini en küçük parçasından kurmak. Andrej Karpathy'nin micrograd adlı, yaklaşık yüz satırlık bir motoru ve makemore adlı isim üreten dil modeli serisi bu kısmın omurgası olacak; bu anlatımları metne çevirip kendi çalıştırdığımız örneklerle birlikte okuyacağız. Matematik seviyesi: lise. Türevi hatırlamıyorsan sorun değil; Bölüm 48 onu sıfırdan, sezgiyle kuruyor.
Bu bölümde beş şey yapacağız: yapay zekâ, makine öğrenmesi ve derin öğrenme sözcüklerinin birbirine nasıl yerleştiğini görmek (47.1), "kuralı yazmak" ile "örnekten çıkarmak" arasındaki farkı küçük bir program üzerinde çalıştırarak görmek (47.2), model, parametre, eğitim ve çıkarım sözcüklerini oturtmak (47.3), denetimli öğrenmeyi tanımak (47.4) ve Kısım III'ün yol haritasını çıkarmak (47.5).
47.1 Yapay zekâ, makine öğrenmesi, derin öğrenme: iç içe kümeler
Haberlerde bu üç sözcük birbirinin yerine kullanılır, oysa aynı şey değiller; biri ötekinin içindedir. İç içe geçmiş üç kutu gibi düşün:
┌─────────────────────────────────────────────────────────────┐
│ YAPAY ZEKÂ (AI): zekâ gerektiren işleri yapan bilgisayar │
│ programları (çok geniş bir alan) │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ MAKİNE ÖĞRENMESİ (ML): kuralı elle yazmak yerine, │ │
│ │ örneklerden çıkaran programlar │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ DERİN ÖĞRENME (DL): bu işi çok katmanlı │ │ │
│ │ │ sinir ağlarıyla yapanlar │ │ │
│ │ │ (büyük dil modelleri burada) │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
Yapay zekâ (artificial intelligence, AI) en geniş kutudur: bir insanın zekâ ile yapacağı bir işi (satranç oynamak, çeviri yapmak, resim tanımak) yapan her bilgisayar programı bu kutuya girer; programın içinde ne olduğu önemli değildir. Eski satranç programları, uzmanların elle yazdığı yüzlerce kurala dayanıyordu; onlar da yapay zekâ sayılır. Yani kutu, ne yaptığına göre tanımlanır, nasıl yaptığına göre değil.
Makine öğrenmesi (machine learning, ML) ise nasıl yaptığıyla tanımlanan bir alt kümedir: kuralları programcı yazmak yerine, program örneklerden çıkarır. 3Blue1Brown'un yazılı dersinin ifadesiyle, "öğrenme" kısmı programa rakamları nasıl tanıyacağına dair belirli bir talimat vermememizden gelir; bunun yerine ona etiketleriyle birlikte çok sayıda el yazısı rakam örneği gösteririz ve ağı her yeni örneğe göre uyarlamayı bilgisayara bırakırız.1
Derin öğrenme (deep learning, DL) makine öğrenmesinin içinde, bu öğrenmeyi çok katmanlı sinir ağları (neural networks) ile yapan alt kümedir. Sinir ağı, beyinden esinlenmiş bir yazılım yapısıdır: birbirine bağlı küçük birimlerden (nöronlardan) oluşur; ayrıntısı Bölüm 51'de. "Derin" sözcüğü, ağın birden çok katmandan oluşması demektir. 3Blue1Brown, bu yaklaşımın arkasındaki ilk fikri şöyle koyar: beyninin yapısını taklit eden bir program yazabilirsek, aklımızın çok iyi çözdüğü bulanık ve akıl yürütmesi zor işleri de çözebiliriz.1 Bugün konuştuğun büyük dil modelleri bu içteki kutunun bir üyesidir (Bölüm 58).
"AI" sözcüğü gündelik dilde çoğu zaman dar bir anlamda kullanılır: sohbet eden bir yapay zekâ modeli. Bu kitapta üç kutuyu ayrı tutacağız. "Yapay zekâ" dendiğinde geniş kutuyu, "makine öğrenmesi" dendiğinde örnekten öğrenmeyi, "derin öğrenme" ve "sinir ağı" dendiğinde çok katmanlı ağları kastediyoruz. Bir sohbet modeli üç kutunun hepsine aittir; ama her yapay zekâ bir sohbet modeli değildir.
47.2 Kural tabanlı program ile öğrenen program
Şimdi ayrımın kalbine gelelim. İki yaklaşımı yan yana koyalım.
| Kural tabanlı program | Öğrenen program | |
|---|---|---|
| Girdi | Veri | Veri |
| İşlemin içi | Programcının yazdığı kurallar | Örneklerden bulunan sayılar (parametreler) |
| Çıktı | Kuralın sonucu | Sayıların verdiği tahmin |
| Ne zaman iyi? | Kuralı biliyorsan ve yazabiliyorsan | Kuralı bilmiyorsan ama örneğin çoksa |
| Örnek | Vergi hesabı, puan hesabı, seri kuralı | El yazısı rakam tanıma, resim, metin |
Bölüm 1'deki girdi–işlem–çıktı şeması burada da geçerli; tek fark işlem kutusunun nasıl doldurulduğu. Kural tabanlı programda kutuyu sen doldurursun: Bölüm 45'te yazdığımız seri kuralı (bugün aynıysa aynı, dünse +1, eskiyse 1) böyle bir kuraldı. Öğrenen programda kutunun içi başlangıçta boştur (daha doğrusu rastgele sayılarla doludur); kutuyu örnekler doldurur.
Neden kuralı yazamıyoruz?
3Blue1Brown'un örneği el yazısı rakamlardır: 28 × 28 piksellik bir görüntü alıp 0–9 arasında tek bir sayı çıkaran bir program. Bir insan için bu "gülünç derecede kolay"dır; ama aynı programı if, for, sınıf ve fonksiyonlarla yazmak "göz korkutucu derecede zordur", çünkü bu geleneksel yöntemler bu soruna uygun görünmez.1 Neden? Birkaç sayı: görüntü 28 × 28 = 784 pikseldir (Bölüm 2'deki gibi, her piksel bir sayı). Her piksel yalnızca siyah ya da beyaz olsa bile 2⁷⁸⁴ farklı resim olur; bunu Python ile hesapladım: 237 basamaklı bir sayı. Üçlerin hepsi birbirinden farklı çizilmiş, üstelik hepsi "üç". Hiçbir programcı "şu pikseller yanıyorsa üç" diye bir if yığını yazamaz.
Çalışan bir karşılaştırma: Celsius'tan Fahrenheit'a
Aynı farkı küçük bir probleme indirgeyelim. Santigrat sıcaklığı Fahrenheit'a çeviren bir program. Kural tabanlı sürüm herkesin bildiği formüldür:
def kural(c):
return 1.8 * c + 32 # kuralı BİZ yazdık
Şimdi formülü bilmediğimizi varsayalım; elimizde yalnızca altı örnek çift (girdi, doğru cevap) var: (0, 32), (10, 50), (20, 68), (30, 86), (100, 212), (−40, −40). Programa şu şekli veriyoruz: "cevap, girdiyle bir sayının çarpımı artı bir başka sayıdır", yani tahmin = w × c + b; w ve b bilinmiyor. İkisi rastgele başlıyor ve program basit bir strateji izliyor: küçük rastgele bir değişiklik dene; tahminler örneklere daha çok benzedi ise tut, değilse at. Bu stratejiyi Karpathy'nin "Hacker's guide" yazısı da en saf haliyle "rastgele yerel arama" (random local search) diye anar ve sonraki yöntemlerle karşılaştırır.2 Çalıştırdığımda şunları gördüm (hata "kayıp" adıyla, tahmin ile doğru cevap arasındaki farkın karelerinin ortalaması):
başlangıç w=-0.352 b=-0.698 kayıp=13921.46
adım 1000 w= 1.9600 b= 4.1143 kayıp= 654.62
adım 10000 w= 1.8000 b=31.9979 kayıp= 0.00000
adım 199999 w= 1.8000 b=32.0001 kayıp= 0.00000
çıkarım: 37 °C -> 98.6 (formülün cevabı: 98.6)
Program, formülü hiç görmeden w = 1,8 ve b = 32'yi buldu; sonra hiç görmediği 37 °C girdisi için 98,6 dedi. Üstelik bunu yapan kod, sıcaklıkla hiçbir ilgisi olmayan genel bir mekanizmaydı; aynı mekanizma başka bir (girdi, cevap) çift kümesine de uygulanabilirdi. İşte makine öğrenmesinin özü: aynı genel mekanizma, farklı örnekler → farklı sayılar → farklı davranış. (Rastgele deneme yavaş ve verimsiz bir yöntemdir; 199.999 denemeden yalnızca 1.050'si kabul edildi. Bölüm 48–52, aynı işi yönü hesaplayarak çok daha akıllıca yapmayı gösterecek.)
Uygulamamızda şu ayrım var. "Seçilen şık doğru mu?" kuralıdır: soru tablosundaki correct_choice ile karşılaştırırsın; bir öğrenme gerektirmez. "Bu kullanıcı bir sonraki hangi bölümü sevecek / zorlanacak?" ise kuralı yazmanın zor, ama geçmiş cevaplardan örnek bulmanın kolay olduğu bir sorudur; öğrenen bir programın konusudur. Bunun uygulamamızın planında olduğunu söylemiyoruz; yalnızca ayrımı somutlaştırıyoruz. Kural yazabildiğin yerde kural yaz: daha basit, daha öngörülebilir, hatayı bulması kolay ({B(42)}). Öğrenen programı yalnızca kuralı yazamadığın yerde kullan.
47.3 Model, parametre, eğitim, çıkarım
Yukarıdaki küçük program dört kavramı da içeriyordu; şimdi onlara ad verelim. Hepsi Kısım III boyunca sürekli geri dönecek.
Model (model): girdiyi çıktıya çeviren, şekli sabit ama içindeki sayıları ayarlanabilir bir fonksiyon. Yukarıdaki tahmin = w × c + b bir modeldir. Şekil bir kez seçilir (burada "bir çarpım ve bir toplama"); sayılar serbesttir.
Parametre (parameter): modelin ayarlanabilir sayıları: w ve b. Kısım III'te bunlara ağırlık (weight) ve sapma (bias) diyeceğiz (Bölüm 51). Parametreleri bir cihazın düğmeleri gibi düşün: model, düğmelerin ne işe yaradığını belirleyen devre şemasıdır; parametreler o düğmelerin o anki konumudur. 3Blue1Brown'un el yazısı rakam ağında 784 giriş pikseli, iki tane 16 nöronluk ara katman ve 10 çıkış nöronu vardır; bu ağın toplam ağırlık ve sapma sayısı 13.002'dir.3 Bunu kendim de doğruladım: 784 × 16 + 16 (ilk katman: ağırlıklar ve sapmalar) = 12.560; 16 × 16 + 16 = 272; 16 × 10 + 10 = 170; toplam 12.560 + 272 + 170 = 13.002. Küçücük bir ağ için 13 bin düğme: büyük modeller bunun çok katıdır; ama fikir aynı.
Eğitim (training): parametreleri, örneklere daha iyi uyacak şekilde ayarlama süreci. Yukarıdaki rastgele aramayı, w ve b'yi bulmak için yaptık. Gerçek eğitim bunu çok daha akıllıca yapar (Bölüm 52). Eğitim pahalıdır: çok örnek, çok hesap. Bir kez yapılır (ya da ara sıra yenilenir).
Çıkarım (inference): eğitilmiş modeli, parametreler sabit tutularak yeni bir girdiye uygulamak: yukarıda 37 °C için 98,6'yı bulmak. Çıkarım ucuzdur (modelin boyutuna göre, hâlâ çok hesap olabilir, ama eğitime kıyasla çok daha az) ve her kullanıcı isteğinde yapılır. Bir sohbet modeline soru sorduğunda çıkarım yapıyorsun; modelin parametreleri o sırada değişmiyor.
| Aşama | Parametreler | Ne yapılıyor | Ne zaman |
|---|---|---|---|
| Eğitim | Değişiyor | Örneklere bakıp düğmeleri ayarla | Önceden, bir kez (pahalı) |
| Çıkarım | Sabit | Düğmeler sabitken yeni girdiyi işle | Her kullanımda (ucuz) |
Bu ayrım yazılımcı olarak sana tanıdık gelmeli: derleme zamanı ile çalışma zamanı (Bölüm 9) ayrımına benzer. Eğitim, programın yazılması ve derlenmesi; çıkarım, kullanıcının programı çalıştırması. Aralarındaki fark, yazılan şeyin kurallar değil sayılar olması.
47.4 Denetimli öğrenme: girdi–etiket çiftleri
Örneklerden öğrenmenin birkaç türü var; Kısım III'ün büyük bölümü en yaygın türü kullanacak: denetimli öğrenme (supervised learning). Burada her örnek bir çifttir: bir girdi (input) ve onun doğru cevabı, yani etiket (label). "Denetimli" sözcüğü, doğru cevabı birinin (öğretmenin) önceden vermesinden gelir. Celsius–Fahrenheit örneğinde çiftler (0, 32), (10, 50) gibiydi. El yazısı rakamlarda çift: (bir resim, "3"). 3Blue1Brown'un kurduğu düzende program kendisine hiçbir talimat verilmeden, etiketleriyle birlikte pek çok örnek görerek uyarlanır.1
Eğitimin nasıl çalıştığı tek bir soruya dayanır: modelin tahmini, etiketten ne kadar uzak? Bu uzaklığı bir sayıyla ölçeriz (yukarıda "kayıp" demiştik; 3Blue1Brown buna cost der).3 Eğitim, bu sayıyı küçültmektir. Küçültme yönünü bulmak için matematiğe, daha doğrusu "eğim" fikrine ihtiyaç var; Bölüm 48'in konusu bu.
Bu yapıyı şu tabloyla düşün; her satır bir örnek, ilk iki sütun denetimli veri, üçüncüsü modelin henüz eğitilmemiş hâldeki cevabıdır:
| Girdi (°C) | Etiket (°F) | Eğitimsiz modelin tahmini | Hata |
|---|---|---|---|
| 0 | 32 | −0,70 | 32,70 |
| 100 | 212 | −35,9 | 247,9 |
(Tahminler başlangıç parametreleriyle, w = −0,352, b = −0,698 ile hesaplandı: 0 için −0,698; 100 için 100 × (−0,352) − 0,698 = −35,898.) Eğitim, bu hataları sıfıra yaklaştırana kadar w ve b'yi oynatır.
Dil modelleri de, ileride göreceğin gibi (Bölüm 53 ve sonrası), aynı yapıdadır: girdi "şu ana kadarki harfler", etiket "sonraki harf". Kimse etiketi elle yazmaz; metnin kendisi hem girdiyi hem etiketi verir. Ama bu ince bir ayrıntı, sırası gelince.
47.5 Kısım III'ün yol haritası
Kısım III on üç bölümdür (bu dahil) ve her biri bir öncekine yaslanır. Haritayı şimdiden bil, çünkü "daldan dala atlamak" bu kitabın yasağı:
| Bölüm | Ne yapıyoruz | Hangi soruyu cevaplıyor |
|---|---|---|
| 47 (burası) | Yapay zekâ haritası | Öğrenen program ne demek? |
| 48 | Eğim ve türev | Düğmeyi hangi yöne çevirmeliyim? |
| 49 | micrograd 1: Değerler ve hesap grafiği | Bir hesabı nasıl kaydederim? |
| 50 | micrograd 2: Geri yayılım | Sonuçtan geriye, kim ne kadar sorumlu? |
| 51 | Nöron, katman, MLP | Motorla bir beyin taklidi nasıl kurulur? |
| 52 | Eğitim: kayıp ve gradyan inişi | Ağ nasıl öğrenir? |
| 53 | makemore 1: Bigram | Harf sayarak isim üretmek |
| 54 | Olabilirlik ve kayıp | Bir dil modeli ne kadar iyi? |
| 55 | Bigram'ı sinir ağıyla kurmak | Sayma ile öğrenme aynı sonucu verir mi? |
| 56 | MLP dil modeli ve gömme | Daha fazla bağlam nasıl kullanılır? |
| 57 | Dikkat ve Transformer | Bugünkü dil modellerinin mimarisi |
| 58 | Büyük dil modelleri | LLM ne, ne değil? |
| 59 | Kapanış: agent'lar ve harita | Bütün kat planı nasıl bağlanıyor? |
Yolun üç aşaması var. Birinci aşama (48–52): tek bir sinir ağını sıfırdan kurmak ve eğitmek. Burada Karpathy'nin micrograd adlı küçük motorunu metinle izleyeceğiz: README'sine göre, dinamik olarak kurulan bir yönlü çevrimsiz grafik (DAG) üzerinde geri yayılımı (otomatik türev) gerçekleştiren küçük bir motor ve üzerine PyTorch benzeri bir arayüzle küçük bir sinir ağı kütüphanesi; sırasıyla yaklaşık 100 ve 50 satır.4 İkinci aşama (53–56): aynı fikirle harf tahmin eden küçük dil modelleri (makemore). Üçüncü aşama (57–59): bugünkü büyük dil modellerinin mimarisine ve bu kitabın kat planına dönüş.
Bu yolun sonunda şunu söyleyebilmeyi hedefliyoruz: bir sinir ağının nasıl eğitildiğini ve bir dil modelinin sonraki harfi ya da sözcüğü nasıl tahmin ettiğini sezgisel olarak anlatabilirsin. Üretimde sinir ağı yazmayacaksın; ama agent'ın sana "model", "parametre", "kayıp", "gradyan" dediğinde bunların nerede durduğunu bilirsin.
Bölüm 46'da bir agent'ı "araç kullanan bir LLM döngüsü" diye tanımladık ve LLM'in içini Kısım III'e bıraktık. Şimdi o söz tutuluyor: Bölüm 58'e vardığında, agent'ın içindeki LLM'in neyin üzerine kurulu olduğunu (bu bölümdeki model, parametre, eğitim, çıkarım sözcükleriyle) açıkça söyleyebileceksin. Bölüm 46'daki "uydurma" (hallucination) kavramının da kökü orada ortaya çıkacak.
Bu bölümde neler kuruldu
Yapay zekâ ne yaptığıyla tanımlanan geniş kutudur; makine öğrenmesi, kuralı elle yazmak yerine örneklerden çıkaran alt kümesidir; derin öğrenme, bunu çok katmanlı sinir ağlarıyla yapan alt kümedir. Kural tabanlı programda işlemin içini sen yazarsın; öğrenen programda içi parametreler (ayarlanabilir sayılar) doldurur ve örnekler bunları belirler. Santigrat–Fahrenheit örneğinde program, formülü görmeden w = 1,8 ve b = 32'yi buldu. Dört sözcük: model (şekli sabit, sayıları serbest fonksiyon), parametre (ayarlanabilir sayı), eğitim (parametreleri örneklere uyduran, pahalı ve önceden yapılan süreç), çıkarım (parametreler sabitken yeni girdiyi işlemek). Denetimli öğrenmede örnekler (girdi, etiket) çiftleridir ve eğitim, tahminin etiketten uzaklığını küçültmektir. Kısım III, 48–52'de bir sinir ağını sıfırdan kurmaya, 53–56'da harf tahmin eden dil modellerine, 57–59'da büyük dil modellerine gider.
Terimler sözlükte, Bölüm 47 başlığı altında.
3Blue1Brown, But what is a neural network? (yazılı ders sayfası), şu başlıklar: giriş bölümü (el yazısı rakam örneği), The Structure of a Neural Network ve Why Use Layers?. Bu bölümdeki "kuralı yazamıyoruz" fikrinin en açık anlatımı. Derinleşmek istersen: Karpathy, Hacker's guide to Neural Networks, Bölüm 1'in başındaki Random Local Search kısmı, bu bölümdeki rastgele aramanın kod hâli; ve 3Blue1Brown, Gradient descent, how neural networks learn, The Cost Function başlığı.
Takıldığın her yeri yapay zekâ öğretmenine sor. Bir öneri: ondan, günlük hayattan üç iş seçmesini iste (ör. spam e-posta ayıklamak, vergi hesaplamak, fotoğrafta kedi bulmak) ve her biri için "kural mı yazılır, örnekten mi öğrenilir, neden?" diye seni yoklasın.
Bölüm sonu soruları
Kitaba bakmadan cevapla. Kâğıt kalem serbest.
Örnek cevabı göster
Aynı rakam binlerce farklı biçimde çizilir ve görüntü yüzlerce pikselden oluşur; "şu pikseller yanıyorsa üç" diye bir kural listesi yazılamaz. Örnekten öğretmede ise her örnek (resim, etiket) çiftidir; model, ayarlanabilir sayılardan (parametreler) oluşur ve eğitim, bu parametreleri tahminler etiketlere yaklaşacak biçimde ayarlar. Böylece kuralı biz değil, örnekler belirler.
Örnek cevabı göster
Eğitim, programı yazıp derlemeye benzer: bir kez, pahalı, ve sonunda sabit bir şey (parametre dosyası) üretir. Çıkarım, kullanıcının derlenmiş programı çalıştırmasına benzer: ucuz, her kullanımda tekrarlanır ve parametreler değişmez. Bir sohbet modeline soru sorduğumda çıkarım yapılır; model o sırada öğrenmez, yalnızca önceden ayarlanmış sayılarla cevap üretir.
Kaynaklar
- 3Blue1Brown, But what is a Neural Network? (yazılı ders sayfası; Grant Sanderson, metin uyarlaması Josh Pullen): el yazısı rakam örneği, 28×28 = 784 piksel, katmanlar, "beyinden esinlenmiş yazılım" fikri, etiketli örneklerle öğrenme. Ayrıca Kaynak: 3Blue1Brown ders içeriği (yazılı sürümden uyarlanmıştır).
- Karpathy, Hacker's guide to Neural Networks, Bölüm 1: "Strategy #1: Random Local Search". Bu bölümdeki Celsius–Fahrenheit rastgele arama programı bu fikre dayanır; kod bu bölüm için yazılıp Python ile çalıştırıldı (tohum=7, 200.000 deneme).
- 3Blue1Brown, Gradient descent, how neural networks learn: maliyet (cost) fonksiyonu, 13.002 ağırlık ve sapma.
- Karpathy, micrograd (README): "A tiny Autograd engine"; yaklaşık 100 ve 50 satırlık iki parça; DAG üzerinde geri yayılım; PyTorch benzeri arayüz.