Rețelele neuronale sunt acum în vogă și nu pentru nimic. Cu ajutorul lor, puteți, de exemplu, să recunoașteți obiecte în imagini sau, invers, să atrageți coșmaruri ale lui Salvador Dali. Datorită bibliotecilor convenabile, cele mai simple rețele neuronale sunt create de doar câteva linii de cod și nu vor mai merge pentru a aborda inteligența artificială a IBM.
Biologii încă nu știu exact cum funcționează creierul, dar principiul acțiunii elementelor individuale ale sistemului nervos este bine studiat. Se compune din celule neuronale - specializate care schimbă semnale electrochimice între ele. Fiecare neuron are mulți dendriți și un axon. Dendritele pot fi comparate cu intrările prin care datele intră în neuron, iar axonul servește drept ieșire. Legăturile dintre dendriți și axoni se numesc sinapse. Ele transmit nu numai semnale, dar și își pot schimba amplitudinea și frecvența.
Transformările care apar la nivelul neuronilor individuali sunt foarte simple, dar chiar și rețelele neuronale foarte mici sunt capabile de mult. Toate varietatea de comportament ale viermelui Caenorhabditis elegans - mișcare, căutarea hranei, reacții diferite la stimuli externi, și multe altele - toate codificate în trei sute de neuroni. Și bine, viermi! Chiar și furnicile au suficienți 250 de mii de neuroni și ceea ce fac, mașinile cu siguranță nu pot face.
Cu aproape șaizeci de ani în urmă, cercetătorul american Frank Rosenblatt a încercat să creeze un sistem informatic, aranjat în imaginea și asemănarea creierului, dar posibilitățile creării sale erau extrem de limitate. Interesul față de rețelele neuronale sa aprins de atunci, dar de multe ori sa constatat că puterea de calcul nu este suficientă pentru nici o rețea neuronală avansată. În ultimul deceniu, s-au schimbat multe în această privință.
Creierul electromecanic cu motor
Mașina Rosenblatt a fost numită Mark I Perceptron. Acesta a fost destinat recunoașterii imaginilor - o sarcină cu care computerele încă se confruntă astfel. Mark I a fost echipat cu retina ochiului: o matrice pătrată de 400 de fotocelule, douăzeci pe verticală și douăzeci pe orizontală. Celulele fotocelule, în ordine aleatorie, au fost conectate la modele electronice de neuroni și, la rândul lor, la opt ieșiri. Ca sinapse care conectează neuronii electronici, fotocelule și ieșiri, Rosenblatt folosește potențiometrele. La predarea perceptronului, 512 motoare pas cu pas au fost rotite automat de butoanele de potențiometru, ajustând tensiunea pe neuroni, în funcție de precizia rezultatului la ieșire.
Pe scurt, cum funcționează rețeaua neurală? Un neuron artificial, ca cel prezent, are mai multe intrări și o ieșire. Fiecare intrare are un factor de ponderare. Prin schimbarea acestor coeficienți, putem instrui rețeaua neurală. Dependența semnalului de ieșire de la semnalele de intrare determină așa-numita funcție de activare.
În perceptronul Rosenblatt, funcția de activare a adăugat greutatea tuturor intrărilor la care a fost introdusă unitatea logică și apoi a comparat rezultatul cu valoarea de prag. Dezavantajul său a fost că o ușoară modificare a unuia dintre coeficienții de greutate în cadrul unei astfel de abordări ar putea avea un impact disproporționat de mare asupra rezultatului. Acest lucru face ca invatarea sa fie dificila.
În rețelele neuronale moderne, funcțiile de activare neliniare sunt de obicei utilizate, de exemplu, un sigmoid. În plus, vechile rețele neuronale aveau prea puține straturi. Acum, între intrare și ieșire există de obicei unul sau mai multe straturi ascunse de neuroni. Aici se petrece toată distracția.
Pentru a ușura înțelegerea a ceea ce este în joc, uitați-vă la această diagramă. Este o rețea neuronală de propagare directă cu un strat ascuns. Fiecare cerc corespunde unui neuron. În stânga sunt neuronii stratului de intrare. În partea dreaptă este neuronul stratului de ieșire. În mijloc este un strat ascuns cu patru neuroni. Ieșirile tuturor neuronilor din stratul de intrare sunt conectate la fiecare neuron al primului strat ascuns. În schimb, intrările neuronului stratului de ieșire sunt asociate cu toate ieșirile neuronilor din stratul ascuns.
Nu toate rețelele neuronale sunt aranjate astfel. De exemplu, există rețele (deși mai puțin frecvente) în care semnalul de la neuroni este alimentat nu numai la următorul strat, ca și în rețeaua de propagare directă din schema noastră, dar și în direcția opusă. Astfel de rețele sunt numite recurente. Straturi complet conectate - aceasta este și numai una dintre opțiuni și una dintre alternativele pe care le atingem chiar.
Deci, să încercăm să construim o rețea neuronală simplă cu mâinile noastre și să înțelegem în lucrarea sa de-a lungul drumului. Vom folosi Python cu biblioteca Numpy (se poate face fără Numpy, dar cu Numpy, algebra liniară necesită mai puțină energie). Exemplul în cauză se bazează pe codul lui Andrew Trusk.
Avem nevoie de funcții pentru calcularea sigmoidului și a derivatului său: