Rețele neuronale: ce sunt și cum le folosesc mărcile. În curând, toată lumea va putea să-și creeze propria rețea neuronală

30.07.2019 Photoshop 3D

O rețea neuronală artificială este o colecție de neuroni care interacționează între ei. Sunt capabili să primească, să prelucreze și să creeze date. Este la fel de greu de imaginat ca și funcționarea creierului uman. Rețeaua neuronală funcționează în creierul nostru, astfel încât să puteți citi asta acum: neuronii noștri recunosc literele și le pun în cuvinte.

O rețea neuronală artificială este ca un creier. A fost programat inițial pentru a simplifica unele procese de calcul complexe. Astăzi rețelele neuronale au multe mai multe posibilitati. Unele dintre ele sunt pe smartphone-ul tău. O altă parte a înregistrat deja în baza sa de date că ați deschis acest articol. Cum se întâmplă toate acestea și de ce, citiți mai departe.

Cum a început totul

Oamenii au vrut cu adevărat să înțeleagă de unde vine mintea unei persoane și cum funcționează creierul. La mijlocul secolului trecut, neuropsihologul canadian Donald Hebb și-a dat seama de acest lucru. Hebb a studiat interacțiunea neuronilor între ei, a investigat principiul prin care aceștia sunt combinați în grupuri (în termeni științifici - ansambluri) și a propus primul algoritm din știință pentru antrenarea rețelelor neuronale.

Câțiva ani mai târziu, un grup de oameni de știință americani a modelat o rețea neuronală artificială care ar putea distinge formele pătrate de alte forme.

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

Cercetătorii au descoperit că o rețea neuronală este o colecție de straturi de neuroni, fiecare dintre acestea fiind responsabil pentru recunoașterea unui anumit criteriu: formă, culoare, dimensiune, textură, sunet, volum etc. An de an, ca urmare a milioane de experimente și tone de calcule, cea mai simplă rețea S-au adăugat din ce în ce mai multe straturi de neuroni. Ei lucrează pe rând. De exemplu, primul determină dacă un pătrat este sau nu pătrat, al doilea înțelege dacă un pătrat este roșu sau nu, al treilea calculează dimensiunea pătratului și așa mai departe. Nu pătratele, nu roșii și formele de dimensiuni necorespunzătoare ajung în noi grupuri de neuroni și sunt explorate de aceștia.

Ce sunt rețelele neuronale și ce pot face ele?

Oamenii de știință au dezvoltat rețele neuronale astfel încât să poată distinge între imagini complexe, videoclipuri, texte și vorbire. Există multe tipuri de rețele neuronale astăzi. Ele sunt clasificate în funcție de arhitectură - seturi de parametri de date și ponderea acestor parametri, o anumită prioritate. Mai jos sunt câteva dintre ele.

Rețele neuronale convoluționale

Neuronii sunt împărțiți în grupuri, fiecare grup calculează o caracteristică care îi este dată. În 1993, omul de știință francez Yann LeCun a arătat lumii LeNet 1, prima rețea neuronală convoluțională care putea recunoaște rapid și precis numerele scrise de mână pe hârtie. Vedeți singuri:

Astăzi, rețelele neuronale convoluționale sunt folosite în principal în scopuri multimedia: funcționează cu grafică, audio și video.

Rețele neuronale recurente

Neuronii își amintesc secvențial informațiile și construiesc acțiuni suplimentare pe baza acestor date. În 1997, oamenii de știință germani au modificat cele mai simple rețele recurente în rețele cu memorie pe termen scurt. Pe baza acestora, au fost apoi dezvoltate rețele cu neuroni recurenți controlați.

Astăzi, cu ajutorul unor astfel de rețele, textele sunt scrise și traduse, boții sunt programați să conducă dialoguri semnificative cu oamenii și sunt create coduri de pagină și de program.

Utilizarea acestui tip de rețele neuronale este o oportunitate de a analiza și genera date, de a compila baze de date și chiar de a face predicții.

În 2015, SwiftKey a lansat prima tastatură din lume care rulează pe o rețea neuronală recurentă cu neuroni controlați. Apoi, sistemul a oferit indicii în timp ce tastai pe baza ultimelor cuvinte introduse. Anul trecut, dezvoltatorii au antrenat o rețea neuronală pentru a studia contextul textului tastat, iar sugestiile au devenit semnificative și utile:

Rețele neuronale combinate (convoluționale + recurente)

Astfel de rețele neuronale sunt capabile să înțeleagă ce este în imagine și să o descrie. Și invers: desenați imagini conform descrierii. Cel mai izbitor exemplu a fost demonstrat de Kyle MacDonald, care a luat o rețea neuronală pentru o plimbare prin Amsterdam. Rețeaua a determinat instantaneu ce era în fața ei. Și aproape întotdeauna exact:

Rețelele neuronale sunt în mod constant de auto-învățare. Prin acest proces:

1. Skype a introdus capabilități de traducere simultană pentru 10 limbi. Printre care, pentru o clipă, se numără rusă și japoneza – unele dintre cele mai dificile din lume. Desigur, calitatea traducerii necesită o îmbunătățire serioasă, dar însuși faptul că acum poți comunica cu colegii din Japonia în limba rusă și să fii sigur că vei fi înțeles este inspirant.

2. Yandex a creat două bazate pe rețele neuronale algoritm de căutare: „Palekh” și „Korolev”. Primul a ajutat la găsirea celor mai relevante site-uri pentru interogări cu frecvență joasă. „Palekh” a studiat titlurile paginilor și a comparat sensul acestora cu sensul cererilor. Bazat pe Palekh, a apărut Korolev. Acest algoritm evaluează nu numai titlul, ci și întregul conținut text al paginii. Căutarea devine din ce în ce mai precisă, iar proprietarii de site-uri încep să abordeze mai inteligent conținutul paginii.

3. Colegii SEO de la Yandex au creat o rețea neuronală muzicală: compune poezie și scrie muzică. Neurogrupul se numește simbolic Neurona și are deja primul album:

4. Google Inbox folosește rețele neuronale pentru a răspunde la mesaje. Dezvoltarea tehnologiei este în plină desfășurare, iar astăzi rețeaua studiază deja corespondența și generează opțiuni posibile răspuns. Nu trebuie să pierdeți timpul tastând și nu vă fie teamă să uitați un acord important.

5. YouTube folosește rețelele neuronale pentru a clasifica videoclipurile și în conformitate cu două principii simultan: o rețea neuronală studiază videoclipurile și reacțiile publicului la acestea, cealaltă efectuează cercetări asupra utilizatorilor și preferințele acestora. De aceea Recomandări YouTube mereu la subiect.

6. Facebook lucrează activ la DeepText AI, un program de comunicare care înțelege jargonul și curăță conversațiile de limbaj obscen.

7. Aplicații precum Prisma și Fabby, construite pe rețele neuronale, creează imagini și videoclipuri:

Colorize restabilește culorile în fotografiile alb-negru (surpriză bunicii!).

MakeUp Plus selectează rujul perfect pentru fete dintr-o gamă reală de mărci reale: Bobbi Brown, Clinique, Lancome și YSL sunt deja în afaceri.


8.
Apple și Microsoft își actualizează constant Siri și Contana neuronale. Deocamdată doar ne execută comenzile, dar în viitorul apropiat vor începe să ia inițiativa: să dea recomandări și să ne anticipeze dorințele.

Ce ne mai așteaptă în viitor?

Rețelele neuronale de auto-învățare pot înlocui oamenii: vor începe cu redactori și corectori. Roboții creează deja texte cu sens și fără erori. Și o fac în mod semnificativ mai repede decât oamenii. Vor continua cu angajații call center, suport tehnic, moderatori și administratori ai paginilor publice de pe rețelele de socializare. Rețelele neuronale sunt deja capabile să învețe un scenariu și să-l reproducă cu o voce. Dar celelalte zone?

Sectorul agricol

Rețeaua neuronală va fi implementată în echipamente speciale. Secerătorii vor pilota automat, vor scana plantele și vor studia solul, transmițând date către o rețea neuronală. Ea va decide dacă uda, fertiliza sau pulverizează împotriva dăunătorilor. În loc de câteva zeci de muncitori, veți avea nevoie de cel mult doi specialiști: un supervizor și unul tehnic.

Medicament

În prezent, Microsoft lucrează activ la crearea unui remediu pentru cancer. Oamenii de știință sunt implicați în bioprogramare - încearcă să digitalizeze procesul de apariție și dezvoltare a tumorilor. Când totul va funcționa, programatorii vor putea găsi o modalitate de a bloca un astfel de proces și un medicament va fi creat prin analogie.

Marketing

Marketingul este foarte personalizat. Deja acum, rețelele neuronale pot determina în câteva secunde ce conținut să îi arate cărui utilizator și la ce preț. În viitor, participarea marketerului la proces va fi redusă la minimum: rețelele neuronale vor prezice interogări pe baza datelor despre comportamentul utilizatorilor, vor scana piața și vor oferi cele mai potrivite oferte până în momentul în care o persoană se gândește la cumpărare.

Comerț electronic

Comerțul electronic va fi implementat peste tot. Nu mai trebuie să intri în magazinul online folosind un link: poți cumpăra tot ce vezi cu un singur clic. De exemplu, citiți acest articol câțiva ani mai târziu. Îți place foarte mult rujul din captura de ecran din aplicația MakeUp Plus (vezi mai sus). Faceți clic pe el și mergeți direct la coș. Sau urmăriți un videoclip despre ultimul model Hololens (ochelari de realitate mixtă) și plasați imediat o comandă direct de pe YouTube.

În aproape fiecare domeniu, vor fi apreciați specialiști cu cunoștințe sau cel puțin înțelegere a structurii rețelelor neuronale, a învățării automate și a sistemelor. inteligenţă artificială. Vom exista cu roboți unul lângă altul. Și cu cât știm mai multe despre ele, cu atât viața noastră va fi mai calmă.

P.S. Zinaida Falls este o rețea neuronală Yandex care scrie poezie. Evaluați munca pe care mașina a scris-o după ce a fost instruită de Mayakovsky (ortografie și punctuație păstrate):

« Acest»

Acest
doar totul
ceva
în viitor
si putere
persoana respectivă
este totul în lume sau nu
e sânge peste tot
a face unii cu alții
ingrasand
glorie pentru
teren
cu o bubuitură în cioc

Impresionant, nu?

De data aceasta am decis să studiez rețelele neuronale. Am reușit să dobândesc abilități de bază în această chestiune în vara și toamna lui 2015. Prin abilități de bază, vreau să spun că pot crea o rețea neuronală simplă de la zero. Puteți găsi exemple în depozitele mele GitHub. În acest articol, voi oferi câteva explicații și voi împărtăși resurse pe care le puteți găsi utile în studiul dumneavoastră.

Pasul 1. Neuroni și metoda feedforward

Deci, ce este o „rețea neuronală”? Să așteptăm cu asta și să ne ocupăm mai întâi de un neuron.

Un neuron este ca o funcție: ia mai multe valori ca intrare și returnează una.

Cercul de mai jos reprezintă un neuron artificial. Primește 5 și returnează 1. Intrarea este suma celor trei sinapse conectate la neuron (trei săgeți în stânga).

În partea stângă a imaginii vedem 2 valori de intrare (în verde) și un offset (în maro).

Datele de intrare pot fi reprezentări numerice a două proprietăți diferite. De exemplu, la crearea unui filtru de spam, acestea ar putea însemna prezența a mai mult de un cuvânt scris cu MAJUSCULE și prezența cuvântului „Viagra”.

Valorile de intrare sunt înmulțite cu așa-numitele „greutăți”, 7 și 3 (evidențiate cu albastru).

Acum adăugăm valorile rezultate cu offset și obținem un număr, în cazul nostru 5 (evidențiat cu roșu). Aceasta este intrarea neuronului nostru artificial.

Apoi neuronul efectuează un calcul și produce o valoare de ieșire. Avem 1 pentru că valoarea rotunjită a sigmoidului la punctul 5 este 1 (vom vorbi mai detaliat despre această funcție mai târziu).

Dacă acesta ar fi un filtru de spam, faptul că ieșirea 1 ar însemna că textul a fost marcat ca spam de către neuron.

Ilustrație a unei rețele neuronale de pe Wikipedia.

Dacă combinați acești neuroni, obțineți o rețea neuronală care se propagă direct - procesul merge de la intrare la ieșire, prin neuroni conectați prin sinapse, ca în imaginea din stânga.

Pasul 2. Sigmoid

După ce ați urmărit lecțiile Welch Labs, este o idee bună să consultați Săptămâna 4 din cursul de învățare automată al Coursera despre rețelele neuronale, pentru a vă ajuta să înțelegeți cum funcționează acestea. Cursul intră foarte adânc în matematică și se bazează pe Octave, în timp ce eu prefer Python. Din această cauză am sărit peste exerciții și am învățat totul cunoștințe necesare din videoclip.

Un sigmoid mapează pur și simplu valoarea ta (pe axa orizontală) într-un interval de la 0 la 1.

Prima mea prioritate a fost să studiez sigmoidul, așa cum a figurat în multe aspecte ale rețelelor neuronale. Știam deja ceva despre asta din a treia săptămână a cursului mai sus menționat, așa că am urmărit videoclipul de acolo.

Dar nu vei ajunge departe doar cu videoclipurile. Pentru înţelegere deplină Am decis să-l codez singur. Așa că am început să scriu o implementare a unui algoritm de regresie logistică (care folosește un sigmoid).

A durat o zi întreagă, iar rezultatul a fost cu greu satisfăcător. Dar nu contează, pentru că mi-am dat seama cum funcționează totul. Codul poate fi văzut.

Nu trebuie să faceți acest lucru singur, deoarece necesită cunoștințe speciale - principalul lucru este că înțelegeți cum funcționează sigmoidul.

Pasul 3. Metoda de backpropagation

Înțelegerea modului în care funcționează o rețea neuronală de la intrare la ieșire nu este atât de dificilă. Este mult mai dificil de înțeles cum o rețea neuronală învață din seturile de date. Principiul pe care l-am folosit se numește

Salutare tuturor!

Chiar ieri am găsit cartea lui Tariq Rashid „Creează-ți propria rețea neuronală”. Cartea este un bestseller (top 1 vânzări) în secțiunea „Inteligentă artificială”. Cartea este nouă, publicată anul trecut.

Impresiile de la primele secțiuni sunt minunate. Una dintre cele mai bune introduceri în domeniul rețelelor neuronale pe care le-am văzut vreodată. Mi-a plăcut atât de mult cartea încât am decis să o traduc în rusă și să o postez aici sub formă de articole. O parte din materialul din carte va fi folosit pentru a îmbunătăți capitolele existente, iar unele pentru următoarele.

Am tradus deja primele două secțiuni ale capitolului 1. Puteți aceste secțiuni.

Citiți - bucurați-vă!

Capitolul 1 Cum funcționează?

1.1 Ușor pentru mine, greu pentru tine

Toate computerele sunt calculatoare în inima. Ei pot număra foarte repede.

Nu ar trebui să-i învinovățiți pentru asta. Își fac treaba bine: calculează prețul ținând cont de reducere, calculează dobânda datoriei, desenează grafice pe baza datelor disponibile și așa mai departe.

Chiar și a viziona la televizor sau a asculta muzică pe un computer implică efectuarea unei cantități uriașe de operații aritmetice din nou și din nou. Poate suna surprinzator, dar redarea fiecarui cadru al unei imagini din zerouri si cele obtinute prin Internet presupune calcule care nu sunt cu mult mai complexe decat problemele pe care le-am rezolvat cu totii la scoala.

Cu toate acestea, capacitatea unui computer de a adăuga mii și milioane de numere pe secundă nu este deloc inteligență artificială. Este dificil pentru o persoană să adauge numere atât de repede, dar trebuie să fiți de acord că această muncă nu necesită cheltuieli intelectuale serioase. Trebuie să respectați un algoritm cunoscut anterior pentru adăugarea numerelor și nimic mai mult. Aceasta este ceea ce fac toate computerele - ele aderă la un algoritm clar.

Totul este clar cu computerele. Acum să vorbim despre ce suntem buni în comparație cu ei.

Privește imaginile de mai jos și stabilește ce arată acestea:

Vedeți fețele oamenilor în prima imagine, fața pisicii în a doua și copacul în a treia. Ați recunoscut obiectele din aceste imagini? Vă rugăm să rețineți că aveți nevoie doar de o privire pentru a înțelege fără greșeală ce este înfățișat pe ele. Rareori greșim în privința acestor lucruri.

Percepem instantaneu și fără prea multe dificultăți cantitatea uriașă de informații pe care o conțin imaginile și identificăm foarte precis obiectele din ele. Dar pentru orice computer o astfel de sarcină va fi o provocare.

Orice computer, indiferent de complexitatea și viteza sa, îi lipsește o calitate importantă - inteligența, pe care o posedă fiecare persoană.

Dar vrem să învățăm computerele să rezolve astfel de probleme pentru că sunt rapide și nu obosesc. Inteligența artificială este implicată în mod special în rezolvarea problemelor de acest gen.

Desigur, computerele vor continua să fie formate din microcircuite. Sarcina inteligenței artificiale este să găsească noi algoritmi munca pe calculator care vă va permite să rezolvați probleme intelectuale. Acești algoritmi nu sunt întotdeauna perfecți, dar își duc treaba și fac ca computerul să pară să se comporte ca un om.

Puncte cheie

  • Există sarcini pentru care sunt ușor de făcut calculatoare obișnuite, dar provocând dificultăți și oameni. De exemplu, înmulțirea unui milion de numere între ele.
  • Pe de altă parte, există sarcini la fel de importante, care sunt incredibil de dificile pentru un computer și nu cauzează probleme oamenilor. De exemplu, recunoașterea fețelor în fotografii.

1.2 Mașină predictivă simplă

Să începem cu ceva foarte simplu. În continuare, ne vom baza pe materialul studiat în această secțiune.

Imaginați-vă o mașină care primește o întrebare, „se gândește” la ea și apoi produce un răspuns. În exemplul de mai sus, ați primit o imagine ca intrare, ați analizat-o cu ajutorul creierului și ați făcut o concluzie despre obiectul care este înfățișat în ea. Arata cam asa:

Calculatoarele nu „gândesc” nimic. Pur și simplu folosesc cunoscute anterior operatii aritmetice. Deci, să numim pică un pică:

Calculatorul preia unele date ca intrare, efectuează calculele necesare și produce un rezultat final. Luați în considerare următorul exemplu. Dacă computerul primește expresia ​\(3 \times 4 \) ​ ca intrare, aceasta este convertită într-o succesiune mai simplă de adunări. Ca rezultat, obținem rezultatul - 12.

Nu pare prea impresionant. E bine. Cu aceste exemple banale veți vedea ideea pe care o implementează rețelele neuronale.

Acum imaginați-vă o mașină care transformă kilometri în mile:

Acum imaginați-vă că nu știm formula prin care kilometrii sunt convertiți în mile. Știm doar că relația dintre aceste două mărimi liniar. Aceasta înseamnă că dacă dublăm distanța în mile, atunci și distanța în kilometri se va dubla. Este intuitiv. Universul ar fi foarte ciudat dacă această regulă nu s-ar aplica.

Relația liniară dintre kilometri și mile ne oferă un indiciu sub ce formă avem nevoie pentru a converti o cantitate în alta. Putem reprezenta această dependență astfel:

\[ \text(mile) = \text(kilometri) \times C \]

În expresia de mai sus, ​\(C\) ​ acționează ca un număr constant - o constantă. Nu știm încă cu ce este egal cu ​\(C \) ​.

Singurul lucru pe care îl știm sunt câteva distanțe măsurate cu precizie în kilometri și mile.

Și cum poți afla valoarea lui ​\(C\)​? Hai să ne inventăm aleatoriu număr și spuneți că constanta noastră este egală cu aceasta. Fie \(C = 0,5\) ​. Ce se va întâmpla?

Presupunând că ​\(C = 0,5\) ​ obținem 50 de mile din 100 de kilometri. Acesta este un rezultat excelent având în vedere faptul că am ales ​\(C = 0,5\) ​ complet aleatoriu! Dar știm că răspunsul nostru nu este în întregime corect, deoarece conform tabelului de măsurători corecte, ar fi trebuit să primim 62,137 mile.

Am ratat 12.137 mile. Acesta este al nostru eroare- diferența dintre răspunsul primit și rezultatul corect cunoscut anterior, care este în acest caz, avem in tabel.

\[ \begin(gather*) \text(error) = \text(valoarea corectă) - \text(răspuns primit) \\ = 62.137 - 50 \\ = 12.137 \end(gather*) \]

Să ne uităm din nou la eroare. Distanța rezultată este mai scurtă cu 12.137. Deoarece formula de conversie a kilometrilor în mile este liniară (​ \(\text(mile) = \text(kilometri) \times C\)​), apoi creșterea valorii ​\(C \)​ va crește și producția în mile.

Să presupunem acum că ​\(C = 0,6\) ​ și să vedem ce se întâmplă.

Deoarece ​\(C=0,6 \) ​, atunci pentru 100 de kilometri avem ​\(100 \times 0,6 = 60 \) ​ mile. Asta e mult mai bine încercare anterioară(acea dată erau 50 de mile)! Acum eroarea noastră este foarte mică - doar 2.137 mile. Un rezultat destul de precis.

Acum observați cum am folosit eroarea rezultată pentru a ajusta valoarea constantei ​\(C\) ​. Trebuia să creștem numărul de mile de ieșire și am crescut puțin valoarea lui ​\(C\)​. Rețineți că nu folosim algebra pentru a obține valoarea exactă a ​\(C\)​, dar am putea. De ce? Pentru că lumea este plină de probleme care nu au o simplă legătură matematică între intrarea primită și ieșirea produsă.

Pentru problemele care practic nu pot fi rezolvate printr-un calcul simplu, avem nevoie de lucruri atât de sofisticate precum rețelele neuronale.

Dumnezeul meu! Am apucat prea mult și am depășit rezultatul corect. Eroarea noastră anterioară a fost 2.137, iar acum este -7.863. Un minus înseamnă că rezultatul nostru s-a dovedit a fi mai mare decât răspunsul corect, deoarece eroarea este calculată ca răspuns corect - (minus) răspunsul primit.

Se pare că cu ​\(C=0,6 \) ​ avem o ieșire mult mai precisă. Acesta ar fi putut fi sfârșitul. Dar să creștem totuși ​\(C\) ​, dar nu mult! Fie \(C=0,61 \) ​.

E mai bine! Mașina noastră oferă 61 de mile, ceea ce este cu doar 1,137 mile mai puțin decât răspunsul corect (62,137).

Există o lecție importantă de învățat din această situație de depășire a răspunsului corect. Pe măsură ce vă apropiați de răspunsul corect, ar trebui să modificați din ce în ce mai puțin parametrii mașinii. Acest lucru va ajuta la evitarea situațiilor neplăcute care duc la depășirea răspunsului corect.

Valoarea ajustării noastre ​\(C\) ​ depinde de eroare. Cu cât eroarea noastră este mai mare, cu atât mai mult schimbăm valoarea lui ​\(C\) ​. Dar când eroarea devine mică, este necesar să schimbați puțin ​\(C\) ​. Logic, nu?

Credeți sau nu, tocmai ați înțeles esența modului în care funcționează rețelele neuronale. Antrenăm „mașinile” să producă treptat rezultate din ce în ce mai precise.

Este important să înțelegem cum am rezolvat această problemă. Nu am rezolvat-o dintr-o singură mișcare, deși în acest caz s-ar fi putut face așa. În schimb, am ajuns la răspunsul corect pas cu pas astfel încât cu fiecare pas rezultatele noastre au devenit mai bune.

Nu sunt explicațiile foarte simple și de înțeles? Personal, nu am văzut o modalitate mai concisă de a explica ce sunt rețelele neuronale.

Daca nu intelegi ceva, pune intrebari pe forum.

Părerea ta este importantă pentru mine - lăsați comentarii :)

De la vc.ru despre cum să creezi o rețea neuronală simplă în câțiva pași și să o înveți să recunoască antreprenori celebri în fotografii.

Pasul 0. Să înțelegem cum funcționează rețelele neuronale

Cel mai simplu mod de a înțelege principiile de funcționare a rețelelor neuronale este să folosiți exemplul Teachable Machine, un proiect educațional al Google.

Teachable Machine folosește o imagine de la camera unui laptop ca date de intrare - ceea ce trebuie procesat de rețeaua neuronală. Ca date de ieșire - ce ar trebui să facă rețeaua neuronală după procesarea datelor primite - puteți utiliza un gif sau un sunet.

De exemplu, puteți învăța Teachable Machine să spună „Bună” atunci când palma este ridicată. Cu degetul mare în sus - „Cool”, și cu o față surprinsă cu gura deschisă - „Wow”.

Mai întâi trebuie să antrenezi rețeaua neuronală. Pentru a face acest lucru, ridicați palma și apăsați butonul „Train Green” - serviciul face câteva zeci de fotografii pentru a găsi un model în imagini. Un set de astfel de imagini este de obicei numit „set de date”.

Acum tot ce rămâne este să selectați acțiunea care trebuie apelată atunci când recunoașteți o imagine - spuneți o frază, afișați un GIF sau redați un sunet. În mod similar, antrenăm o rețea neuronală să recunoască o față surprinsă și un deget mare.

Odată ce rețeaua neuronală este antrenată, aceasta poate fi utilizată. Teachable Machine arată coeficientul de „încredere” - cât de „încrezător” este sistemul că i se predă una dintre abilități.

Pasul 1. Pregătirea computerului pentru a lucra cu o rețea neuronală

Acum ne vom crea propria noastră rețea neuronală, care, la trimiterea unei imagini, va raporta ceea ce este afișat în imagine. În primul rând, vom învăța rețeaua neuronală să recunoască florile din imagine: mușețel, floarea soarelui, păpădie, lalea sau trandafir.

Pentru a vă crea propria rețea neuronală, veți avea nevoie de Python, unul dintre cele mai minimaliste și comune limbaje de programare, și de TensorFlow. bibliotecă deschisă Google pentru crearea și antrenarea rețelelor neuronale.

Instalarea Python

James Loy, Georgia Tech. Un ghid pentru începători pentru crearea propriei rețele neuronale în Python.

Motivație: concentrându-se pe experiență personalăîn învățarea învățării profunde, am decis să creez o rețea neuronală de la zero, fără o bibliotecă de antrenament complexă, cum ar fi . Cred că pentru un Data Scientist începător este important să înțeleagă structura internă.

Acest articol conține ceea ce am învățat și sper să vă fie de folos și vouă! Alte articole utile pe această temă:

Ce este o rețea neuronală?

Cele mai multe articole despre rețelele neuronale fac paralele cu creierul atunci când le descriu. Îmi este mai ușor să descriu rețelele neuronale ca functie matematica, care mapează o intrare dată la o ieșire dorită fără a intra în detalii.

Rețelele neuronale constau din următoarele componente:

  • strat de intrare, x
  • cantitate arbitrară straturi ascunse
  • strat de ieșire, ŷ
  • trusa cântareŞi deplasariîntre fiecare strat W Şi b
  • selecție pentru fiecare strat ascuns σ ; in aceasta lucrare vom folosi functia de activare sigmoid

Diagrama de mai jos arată arhitectura unei rețele neuronale cu două straturi (rețineți că stratul de intrare este de obicei exclus atunci când se numără numărul de straturi dintr-o rețea neuronală).

Crearea unei clase de rețea neuronală în Python este simplă:

Antrenamentul rețelei neuronale

Ieșire ŷ rețea neuronală simplă cu două straturi:

În ecuația de mai sus, ponderile W și părtinirea b sunt singurele variabile care afectează ieșirea ŷ.

Desigur, valorile corecte pentru ponderi și părtiniri determină acuratețea predicțiilor. Proces reglaj fin ponderile și părtinirile din datele de intrare sunt cunoscute ca .

Fiecare iterație a procesului de învățare constă din următorii pași

  • calculând ieșirea prezisă ŷ, numită propagare directă
  • actualizare ponderi și părtiniri, numit

Graficul secvenţial de mai jos ilustrează procesul:

Distributie directa

După cum am văzut în graficul de mai sus, propagarea directă este doar un calcul simplu, iar pentru o rețea neuronală de bază cu 2 straturi, rezultatul rețelei neuronale este dată de:

Să adăugăm o funcție de propagare înainte la codul nostru Python pentru a face acest lucru. Rețineți că, pentru simplitate, am presupus că decalajele sunt 0.

Cu toate acestea, avem nevoie de o modalitate de a evalua „bonitatea” prognozelor noastre, adică cât de departe sunt previziunile noastre). Funcția de pierdere doar ne permite să facem asta.

Funcția de pierdere

Există multe funcții disponibile pierderile, iar natura problemei noastre ar trebui să ne dicteze alegerea funcției de pierdere. În această lucrare vom folosi suma erorilor pătrate ca functie de pierdere.

Suma erorilor pătrate este media diferenței dintre fiecare valoare prezisă și cea reală.

Scopul învățării este de a găsi un set de ponderi și părtiniri care să minimizeze funcția de pierdere.

Propagarea inversă

Acum că am măsurat eroarea în prognoza noastră (pierderea), trebuie să găsim o cale propagarea erorii înapoiși actualizați ponderile și părtinirile noastre.

Pentru a cunoaște cantitatea adecvată pentru a ajusta ponderile și prejudecățile, trebuie să cunoaștem derivata funcției de pierdere în raport cu ponderile și părtinirile.

Să reamintim din analiză că Derivata unei functii este panta functiei.

Dacă avem o derivată, atunci putem pur și simplu să actualizăm ponderile și părtinirile prin creșterea/scăderea lor (vezi diagrama de mai sus). Se numește.

Cu toate acestea, nu putem calcula direct derivata funcției de pierdere în raport cu ponderi și părtiniri, deoarece ecuația funcției de pierdere nu conține ponderi și părtiniri. Deci avem nevoie de o regulă de lanț care să ne ajute la calcul.

Pf! Acest lucru a fost greoi, dar ne-a permis să obținem ceea ce aveam nevoie — derivata (panta) a funcției de pierdere în raport cu ponderile. Acum putem ajusta greutățile în consecință.

Să adăugăm funcția de backpropagation la codul nostru Python:

Verificarea funcționării rețelei neuronale

Acum că avem codul nostru Python complet pentru a efectua propagarea înainte și înapoi, să ne plimbăm prin rețeaua neuronală cu un exemplu și să vedem cum funcționează.


Setul ideal de cântare

Rețeaua noastră neuronală trebuie să învețe setul ideal de greutăți pentru a reprezenta această funcție.

Să antrenăm rețeaua neuronală pentru 1500 de iterații și să vedem ce se întâmplă. Privind graficul pierderilor de iterație de mai jos, putem vedea clar că pierderea scade monoton la un minim. Acest lucru este în concordanță cu algoritmul de coborâre a gradientului despre care am discutat mai devreme.

Să ne uităm la predicția finală (ieșirea) din rețeaua neuronală după 1500 de iterații.

Noi am făcut-o! Algoritmul nostru de propagare înainte și înapoi a arătat munca de succes rețeaua neuronală, iar predicțiile converg spre valorile adevărate.

Rețineți că există o mică diferență între predicții și valorile reale. Acest lucru este de dorit deoarece previne supraadaptarea și permite rețelei neuronale să se generalizeze mai bine la date nevăzute.

Gânduri finale

Am învățat multe în procesul de scriere a propriei mele rețele neuronale de la zero. În timp ce bibliotecile de învățare profundă precum TensorFlow și Keras vă permit să construiți rețele profunde fără a înțelege pe deplin funcționarea interioară a unei rețele neuronale, consider că este util pentru aspiranții cercetători ai datelor să obțină o înțelegere mai profundă a acestora.

Am investit mult din timpul meu personal în această lucrareși sper să vă fie de folos!