Macademia'nın robotik ve mühendislik programı · ücretsiz seviye tespiti ve kişisel öğrenme yolu

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?

sigmoid: her şeyi 0 ile 1 arasına sıkıştırırsigmoid · tanh · ReLU · GELU
1 / 98
aktivasyon.pypython
  1. import numpy as np
  2. sig = lambda z: 1 / (1 + np.exp(-z)) # 0 ile 1 arası
  3. relu = lambda z: np.maximum(0, z) # sıfırın altını keser
  4. gelu = lambda z: z * sig(1.702 * z) # ReLU'nun yumuşak hâli
  5. x = np.array([1.0, 0.0]) # sol sensör 1, sağ 0
  6. w, b = np.array([-5.6, 5.7]), 2.9 # XOR ağı, 1. gizli nöron
  7. z = x @ w + b # 1) toplam
  8. a = sig(z) # 2) eğri
  9. h2 = sig(x @ [5.7, -5.6] + 2.9) # 2. gizli nöron
  10. y = sig(-7 * a - 7 * h2 + 10.3) # 3) aktarım: cevap nöronu
  11. print(f"z = {z:.1f} a = {a:.2f} y = {y:.2f}")
  12. for f in (sig, np.tanh, relu, gelu): # dört eğri
  13. print(f(np.array([-2.0, 0.0, 2.0])).round(2))
  14. W1, b1 = np.array([.8, -1.2, 2.]), np.array([.5, 1., -1.]) # eğrisiz iki katman
  15. W2, b2 = np.array([1.5, 0.7, -1.0]), 0.3
  16. X = np.linspace(-3, 3, 7)
  17. flat = (np.outer(X, W1) + b1) @ W2 + b2
  18. print(W1 @ W2, b1 @ W2 + b2) # bileşik ağırlık ve sapma
  19. print(np.allclose(flat, X * (W1 @ W2) + b1 @ W2 + b2)) # tek doğru: True
  20. bent = np.tanh(np.outer(X, W1) + b1) @ W2 + b2 # aynı ağ, eğriyle
  21. print(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.

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.

aktivasyon.pypython

Çıktı

Çıktı burada görünecek.

Nasıl çalışır

  1. 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.
  2. Eğri: z aktivasyon fonksiyonuna verilir; eğrinin z’deki yüksekliği nöronun çıktısıdır. Sigmoid(−2,7) ≈ 0,06.
  3. 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.
  4. 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.
  5. Ş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 →
Esc
  • PanelAna sayfaSayfa
  • ModüllerTüm modüllerSayfa
  • ParçalarParça ansiklopedisiSayfa
  • Mühendislik yoluBüyükler için robotik: 128 parça, 7 seviyeSayfa
  • Robotik dersi (ESOF 323)Üniversite robotik dersi, 14 haftaSayfa
  • Drone dersiBüyükler için: parça, simülasyon, yazılım; 10 üniteSayfa
  • Blok atölyesiSerbest blok programlamaAraç
  • Devre laboratuvarıSanal Arduino ve devreAraç
  • Robot arenasıSanal robot sürüşüAraç
  • OyunlarBloklarla 8 öğretici oyunAraç
  • Mikro Kart atölyesiSanal LED kartı bloklarla programlaAraç
  • Robot atölyesiMikro Kart'ı robota tak, bloklarla görev yapAraç