Bölüm 2 · Öğrenmenin motoru · Ders 7
Aktivasyon fonksiyonları
Toplam, eğri, aktarım: nöronu nöron yapan eğri
Veri. Robotun iki dokunma sensörü var ve "yalnız biri basılıysa dur" kuralını (XOR) öğrenmiş küçük bir ağ kullanıyor: iki gizli nöron, bir cevap nöronu. Sol sensör basılı (1), sağ değil (0). Bu girdinin ağın içinden nasıl geçtiğini sayı sayı izliyoruz: ilk gizli nöronda ağırlıklar −5,6 ve 5,7, sapma 2,9. Sonra aynı soruyu eğri olmadan sorarız: iki katman ne işe yarar?
import numpy as npsig = lambda z: 1 / (1 + np.exp(-z)) # 0 ile 1 arasırelu = lambda z: np.maximum(0, z) # sıfırın altını kesergelu = lambda z: z * sig(1.702 * z) # ReLU'nun yumuşak hâlix = np.array([1.0, 0.0]) # sol sensör 1, sağ 0w, b = np.array([-5.6, 5.7]), 2.9 # XOR ağı, 1. gizli nöronz = x @ w + b # 1) toplama = sig(z) # 2) eğrih2 = sig(x @ [5.7, -5.6] + 2.9) # 2. gizli nörony = sig(-7 * a - 7 * h2 + 10.3) # 3) aktarım: cevap nöronuprint(f"z = {z:.1f} a = {a:.2f} y = {y:.2f}")for f in (sig, np.tanh, relu, gelu): # dört eğriprint(f(np.array([-2.0, 0.0, 2.0])).round(2))W1, b1 = np.array([.8, -1.2, 2.]), np.array([.5, 1., -1.]) # eğrisiz iki katmanW2, b2 = np.array([1.5, 0.7, -1.0]), 0.3X = np.linspace(-3, 3, 7)flat = (np.outer(X, W1) + b1) @ W2 + b2print(W1 @ W2, b1 @ W2 + b2) # bileşik ağırlık ve sapmaprint(np.allclose(flat, X * (W1 @ W2) + b1 @ W2 + b2)) # tek doğru: Truebent = np.tanh(np.outer(X, W1) + b1) @ W2 + b2 # aynı ağ, eğriyleprint(np.diff(flat, 2).round(3), np.diff(bent, 2).round(2)) # bükülme: 0 ve 0 değil
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.
Veri seti
Tüm veri setleri →Bu dersin kodu verisini kendi içinde üretir; indirilecek dosya yok. Kodu yine de aşağıda tarayıcında çalıştırabilirsin.
Kodu tarayıcıda çalıştırPython · NumPy · matplotlib · Pyodide
Python ve NumPy bu sayfada, tarayıcında çalışır (Pyodide). Kodu değiştirip yeniden çalıştırabilirsin; dersin veri setleri çalışma klasöründe hazır. Kod matplotlib kullanırsa grafikler çıktının altında görünür, yazdığı dosyalar (ör. egitim_gecmisi.csv) indirilebilir.
Çıktı
Çıktı burada görünecek.Nasıl çalışır
- Toplam: her girdi kendi ağırlığıyla çarpılır, hepsi toplanır, sapma eklenir. Tek bir sayı çıkar: z = 1·(−5,6) + 0·5,7 + 2,9 = −2,7.
- Eğri: z aktivasyon fonksiyonuna verilir; eğrinin z’deki yüksekliği nöronun çıktısıdır. Sigmoid(−2,7) ≈ 0,06.
- Aktarım: bu çıktı bir sonraki nöronun girdisidir: ağırlıkla çarpılır, sonraki toplama, sonraki eğriye girer. Cevap nöronu 0,95 der: açık bir evet.
- Her eğrinin bir işi var: sigmoid 0–1 arası güven, tanh −1 ile 1 arası, ReLU sıfırın altını keser, GELU onun yumuşak hâli (dil modellerinde), softmax birçok seçenekten birini seçer.
- Şunu dene: girdileri 1 ve 1 yap; z = 3,0 olur, cevap 0,05’e düşer: XOR “hayır” der. Eğrisiz iki katman ise ne yaparsan yap tek bir doğrudur.
Neden önemli
Eğri olmasaydı yüz katmanlı bir ağ bile tek bir doğrusal işleme çökerdi; köşe, kıvrım, "yalnız biri" gibi kuralları öğrenemezdi. Robotikte görüntüden nesne bulan ağlar ReLU, kontrol politikaları çoğunlukla tanh, olasılık veren çıkışlar sigmoid ya da softmax kullanır.
ESOF 323, 11. hafta: robotlarda derin öğrenme →