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

Bölüm 2 · Öğrenmenin motoru · Ders 8

Gradyan inişi: kayıp arazisinde yokuş aşağı

Türev yönü söyler, öğrenme oranı adım boyunu

Veri. Bir robotun IMU'sunu 10 ile 50 °C arasında 20 farklı sıcaklıkta beklettik ve jiroskobun sıfır kaymasını ölçtük (derece/dakika). Kayma sıcaklıkla doğrusal artıyor: kayma ≈ w · (T/10) + b. Robot, sıcaklığı okuyup kaymayı çıkarabilsin diye w ve b'yi arıyoruz.

20 ölçüm: sıcaklık → jiroskop kayması20 ölçüm · öğrenme oranı 0,05
1 / 74
gradyan_inisi.pypython
  1. import numpy as np
  2. rng = np.random.default_rng(6)
  3. T = rng.uniform(10, 50, 20) # 20 sıcaklık (°C)
  4. x = T / 10 # ölçekle: 1..5
  5. y = 1.5 * x + 1 + rng.normal(0, 0.3, 20) # kayma (°/dk)
  6. def loss(w, b):
  7. return np.mean((w * x + b - y) ** 2) # arazinin yüksekliği
  8. hist = {} # her öğrenme oranının geçmişi
  9. for lr in (0.1, 0.05, 0.0002): # üç adım boyu
  10. w, b = -1.0, 6.0 # başlangıç noktası
  11. L0 = loss(w, b)
  12. hist[lr] = h = {'step': [], 'loss': [], 'grad_norm': [], 'w': [], 'b': []}
  13. for step in range(300):
  14. err = w * x + b - y # tahmin − ölçüm
  15. gw = 2 * np.mean(err * x) # w yönündeki eğim
  16. gb = 2 * np.mean(err) # b yönündeki eğim
  17. for k, v in zip(h, (step, loss(w, b), np.hypot(gw, gb), w, b)): h[k].append(float(v)) # adımdan önce kaydet
  18. w, b = w - lr * gw, b - lr * gb # eğime karşı adım
  19. if abs(w) > 1e6: # patladı
  20. break
  21. print(f"lr {lr}: {step + 1} adım,"
  22. f" kayıp {L0:.3g} -> {loss(w, b):.3g}")
  23. h = hist[0.05] # tablo ve CSV: lr = 0.05
  24. for k in ('loss', 'grad_norm', 'w', 'b'):
  25. print(f'{k:<10}{h[k][-1]:>12.5f}')
  26. import csv
  27. with open('egitim_gecmisi.csv', 'w', newline='') as f: # geçmişi CSV'ye yaz
  28. csv.writer(f).writerows([list(h), *zip(*h.values())]) # satır başına bir adım
  29. try:
  30. import matplotlib.pyplot as plt # varsa grafik çiz
  31. for lr, q in hist.items(): plt.plot(q['step'], q['loss'], label=f'lr {lr}')
  32. plt.xlabel('step'); plt.ylabel('MSE'); plt.yscale('log'); plt.legend(); plt.show()
  33. except ImportError:
  34. print('matplotlib yok: grafik atlandı')

Eğitim paneli

Eğitim çalıştırılıyor…

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.

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.

gradyan_inisi.pypython

Çıktı

Çıktı burada görünecek.

Nasıl çalışır

  1. Kayıp: tahmin eksi ölçüm, karesi, ortalaması. Her (w, b) ikilisi tek bir kayıp verir; w ve b zemin, kayıp yükseklik olunca hata bir arazi olur.
  2. Model vadiyi göremez, yalnız ayağının altındaki eğimi hisseder. Türev hangi yönün yokuş yukarı olduğunu söyler; tersine bir adım atılır.
  3. Adım boyu öğrenme oranıdır: yeni ağırlık = ağırlık − öğrenme oranı × eğim. Ölç, eğimi al, in; tekrar tekrar.
  4. Şunu dene: öğrenme oranını 0,1 yap, vadinin üstünden atlar ve patlar; 0,0002 yap, 300 adımda hâlâ yoldadır; 0,05 dibe oturur. Başlangıç noktasını değiştir: hepsi aynı dibe iner.

Neden önemli

ChatGPT'ye kadar duyduğunuz her model bu tek fikirle öğrendi: yokuş aşağı yürümek. Gerçek ağlar aynı şeyi milyonlarca boyutta yapar. Robotikte sensör kalibrasyonu, kontrolcü kazancı ayarı ve öğrenen her politika bu döngüyle eğitilir.

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ç