Bölüm 1 · Temeller · Ders 3
Perceptron: ilk yapay nöron
Fren mi devam mı? Hatadan öğrenen tek bir doğru
Veri. Otonom bir araç her an iki şey ölçer: öndeki engele mesafe ve kendi hızı. Uzman sürücünün 80 kararını kaydettik: fren ya da devam. Hızlıysan ve engel yakınsa fren; aradaki sınır bir doğru.
import numpy as npD = np.genfromtxt('surus-fren.csv', delimiter=',', names=True)X, y = np.c_[D['mesafe'], D['hiz']], 2 * D['fren'] - 1 # [mesafe m, hız m/s], +1 fren, −1 devamtest = np.arange(len(X)) % 4 == 3 # her 4. karar test için ayrılırw, b = np.zeros(2), 0.0history, stop = {'epoch': [], 'mistakes': [], 'acc': [], 'test_acc': []}, None # eğitim geçmişifor epoch in range(20):mistakes = 0for x, t in zip(X[~test], y[~test]):if t * (w @ x + b) <= 0: # yanlış taraftaw += t * x; b += t # sınırı noktaya doğru çekmistakes += 1for k, v in zip(history, (epoch + 1, mistakes, (y[~test] * (X[~test] @ w + b) > 0).mean(), (y[test] * (X[test] @ w + b) > 0).mean())): history[k].append(float(v))if mistakes == 0 and stop is None: stop = epoch + 1 # hatasız dönem: sınır artık değişmezprint('w =', w, 'b =', b, 'hatasız dönem:', stop)for k in ('acc', 'test_acc'): # son ölçümler tablosuprint(f'{k:<10}{history[k][-1]:>10.4f}')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 dönemtry:import matplotlib.pyplot as plt # varsa grafik çizplt.bar(history['epoch'], history['mistakes']); plt.xlabel('epoch'); plt.ylabel('mistakes'); 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 →- Fren kararı: mesafe ve hızVeri 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
- Nöron girdileri ağırlıklarla çarpar, toplar ve işaretine bakar: pozitifse fren.
- Noktalar sırayla gezilir. Doğru taraftaysa hiçbir şey olmaz.
- Yanlış taraftaysa ağırlıklara o nokta eklenir (ya da çıkarılır): sınır noktaya doğru döner ve kayar.
- Bir dönem hiç hata olmadan geçerse durulur. Veri bir doğruyla ayrılabiliyorsa bu her zaman olur (perceptron yakınsama teoremi).
Neden önemli
1958'de Frank Rosenblatt'ın perceptronu ilk öğrenen makineydi. Bugünkü sinir ağlarının her nöronu hâlâ aynı şeyi yapar: ağırlıklı toplam ve bir eşik. Tek başına yalnız doğrusal sınır çizebilir; bir sonraki ders bunun nasıl aşıldığını gösteriyor.
ESOF 323, 11. hafta: robotlarda derin öğrenme →