Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Windows 7, XP
  • Rețelele neuronale funcționează. Cu cuvinte simple despre complex: ce sunt rețelele neuronale

Rețelele neuronale funcționează. Cu cuvinte simple despre complex: ce sunt rețelele neuronale

Inteligența artificială, rețelele neuronale, învățarea automată - ce înseamnă cu adevărat toate aceste concepte populare? Pentru majoritatea oamenilor neinițiați, care sunt și eu, au părut mereu ceva fantastic, dar de fapt esența lor se află la suprafață. Am avut de multă vreme o idee să scriu într-un limbaj simplu despre rețelele neuronale artificiale. Învățați singuri și spuneți-le altora ce este această tehnologie, cum funcționează, luați în considerare istoria și perspectivele ei. În acest articol, am încercat să nu intru în junglă, ci să spun simplu și popular despre această direcție promițătoare în lumea tehnologiilor înalte.

Inteligența artificială, rețelele neuronale, învățarea automată - ce înseamnă cu adevărat toate aceste concepte populare? Pentru majoritatea oamenilor neinițiați, care sunt și eu, au părut mereu ceva fantastic, dar, de fapt, esența lor se află la suprafață. Am avut de multă vreme o idee să scriu într-un limbaj simplu despre rețelele neuronale artificiale. Învățați singuri și spuneți-le altora ce este această tehnologie, cum funcționează, luați în considerare istoria și perspectivele ei. În acest articol, am încercat să nu intru în junglă, ci să spun simplu și popular despre această direcție promițătoare în lumea tehnologiilor înalte.

Un pic de istorie

Pentru prima dată, conceptul de rețele neuronale artificiale (ANN) a apărut atunci când s-a încercat să simuleze procesele creierului. Prima descoperire majoră în acest domeniu poate fi considerată crearea modelului rețelei neuronale McCulloch-Pitts în 1943. Oamenii de știință au dezvoltat mai întâi un model de neuron artificial. De asemenea, ei au propus construirea unei rețele din aceste elemente pentru a efectua operații logice. Dar, cel mai important, oamenii de știință au demonstrat că o astfel de rețea este capabilă să învețe.

Următorul pas important a fost dezvoltarea de către Donald Hebb a primului algoritm pentru calcularea ANN în 1949, care a devenit fundamental pentru următoarele câteva decenii. În 1958, Frank Rosenblatt a dezvoltat parceptronul, un sistem care imită procesele creierului. La un moment dat, tehnologia nu avea analogi și este încă fundamentală în rețelele neuronale. În 1986, practic simultan, independent unul de celălalt, oamenii de știință americani și sovietici au îmbunătățit semnificativ metoda fundamentală de predare a perceptronului multistrat. În 2007, rețelele neuronale au suferit o renaștere. Informaticianul britanic Jeffrey Hinton a fost pionierul unui algoritm de învățare profundă pentru rețelele neuronale multistrat, care acum este, de exemplu, folosit pentru a opera mașini cu conducere autonomă.

Pe scurt despre principalul lucru

În sensul general al cuvântului, rețelele neuronale sunt modele matematice care funcționează pe principiul rețelelor de celule nervoase dintr-un organism animal. ANN-urile pot fi implementate atât în ​​soluții programabile, cât și în soluții hardware. Pentru ușurința percepției, un neuron poate fi imaginat ca o anumită celulă, care are multe orificii de intrare și o gaură de ieșire. Cât de multe semnale de intrare sunt transformate în cele de ieșire determină algoritmul de calcul. Valorile eficiente sunt furnizate fiecărei intrări a unui neuron, care sunt apoi propagate de-a lungul conexiunilor interneuronale (rezumat). Sinapsele au un parametru - greutatea, datorită căruia informațiile de intrare se modifică atunci când se deplasează de la un neuron la altul. Cel mai simplu mod de a vă imagina cum funcționează rețelele neuronale poate fi reprezentat de exemplul amestecării culorilor. Neuronii albaștri, verzi și roșii au greutăți diferite. Informația acelui neuron, a cărui greutate va fi mai dominantă în următorul neuron.

Rețeaua neuronală în sine este un sistem de mulți astfel de neuroni (procesoare). Individual, aceste procesoare sunt destul de simple (mult mai simple decât un procesor de computer personal), dar atunci când sunt conectați la un sistem mare, neuronii sunt capabili să îndeplinească sarcini foarte complexe.

În funcție de domeniul de aplicare, o rețea neuronală poate fi interpretată în moduri diferite. De exemplu, din punctul de vedere al învățării automate, un ANN este o metodă de recunoaștere a modelelor. Din punct de vedere matematic, aceasta este o problemă cu mai mulți parametri. Din punctul de vedere al ciberneticii, este un model de control adaptiv al roboticii. Pentru inteligența artificială, ANN este o componentă fundamentală pentru modelarea inteligenței naturale folosind algoritmi de calcul.

Principalul avantaj al rețelelor neuronale față de algoritmii de calcul convenționali este capacitatea lor de a învăța. În sensul general al cuvântului, învățarea constă în găsirea coeficienților corecti de cuplare între neuroni, precum și în generalizarea datelor și identificarea dependențelor complexe între semnalele de intrare și de ieșire. De fapt, antrenamentul cu succes al unei rețele neuronale înseamnă că sistemul va fi capabil să identifice rezultatul corect pe baza datelor care nu sunt prezente în setul de antrenament.

Situatia de azi

Și oricât de promițătoare ar fi această tehnologie, până acum ANN-urile sunt încă foarte departe de capacitățile creierului și gândirii umane. Cu toate acestea, rețelele neuronale sunt deja utilizate în multe domenii ale activității umane. Până acum, ei nu sunt capabili să ia decizii extrem de intelectuale, dar sunt capabili să înlocuiască o persoană acolo unde era nevoie anterior de el. Dintre numeroasele domenii de aplicare a ANN, se remarcă: crearea de sisteme de auto-învățare a proceselor de producție, vehicule fără pilot, sisteme de recunoaștere a imaginii, sisteme inteligente de securitate, robotică, sisteme de monitorizare a calității, interfețe de interacțiune vocală, sisteme de analiză și multe altele. O astfel de utilizare pe scară largă a rețelelor neuronale se datorează, printre altele, apariției diferitelor modalități de a accelera învățarea ANN.

Astăzi, piața rețelelor neuronale este uriașă - este de miliarde și miliarde de dolari. După cum arată practica, majoritatea tehnologiilor rețelelor neuronale din întreaga lume diferă puțin unele de altele. Cu toate acestea, utilizarea rețelelor neuronale este un exercițiu foarte costisitor, care în majoritatea cazurilor poate fi permis doar de companiile mari. Pentru dezvoltarea, antrenamentul și testarea rețelelor neuronale este necesară o putere mare de calcul, este evident că jucătorii mari de pe piața IT au suficient de mult. Printre principalele companii care conduc dezvoltarea în acest domeniu se numără Google DeepMind, Microsoft Research, IBM, Facebook și Baidu.

Desigur, toate acestea sunt bune: rețelele neuronale se dezvoltă, piața crește, dar până acum sarcina principală nu a fost rezolvată. Omenirea nu a reușit să creeze o tehnologie care să fie chiar apropiată ca capabilități de creierul uman. Să aruncăm o privire la principalele diferențe dintre creierul uman și rețelele neuronale artificiale.

De ce rețelele neuronale sunt încă departe de creierul uman?

Cea mai importantă diferență care schimbă fundamental principiul și eficiența sistemului este transmisia diferită a semnalului în rețelele neuronale artificiale și în rețeaua biologică de neuroni. Cert este că în ANN, neuronii transmit valori care sunt valori reale, adică numere. În creierul uman se transmit impulsuri cu o amplitudine fixă, iar aceste impulsuri sunt aproape instantanee. Prin urmare, există o serie de avantaje pentru rețeaua umană de neuroni.

În primul rând, liniile de comunicare din creier sunt mult mai eficiente și mai economice decât în ​​ANN-uri. În al doilea rând, circuitul de impuls asigură simplitatea implementării tehnologiei: este suficient să folosiți circuite analogice în loc de mecanisme de calcul complexe. În cele din urmă, rețelele de impuls sunt protejate de interferențele acustice. Numerele valide sunt predispuse la zgomot, ceea ce crește probabilitatea erorilor.

Rezultat

Desigur, în ultimul deceniu, a existat un adevărat boom în dezvoltarea rețelelor neuronale. Acest lucru se datorează în primul rând faptului că procesul de învățare al ANN a devenit mult mai rapid și mai ușor. De asemenea, așa-numitele rețele neuronale „pre-antrenate” au început să fie dezvoltate în mod activ, ceea ce poate accelera semnificativ procesul de implementare a tehnologiei. Și dacă este prea devreme să spunem dacă într-o zi rețelele neuronale vor putea reproduce pe deplin capacitățile creierului uman, probabilitatea ca în următorul deceniu ANN-urile să poată înlocui oamenii într-un sfert din profesiile existente devine din ce în ce mai mare. ca adevărul.

Pentru cei care vor să afle mai multe

  • Marele război neuronal: ce face cu adevărat Google
  • Cum computerele cognitive ne pot schimba viitorul
Algoritmi, învățare automată

Bun venit la a doua parte a tutorialului rețelei neuronale. Vreau doar să-mi cer scuze tuturor celor care au așteptat a doua parte mult mai devreme. Din anumite motive, a trebuit să amân scrierea. De fapt, nu mă așteptam ca primul articol să aibă o asemenea cerere și ca atât de mulți oameni să fie interesați de acest subiect. Ținând cont de comentariile dumneavoastră, voi încerca să vă ofer cât mai multe informații și, în același timp, să păstrez modul în care sunt prezentate cât mai clar. În acest articol, voi vorbi despre modalități de a antrena / antrena rețele neuronale (în special, metoda de backpropagation) și dacă, din anumite motive, nu ați citit prima parte, vă recomand cu tărie să începeți cu ea. În procesul de scriere a acestui articol, am vrut să vorbesc și despre alte tipuri de rețele neuronale și metode de antrenament, însă, începând să scriu despre ele, mi-am dat seama că acest lucru ar fi împotriva metodei mele de prezentare. Înțeleg că ești dornic să obții cât mai multe informații, dar aceste subiecte sunt foarte extinse și necesită o analiză detaliată, iar sarcina mea principală nu este să scriu un alt articol cu ​​o explicație superficială, ci să îți transmit fiecare aspect al subiectului. a ridicat și a face articolul cât mai ușor.dezvoltare. Mă grăbesc să-i supăr pe cei cărora le place să „codeze”, deoarece încă nu voi recurge la utilizarea limbajului de programare și îmi voi explica totul pe degete. Destul de introducere, să continuăm acum studiul rețelelor neuronale.

Ce este un neuron de deplasare?


Înainte de a începe subiectul nostru principal, trebuie să introducem conceptul unui alt tip de neuron - neuronul de deplasare. Neuronul bias sau neuronul bias este al treilea tip de neuron utilizat în majoritatea rețelelor neuronale. Particularitatea acestui tip de neuron este că intrarea și ieșirea sa sunt întotdeauna egale cu 1 și nu au niciodată sinapse de intrare. Neuronii de deplasare pot fi fie prezenți în rețeaua neuronală unul câte unul pe un strat, fie să fie complet absenți, 50/50 nu pot fi (greutățile și neuronii care nu pot fi plasați sunt afișați cu roșu pe diagramă). Conexiunile pentru neuronii de deplasare sunt aceleași ca și pentru neuronii obișnuiți - cu toți neuronii de nivelul următor, cu excepția faptului că nu pot exista sinapse între doi neuroni de polarizare. Prin urmare, ele pot fi plasate pe stratul de intrare și toate straturile ascunse, dar nu și pe stratul de ieșire, deoarece pur și simplu nu au cu ce să formeze o legătură.

Pentru ce este un neuron bias?



Neuronul de deplasare este necesar pentru a putea obține un rezultat de ieșire prin deplasarea graficului funcției de activare la dreapta sau la stânga. Dacă acest lucru sună confuz, să ne uităm la un exemplu simplu în care există un neuron de intrare și un neuron de ieșire. Apoi se poate stabili că ieșirea de O2 va fi egală cu intrarea H1 înmulțită cu greutatea sa și trecută prin funcția de activare (formula din fotografia din stânga). În cazul nostru particular, vom folosi un sigmoid.

Din cursul școlii de matematică, știm că dacă luăm funcția y = ax + b și îi schimbăm valorile „a”, atunci panta funcției se va schimba (culorile liniilor de pe graficul din stânga) , iar dacă schimbăm „b”, atunci vom deplasa funcția la dreapta sau la stânga (culorile liniilor de pe graficul din dreapta). Deci „a” este greutatea lui H1, iar „b” este greutatea neuronului de polarizare B1. Acesta este un exemplu grosier, dar așa funcționează (dacă te uiți la funcția de activare din dreapta din imagine, vei observa o asemănare foarte puternică între formule). Adică, atunci când, în timpul antrenamentului, ajustăm greutățile neuronilor ascunși și de ieșire, schimbăm panta funcției de activare. Cu toate acestea, ajustarea greutății neuronilor de părtinire ne poate oferi posibilitatea de a schimba funcția de activare de-a lungul axei X și de a captura noi zone. Cu alte cuvinte, dacă punctul responsabil pentru soluția dvs. este localizat, așa cum se arată în graficul din stânga, atunci rețeaua dvs. neuronală nu va putea niciodată să rezolve problema fără a utiliza neuroni de părtinire. Prin urmare, rar găsiți rețele neuronale fără neuroni de părtinire.

De asemenea, neuronii de polarizare ajută în cazul în care toți neuronii de intrare primesc 0 ca intrare și indiferent de greutatea lor, ei vor transfera totul în următorul strat 0, dar nu și în cazul prezenței unui neuron de polarizare. Prezența sau absența neuronilor de părtinire este un hiperparametru (mai multe despre asta mai târziu). Pe scurt, tu însuți trebuie să decizi dacă trebuie să folosești sau nu neuronii de părtinire, rulând rețeaua neuronală cu și fără amestecarea neuronilor și comparând rezultatele.

IMPORTANT fiți conștienți de faptul că, uneori, pe diagrame, aceștia nu indică neuronii de polarizare, ci pur și simplu iau în considerare ponderile acestora atunci când calculați valoarea de intrare, de exemplu:

Intrare = H1 * w1 + H2 * w2 + b3
b3 = părtinire * w3

Deoarece ieșirea sa este întotdeauna 1, ne putem imagina pur și simplu că avem o sinapsă suplimentară cu o greutate și să adăugăm această greutate la sumă fără a menționa neuronul însuși.

Cum să faci Adunarea Națională să dea răspunsuri corecte?

Răspunsul este simplu - trebuie să o antrenezi. Cu toate acestea, oricât de simplu este răspunsul, implementarea sa în termeni de simplitate lasă mult de dorit. Există mai multe metode de predare a rețelelor neuronale și voi evidenția 3, după părerea mea, cele mai interesante:
  • Metoda de retropropagare
  • Propagare rezistentă (Rprop)
  • Algoritm genetic
Rprop și GA vor fi discutate în alte articole, dar acum vom arunca o privire asupra elementelor de bază - metoda de backpropagation, care utilizează algoritmul de coborâre a gradientului.

Ce este Gradient Descent?

Aceasta este o modalitate de a găsi minimul sau maximul local al unei funcții prin deplasarea de-a lungul gradientului. Odată ce înțelegeți esența coborârii gradientului, nu ar trebui să aveți întrebări în timp ce utilizați metoda de propagare inversă. Mai întâi, să ne dăm seama ce este un gradient și unde este prezent în rețeaua noastră neuronală. Să construim un grafic în care axa x vor fi valorile greutății neuronului (w) și axa y va fi eroarea corespunzătoare acestei greutăți (e).


Privind acest grafic, vom înțelege că graficul funcției f (w) este dependența erorii de greutatea selectată. Pe această diagramă, ne interesează minimul global - punctul (w2, e2) sau, cu alte cuvinte, locul în care diagrama se apropie cel mai mult de axa x. Acest punct va însemna că prin alegerea greutății w2 vom obține cea mai mică eroare - e2 și, în consecință, cel mai bun rezultat posibil. Metoda de coborâre a gradientului ne va ajuta să găsim acest punct (gradientul este afișat cu galben pe grafic). În consecință, fiecare greutate din rețeaua neuronală va avea propriul grafic și gradient și fiecare trebuie să găsească un minim global.

Deci, ce este acest gradient? Un gradient este un vector care definește abruptul unei pante și indică direcția acesteia în raport cu oricare dintre punctele de pe suprafață sau grafic. Pentru a găsi gradientul, trebuie să luați derivata graficului într-un punct dat (așa cum se arată în grafic). Deplasându-ne în direcția acestui gradient, vom aluneca lin în zonele joase. Acum, imaginați-vă că eroarea este un schior și graficul funcției este un munte. În consecință, dacă eroarea este de 100%, atunci schiorul se află chiar în vârful muntelui, iar dacă eroarea este de 0%, atunci în câmpie. Ca toți schiorii, bug-ul tinde să coboare cât mai repede posibil și să-și scadă valoarea. În final, ar trebui să obținem următorul rezultat:


Imaginează-ți că un schior este aruncat, cu elicopterul, pe un munte. Cât de ridicat sau scăzut depinde de caz (asemănător cu modul în care într-o rețea neuronală, în timpul inițializării, ponderile sunt atribuite aleatoriu). Să presupunem că eroarea este de 90% și acesta este punctul nostru de plecare. Acum schiorul trebuie să coboare folosind un gradient. La coborâre, în fiecare punct vom calcula un gradient care ne va arăta direcția de coborâre și, atunci când panta se schimbă, o vom regla. Dacă panta este dreaptă, atunci după al n-lea număr de astfel de acțiuni vom ajunge la câmpie. Dar în cele mai multe cazuri panta (graficul funcției) va fi ondulată și schiorul nostru se va confrunta cu o problemă foarte serioasă - un minim local. Cred că toată lumea știe care este minimul local și global al unei funcții, iată un exemplu pentru a vă reîmprospăta memoria. A ajunge într-un minim local este plin de faptul că schiorul nostru va rămâne pentru totdeauna în această zonă joasă și nu va aluneca niciodată pe munte, prin urmare, nu vom putea primi niciodată răspunsul corect. Dar putem evita acest lucru echipând schiorul nostru cu un jetpack numit impuls. Iată o ilustrare rapidă a momentului:

După cum probabil ați ghicit deja, acest rucsac îi va oferi schiorului accelerația necesară pentru a depăși dealul care ne ține la un minim local, dar există un DAR. Să ne imaginăm că am stabilit o anumită valoare pentru parametrul moment și am putea depăși cu ușurință toate minimele locale și am putea ajunge la minimul global. Deoarece nu putem opri pur și simplu jetpack-ul, putem aluneca peste minimul global dacă mai există zone joase lângă el. În ultimul caz, acest lucru nu este atât de important, deoarece mai devreme sau mai târziu vom reveni în continuare la minimul global, dar merită să ne amintim că, cu cât este mai mare momentul, cu atât va fi mai mare leagănul cu care schiorul va călări pe zonele joase. Odată cu momentul, metoda de backpropagation folosește și un astfel de parametru precum rata de învățare. După cum probabil mulți vor crede, cu cât rata de învățare este mai mare, cu atât vom antrena mai repede rețeaua neuronală. Nu. Rata de învățare, ca și momentul, este un hiperparametru - o valoare care este selectată prin încercare și eroare. Viteza de învățare poate fi direct legată de viteza schiorului și este sigur să spunem că vei merge mai liniștit. Totuși, există și anumite aspecte aici, deoarece dacă nu dăm schiorului deloc viteza, atunci el nu va merge deloc nicăieri, iar dacă dăm o viteză mică, atunci timpul de călătorie se poate întinde foarte, foarte mult. perioada de timp. Ce se întâmplă atunci dacă dăm prea multă viteză?


După cum vezi, nimic bun. Schiorul va începe să alunece pe calea greșită și, eventual, chiar în cealaltă direcție, ceea ce, după cum înțelegeți, nu va face decât să ne distanțeze de a găsi răspunsul corect. Prin urmare, în toți acești parametri este necesar să se găsească o medie de aur pentru a evita neconvergența NN (mai multe despre aceasta mai târziu).

Ce este o metodă de propagare inversă (MPA)?

Așa că am ajuns la punctul în care putem discuta despre cum să ne asigurăm că rețeaua ta neuronală poate învăța corect și poate lua deciziile corecte. MOP-ul este redat foarte bine pe acest GIF:


Acum să aruncăm o privire mai atentă la fiecare etapă. Dacă vă amintiți că în articolul precedent am luat în considerare rezultatul Adunării Naționale. Într-un alt mod, aceasta se numește trecere înainte, adică transmitem secvențial informații de la neuronii de intrare la neuronii de ieșire. După aceea, calculăm eroarea și pe baza ei facem un postback, care constă în modificarea secvențială a greutăților rețelei neuronale, începând cu greutățile neuronului de ieșire. Greutățile se vor schimba în direcția care ne oferă cel mai bun rezultat. În calculele mele, voi folosi metoda de a găsi delta, deoarece aceasta este cea mai simplă și mai înțeleasă cale. Voi folosi și metoda stocastică pentru actualizarea greutăților (mai multe despre asta mai târziu).

Acum să continuăm de unde am lăsat calculele din articolul precedent.

Aceste sarcini din articolul precedent


Date: I1 = 1, I2 = 0, w1 = 0,45, w2 = 0,78, w3 = -0,12, w4 = 0,13, w5 = 1,5, w6 = -2,3.

H1input = 1 * 0,45 + 0 * -0,12 = 0,45
Ieșire H1 = sigmoid (0,45) = 0,61

H2input = 1 * 0,78 + 0 * 0,13 = 0,78
Ieșire H2 = sigmoid (0,78) = 0,69

O1input = 0,61 * 1,5 + 0,69 * -2,3 = -0,672
O1ieșire = sigmoid (-0,672) = 0,33

O1ideal = 1 (0xor1 = 1)

Eroare = ((1-0,33) ^ 2) /1=0,45

Rezultatul este 0,33, eroarea este de 45%.


Deoarece am calculat deja rezultatul NN și eroarea acestuia, putem trece imediat la MPA. După cum am menționat mai devreme, algoritmul începe întotdeauna cu neuronul de ieșire. În acest caz, să calculăm valoarea lui? (delta) prin formula 1.

Deoarece neuronul de ieșire nu are sinapse de ieșire, vom folosi prima formulă (? Ieșire), prin urmare, pentru neuronii ascunși, vom lua deja a doua formulă (? Ascunsă). Totul este destul de simplu aici: calculăm diferența dintre rezultatul dorit și rezultatul obținut și o înmulțim cu derivata funcției de activare din valoarea de intrare a neuronului dat. Înainte de a începe calculele, vreau să vă atrag atenția asupra derivatei. În primul rând, așa cum probabil a devenit deja clar, numai acele funcții de activare care pot fi diferențiate ar trebui utilizate cu MOP-uri. În al doilea rând, pentru a nu face calcule inutile, formula derivată poate fi înlocuită cu o formulă mai prietenoasă și mai simplă de forma:


Astfel, calculele noastre pentru punctul O1 vor arăta astfel.

Soluţie

Ieșire O1 = 0,33
O1ideal = 1
Eroare = 0,45

O1 = (1 - 0,33) * ((1 - 0,33) * 0,33) = 0,148


Aceasta completează calculele pentru neuronul O1. Amintiți-vă că, după calcularea deltei unui neuron, trebuie să actualizăm imediat greutățile tuturor sinapselor de ieșire ale acestui neuron. Deoarece sunt absenți în cazul lui O1, mergem la neuronii de nivel latent și facem același lucru, cu excepția faptului că acum avem a doua formulă pentru calcularea deltei și esența acesteia este să înmulțim derivata funcției de activare din intrare. valoarea prin suma produselor tuturor greutăților de ieșire și delta neuronului cu care este conectată această sinapsă. Dar de ce formulele sunt diferite? Ideea este că întregul scop al MOR este de a propaga eroarea neuronilor de ieșire la toate greutățile rețelei neuronale. Eroarea poate fi calculată doar la nivelul de ieșire, așa cum am făcut deja, am calculat și delta în care această eroare există deja. În consecință, acum în loc de o eroare, vom folosi o deltă care va fi transmisă de la neuron la neuron. În acest caz, să găsim delta pentru H1:

Soluţie

Ieșire H1 = 0,61
w5 = 1,5
501 = 0,148

H1 = ((1 - 0,61) * 0,61) * (1,5 * 0,148) = 0,053


Acum trebuie să găsim gradientul pentru fiecare sinapsă de ieșire. Aici, de obicei, ei inserează o fracție de 3 etaje cu o grămadă de derivate și alt iad de matematică, dar aceasta este frumusețea utilizării metodei de numărare delta, deoarece în cele din urmă formula ta pentru găsirea gradientului va arăta astfel:

Aici punctul A este punctul de la începutul sinapsei, iar punctul B este la sfârșitul sinapsei. Astfel, putem calcula gradientul w5 după cum urmează:

Soluţie

Ieșire H1 = 0,61
501 = 0,148

GRADw5 = 0,61 * 0,148 = 0,09


Acum avem toate datele necesare pentru a actualiza greutatea w5 și vom face acest lucru datorită funcției MOP, care calculează cantitatea cu care trebuie schimbată una sau alta greutate și arată astfel:


Vă recomand cu tărie să nu ignorați a doua parte a expresiei și să folosiți momentul deoarece acest lucru vă va permite să evitați problemele cu minimul local.

Aici vedem 2 constante despre care am vorbit deja când am luat în considerare algoritmul de coborâre a gradientului: E (epsilon) - rata de învățare,? (alfa) - moment. Traducând formula în cuvinte, obținem: modificarea greutății sinapsei este egală cu coeficientul ratei de învățare înmulțit cu gradientul acestei greutăți, se adună momentul înmulțit cu modificarea anterioară a acestei greutăți (la prima iterație este egal cu 0). În acest caz, să calculăm modificarea greutății w5 și să actualizăm valoarea acesteia adăugând? W5 la aceasta.

Soluţie

E = 0,7
? = 0.3
w5 = 1,5
GRADw5 = 0,09
?w5 (i-1) = 0

W5 = 0,7 * 0,09 + 0 * 0,3 = 0,063
w5 = w5 +?w5 = 1,563


Astfel, după aplicarea algoritmului, greutatea noastră a crescut cu 0,063. Acum vă sugerez să faceți același lucru pentru H2.

Soluţie

Ieșire H2 = 0,69
w6 = -2,3
501 = 0,148
E = 0,7
? = 0.3
? w6 (i-1) = 0

H2 = ((1 - 0,69) * 0,69) * (-2,3 * 0,148) = -0,07

GRADw6 = 0,69 * 0,148 = 0,1

W6 = 0,7 * 0,1 + 0 * 0,3 = 0,07

W6 = w6 +?W6 = -2,2


Și bineînțeles, nu uita de I1 și I2, pentru că au și sinapse de greutate pe care trebuie să le actualizăm. Cu toate acestea, rețineți că nu trebuie să găsim delte pentru neuronii de intrare, deoarece aceștia nu au sinapse de intrare.

Soluţie

w1 = 0,45, w1 (i-1) = 0
w2 = 0,78, w2 (i-1) = 0
w3 = -0,12, w3 (i-1) = 0
w4 = 0,13, w4 (i-1) = 0
5 H1 = 0,053
5H2 = -0,07
E = 0,7
? = 0.3

GRADw1 = 1 * 0,053 = 0,053
GRADw2 = 1 * -0,07 = -0,07
GRADw3 = 0 * 0,053 = 0
GRADw4 = 0 * -0,07 = 0

W1 = 0,7 * 0,053 + 0 * 0,3 = 0,04
? w2 = 0,7 * -0,07 + 0 * 0,3 = -0,05
?w3 = 0,7 * 0 + 0 * 0,3 = 0
?w4 = 0,7 * 0 + 0 * 0,3 = 0

W1 = w1 + W1 = 0,5
w2 = w2 +?w2 = 0,73
w3 = w3 +?w3 = -0,12
w4 = w4 +?w4 = 0,13


Acum să ne asigurăm că am făcut totul corect și să calculăm din nou rezultatul rețelei neuronale numai cu greutățile actualizate.

Soluţie

I1 = 1
I2 = 0
w1 = 0,5
w2 = 0,73
w3 = -0,12
w4 = 0,13
w5 = 1,563
w6 = -2,2

H1input = 1 * 0,5 + 0 * -0,12 = 0,5
Ieșire H1 = sigmoid (0,5) = 0,62

H2input = 1 * 0,73 + 0 * 0,124 = 0,73
Ieșire H2 = sigmoid (0,73) = 0,675

O1input = 0,62 * 1,563 + 0,675 * -2,2 = -0,51
O1ieșire = sigmoid (-0,51) = 0,37

O1ideal = 1 (0xor1 = 1)

Eroare = ((1-0,37) ^ 2) /1=0,39

Rezultatul este 0,37, eroarea este de 39%.


După cum putem vedea după o iterație a MPA, am reușit să reducem eroarea cu 0,04 (6%). Acum trebuie să repeți acest lucru din nou și din nou până când eroarea ta este suficient de mică.

Ce altceva trebuie să știți despre procesul de învățare?

O rețea neuronală poate fi predată cu sau fără profesor (învățare supravegheată, nesupravegheată).

Învățare supravegheată- Acesta este tipul de antrenament inerent problemelor precum regresia și clasificarea (am folosit-o în exemplul de mai sus). Cu alte cuvinte, aici acționezi ca profesor și NS ca student. Furnizi datele de intrare și rezultatul dorit, adică studentul, uitându-se la datele de intrare, va înțelege că trebuie să se străduiască pentru rezultatul pe care i l-ai oferit.

Învățați fără profesor- acest tip de antrenament nu este atât de comun. Nu există nici un profesor aici, așa că rețeaua nu obține rezultatul dorit, sau numărul lor este foarte mic. Practic, acest tip de antrenament este inerent rețelelor neuronale în care sarcina este de a grupa datele în funcție de anumiți parametri. Să presupunem că trimiteți 10.000 de articole lui Habré și, după analizarea tuturor acestor articole, Adunarea Națională le va putea clasifica pe baza, de exemplu, a cuvintelor care apar frecvent. Articole care menționează limbaje de programare, programare și în care cuvinte precum Photoshop, design.

Există, de asemenea, o metodă atât de interesantă ca Consolidarea învățării(Consolidarea învățării). Această metodă merită un articol separat, dar voi încerca să descriu pe scurt esența ei. Această metodă este aplicabilă atunci când putem, pe baza rezultatelor primite de la Adunarea Națională, să îi dăm o evaluare. De exemplu, vrem să învățăm Adunarea Națională să joace PAC-MAN, apoi de fiecare dată când Adunarea Națională va câștiga foarte multe puncte, o vom încuraja. Cu alte cuvinte, dăm NS dreptul de a găsi orice modalitate de a atinge obiectivul, atâta timp cât dă un rezultat bun. În acest fel, rețeaua va începe să înțeleagă ce vor să obțină din ea și va încerca să găsească cea mai bună modalitate de a atinge acest obiectiv fără furnizarea constantă de date de către „profesor”.

De asemenea, antrenamentul poate fi efectuat folosind trei metode: metoda stocastică, metoda lotului și metoda mini-loturi. Există atât de multe articole și studii despre care metodă este cea mai bună și nimeni nu poate veni cu un răspuns general. Sunt un susținător al metodei stocastice, dar nu neg faptul că fiecare metodă are propriile sale argumente pro și contra.

Pe scurt despre fiecare metodă:

Stochastic(uneori este numită și online) metoda funcționează conform următorului principiu - găsit? w, actualizați imediat greutatea corespunzătoare.

Metoda lotului funcționează diferit. Rezumăm? W din toate ponderile la iterația curentă și abia apoi actualizăm toate ponderile folosind această sumă. Unul dintre cele mai importante avantaje ale acestei abordări este economiile semnificative în timpul de calcul, în timp ce precizia poate fi grav afectată în acest caz.

Metoda mini lot este mijlocul de aur și încearcă să combine avantajele ambelor metode. Aici principiul este următorul: distribuim liber ponderile între grupuri și modificăm ponderile acestora cu suma?W a tuturor ponderilor dintr-un grup sau altul.

Ce sunt hiperparametrii?

Hiperparametrii sunt valori care trebuie selectate manual și adesea prin încercare și eroare. Printre aceste valori se numără:
  • Momentul și viteza de învățare
  • Numărul de straturi ascunse
  • Numărul de neuroni din fiecare strat
  • Prezența sau absența neuronilor de deplasare
În alte tipuri de rețele neuronale există hiperparametri suplimentari, dar nu vom vorbi despre ei. Alegerea hiperparametrilor potriviți este foarte importantă și va afecta direct convergența rețelei dumneavoastră neuronale. Este destul de ușor să înțelegeți dacă să folosiți neuronii bias sau nu. Numărul de straturi ascunse și de neuroni din ele poate fi calculat prin forță brută pe baza unei reguli simple - cu cât mai mulți neuroni, cu atât rezultatul este mai precis și cu atât exponențial veți petrece mai mult timp antrenându-l. Cu toate acestea, merită să ne amintim că nu ar trebui să faci o rețea neuronală cu 1000 de neuroni pentru a rezolva probleme simple. Dar odată cu alegerea momentului și cu viteza de învățare, totul este puțin mai complicat. Acești hiperparametri vor varia, în funcție de sarcină și de arhitectura rețelei neuronale. De exemplu, pentru soluția XOR, rata de învățare poate fi în intervalul 0,3 - 0,7, dar într-o rețea neuronală care analizează și prezice prețul acțiunilor, o rată de învățare mai mare de 0,00001 duce la o convergență slabă a rețelei neuronale. Nu ar trebui să vă concentrați pe hiperparametri acum și să încercați să înțelegeți bine cum să-i alegeți. Acest lucru va veni cu experiență, dar deocamdată vă sfătuiesc să experimentați și să căutați exemple de rezolvare a unei anumite probleme în rețea.

Ce este convergența?



Convergența indică dacă arhitectura rețelei neuronale este corectă și dacă hiperparametrii au fost selectați corect în conformitate cu sarcina în cauză. Să presupunem că programul nostru scoate o eroare NS la fiecare iterație a jurnalului. Dacă eroarea scade cu fiecare iterație, atunci suntem pe drumul cel bun și rețeaua noastră neuronală converge. Dacă eroarea sare în sus și în jos sau îngheață la un anumit nivel, atunci NN-ul nu converge. În 99% din cazuri, acest lucru se rezolvă prin modificarea hiperparametrilor. Restul de 1% va însemna că aveți o eroare în arhitectura rețelei neuronale. De asemenea, se întâmplă ca convergența să fie afectată de reantrenarea rețelei neuronale.

Ce este recalificarea?

Supraadaptarea, după cum sugerează și numele, este starea unei rețele neuronale atunci când este suprasaturată cu date. Această problemă apare dacă durează prea mult timp pentru a antrena rețeaua pe aceleași date. Cu alte cuvinte, rețeaua va începe să nu învețe din date, ci să le memoreze și să le „înghesuie”. În consecință, atunci când trimiteți deja date noi la intrarea acestei rețele neuronale, poate apărea zgomot în datele primite, ceea ce va afecta acuratețea rezultatului. De exemplu, dacă arătăm NA diferite fotografii cu mere (doar cele roșii) și spunem că acesta este un măr. Apoi, când NS vede un măr galben sau verde, nu va putea determina că este un măr, deoarece și-a amintit că toate merele trebuie să fie roșii. În schimb, când NS vede ceva roșu și forma unui măr, cum ar fi o piersică, va spune că este un măr. Acesta este zgomot. Pe grafic, zgomotul va arăta astfel.


Se poate observa că graficul funcției fluctuează foarte mult de la un punct la altul, care sunt rezultatul (rezultatul) rețelei noastre neuronale. În mod ideal, acest grafic ar trebui să fie mai puțin ondulat și mai puțin drept. Pentru a evita supraadaptarea, nu ar trebui să-l antrenați pe NN pentru o perioadă lungă de timp pe aceleași date sau foarte asemănătoare. De asemenea, supraadaptarea poate fi cauzată de un număr mare de parametri pe care îi furnizați la intrarea rețelei neuronale sau de o arhitectură prea complexă. Astfel, atunci când observați erori (zgomot) în ieșire după etapa de antrenament, atunci ar trebui să utilizați una dintre metodele de regularizare, dar în majoritatea cazurilor acest lucru nu va fi necesar.

Concluzie

Sper că acest articol a reușit să clarifice punctele cheie ale unui subiect atât de dificil precum rețelele neuronale. Cu toate acestea, cred că indiferent câte articole ai citi, este imposibil să stăpânești un subiect atât de complex fără practică. Prin urmare, dacă sunteți abia la începutul călătoriei și doriți să studiați această industrie promițătoare și în curs de dezvoltare, atunci vă sfătuiesc să începeți să exersați scriind propria rețea neuronală și abia după aceea să recurgeți la utilizarea diferitelor cadre și biblioteci. De asemenea, dacă sunteți interesat de metoda mea de prezentare a informațiilor și doriți să scriu articole pe alte subiecte legate de Machine Learning, atunci votați în sondajul de mai jos subiectul care vă interesează. Ne vedem in articolele viitoare :)

În consecință, rețeaua neuronală ia două numere ca intrare și trebuie să dea un alt număr la ieșire - răspunsul. Acum despre rețelele neuronale în sine.

Ce este o rețea neuronală?


O rețea neuronală este o secvență de neuroni conectați prin sinapse. Structura rețelei neuronale a venit în lumea programării direct din biologie. Datorită acestei structuri, mașina dobândește capacitatea de a analiza și chiar de a memora diverse informații. Rețelele neuronale sunt, de asemenea, capabile nu numai să analizeze informațiile primite, ci și să le reproducă din memoria lor. Pentru cei interesați, asigurați-vă că vizionați 2 videoclipuri de la TED Talks: Videoclipul 1 , Videoclipul 2). Cu alte cuvinte, o rețea neuronală este o mașină de interpretare a creierului uman, care conține milioane de neuroni care transmit informații sub formă de impulsuri electrice.

Ce sunt rețelele neuronale?

Deocamdată, vom lua în considerare exemple despre cel mai elementar tip de rețele neuronale - aceasta este o rețea feedforward (denumită în continuare FNS). De asemenea, în articolele următoare voi introduce mai multe concepte și vă voi vorbi despre rețelele neuronale recurente. DSS, după cum sugerează și numele, este o rețea cu o conexiune serială de straturi neuronale, în care informațiile merg întotdeauna într-o singură direcție.

Pentru ce sunt rețelele neuronale?

Rețelele neuronale sunt folosite pentru a rezolva probleme complexe care necesită calcule analitice similare cu cele ale creierului uman. Cele mai frecvente utilizări pentru rețelele neuronale sunt:

Clasificare- distributia datelor pe parametri. De exemplu, la intrare este dat un set de persoane și este necesar să decideți cui dintre ei să acorde un împrumut și cine nu. Acest lucru poate fi realizat printr-o rețea neuronală care analizează informații precum vârsta, solvabilitatea, istoricul de credit etc.

Previziune- capacitatea de a prezice următorul pas. De exemplu, creșterea sau scăderea unei acțiuni în funcție de situația de pe piața de valori.

Recunoaştere- în prezent, cea mai răspândită utilizare a rețelelor neuronale. Folosit pe Google atunci când cauți o fotografie sau în camerele telefoanelor când detectează poziția feței tale și o scoate în evidență și multe altele.

Acum, pentru a înțelege cum funcționează rețelele neuronale, să aruncăm o privire asupra componentelor și parametrilor acestora.

Ce este un neuron?

Un neuron este o unitate de calcul care primește informații, efectuează calcule simple asupra acesteia și o transmite în continuare. Acestea sunt împărțite în trei tipuri principale: intrare (albastru), ascuns (roșu) și ieșire (verde). Există, de asemenea, un neuron bias și un neuron context, despre care vom vorbi în articolul următor. În cazul în care o rețea neuronală este formată dintr-un număr mare de neuroni, se introduce termenul de strat. În consecință, există un strat de intrare care primește informații, n straturi ascunse (de obicei nu mai mult de 3) care o procesează și un strat de ieșire care scoate rezultatul. Fiecare dintre neuroni are 2 parametri principali: date de intrare și date de ieșire. În cazul unui neuron de intrare: input = output. În rest, informația totală a tuturor neuronilor din stratul anterior intră în câmpul de intrare, după care este normalizată folosind funcția de activare (deocamdată, doar reprezentați-o f (x)) și intră în câmpul de ieșire.


Important de reținut că neuronii operează cu numere în intervalul sau [-1,1]. Dar ce, vă întrebați, apoi gestionați numerele care ies din acest interval? În această etapă, cel mai simplu răspuns este să împărțiți 1 la acel număr. Acest proces se numește normalizare și este foarte des folosit în rețelele neuronale. Mai multe despre asta mai târziu.

Ce este o sinapsa?


Sinapsa este o conexiune între doi neuroni. Sinapsele au 1 parametru - greutatea. Datorită lui, informațiile de intrare se schimbă atunci când sunt transmise de la un neuron la altul. Să presupunem că există 3 neuroni care transmit informații celui următor. Apoi avem 3 greutăți corespunzătoare fiecăruia dintre acești neuroni. Pentru neuronul cu greutatea mai mare, această informație va fi dominantă în următorul neuron (de exemplu, amestecarea culorilor). De fapt, setul de greutăți al unei rețele neuronale sau al unei matrice de greutăți este un fel de creier al întregului sistem. Datorită acestor ponderi, informațiile de intrare sunt procesate și convertite într-un rezultat.

Important de reținut că în timpul inițializării rețelei neuronale, ponderile sunt repartizate aleatoriu.

Cum funcționează o rețea neuronală?


În acest exemplu, este descrisă o parte a unei rețele neuronale, unde literele I denotă neuronii de intrare, litera H denotă neuronul ascuns și litera w denotă greutățile. Din formula se poate observa că informațiile de intrare sunt suma tuturor datelor de intrare înmulțită cu ponderile corespunzătoare. Apoi dăm intrarea 1 și 0. Fie w1 = 0,4 și w2 = 0,7 Datele de intrare ale neuronului H1 vor fi următoarele: 1 * 0,4 + 0 * 0,7 = 0,4. Acum că avem intrarea, putem obține ieșirea conectând intrarea la funcția de activare (mai multe despre asta mai târziu). Acum că avem rezultatul, îl transmitem mai departe. Și așa, repetăm ​​pentru toate straturile până ajungem la neuronul de ieșire. Începând pentru prima dată o astfel de rețea, vom vedea că răspunsul este departe de a fi corect, deoarece rețeaua nu este antrenată. O vom instrui pentru a-și îmbunătăți rezultatele. Dar înainte de a învăța cum să facem acest lucru, să introducem câțiva termeni și proprietăți ale unei rețele neuronale.

Funcția de activare

O funcție de activare este o modalitate de a normaliza datele de intrare (am vorbit despre asta mai devreme). Adică, dacă aveți un număr mare la intrare, după ce l-ați trecut prin funcția de activare, veți obține o ieșire în intervalul de care aveți nevoie. Există o mulțime de funcții de activare, așa că le vom lua în considerare pe cele mai elementare: Liniară, Sigmoidă (Logistică) și Tangenta hiperbolică. Principala lor diferență este intervalul de valori.

Funcție liniară


Această funcție nu este aproape niciodată utilizată, cu excepția cazului în care trebuie să testați o rețea neuronală sau să transferați o valoare fără transformări.

Sigmoid


Aceasta este cea mai comună funcție de activare și intervalul său de valori. Pe el sunt afișate majoritatea exemplelor de pe web, uneori fiind numită și funcție logistică. În consecință, dacă în cazul dvs. există valori negative (de exemplu, stocurile pot crește nu numai în sus, ci și în scădere), atunci veți avea nevoie de o funcție care captează și valori negative.

Tangenta hiperbolica


Este logic să utilizați tangenta hiperbolică numai atunci când valorile dvs. pot fi atât negative, cât și pozitive, deoarece intervalul funcției este [-1,1]. Este nepotrivit să utilizați această funcție numai cu valori pozitive, deoarece va înrăutăți semnificativ rezultatele rețelei dvs. neuronale.

Set de antrenament

Un set de antrenament este o secvență de date pe care operează o rețea neuronală. În cazul nostru, excepțional sau (xor) avem doar 4 rezultate diferite, adică vom avea 4 seturi de antrenament: 0xor0 = 0, 0xor1 = 1, 1xor0 = 1.1xor1 = 0.

Repetare

Acesta este un fel de contor care crește de fiecare dată când rețeaua neuronală trece printr-un set de antrenament. Cu alte cuvinte, acesta este numărul total de seturi de antrenament traversate de rețeaua neuronală.

Epocă

La inițializarea rețelei neuronale, această valoare este setată la 0 și are un plafon setat manual. Cu cât epoca este mai mare, cu atât rețeaua este mai bine antrenată și, în consecință, rezultatul acesteia. Epoca crește de fiecare dată când parcurgem întregul set de seturi de antrenament, în cazul nostru, 4 seturi sau 4 iterații.


Important nu confundați iterația cu epoca și înțelegeți succesiunea creșterii lor. Primul N
odată ce iterația crește, apoi epoca și nu invers. Cu alte cuvinte, nu puteți antrena mai întâi o rețea neuronală doar pe un set, apoi pe altul etc. Trebuie să antrenezi fiecare set o dată pe eră. Astfel, puteți evita erorile în calcule.

Eroare

Eroarea este un procent care reprezintă discrepanța dintre răspunsurile așteptate și cele primite. Eroarea se formează în fiecare epocă și ar trebui să scadă. Dacă acest lucru nu se întâmplă, atunci faci ceva greșit. Eroarea poate fi calculată în moduri diferite, dar vom lua în considerare doar trei moduri principale: Eroare medie pătrată (în continuare MSE), Root MSE și Arctan. Nu există nicio restricție de utilizare ca în funcția de activare și sunteți liber să alegeți metoda care vă oferă cele mai bune rezultate. Trebuie doar să țineți cont de faptul că fiecare metodă numără erorile în moduri diferite. În Arctan, eroarea, aproape întotdeauna, va fi mai mare, deoarece funcționează conform principiului: cu cât diferența este mai mare, cu atât eroarea este mai mare. Root MSE va avea cea mai mică eroare, prin urmare, cel mai des este utilizat MSE, care păstrează un echilibru în calculul erorii.


Root MSE



Principiul calculării erorii este același în toate cazurile. Pentru fiecare set, numărăm eroarea, scăzând-o din răspunsul ideal. În plus, fie îl pătram, fie calculăm tangenta pătrată din această diferență, după care împărțim numărul rezultat la numărul de mulțimi.

Sarcină

Acum, pentru a vă testa, calculați rezultatul unei rețele neuronale date folosind un sigmoid și eroarea acesteia folosind MSE.

Date: I1 = 1, I2 = 0, w1 = 0,45, w2 = 0,78, w3 = -0,12, w4 = 0,13, w5 = 1,5, w6 = -2,3.

Rețele neuronale

Diagrama unei rețele neuronale simple. Marcat cu verde intrare elemente, în galben - zi libera element

Rețele neuronale artificiale(ANN) - modele matematice, precum și implementările lor software sau hardware, construite pe principiul organizării și funcționării rețelelor neuronale biologice - rețele de celule nervoase ale unui organism viu. Acest concept a apărut atunci când se studiază procesele care au loc în creier în timpul gândirii și când se încearcă modelarea acestor procese. Primul astfel de model de creier a fost perceptronul. Ulterior, aceste modele au început să fie folosite în scopuri practice, de regulă în probleme de prognoză.

Rețelele neuronale nu sunt programate în sensul obișnuit al cuvântului, ele sunt instruiți... Învățarea este unul dintre principalele avantaje ale rețelelor neuronale față de algoritmii tradiționali. Din punct de vedere tehnic, antrenamentul constă în găsirea coeficienților conexiunilor dintre neuroni. În timpul antrenamentului, rețeaua neuronală este capabilă să identifice dependențe complexe între datele de intrare și ieșire, precum și să efectueze generalizări. Aceasta înseamnă că, în cazul unui antrenament de succes, rețeaua va putea returna rezultatul corect pe baza datelor care au fost absente în setul de antrenament.

Cronologie

Aplicații cunoscute

Clustering

Clustering este înțeleasă ca împărțirea setului de semnale de intrare în clase, în timp ce nici numărul, nici caracteristicile claselor nu sunt cunoscute în prealabil. După antrenament, o astfel de rețea este capabilă să determine cărei clase îi aparține semnalul de intrare. Rețeaua poate semnala, de asemenea, că semnalul de intrare nu aparține niciunei dintre clasele selectate - acesta este un semn de date noi care lipsesc în eșantionul de antrenament. Astfel, o rețea similară poate identifica clase de semnal noi, necunoscute anterior... Corespondenta dintre clasele alocate de retea si clasele existente in domeniu se stabileste de catre o persoana. Clusteringul este realizat, de exemplu, de rețelele neuronale Kohonen.

Selecția experimentală a caracteristicilor rețelei

După alegerea structurii generale, trebuie să selectați experimental parametrii rețelei. Pentru rețele precum un perceptron, acesta va fi numărul de straturi, numărul de blocuri din straturi ascunse (pentru rețelele Word), prezența sau absența conexiunilor de bypass, funcțiile de transfer ale neuronilor. Atunci când alegeți numărul de straturi și neuroni din ele, ar trebui să pornim de la faptul că capacitatea rețelei de a se generaliza este mai mare, cu atât este mai mare numărul total de conexiuni între neuroni... Pe de altă parte, numărul de legături este delimitat de sus de numărul de înregistrări din datele de antrenament.

Selectarea experimentală a parametrilor de antrenament

După alegerea unei topologii specifice, este necesar să selectați parametrii pentru antrenarea rețelei neuronale. Această etapă este deosebit de importantă pentru rețelele supravegheate. Alegerea corectă a parametrilor depinde nu numai de cât de repede vor converge răspunsurile rețelei către răspunsurile corecte. De exemplu, alegerea unei rate de învățare scăzută va crește timpul de convergență, dar uneori evită paralizia rețelei. O creștere a momentului de învățare poate duce atât la o creștere, cât și la o scădere a timpului de convergență, în funcție de forma suprafeței de eroare. Pe baza unei astfel de influențe contradictorii a parametrilor, putem concluziona că valorile acestora ar trebui alese experimental, ghidați de criteriul finalizării antrenamentului (de exemplu, minimizarea erorii sau limitarea timpului de antrenament).

Formarea propriu-zisă a rețelei

În timpul antrenamentului, rețeaua scanează eșantionul de antrenament într-o anumită ordine. Ordinea de scanare poate fi secvențială, aleatorie etc. Unele rețele nesupravegheate, de exemplu, rețelele Hopfield, scanează eșantionul o singură dată. Altele, cum ar fi rețelele Kohonen și rețelele supravegheate, scanează eșantionul de mai multe ori, cu o trecere completă prin eșantion numit epoca învăţării... Când predați cu un profesor, setul de date inițiale este împărțit în două părți - eșantionul de formare în sine și datele testului; principiul separării poate fi arbitrar. Datele de antrenament sunt transmise rețelei pentru antrenament, iar datele de validare sunt utilizate pentru a calcula eroarea de rețea (datele de validare nu sunt niciodată folosite pentru a antrena rețeaua). Astfel, dacă eroarea datelor de testare scade, atunci rețeaua se generalizează. Dacă eroarea pe datele de antrenament continuă să scadă, iar eroarea pe datele de testare crește, atunci rețeaua a încetat să se mai generalizeze și pur și simplu „își amintește” datele de antrenament. Acest fenomen se numește supraadaptare sau supraadaptare a rețelei. În astfel de cazuri, antrenamentul este de obicei oprit. În timpul procesului de învățare, pot apărea și alte probleme, cum ar fi paralizia sau rețeaua atinge un minim local al suprafeței de eroare. Este imposibil să se prezică în avans manifestarea unei anumite probleme, precum și să se ofere recomandări clare pentru soluționarea lor.

Verificarea caracterului adecvat al instruirii

Chiar și în cazul învățării de succes, la prima vedere, rețeaua nu învață întotdeauna exact ce și-a dorit creatorul de la ea. Există un caz cunoscut când rețeaua a fost instruită să recunoască imagini ale tancurilor din fotografii, dar mai târziu s-a dovedit că toate tancurile au fost fotografiate pe același fundal. Drept urmare, rețeaua a „învățat” să recunoască acest tip de teren, în loc să „învețe” să recunoască tancurile. Astfel, rețeaua „înțelege” nu ceea ce i se cere, ci ceea ce este cel mai ușor de generalizat.

Clasificarea după tipul de informații de intrare

  • Rețele neuronale analogice (folosește informații sub formă de numere reale);
  • Rețele neuronale binare (funcționează cu informații prezentate în formă binară).

Clasificarea după natura învățării

  • Învățare supravegheată - spațiul de ieșire al soluțiilor de rețele neuronale este cunoscut;
  • Învățare nesupravegheată - o rețea neuronală formează spațiul de ieșire al soluțiilor bazate doar pe intrare. Astfel de rețele se numesc auto-organizare;
  • Reinforcement Learning este un sistem de atribuire a penalităților și recompenselor din mediu.

Clasificarea după natura acordării sinapselor

Clasificarea timpului de transmisie a semnalului

Într-un număr de rețele neuronale, funcția de activare poate depinde nu numai de coeficienții de ponderare a conexiunilor w ij, dar și asupra timpului de transmitere a unui impuls (semnal) prin canalele de comunicație τ ij... Prin urmare, în general, funcția de comunicare de activare (transmitere). c ij din element u i la element u j se pare ca:. Atunci rețea sincronă ij fiecare legătură este egală fie cu zero, fie cu o constantă fixă ​​τ. Asincron este o rețea pentru care timpul de transmisie τ ij pentru fiecare legătură între elemente u iși u j propriu, dar și constant.

Clasificarea după natura legăturilor

Rețele feedforward

Toate conexiunile sunt direcționate strict de la neuronii de intrare la neuronii de ieșire. Exemple de astfel de rețele sunt perceptronul lui Rosenblatt, perceptronul multistrat, rețelele Word.

Rețele neuronale recurente

Semnalul de la neuronii de ieșire sau neuronii stratului ascuns este transmis parțial înapoi la intrările neuronilor stratului de intrare (feedback). Rețeaua recurentă Rețeaua Hopfield „filtrează” datele de intrare, revenind la o stare staționară și, astfel, permite rezolvarea problemelor de compresie a datelor și construirea memoriei asociative. Rețelele bidirecționale sunt un caz special de rețele recurente. În astfel de rețele, există conexiuni între straturi atât în ​​direcția de la stratul de intrare la stratul de ieșire, cât și în direcția opusă. Exemplul clasic este rețeaua neuronală a lui Kosko.

Funcții de bază radială

Rețele neuronale artificiale care folosesc rețele de bază radială ca funcții de activare (astfel de rețele sunt abreviate ca rețele RBF). Vedere generală a funcției de bază radială:

, De exemplu,

Unde X este vectorul semnalelor de intrare ale neuronilor, σ este lățimea ferestrei funcției, φ ( y) este o funcție descrescătoare (cel mai adesea egală cu zero în afara unui anumit segment).

Rețeaua radială de bază este caracterizată de trei caracteristici:

1. Singurul strat ascuns

2. Numai neuronii stratului ascuns au o funcție de activare neliniară

3. Greutățile sinaptice ale conexiunilor straturilor de intrare și ascunse sunt egale cu unu

Despre procedura de instruire - vezi literatura de specialitate

Carduri de auto-organizare

Astfel de rețele reprezintă o rețea neuronală competitivă cu învățare nesupravegheată, îndeplinind sarcina de vizualizare și grupare. Este o metodă de proiectare a unui spațiu multidimensional într-un spațiu cu o dimensiune inferioară (cel mai adesea bidimensională), este folosită și pentru rezolvarea problemelor de modelare, prognoză etc. Este una dintre versiunile rețelelor neuronale ale lui Kohonen. Hărțile Kohonen auto-organizate sunt utilizate în principal pentru vizualizare și analiza inițială („explorativă”) a datelor.

Semnalul către rețeaua Kohonen ajunge la toți neuronii simultan, greutățile sinapselor corespunzătoare sunt interpretate ca coordonate ale poziției nodului, iar semnalul de ieșire este format conform principiului „câștigătorul ia totul” - adică neuronul cel mai apropiat (în sensul greutăților sinapselor) de semnalul de intrare are un obiect de semnal de ieșire diferit de zero. În procesul de antrenament, greutățile sinapselor sunt ajustate în așa fel încât nodurile rețelei să fie „locate” în locurile condensărilor de date locale, adică descriu structura cluster a norului de date, pe de altă parte, conexiunile dintre neuroni corespund relațiilor de vecinătate dintre clusterele corespunzătoare din spațiul caracteristic.

Este convenabil să se considere astfel de hărți ca rețele bidimensionale de noduri situate în spațiul multidimensional. Inițial, o hartă auto-organizată este o grilă de noduri, conectate prin legături. Kohonen a luat în considerare două opțiuni pentru conectarea nodurilor - într-o rețea dreptunghiulară și una hexagonală - diferența este că într-o rețea dreptunghiulară, fiecare nod este conectat la 4 noduri învecinate, iar într-o rețea hexagonală - la 6 noduri cele mai apropiate. Pentru două astfel de grile, procesul de construire a rețelei Kohonen diferă numai în locul în care sunt mutați vecinii cei mai apropiați de nodul dat.

Imbricarea inițială a rețelei în spațiul de date este arbitrară. Pachetul autorului SOM_PAK oferă opțiuni pentru o aranjare inițială aleatorie a nodurilor în spațiu și o opțiune pentru o aranjare a nodurilor într-un plan. După aceea, nodurile încep să se miște în spațiu conform următorului algoritm:

  1. Punctul de date este selectat aleatoriu X .
  2. Cel mai apropiat de X nod card (BMU - Best Matching Unit).
  3. Acest nod este mutat cu un pas dat spre x. Cu toate acestea, nu se mișcă singur, ci poartă de-a lungul unui anumit număr de noduri cele mai apropiate dintr-un anumit cartier de pe hartă. Dintre toate nodurile aflate în mișcare, nodul central - cel mai apropiat de punctul de date - este cel mai puternic deplasat, iar restul experimentează deplasări mai mici, cu cât sunt mai departe de BMU. Există două etape în reglarea hărții - etapa de comandă și etapa de reglare fină. În prima etapă, sunt selectate valori mari ale cartierului, iar mișcarea nodurilor este de natură colectivă - ca urmare, harta se „îndreaptă” și reflectă aproximativ structura datelor; în stadiul de reglare fină, raza vecinătății este 1–2 și pozițiile individuale ale nodurilor sunt ajustate. În plus, valoarea deplasării scade uniform în timp, adică este mare la începutul fiecărei etape de antrenament și aproape de zero la sfârșit.
  4. Algoritmul repetă un anumit număr de epoci (este clar că numărul de pași poate varia foarte mult în funcție de sarcină).

Tipuri de rețele cunoscute

  • Rețea Hamming;
  • Neocognitron;
  • Rețea neuronală haotică;
  • Counter Spread Network;
  • Rețea de funcții de bază radială (rețea RBF);
  • Rețea de regresie generalizată;
  • Rețea probabilistică;
  • rețea neuronală siameză;
  • Rețele de rezonanță adaptivă.

Diferențele față de mașinile cu arhitectură von Neumann

O lungă perioadă de evoluție a oferit creierului uman multe calități care sunt absente în mașinile cu arhitectură von Neumann:

  • Concurență în masă;
  • Prezentarea distribuită a informațiilor și calculelor;
  • Capacitate de a învăța și de a generaliza;
  • Adaptabilitate;
  • Proprietatea procesării informațiilor contextuale;
  • Toleranta la greseli;
  • Consum redus de putere.

Rețele neuronale - aproximatori universali

Rețelele neuronale sunt dispozitive universale de aproximare și pot simula orice automat continuu cu orice precizie. Este demonstrată o teoremă de aproximare generalizată: folosind operații liniare și o conexiune în cascadă, se poate obține un dispozitiv dintr-un element neliniar arbitrar care calculează orice funcție continuă cu orice precizie predeterminată. Aceasta înseamnă că caracteristica neliniară a unui neuron poate fi arbitrară: de la sigmoid la un pachet de unde arbitrare sau wavelet, sinusoid sau polinom. Complexitatea unei anumite rețele poate depinde de alegerea unei funcții neliniare, dar cu orice neliniaritate, rețeaua rămâne un aproximator universal și, cu alegerea corectă a structurii, poate aproxima funcționarea oricărui automat continuu cât de precis se dorește.

Exemple de aplicații

Prognoza serii temporale financiare

Date de intrare - prețul acțiunilor pentru anul. Sarcina este de a determina cursul de mâine. Se realizează următoarea transformare - cursul pentru azi, ieri, pentru alaltăieri, pentru alaltăieri este aliniat. Următorul rând este deplasat după dată cu o zi și așa mai departe. Pe setul rezultat, este antrenată o rețea cu 3 intrări și o ieșire - adică o ieșire: rata pentru o dată, intrări: rata pentru o dată minus 1 zi, minus 2 zile, minus 3 zile. Pentru rețeaua instruită depunem cursul pentru azi, ieri, alaltăieri și primim răspuns pentru mâine. Este ușor de observat că în acest caz rețeaua va afișa pur și simplu dependența unui parametru față de cei trei anteriori. Dacă este de dorit să se ia în considerare un alt parametru (de exemplu, indicele general pentru industrie), atunci trebuie adăugat ca intrare (și inclus în exemple), rețeaua trebuie recalificată și rezultate noi obținute. Pentru cel mai precis antrenament, merită să folosiți metoda ORO, deoarece este cea mai previzibilă și mai simplu de implementat.

Psihodiagnostic

O serie de lucrări de M. G. Dorrer și colab. este dedicată studiului problemei posibilității dezvoltării intuiției psihologice în sistemele experte în rețele neuronale. Rezultatele obținute oferă o abordare a dezvăluirii mecanismului de intuiție al rețelelor neuronale, care se manifestă atunci când rezolvă sarcini de psihodiagnostic. Creat non-standard pentru tehnicile computerizate intuitiv abordarea psihodiagnosticului, care constă în excluderea construcției realitatea descrisă... Vă permite să scurtați și să simplificați munca la tehnicile de psihodiagnostic.

Chimioinformatica

Rețelele neuronale sunt utilizate pe scară largă în cercetarea chimică și biochimică. În prezent, rețelele neuronale sunt una dintre cele mai răspândite metode de chimioinformatică pentru găsirea relațiilor cantitative structură-proprietate, datorită cărora sunt utilizate în mod activ atât pentru prezicerea proprietăților fizico-chimice, cât și a activității biologice a substanțelor chimice. compuși și pentru proiectarea direcțională a compușilor chimici și a materialelor cu proprietăți predeterminate, inclusiv în dezvoltarea de noi medicamente.

Note (editare)

  1. McCulloch W.S., Pitts W., Calcul logic al ideilor legate de activitatea nervoasă // În colecție: „Automate” ed. C.E. Shannon și J. McCarthy. - M .: Editura străină. lit., 1956 .-- p. 363-384. (Traducerea unui articol în engleză din 1943)
  2. Recunoașterea modelelor și controlul adaptiv. BERNARD WIDROW
  3. Widrow B., Stearns S., Procesare adaptivă a semnalului. - M .: Radio și comunicare, 1989 .-- 440 p.
  4. Werbos P.J., Dincolo de regresie: noi instrumente pentru predicție și analiză în științele comportamentale. Ph.D. teză, Universitatea Harvard, Cambridge, MA, 1974.
  5. Galușkin A.I. Sinteza sistemelor de recunoaștere a modelelor multistrat. - M .: „Energie”, 1974.
  6. Rumelhart D.E., Hinton G.E., Williams R.J., Învățarea reprezentărilor interne prin propagarea erorilor. În: Parallel Distributed Processing, vol. 1, pp. 318-362. Cambridge, MA, MIT Press. 1986.
  7. Bartsev S.I., Okhonin V.A. Rețele adaptive de procesare a informațiilor. Krasnoyarsk: Institutul de Fizică, Filiala Siberiană a Academiei de Științe a URSS, 1986. Preprint N 59B. - 20 p.
  8. Laboratoarele BaseGroup - Aplicarea practică a rețelelor neuronale în probleme de clasificare
  9. Acest tip de codificare este uneori denumit cod „1 din N”.
  10. Sisteme deschise - o introducere în rețelele neuronale
  11. Mirkes E.M., Rețele neuronale transparente logic și producția de cunoștințe explicite din date, În cartea: Neuroinformatică / A. N. Gorban, V. L. Dunin-Barkovsky, A. N. Kirdinși altele - Novosibirsk: Știință. Siberian Enterprise RAS, 1998 .-- 296 cu ISBN 5020314102
  12. Menționează această poveste în revista Popular Mechanics
  13. http://www.intuit.ru/department/expert/neuro/10/ INTUIT.ru - Rețele recurente ca dispozitive de stocare asociative]
  14. Kohonen, T. (1989/1997/2001), Hărți de auto-organizare, Berlin - New York: Springer-Verlag. Prima ediție 1989, a doua ediție 1997, a treia ediție extinsă 2001, ISBN 0-387-51387-6, ISBN 3-540-67921-9
  15. A. Yu. Zinoviev Vizualizarea datelor multidimensionale. - Krasnoyarsk: Ed. Universitatea Tehnică de Stat din Krasnoyarsk, 2000 .-- 180 p.
  16. Gorban A. N., Teorema de aproximare generalizată și capabilitățile de calcul ale rețelelor neuronale, Siberian Journal of Computational Mathematics, 1998. Vol. 1, No. 1. P. 12-24.
  17. Gorban A.N., Rossiyev D.A., Dorrer M.G., MultiNeuron - Simulator de rețele neuronale pentru aplicații medicale, fiziologice și psihologice, Wcnn'95, Washington, DC: Congresul mondial privind rețelele neuronale 1995 Reuniunea anuală a Societății internaționale de rețele neuronale: Hotel Renaissance, Washington, DC, SUA, 17-21 iulie, 1995.
  18. Dorrer M.G., Intuiția psihologică a rețelelor neuronale artificiale, Diss. ... 1998. Alte exemplare online:,
  19. Baskin I.I., Palyulin V.A., Zefirov N.S., Aplicarea rețelelor neuronale artificiale în cercetarea chimică și biochimică, Vestn. Moscova Un-Ta. Ser. 2. Chimie. 1999. Vol. 40. nr. 5.
  20. Galberstam N.M., Baskin I.I., Palyulin V.A., Zefirov N.S. Rețelele neuronale ca metodă de găsire a structurii dependențelor - proprietatea compușilor organici // Progrese în chimie... - 2003. - T. 72. - Nr. 7. - S. 706-727.
  21. Baskin I.I., Palyulin V.A., Zefirov N.S. Perceptroni multistrat în studiul relațiilor structură-proprietate pentru compuși organici // Russian Chemical Journal (Jurnalul Societății Ruse de Chimie, numit după D.I. Mendeleev)... - 2006. - T. 50. - S. 86-96.

Legături

  • Artificial Neural Network for PHP 5.x - Proiect serios de dezvoltare a rețelelor neuronale în limbajul de programare PHP 5.X
  • Forum despre rețele neuronale și algoritmi genetici
  • Mirkes E.M., Neuroinformatică: manual. un manual pentru elevi cu programe de lucru de laborator.
  • Exemple pas cu pas de implementare a celor mai faimoase tipuri de rețele neuronale în MATLAB, Neural Network Toolbox
  • O selecție de materiale privind rețelele neuronale și analiza predictivă
  • aplicarea adversară a rețelelor neuronale în predicția prețurilor acțiunilor
În consecință, rețeaua neuronală ia două numere ca intrare și trebuie să dea un alt număr la ieșire - răspunsul. Acum despre rețelele neuronale în sine.

Ce este o rețea neuronală?


O rețea neuronală este o secvență de neuroni conectați prin sinapse. Structura rețelei neuronale a venit în lumea programării direct din biologie. Datorită acestei structuri, mașina dobândește capacitatea de a analiza și chiar de a memora diverse informații. Rețelele neuronale sunt, de asemenea, capabile nu numai să analizeze informațiile primite, ci și să le reproducă din memoria lor. Pentru cei interesați, asigurați-vă că vizionați 2 videoclipuri de la TED Talks: Videoclipul 1 , Videoclipul 2). Cu alte cuvinte, o rețea neuronală este o mașină de interpretare a creierului uman, care conține milioane de neuroni care transmit informații sub formă de impulsuri electrice.

Ce sunt rețelele neuronale?

Deocamdată, vom lua în considerare exemple despre cel mai elementar tip de rețele neuronale - aceasta este o rețea feedforward (denumită în continuare FNS). De asemenea, în articolele următoare voi introduce mai multe concepte și vă voi vorbi despre rețelele neuronale recurente. DSS, după cum sugerează și numele, este o rețea cu o conexiune serială de straturi neuronale, în care informațiile merg întotdeauna într-o singură direcție.

Pentru ce sunt rețelele neuronale?

Rețelele neuronale sunt folosite pentru a rezolva probleme complexe care necesită calcule analitice similare cu cele ale creierului uman. Cele mai frecvente utilizări pentru rețelele neuronale sunt:

Clasificare- distributia datelor pe parametri. De exemplu, la intrare este dat un set de persoane și este necesar să decideți cui dintre ei să acorde un împrumut și cine nu. Acest lucru poate fi realizat printr-o rețea neuronală care analizează informații precum vârsta, solvabilitatea, istoricul de credit etc.

Previziune- capacitatea de a prezice următorul pas. De exemplu, creșterea sau scăderea unei acțiuni în funcție de situația de pe piața de valori.

Recunoaştere- în prezent, cea mai răspândită utilizare a rețelelor neuronale. Folosit pe Google atunci când cauți o fotografie sau în camerele telefoanelor când detectează poziția feței tale și o scoate în evidență și multe altele.

Acum, pentru a înțelege cum funcționează rețelele neuronale, să aruncăm o privire asupra componentelor și parametrilor acestora.

Ce este un neuron?


Un neuron este o unitate de calcul care primește informații, efectuează calcule simple asupra acesteia și o transmite în continuare. Acestea sunt împărțite în trei tipuri principale: intrare (albastru), ascuns (roșu) și ieșire (verde). Există, de asemenea, un neuron bias și un neuron context, despre care vom vorbi în articolul următor. În cazul în care o rețea neuronală este formată dintr-un număr mare de neuroni, se introduce termenul de strat. În consecință, există un strat de intrare care primește informații, n straturi ascunse (de obicei nu mai mult de 3) care o procesează și un strat de ieșire care scoate rezultatul. Fiecare dintre neuroni are 2 parametri principali: date de intrare și date de ieșire. În cazul unui neuron de intrare: input = output. În rest, informația totală a tuturor neuronilor din stratul anterior intră în câmpul de intrare, după care este normalizată folosind funcția de activare (deocamdată, doar reprezentați-o f (x)) și intră în câmpul de ieșire.


Important de reținut că neuronii operează cu numere în intervalul sau [-1,1]. Dar ce, vă întrebați, apoi gestionați numerele care ies din acest interval? În această etapă, cel mai simplu răspuns este să împărțiți 1 la acel număr. Acest proces se numește normalizare și este foarte des folosit în rețelele neuronale. Mai multe despre asta mai târziu.

Ce este o sinapsa?


Sinapsa este o conexiune între doi neuroni. Sinapsele au 1 parametru - greutatea. Datorită lui, informațiile de intrare se schimbă atunci când sunt transmise de la un neuron la altul. Să presupunem că există 3 neuroni care transmit informații celui următor. Apoi avem 3 greutăți corespunzătoare fiecăruia dintre acești neuroni. Pentru neuronul cu greutatea mai mare, această informație va fi dominantă în următorul neuron (de exemplu, amestecarea culorilor). De fapt, setul de greutăți al unei rețele neuronale sau al unei matrice de greutăți este un fel de creier al întregului sistem. Datorită acestor ponderi, informațiile de intrare sunt procesate și convertite într-un rezultat.

Important de reținut că în timpul inițializării rețelei neuronale, ponderile sunt repartizate aleatoriu.

Cum funcționează o rețea neuronală?


În acest exemplu, este descrisă o parte a unei rețele neuronale, unde literele I denotă neuronii de intrare, litera H denotă neuronul ascuns și litera w denotă greutățile. Din formula se poate observa că informațiile de intrare sunt suma tuturor datelor de intrare înmulțită cu ponderile corespunzătoare. Apoi dăm intrarea 1 și 0. Fie w1 = 0,4 și w2 = 0,7 Datele de intrare ale neuronului H1 vor fi următoarele: 1 * 0,4 + 0 * 0,7 = 0,4. Acum că avem intrarea, putem obține ieșirea conectând intrarea la funcția de activare (mai multe despre asta mai târziu). Acum că avem rezultatul, îl transmitem mai departe. Și așa, repetăm ​​pentru toate straturile până ajungem la neuronul de ieșire. Începând pentru prima dată o astfel de rețea, vom vedea că răspunsul este departe de a fi corect, deoarece rețeaua nu este antrenată. O vom instrui pentru a-și îmbunătăți rezultatele. Dar înainte de a învăța cum să facem acest lucru, să introducem câțiva termeni și proprietăți ale unei rețele neuronale.

Funcția de activare

O funcție de activare este o modalitate de a normaliza datele de intrare (am vorbit despre asta mai devreme). Adică, dacă aveți un număr mare la intrare, după ce l-ați trecut prin funcția de activare, veți obține o ieșire în intervalul de care aveți nevoie. Există o mulțime de funcții de activare, așa că le vom lua în considerare pe cele mai elementare: Liniară, Sigmoidă (Logistică) și Tangenta hiperbolică. Principala lor diferență este intervalul de valori.

Funcție liniară


Această funcție nu este aproape niciodată utilizată, cu excepția cazului în care trebuie să testați o rețea neuronală sau să transferați o valoare fără transformări.

Sigmoid


Aceasta este cea mai comună funcție de activare și intervalul său de valori. Pe el sunt afișate majoritatea exemplelor de pe web, uneori fiind numită și funcție logistică. În consecință, dacă în cazul dvs. există valori negative (de exemplu, stocurile pot crește nu numai în sus, ci și în scădere), atunci veți avea nevoie de o funcție care captează și valori negative.

Tangenta hiperbolica


Este logic să utilizați tangenta hiperbolică numai atunci când valorile dvs. pot fi atât negative, cât și pozitive, deoarece intervalul funcției este [-1,1]. Este nepotrivit să utilizați această funcție numai cu valori pozitive, deoarece va înrăutăți semnificativ rezultatele rețelei dvs. neuronale.

Set de antrenament

Un set de antrenament este o secvență de date pe care operează o rețea neuronală. În cazul nostru, exclusiv sau (xor) avem doar 4 rezultate diferite, adică vom avea 4 seturi de antrenament: 0xor0 = 0, 0xor1 = 1, 1xor0 = 1.1xor1 = 0.

Repetare

Acesta este un fel de contor care crește de fiecare dată când rețeaua neuronală trece printr-un set de antrenament. Cu alte cuvinte, acesta este numărul total de seturi de antrenament traversate de rețeaua neuronală.

Epocă

La inițializarea rețelei neuronale, această valoare este setată la 0 și are un plafon setat manual. Cu cât epoca este mai mare, cu atât rețeaua este mai bine antrenată și, în consecință, rezultatul acesteia. Epoca crește de fiecare dată când parcurgem întregul set de seturi de antrenament, în cazul nostru, 4 seturi sau 4 iterații.


Important nu confundați iterația cu epoca și înțelegeți succesiunea creșterii lor. Primul N
odată ce iterația crește, apoi epoca și nu invers. Cu alte cuvinte, nu puteți antrena mai întâi o rețea neuronală doar pe un set, apoi pe altul etc. Trebuie să antrenezi fiecare set o dată pe eră. Astfel, puteți evita erorile în calcule.

Eroare

Eroarea este un procent care reprezintă discrepanța dintre răspunsurile așteptate și cele primite. Eroarea se formează în fiecare epocă și ar trebui să scadă. Dacă acest lucru nu se întâmplă, atunci faci ceva greșit. Eroarea poate fi calculată în moduri diferite, dar vom lua în considerare doar trei moduri principale: Eroare medie pătrată (în continuare MSE), Root MSE și Arctan. Nu există nicio restricție de utilizare ca în funcția de activare și sunteți liber să alegeți metoda care vă oferă cele mai bune rezultate. Trebuie doar să țineți cont de faptul că fiecare metodă numără erorile în moduri diferite. În Arctan, eroarea, aproape întotdeauna, va fi mai mare, deoarece funcționează conform principiului: cu cât diferența este mai mare, cu atât eroarea este mai mare. Root MSE va avea cea mai mică eroare, prin urmare, cel mai des este utilizat MSE, care păstrează un echilibru în calculul erorii.

Top articole similare