|
|
||
|---|---|---|
| .. | ||
| lab | ||
| Perceptron.ipynb | ||
| README.md | ||
README.md
Úvod do neurónových sietí: Perceptron
Kvíz pred prednáškou
Jedným z prvých pokusov o implementáciu niečoho podobného moderným neurónovým sieťam bol projekt Franka Rosenblatta z Cornell Aeronautical Laboratory v roku 1957. Išlo o hardvérovú implementáciu nazvanú "Mark-1", ktorá bola navrhnutá na rozpoznávanie primitívnych geometrických tvarov, ako sú trojuholníky, štvorce a kruhy.
![]() |
![]() |
Obrázky z Wikipédie
Vstupný obraz bol reprezentovaný mriežkou 20x20 fotobuniek, takže neurónová sieť mala 400 vstupov a jeden binárny výstup. Jednoduchá sieť obsahovala jeden neurón, nazývaný tiež jednotka logického prahu. Váhy neurónovej siete fungovali ako potenciometre, ktoré bolo potrebné manuálne nastaviť počas fázy učenia.
✅ Potenciometer je zariadenie, ktoré umožňuje používateľovi nastaviť odpor v obvode.
New York Times v tom čase napísali o perceptrone: embryo elektronického počítača, od ktorého [Námorníctvo] očakáva, že bude schopné chodiť, rozprávať, vidieť, písať, reprodukovať sa a byť si vedomé svojej existencie.
Model perceptronu
Predpokladajme, že máme N vlastností v našom modeli, v takom prípade by vstupný vektor mal veľkosť N. Perceptron je model binárnej klasifikácie, t.j. dokáže rozlišovať medzi dvoma triedami vstupných údajov. Predpokladáme, že pre každý vstupný vektor x bude výstup nášho perceptronu buď +1 alebo -1, v závislosti od triedy. Výstup sa vypočíta pomocou vzorca:
y(x) = f(wTx)
kde f je aktivačná funkcia typu krok.
Tréning perceptronu
Na tréning perceptronu potrebujeme nájsť vektor váh w, ktorý klasifikuje väčšinu hodnôt správne, t.j. vedie k najmenšej chybe. Táto chyba E je definovaná kritériom perceptronu nasledovne:
E(w) = -∑wTxiti
kde:
- súčet sa berie na tých tréningových dátových bodoch i, ktoré vedú k nesprávnej klasifikácii
- xi je vstupný údaj a ti je buď -1 alebo +1 pre negatívne a pozitívne príklady.
Toto kritérium sa považuje za funkciu váh w, ktorú potrebujeme minimalizovať. Často sa používa metóda nazývaná gradientný zostup, pri ktorej začíname s počiatočnými váhami w(0) a potom v každom kroku aktualizujeme váhy podľa vzorca:
w(t+1) = w(t) - η∇E(w)
Tu η je tzv. rýchlosť učenia a ∇E(w) označuje gradient E. Po výpočte gradientu dostaneme:
w(t+1) = w(t) + ∑ηxiti
Algoritmus v Pythone vyzerá takto:
def train(positive_examples, negative_examples, num_iterations = 100, eta = 1):
weights = [0,0,0] # Initialize weights (almost randomly :)
for i in range(num_iterations):
pos = random.choice(positive_examples)
neg = random.choice(negative_examples)
z = np.dot(pos, weights) # compute perceptron output
if z < 0: # positive example classified as negative
weights = weights + eta*weights.shape
z = np.dot(neg, weights)
if z >= 0: # negative example classified as positive
weights = weights - eta*weights.shape
return weights
Záver
V tejto lekcii ste sa naučili o perceptrone, ktorý je modelom binárnej klasifikácie, a ako ho trénovať pomocou vektora váh.
🚀 Výzva
Ak si chcete vyskúšať vytvoriť vlastný perceptron, skúste tento lab na Microsoft Learn, ktorý používa Azure ML designer.
Kvíz po prednáške
Prehľad a samostatné štúdium
Ak chcete vidieť, ako môžeme použiť perceptron na riešenie jednoduchého problému, ako aj reálnych problémov, a pokračovať v učení, prejdite na Perceptron notebook.
Tu je zaujímavý článok o perceptronoch.
Úloha
V tejto lekcii sme implementovali perceptron pre úlohu binárnej klasifikácie a použili sme ho na klasifikáciu medzi dvoma ručne písanými číslicami. V tomto laboratóriu máte za úlohu vyriešiť problém klasifikácie číslic úplne, t.j. určiť, ktorá číslica najpravdepodobnejšie zodpovedá danému obrázku.

