Makine Öğrenmesi · Bölüm 9
Küçük bir sinir ağı
Gizli katman ve geri yayılım: doğrunun çizemediği sınır
Veri. Robot arenada 200 konumda durdu ve her seferinde pistte mi dışında mı olduğunu kaydetti. Pist kıvrımlı: iki iç içe hilal. Tek bir doğru (perceptron) bunu ayıramaz; gizli bir katman gerekir.
200 konum: pistte / dışında2 → 8 → 1 nöron
1 / 49
sinir_agi.pypython
import numpy as npfrom pist import X, y # 200 konum, y = 1 pistterng, lr, H = np.random.default_rng(0), 0.5, 8 # H gizli nöronW1, b1 = rng.normal(size=(2, H)), np.zeros(H)W2, b2 = rng.normal(size=H), 0.0for step in range(3001):h = np.tanh(X @ W1 + b1) # gizli katmanp = 1 / (1 + np.exp(-(h @ W2 + b2))) # pistte olma olasılığıloss = -(y * np.log(p) + (1 - y) * np.log(1 - p)).mean() # çapraz entropig = (p - y) / len(X) # kaybın çıkışa göre türevigh = np.outer(g, W2) * (1 - h ** 2) # geri yayılım: gizli katmanaW2 -= lr * h.T @ g; b2 -= lr * g.sum()W1 -= lr * X.T @ gh; b1 -= lr * gh.sum(0)
Sahnedeki her sayı, aynı algoritmanın tarayıcında yapılan gerçek çalıştırmasından gelir (sabit tohum, her seferinde aynı sonuç). Python kodunu kendi bilgisayarında çalıştırırsan rastgele başlangıçlar farklı olacağı için sayılar biraz değişebilir.
Nasıl çalışır
- Gizli katmandaki her nöron girdinin bir doğrusal birleşimini tanh ile büker. Çıkış nöronu bu bükülmüş özellikleri birleştirip bir olasılık verir.
- Kayıp (çapraz entropi), yanlış ve emin tahminleri ağır cezalandırır.
- Geri yayılım, kaybın her ağırlığa göre türevini zincir kuralıyla çıkıştan girişe doğru hesaplar. Her ağırlık türevin tersine küçük bir adım atar.
- Sınır her adımda biraz daha kıvrılır. Gizli nöron sayısını 2’ye indir: sınır yeterince bükülemez.
Neden önemli
Bu, derin öğrenmenin en küçük hâlidir. Görüntüden nesne tanıyan ağlar da, robot kolunu yöneten politikalar da, dil modelleri de aynı üç şeyi yapar: ileri hesap, kayıp, geri yayılım. Fark yalnız katman ve ağırlık sayısındadır.
ESOF 323, 11. hafta: robotlarda derin öğrenme →