Bölüm 1 · Temeller · Ders 5
Aşırı öğrenme ve doğrulama
Sensör eğrisine uyan en iyi model, en karmaşık olanı değildir
Veri. Sharp IR mesafe sensörünün çıkış gerilimi uzaklık arttıkça eğri biçiminde düşer. 15 ölçümle bir kalibrasyon eğrisi uyduracağız, sonra eğrinin hiç görmediği 30 ölçümle sınayacağız.
import numpy as npD = np.genfromtxt('sharp-ir.csv', delimiter=',', names=True) # 15 eğitim, 30 doğrulama ölçümüd, v, d_val, v_val = [D[c][D['grup'] == g] for g in (0, 1) for c in ('uzaklik', 'gerilim')] # grup 0 eğitim, 1 doğrulamax, x_val = (d - 45) / 35, (d_val - 45) / 35 # [-1, 1] aralığına ölçeklehistory = {'degree': [], 'train_mse': [], 'val_mse': [], 'gap': []} # derece başına geçmişfor deg in range(1, 13):c = np.polyfit(x, v, deg) # en küçük karelertrain = ((np.polyval(c, x) - v) ** 2).mean() # eğitim hatasıval = ((np.polyval(c, x_val) - v_val) ** 2).mean() # doğrulama hatasıprint(deg, train, val)for k, q in zip(history, (deg, train, val, val - train)): history[k].append(float(q)) # boşluk: aşırı öğrenme göstergesiA, A_val = np.vander(x, 13), np.vander(x_val, 13) # erken durdurma: derece 12, adım adımw, m, s, best = np.zeros(13), np.zeros(13), np.zeros(13), (1e9, 0, None)for t in range(1, 20001):g = 2 * A.T @ (A @ w - v) / len(v) # eğimm = .9 * m + .1 * g; s = .999 * s + .001 * g * g # Adam: eğimin ve büyüklüğünün ortalamasıw -= .02 * (m / (1 - .9 ** t)) / (np.sqrt(s / (1 - .999 ** t)) + 1e-8)val = ((A_val @ w - v_val) ** 2).mean()if val < best[0]: best = (val, t, w.copy()) # en iyi geçişi saklaw = best[2]; print("en iyi geçiş", best[1], best[0]) # erken durdurma: en iyi geçişe dönk = int(np.argmin(history['val_mse'])) # en iyi derecefor name, v in [('best_degree', k + 1), ('best_val_mse', history['val_mse'][k]), ('gap_deg12', history['gap'][-1]), ('early_stop_pass', best[1])]: # son ölçümler tablosuprint(f'{name:<16}{v:>12.6g}')import csvwith open('egitim_gecmisi.csv', 'w', newline='') as f: # geçmişi CSV'ye yazcsv.writer(f).writerows([list(history), *zip(*history.values())]) # satır başına bir derecetry:import matplotlib.pyplot as plt # varsa grafik çizfor c in ('train_mse', 'val_mse'): plt.plot(history['degree'], history[c], 'o-', label=c)plt.xlabel('degree'); plt.ylabel('MSE'); plt.yscale('log'); plt.legend(); plt.show()except ImportError: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.
Veri seti
Tüm veri setleri →- Sharp IR mesafe sensörüVeri setini indir
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
- Her derece için polinom en küçük kareler yöntemiyle eğitim noktalarına uydurulur.
- Eğitim hatası derece arttıkça hep azalır: eğri her noktaya biraz daha yaklaşır.
- Doğrulama hatası önce düşer, sonra yükselir: eğri gürültüyü de ezberlemeye başlar ve noktaların arasında savrulur.
- Seçilen model, doğrulama hatası en küçük olandır; eğitim hatasına bakarak seçmek her zaman en karmaşık modeli verir.
- Aynı şey zamanda da olur. Derece 12’lik eğriyi bu kez gradyan inişiyle (Adam) adım adım eğitiriz: eğitim hatası her geçişte biraz düşer, doğrulama hatası birkaç yüz geçişte dibe vurur ve sonra tırmanır. Dipteki ağırlıkları saklayıp oraya dönmeye erken durdurma denir; büyük sinir ağları da çoğu zaman böyle eğitilir.
- Şunu dene: son kareye kadar oynat ve 20.000 geçişteki savrulan eğriyi, erken durdurmanın döndüğü sakin eğriyle karşılaştır. Sonra son dereceyi 3’e indir: doğrulama hatası daha 3. derecede dipteyken bile eğitim hatası düşmeye devam eder.
Neden önemli
Her makine öğrenmesi modeli bu dengeyle yaşar: az karmaşık olan eksik öğrenir, çok karmaşık olan ezberler. Eğitim ve doğrulama verisini ayırmak, çapraz doğrulama ve erken durdurma bu yüzden vardır. Robotta ezberlenmiş bir kalibrasyon, laboratuvarda mükemmel, sahada tehlikelidir.
ESOF 323, 11. hafta: robotlarda derin öğrenme →