Skip to content

Latest commit

 

History

History
95 lines (54 loc) · 5.39 KB

File metadata and controls

95 lines (54 loc) · 5.39 KB

Uvod u neuronske mreže: Perceptron

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.

Frank Rosenblatt The Mark 1 Perceptron

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.

Model perceptrona

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

Treniranje perceptrona

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 weights

Zaključak

U ovoj lekciji naučili ste o perceptronu, koji je model za binarnu klasifikaciju, i kako ga trenirati pomoću vektora težina.

🚀 Izazov

Ako želite pokušati izgraditi vlastiti perceptron, isprobajte ovu laboratorijsku vježbu na Microsoft Learn koja koristi Azure ML designer.

Pregled i samostalno učenje

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.