|
|
||
|---|---|---|
| .. | ||
| lab | ||
| Perceptron.ipynb | ||
| README.md | ||
README.md
Introducere în Rețele Neuronale: Perceptron
Chestionar înainte de lecție
Una dintre primele încercări de a implementa ceva similar cu o rețea neuronală modernă a fost realizată de Frank Rosenblatt de la Cornell Aeronautical Laboratory în 1957. A fost o implementare hardware numită "Mark-1", concepută pentru a recunoaște figuri geometrice primitive, cum ar fi triunghiuri, pătrate și cercuri.
![]() |
![]() |
Imagini de pe Wikipedia
O imagine de intrare era reprezentată de o matrice de fotocelule de 20x20, astfel încât rețeaua neuronală avea 400 de intrări și o ieșire binară. O rețea simplă conținea un singur neuron, numit și unitate logică de prag. Greutățile rețelei neuronale funcționau ca potențiometre care necesitau ajustare manuală în timpul fazei de antrenare.
✅ Un potențiometru este un dispozitiv care permite utilizatorului să ajusteze rezistența unui circuit.
The New York Times a scris despre perceptron la acea vreme: embrionul unui computer electronic pe care [Marina] se așteaptă să fie capabil să meargă, să vorbească, să vadă, să scrie, să se reproducă și să fie conștient de propria existență.
Modelul Perceptron
Să presupunem că avem N caracteristici în modelul nostru, caz în care vectorul de intrare ar fi un vector de dimensiune N. Un perceptron este un model de clasificare binară, adică poate distinge între două clase de date de intrare. Vom presupune că pentru fiecare vector de intrare x, ieșirea perceptronului nostru va fi fie +1, fie -1, în funcție de clasă. Ieșirea va fi calculată folosind formula:
y(x) = f(wTx)
unde f este o funcție de activare de tip treaptă.
Antrenarea Perceptronului
Pentru a antrena un perceptron, trebuie să găsim un vector de greutăți w care clasifică corect majoritatea valorilor, adică rezultă în cea mai mică eroare. Această eroare E este definită prin criteriul perceptronului în următorul mod:
E(w) = -∑wTxiti
unde:
- suma este luată pentru acele puncte de date de antrenament i care duc la clasificarea greșită
- xi este datele de intrare, iar ti este fie -1, fie +1 pentru exemplele negative și pozitive, respectiv.
Acest criteriu este considerat ca o funcție a greutăților w, și trebuie să îl minimizăm. Adesea, se folosește o metodă numită descendentă pe gradient, în care începem cu niște greutăți inițiale w(0), și apoi la fiecare pas actualizăm greutățile conform formulei:
w(t+1) = w(t) - η∇E(w)
Aici η este așa-numita rată de învățare, iar ∇E(w) denotă gradientul lui E. După ce calculăm gradientul, ajungem la:
w(t+1) = w(t) + ∑ηxiti
Algoritmul în Python arată astfel:
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
Concluzie
În această lecție, ai învățat despre perceptron, care este un model de clasificare binară, și cum să îl antrenezi folosind un vector de greutăți.
🚀 Provocare
Dacă dorești să încerci să construiești propriul perceptron, încearcă acest laborator pe Microsoft Learn, care folosește Azure ML designer.
Chestionar după lecție
Recapitulare & Studiu Individual
Pentru a vedea cum putem folosi perceptronul pentru a rezolva o problemă simplă, precum și probleme din viața reală, și pentru a continua să înveți - accesează notebook-ul Perceptron.
Iată un articol interesant despre perceptroni.
Temă
În această lecție, am implementat un perceptron pentru o sarcină de clasificare binară și l-am folosit pentru a clasifica între două cifre scrise de mână. În acest laborator, ți se cere să rezolvi problema clasificării cifrelor în întregime, adică să determini care cifră corespunde cel mai probabil unei imagini date.

