Jedan od prvih pokušaja implementacije nečega sličnog modernoj neuronskoj mreži napravio je Frank Rosenblatt iz Cornell Aeronautical Laboratory 1957. godine. To je bila hardverska implementacija nazvana "Mark-1", dizajnirana za prepoznavanje primitivnih geometrijskih oblika, poput trokuta, kvadrata i krugova.
![]() |
![]() |
Slike s Wikipedije
Ulazna slika bila je predstavljena nizom od 20x20 fotoćelija, pa je neuronska mreža imala 400 ulaza i jedan binarni izlaz. Jednostavna mreža sadržavala je jedan neuron, koji se također naziva jedinica logičkog praga. Težine neuronske mreže djelovale su poput potenciometara koji su zahtijevali ručno podešavanje tijekom faze treniranja.
✅ Potenciometar je uređaj koji omogućuje korisniku da prilagodi otpor u krugu.
New York Times je tada pisao o perceptronu: embrij elektroničkog računala za koje [mornarica] očekuje da će moći hodati, govoriti, vidjeti, pisati, reproducirati se i biti svjestan svog postojanja.
Pretpostavimo da imamo N značajki u našem modelu, u kojem slučaju ulazni vektor ima veličinu N. Perceptron je model za binarnu klasifikaciju, tj. može razlikovati dvije klase ulaznih podataka. Pretpostavit ćemo da za svaki ulazni vektor x izlaz našeg perceptrona može biti ili +1 ili -1, ovisno o klasi. Izlaz se računa pomoću formule:
y(x) = f(wTx)
gdje je f funkcija aktivacije koraka
Da bismo trenirali perceptron, trebamo pronaći vektor težina w koji klasificira većinu vrijednosti ispravno, tj. rezultira najmanjom pogreškom. Ova pogreška E definirana je kriterijem perceptrona na sljedeći način:
E(w) = -∑wTxiti
gdje:
- zbroj se uzima za one točke podataka za treniranje i koje rezultiraju pogrešnom klasifikacijom
- xi je ulazni podatak, a ti je ili -1 ili +1 za negativne i pozitivne primjere.
Ovaj kriterij se smatra funkcijom težina w, i trebamo ga minimizirati. Često se koristi metoda nazvana gradijentni spust, u kojoj počinjemo s nekim početnim težinama w(0), a zatim u svakom koraku ažuriramo težine prema formuli:
w(t+1) = w(t) - η∇E(w)
Ovdje je η tzv. stopa učenja, a ∇E(w) označava gradijent E. Nakon što izračunamo gradijent, dobivamo:
w(t+1) = w(t) + ∑ηxiti
Algoritam u Pythonu izgleda ovako:
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 weightsU ovoj lekciji naučili ste o perceptronu, koji je model za binarnu klasifikaciju, i kako ga trenirati pomoću vektora težina.
Ako želite pokušati izgraditi vlastiti perceptron, isprobajte ovu laboratorijsku vježbu na Microsoft Learn koja koristi Azure ML designer.
Da biste vidjeli kako možemo koristiti perceptron za rješavanje jednostavnih problema kao i problema iz stvarnog života, i da biste nastavili učiti - pogledajte bilježnicu Perceptron.
Evo zanimljivog članka o perceptronima.
U ovoj lekciji implementirali smo perceptron za zadatak binarne klasifikacije i koristili ga za klasifikaciju između dvije rukom pisane znamenke. U ovom laboratoriju od vas se traži da riješite problem klasifikacije znamenki u potpunosti, tj. odredite koja znamenka najvjerojatnije odgovara danoj slici.


