Skip to content

Latest commit

 

History

History
97 lines (56 loc) · 5.82 KB

File metadata and controls

97 lines (56 loc) · 5.82 KB

Sissejuhatus tehisnärvivõrkudesse: Perceptron

Üks esimesi katseid luua midagi tänapäevasele tehisnärvivõrgule sarnast tegi Frank Rosenblatt Cornelli Aeronautika Laboratooriumist 1957. aastal. See oli riistvaraline lahendus nimega "Mark-1", mis oli loodud primitiivsete geomeetriliste kujundite, nagu kolmnurgad, ruudud ja ringid, äratundmiseks.

Frank Rosenblatt Mark 1 Perceptron

Pildid Wikipediast

Sisendpilt esitati 20x20 fototundliku elemendi maatriksina, seega oli tehisnärvivõrgul 400 sisendit ja üks binaarne väljund. Lihtne võrk koosnes ühest neuronist, mida nimetatakse ka läve loogika üksuseks. Närvivõrgu kaaluparameetrid toimisid nagu potentsiomeetrid, mida tuli treeningfaasis käsitsi reguleerida.

✅ Potentsiomeeter on seade, mis võimaldab kasutajal reguleerida vooluringi takistust.

The New York Times kirjutas tol ajal perceptroni kohta: elektroonilise arvuti embrüo, mis [mereväe arvates] suudab kõndida, rääkida, näha, kirjutada, end paljundada ja olla teadlik oma olemasolust.

Perceptroni mudel

Oletame, et meie mudelil on N tunnust, sel juhul on sisendvektor suurusega N. Perceptron on binaarne klassifitseerimismudel, st see suudab eristada kahte sisendandmete klassi. Eeldame, et iga sisendvektori x korral on meie perceptroni väljund kas +1 või -1, sõltuvalt klassist. Väljund arvutatakse järgmise valemi abil:

y(x) = f(wTx)

kus f on astmelise aktiveerimise funktsioon

Perceptroni treenimine

Perceptroni treenimiseks peame leidma kaaluvektori w, mis klassifitseerib enamik väärtusi õigesti, st mille tulemuseks on kõige väiksem viga. See viga E on määratletud perceptroni kriteeriumi järgi järgmiselt:

E(w) = -∑wTxiti

kus:

  • summa arvutatakse nende treeningandmepunktide i pealt, mis on valesti klassifitseeritud
  • xi on sisendandmed ja ti on kas -1 või +1 vastavalt negatiivsetele ja positiivsetele näidetele.

Seda kriteeriumi käsitletakse kaaluvektori w funktsioonina, mida tuleb minimeerida. Sageli kasutatakse meetodit nimega gradientlangus, kus alustatakse mõnest algkaalust w(0) ja seejärel igal sammul uuendatakse kaale järgmise valemi järgi:

w(t+1) = w(t) - η∇E(w)

Siin on η nn õppemäär ja ∇E(w) tähistab E gradienti. Pärast gradiendi arvutamist saame tulemuseks:

w(t+1) = w(t) + ∑ηxiti

Pythonis näeb algoritm välja selline:

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

Kokkuvõte

Selles õppetükis õppisite perceptroni kohta, mis on binaarne klassifitseerimismudel, ja kuidas seda treenida kaaluvektori abil.

🚀 Väljakutse

Kui soovite proovida ise perceptroni luua, proovige seda laborit Microsoft Learnis, mis kasutab Azure ML disainerit.

Ülevaade ja iseseisev õppimine

Et näha, kuidas perceptronit saab kasutada nii mänguliste kui ka päriselu probleemide lahendamiseks, ja õppimist jätkata, minge Perceptroni märkmikusse.

Siin on ka huvitav artikkel perceptronite kohta.

Selles õppetükis rakendasime perceptroni binaarse klassifitseerimise ülesande jaoks ja kasutasime seda kahe käsitsi kirjutatud numbri eristamiseks. Selles laboris palutakse teil lahendada numbrite klassifitseerimise probleem täielikult, st määrata, millisele numbrile antud pilt kõige tõenäolisemalt vastab.


Lahtiütlus:
See dokument on tõlgitud AI tõlketeenuse Co-op Translator abil. Kuigi püüame tagada täpsust, palume arvestada, et automaatsed tõlked võivad sisaldada vigu või ebatäpsusi. Algne dokument selle algses keeles tuleks pidada autoriteetseks allikaks. Olulise teabe puhul soovitame kasutada professionaalset inimtõlget. Me ei vastuta selle tõlke kasutamisest tulenevate arusaamatuste või valesti tõlgenduste eest.