Okullar için Robotik ve Mühendislik · anaokulundan liseye

Bölüm 1 · Temeller · Ders 6

Aynı kod, üç ürün

Tek bir learn() fonksiyonu: sayı tahmini, evet/hayır, bölge çitleme

Veri. Bir depo robotunda üç ayrı soru var. (1) Taşıdığı yük (0–5 kg) motorun kaç amper çekeceğini söyler mi? 24 ölçüm. (2) Kızılötesi yansıma ve sonar yankısı (ikisi de 0–10) birlikte "önde engel var" der mi? 60 an. (3) Arenadaki 160 konumdan hangileri ortadaki güvenli bölgede? Üçünü de aynı learn() fonksiyonu öğreniyor; her işte örneklerin dörtte biri saklanır ve model en sonda bu hiç görmediği örneklerle sınanır.

iş 1 · 24 ölçüm: yük → motor akımı18 eğitim · 6 gizli
1 / 106
ayni_kod.pypython
  1. import numpy as np
  2. rng = np.random.default_rng(7)
  3. def learn(X, y, H=0, lr=1.0, steps=2000): # tek öğrenme fonksiyonu
  4. m, s = X.mean(0), X.std(0); S = (X - m) / s # ölçekle
  5. W1, b1 = rng.normal(size=(len(m), H)), np.zeros(H) # gizli katman (H nöron)
  6. w, b, sig = np.full(H or len(m), .1), 0, y.dtype == bool # cevap evet/hayır mı?
  7. def f(Z):
  8. h = np.tanh(Z @ W1 + b1) if H else Z; o = h @ w + b # ağırlıklı toplam
  9. return h, 1 / (1 + np.exp(-o)) if sig else o # evet/hayır ise sigmoid
  10. for _ in range(steps):
  11. h, p = f(S); g = (p - y) / len(y) # tahmin ve hata
  12. if H: gh = np.outer(g, w) * (1 - h ** 2) # hata geriye akar
  13. w -= lr * h.T @ g; b -= lr * g.sum() # küçük adım
  14. if H: W1 -= lr * S.T @ gh; b1 -= lr * gh.sum(0)
  15. return lambda Z: f((Z - m) / s)[1] # eğitilmiş model
  16. kg = rng.uniform(0, 5, (24, 1)) # 1) yük (kg)
  17. amp = .3 + .42 * kg[:, 0] + rng.normal(0, .05, 24) # motor akımı (A)
  18. ir = rng.uniform(0, 10, (60, 2)) # 2) IR ve sonar
  19. see = ir @ [.6, .4] + rng.normal(0, .5, 60) > 5 # engel var mı
  20. xy = rng.uniform(-2, 2, (160, 2)) # 3) arena konumu (m)
  21. ok = (xy ** 2).sum(1) < 1.2 # ortadaki güvenli bölge
  22. for X, y, H in (kg, amp, 0), (ir, see, 0), (xy, ok, 6): # aynı kod, üç iş
  23. k = len(y) * 3 // 4; p = learn(X[:k], y[:k], H)(X[k:]) # dörtte biri gizli
  24. e = abs(p - y[k:]); print(e.mean(), (e < .5).mean()) # gizli: ort. hata, isabet

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.

ayni_kod.pypython

Çıktı

Çıktı burada görünecek.

Nasıl çalışır

  1. learn() hep aynı döngüdür: örnekleri al, tahmin et, hatayı bul, ağırlıkları hataya karşı küçük bir adım oynat, tekrar et.
  2. Sayı tahmininde çıktı düz toplamdır (doğru). Evet/hayır işinde üstüne sigmoid eğrisi gelir: çıktı 0–1 arası güven olur.
  3. Bölge işinde tek bir doğru yetmez: gizli nöronların her biri bir doğru çizer, hata geriye doğru onlara dağıtılır (geri yayılım) ve birlikte bölgeyi çitlerler.
  4. Her model, canlıya çıkmadan önce hiç görmediği örneklerle notlanır: ezber değil, genelleme ölçülür.
  5. Şunu dene: gizli nöron sayısını 0 yap; üçüncü iş tek nörona kalır ve bölgeyi çitleyemez, doğruluk belirgin düşer.

Neden önemli

Gerçek ürünlerin çoğu bu üç kalıptan birine oturur: bir sayı tahmin et (akım, sıcaklık, varış süresi), evet/hayır de (engel, arıza, spam), bir bölgeyi tanı (güvenli çalışma alanı, beğenilen içerik). Robotikte de aynı öğrenme kodu, yalnız veri değiştirilerek motor modeline, sensör füzyonuna ve güvenli bölge sınırına dönüşü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ç