Makine Öğrenmesi · Bölüm 1
Doğrusal regresyon ve gradyan inişi
Motorun PWM–hız çizgisini adım adım öğrenmek
Veri. Bir robot tekerleğine 40 kez farklı PWM değeri verdik ve tekerleğin hızını ölçtük. Robotun belli bir hızda gitmesi için hangi PWM'i vermesi gerektiğini bilmek istiyoruz: ölçümlerden geçen en iyi doğruyu arıyoruz.
import numpy as npfrom motor import pwm, speed # 40 ölçüm: PWM, cm/sx = (pwm - pwm.mean()) / pwm.std() # ölçeklew, b, lr = 0.0, 0.0, 0.1 # yatay çizgiyle başlafor epoch in range(60):pred = w * x + b # tahminerr = pred - speed # hataloss = (err ** 2).mean() # ortalama kare hataw -= lr * 2 * (err * x).mean() # eğime karşı adımb -= lr * 2 * err.mean()print(w / pwm.std(), b - w * pwm.mean() / pwm.std()) # cm/s başına PWM, kesişim
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
- PWM'i ölçekleriz (ortalaması 0, standart sapması 1): adımlar her yönde aynı büyüklükte olur.
- Çizgi yatay başlar (w = 0, b = 0). Her dönemde tahmin, hata ve ortalama kare hata (kayıp) hesaplanır.
- Kaybın w ve b'ye göre türevi, kaybın hangi yönde arttığını söyler; ters yönde, öğrenme oranı kadar adım atılır.
- Öğrenme oranını 1'e yaklaştır: çizgi salınır. 1'i geçince ıraksar ve kayıp patlar.
Neden önemli
Gradyan inişi, bugünkü bütün sinir ağlarını eğiten yöntemin ta kendisidir: milyarlarca ağırlık için de aynı iki satır çalışır. Robotikte sensör ve motor kalibrasyonu, ileri besleme (feedforward) terimi ve basit tahmin modelleri hep bu doğruyla başlar.
ESOF 323, 11. hafta: robotlarda derin öğrenme →