Ü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.
![]() |
![]() |
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.
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 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 weightsSelles õppetükis õppisite perceptroni kohta, mis on binaarne klassifitseerimismudel, ja kuidas seda treenida kaaluvektori abil.
Kui soovite proovida ise perceptroni luua, proovige seda laborit Microsoft Learnis, mis kasutab Azure ML disainerit.
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.


