Algoritmi de învățare profundă pentru rețele neuronale multistrat. Metode de învățare profundă. Cum funcționează învățarea profundă

Revoluția care vine roboți inteligenți a fost prezis la fiecare zece ani începând cu anii 1950. Cu toate acestea, nu s-a întâmplat niciodată. Progres în domeniu inteligenţă artificială a avut loc nesigur, uneori plictisitor, aducând dezamăgire multor entuziaști. Succese vizibile - computerul Deep Blue, creat la mijlocul anilor 1990 de IBM și care l-a învins pe Garry Kasparov la șah în 1997, sau apariția la sfârșitul anilor 1990 traducător electronic- au fost mai probabil rezultatul unor calcule „brutale” decât transferul mecanismelor percepției umane la procesele de calcul computerizat.

Cu toate acestea, povestea dezamăgirii și eșecului se schimbă acum dramatic. Cu doar zece ani în urmă, algoritmii de viziune computerizată și de recunoaștere a obiectelor puteau identifica o sferă sau un paralelipiped pe fundal simplu. Acum pot distinge fețele umane la fel de bine ca oamenii, chiar și pe fundaluri naturale complexe. În urmă cu șase luni, Google a lansat o aplicație pentru smartphone-uri care poate traduce text din peste 20 limbi straine citind cuvinte din fotografii, semne rutiere sau text scris de mână!

Toate acestea au devenit posibile după ce a devenit clar că unele idei vechi din domeniul rețelelor neuronale, dacă au fost ușor modificate prin adăugarea de „viață”, adică. proiectarea detaliilor percepției umane și animale poate da un rezultat uimitor la care nimeni nu se aștepta. De data aceasta, revoluția inteligenței artificiale pare cu adevărat reală.

Cercetare rețele neuronaleîn domeniul învățării automate, în cele mai multe cazuri, au fost întotdeauna dedicate căutării de noi tehnici de recunoaștere a diferitelor tipuri de date. Astfel, un computer conectat la cameră trebuie, folosind un algoritm de recunoaștere a imaginii, să poată distinge Calitate rea o față umană, o ceașcă de ceai sau un câine. Din punct de vedere istoric, însă, utilizarea rețelelor neuronale în aceste scopuri a fost însoțită de dificultăți semnificative. Chiar și succesul minor a necesitat intervenția umană - oamenii au ajutat programul să se determine caracteristici importante imagini precum chenarele imaginii sau simple figuri geometrice. Algoritmi existenți Ei nu au putut învăța să o facă singuri.

Situația s-a schimbat dramatic datorită creării așa-zisului rețele neuronale cu învățare profundă, care acum poate analiza o imagine aproape la fel de eficient ca un om. Astfel de rețele neuronale folosesc o imagine de proastă calitate ca intrare către „neuronii” de prim nivel, care apoi transmite „imaginea” prin conexiuni neliniare către neuroni. Nivelul următor. După un anumit antrenament, „neuronii” sunt mai mulți niveluri înalte poate folosi aspecte mai abstracte ale unei imagini pentru recunoaștere. De exemplu, pot folosi detalii precum marginile imaginii sau caracteristicile locației acesteia în spațiu. În mod uimitor, astfel de rețele pot învăța să estimeze cele mai importante caracteristici ale unei imagini fără ajutor uman!

Un mare exemplu de utilizare a rețelelor neuronale cu învățare profundă este recunoașterea obiectelor identice fotografiate din unghiuri diferite sau în ipostaze diferite (dacă vorbim despre o persoană sau un animal). Algoritmii care folosesc scanarea pixel cu pixel „cred” că se uită la două imagini diferite, în timp ce rețelele neuronale „inteligente” „înțeleg” că se uită la același obiect. Și invers - imaginile cu doi câini de rase diferite, fotografiați în aceeași ipostază, ar putea fi percepute de algoritmii anteriori ca fotografii ale aceluiași câine. Rețelele neuronale de învățare profundă pot identifica detaliile din imagini care îi ajută să facă distincția între animale.

Combinând tehnici de învățare profundă, cunoștințe avansate de neuroștiință și putere calculatoare moderne se deschide pentru inteligenţă artificială perspective pe care nici măcar nu le putem evalua încă. Adevărul este deja evident că mintea poate avea nu numai o natură biologică.

Astăzi, un grafic este una dintre cele mai acceptabile modalități de a descrie modelele create într-un sistem de învățare automată. Aceste grafice de calcul sunt compuse din vârfuri de neuroni conectate prin margini de sinapsă care descriu conexiunile dintre vârfuri.

Spre deosebire de un GPU scalar central sau vectorial, un IPU este tip nou procesoarele concepute pentru învățarea automată vă permit să construiți astfel de grafice. Un computer care este conceput pentru a gestiona grafice - masina perfecta pentru modele de grafice computaționale generate de învățarea automată.

Una dintre cele mai moduri simple Modul de a descrie procesul de inteligență mașină este de a-l vizualiza. Echipa de dezvoltare Graphcore a creat o colecție de astfel de imagini care sunt afișate pe IPU. S-a bazat pe software Plop, care vizualizează munca inteligenței artificiale. Cercetătorii acestei companii au aflat și de ce rețele profunde necesită atât de multă memorie și ce soluții există la problemă.

Poplar include un compilator grafic care a fost construit de la zero pentru a traduce operațiunile standard de învățare automată în cod de aplicație IPU foarte optimizat. Vă permite să colectați aceste grafice împreună folosind același principiu în care sunt colectate POPNN-urile. Biblioteca conține un set de tipuri diferite de vârfuri pentru primitive generalizate.

Graficele sunt paradigma pe care se bazează toate programele. În Poplar, graficele vă permit să definiți un proces de calcul, în care vârfurile efectuează operații și muchiile descriu relația dintre ele. De exemplu, dacă doriți să adăugați două numere împreună, puteți defini un vârf cu două intrări (numerele pe care doriți să le adăugați), câteva calcule (o funcție pentru a adăuga două numere) și o ieșire (rezultatul).

De obicei, operațiile cu vârfuri sunt mult mai complexe decât în ​​exemplul descris mai sus. Ele sunt adesea determinate programe mici, numite codeleturi (nume de cod). Abstracția grafică este atractivă deoarece nu face ipoteze cu privire la structura calculului și descompune calculul în componente pe care IPU le poate folosi pentru a opera.

Plopul folosește această abstractizare simplă pentru a construi grafice foarte mari care sunt reprezentate ca imagini. Generarea software-ului a graficului înseamnă că îl putem adapta la calculele specifice necesare pentru a asigura cel mai mult utilizare eficientă resursele UIP.

Compilatorul traduce operațiuni standard, folosit in sisteme de mașini instruire în codul de aplicație IPU foarte optimizat. Compilatorul de grafice creează o imagine intermediară a graficului de calcul, care este implementată pe unul sau mai multe dispozitive IPU. Compilatorul poate afișa acest grafic de calcul, astfel încât o aplicație scrisă la nivelul cadrului rețelei neuronale afișează o imagine a graficului de calcul care rulează pe IPU.


Graficul întregului ciclu de antrenament AlexNet în direcții înainte și înapoi

Compilatorul de grafică Poplar a transformat descrierea AlexNet într-un grafic de calcul de 18,7 milioane de vârfuri și 115,8 milioane de muchii. Gruparea clar vizibilă este rezultatul unei conexiuni puternice între procesele din fiecare strat al rețelei cu mai multe comunicare ușoarăîntre niveluri.

Un alt exemplu este o rețea simplă complet conectată, instruită pe MNIST, un set de date simplu de viziune computerizată, un fel de „Bună ziua, lume” în învățarea automată. Rețea simplă explorarea acestui set de date ajută la înțelegerea graficelor care sunt conduse de aplicațiile Poplar. Prin integrarea bibliotecilor de grafice cu cadre precum TensorFlow, compania oferă unul dintre moduri simple pentru utilizarea IPU-urilor în aplicații de învățare automată.

După ce graficul a fost construit folosind compilatorul, acesta trebuie să fie executat. Acest lucru este posibil folosind Graph Engine. Exemplul ResNet-50 demonstrează funcționarea acestuia.


Graficul ResNet-50

Arhitectura ResNet-50 permite crearea de rețele profunde din partiții repetate. Procesorul trebuie să definească aceste secțiuni doar o dată și să le apeleze din nou. De exemplu, clusterul de nivel conv4 este executat de șase ori, dar mapat o singură dată pe grafic. Imaginea demonstrează, de asemenea, varietatea de forme ale straturilor convoluționale, deoarece fiecare are un grafic construit conform unei forme naturale de calcul.

Motorul creează și gestionează execuția unui model de învățare automată folosind un grafic generat de compilator. Odată implementat, Graph Engine monitorizează și răspunde la IPU-urile sau dispozitivele utilizate de aplicații.

Imaginea ResNet-50 arată întregul model. La acest nivel este dificil să identifici conexiunile între vârfurile individuale, așa că merită să te uiți la imaginile mărite. Mai jos sunt câteva exemple de secțiuni din straturile rețelei neuronale.

De ce rețelele profunde au nevoie de atât de multă memorie?

Cantitățile mari de memorie ocupată sunt una dintre cele mai multe mari probleme rețele neuronale profunde. Cercetătorii încearcă să combată limita debitului Dispozitivele DRAM care ar trebui utilizate sisteme moderne pentru a stoca un număr mare de greutăți și activări într-o rețea neuronală profundă.

Arhitecturile au fost proiectate folosind cipuri de procesor concepute pentru procesare secvențială și optimizare DRAM pentru memorie de înaltă densitate. Interfața dintre aceste două dispozitive este un blocaj care introduce limitări ale lățimii de bandă și adaugă o suprasarcină semnificativă în consumul de energie.

Deși nu avem încă o înțelegere completă a creierului uman și a modului în care funcționează, se înțelege în general că nu există un mare depozit de memorie separat. Se crede că funcția memoriei pe termen lung și pe termen scurt din creierul uman este încorporată în structura neuronilor + sinapselor. Chiar și organisme simple precum viermii, cu o structură cerebrală neuronală de puțin peste 300 de neuroni, au o anumită funcție de memorie.

Construirea memoriei în procesoare convenționale este o modalitate de a evita problema blocajului memoriei, deblocând o lățime de bandă enormă la un consum mult mai mic de energie. Cu toate acestea, memoria pe cip este costisitoare și nu este concepută pentru cantitățile cu adevărat mari de memorie care sunt atașate la procesoarele și GPU-urile utilizate în prezent pentru antrenarea și implementarea rețelelor neuronale profunde.

Așadar, este util să ne uităm la modul în care memoria este folosită astăzi în procesoare și sisteme de deep learning bazate pe GPU și să vă întrebați: de ce au nevoie de dispozitive de stocare a memoriei atât de mari când creierul uman funcționează bine fără ele?

Rețelele neuronale au nevoie de memorie pentru a stoca datele de intrare, greutățile și funcțiile de activare pe măsură ce intrarea se propagă prin rețea. În învățare, activarea pe intrare trebuie menținută până când poate fi utilizată pentru a calcula erorile în gradienții de ieșire.

De exemplu, o rețea ResNet cu 50 de straturi are aproximativ 26 de milioane de parametri de greutate și calculează 16 milioane de activări înainte. Dacă utilizați un float pe 32 de biți pentru a stoca fiecare greutate și activare, va necesita aproximativ 168 MB de spațiu. Folosind mai mult valoare mica precizie de a stoca aceste greutăți și activări, am putea înjumătăți sau chiar de patru ori această cerință de stocare.

O problemă majoră de memorie apare din faptul că GPU-urile se bazează pe date reprezentate ca vectori denși. Prin urmare, ei pot folosi un singur fir de instrucțiuni (SIMD) pentru a obține o densitate mare de calcul. CPU folosește unități vectoriale similare pentru calcul de înaltă performanță.

GPU-urile au o lățime de sinapsă de 1024 de biți, așa că folosesc date în virgulă mobilă pe 32 de biți, așa că adesea le împart în mini-lot paralel de 32 de eșantioane pentru a crea vectori de date pe 1024 de biți. Această abordare a paralelismului vectorial crește numărul de activări de 32 de ori și nevoia de stocare locală cu o capacitate de peste 2 GB.

GPU-urile și alte mașini proiectate pentru algebra matriceală sunt, de asemenea, supuse încărcării de memorie din cauza greutăților sau activărilor rețelei neuronale. GPU-urile nu pot efectua eficient micile convoluții utilizate în rețelele neuronale profunde. Prin urmare, o transformare numită „reducere” este utilizată pentru a converti aceste convoluții în multiplicari matrice-matrice (GEMM), pe care GPU-urile le pot gestiona eficient.

De asemenea, este necesară o memorie suplimentară pentru a stoca datele de intrare, valorile temporare și instrucțiunile programului. Măsurarea utilizării memoriei la antrenamentul ResNet-50 pe un GPU high-end a arătat că necesită mai mult de 7,5 GB de DRAM local.

Unii ar putea crede că o precizie de calcul mai mică ar putea reduce cantitatea de memorie necesară, dar nu este cazul. Prin comutarea valorilor datelor la jumătate de precizie pentru greutăți și activări, veți umple doar jumătate din lățimea vectorului SIMD, irosind jumătate din resursele de calcul disponibile. Pentru a compensa acest lucru, atunci când treceți de la precizie completă la precizie jumătate pe GPU, va trebui apoi să dubleți dimensiunea mini-lotului pentru a forța suficient paralelism de date pentru a utiliza toate calculele disponibile. Deci, pentru a reduce greutățile de precizie și activările pe GPU, încă necesită mai mult de 7,5 GB memorie dinamică cu acces liber.

Cu atât de multe date de stocat, este pur și simplu imposibil să le potriviți pe toate într-un GPU. Fiecare strat de rețea neuronală convoluțională trebuie să stocheze starea DRAM-ului extern, să încarce următorul strat de rețea și apoi să încarce datele în sistem. Drept urmare, interfața este deja limitată de lățimea de bandă și latența memoriei. memorie externa suferă de o povară suplimentară repornire constantă greutăți și stocarea și preluarea funcțiilor de activare. Acest lucru încetinește semnificativ timpul de antrenament și crește semnificativ consumul de energie.

Există mai multe modalități de a rezolva această problemă. În primul rând, operațiuni precum funcțiile de activare pot fi efectuate „in loc”, permițând ca datele de intrare să fie rescrise direct la ieșire. Prin urmare, memorie existenta poate fi refolosit. În al doilea rând, oportunitatea pentru reutilizare memoria poate fi obținută prin analiza dependenței de date dintre operațiunile din rețea și alocarea aceleiași memorie operațiunilor care nu o folosesc în acel moment.

A doua abordare este deosebit de eficientă atunci când întreaga rețea neuronală poate fi analizată în timpul compilării pentru a crea o memorie fixă ​​alocată, deoarece supraîncărcarea de gestionare a memoriei este redusă la aproape zero. S-a dovedit că combinația acestor metode poate reduce utilizarea memoriei unei rețele neuronale de două până la trei ori.
O a treia abordare semnificativă a fost descoperită recent de echipa Baidu Deep Speech. Ei au aplicat diverse tehnici de economisire a memoriei pentru a obține o reducere de 16 ori a consumului de memorie al funcțiilor de activare, permițându-le să antreneze rețele cu 100 de straturi. Anterior, cu aceeași cantitate de memorie, puteau antrena rețele cu nouă straturi.

Combinarea memoriei și a resurselor de procesare într-un singur dispozitiv are un potențial semnificativ de a îmbunătăți performanța și eficiența rețelelor neuronale convoluționale, precum și a altor forme de învățare automată. Pot fi făcute compromisuri între resursele de memorie și de calcul pentru a obține un echilibru între caracteristici și performanță în sistem.

Rețelele neuronale și modelele de cunoștințe din alte metode de învățare automată pot fi considerate grafice matematice. Există o cantitate imensă de paralelism concentrat în aceste grafice. Un procesor paralel conceput pentru a exploata paralelismul în grafice nu se bazează pe mini-loturi și poate reduce semnificativ cantitatea de stocare locală necesară.

Rezultatele cercetărilor actuale au arătat că toate aceste metode pot îmbunătăți semnificativ performanța rețelelor neuronale. GPU-urile și procesoarele moderne au o memorie la bord foarte limitată, doar câțiva megaocteți în total. Noile arhitecturi de procesor concepute special pentru învățarea automată echilibrează memoria și calculul pe cip, oferind îmbunătățiri semnificative de performanță și eficiență față de tehnologiile actuale. procesoare centraleși acceleratoare grafice.

Ce s-a întâmplat invatare profunda(invatare profunda) ? 3 martie 2016

În zilele noastre se vorbește despre tehnologiile de deep learning la modă ca și cum ar fi mana din rai. Dar înțeleg vorbitorii ce este cu adevărat? Dar acest concept nu are o definiție formală și combină un întreg teanc de tehnologii. În această postare vreau să explic cât mai popular și în esență ce se află în spatele acestui termen, de ce este atât de popular și ce ne oferă aceste tehnologii.


Pe scurt, acest termen nou (învățare profundă) este despre cum să asamblați o abstracție (reprezentare) mai complexă și mai profundă din unele abstracțiuni simple. în ciuda faptului că și cele mai simple abstracții trebuie asamblate de computerul însuși, și nu de o persoană. Acestea. Nu mai este vorba doar despre învățare, ci despre meta-învățare. Figurat vorbind, computerul însuși trebuie să învețe cum să învețe cel mai bine. Și, de fapt, asta este exact ceea ce implică termenul „adânc”. Aproape întotdeauna, acest termen este aplicat rețelelor neuronale artificiale care folosesc mai mult de un strat ascuns, așa că în mod formal „adânc” înseamnă și o arhitectură de rețea neuronală mai profundă.

Aici, în slide-ul de dezvoltare, puteți vedea clar cât de diferită învățarea profundă de învățarea obișnuită. Repet, Ceea ce este unic la deep learning este că mașina găsește caracteristicile în sine(trăsăturile cheie ale ceva prin care este cel mai ușor să separați o clasă de obiecte de alta) și structurează aceste semne ierarhic: cele mai simple sunt combinate în altele mai complexe. Mai jos ne vom uita la asta cu un exemplu.

Să ne uităm la un exemplu de sarcină de recunoaștere a imaginii: înainte, au introdus una uriașă într-o rețea neuronală obișnuită cu un singur strat (1024×768 - aproximativ 800.000). valori numerice) a fotografiat și a văzut computerul murind încet, sufocându-se din cauza lipsei de memorie și a incapacității de a înțelege ce pixeli sunt importanți pentru recunoaștere și care nu. Ca să nu mai vorbim de eficacitatea acestei metode. Iată arhitectura unei astfel de rețele neuronale obișnuite (de mică adâncime).

Apoi au ascultat modul în care creierul distinge trăsăturile și face acest lucru într-o manieră strict ierarhică și au decis, de asemenea, să extragă o structură ierarhică din imagini. Pentru a face acest lucru, a fost necesar să adăugați mai multe straturi ascunse (straturi care se află între intrare și ieșire; aproximativ vorbind, etapele de transformare a informațiilor) la rețeaua neuronală. Deși au decis să facă acest lucru aproape imediat când au fost inventați neuronii, atunci rețelele cu un singur strat ascuns au fost antrenate cu succes. Acestea. În principiu, rețelele profunde există de aproximativ la fel de mult timp ca cele obișnuite, pur și simplu nu le-am putut antrena. Ce s-a schimbat?

În 2006, mai mulți cercetători independenți au rezolvat această problemă deodată (în plus, capabilitățile hardware se dezvoltaseră deja suficient, au apărut plăcile video destul de puternice). Acești cercetători sunt: ​​Geoffrey Hinton (și colegul său Ruslan Salakhutidinov) cu tehnica de pre-antrenare a fiecărui strat al unei rețele neuronale cu o mașină Boltzmann constrânsă (iertați-mă pentru acești termeni...), Yann LeCun cu rețele neuronale convoluționale și Yoshuay Bengio cu autoencodere în cascadă. Primii doi au fost recrutați imediat de Google și, respectiv, de Facebook. Iată două prelegeri: una - Hinton, celălalt - Lyakuna, în care ei spun ce este învățarea profundă. Nimeni nu vă poate spune despre asta mai bine decât ei. Inca una misto lectura Schmidhuber despre dezvoltarea învățării profunde, de asemenea, unul dintre pilonii acestei științe. Și Hinton are și un curs excelent despre neuroni.

Ce pot face acum rețelele neuronale profunde? Ei sunt capabili să recunoască și să descrie obiecte; s-ar putea spune că „înțeleg” ce este. Este despre despre recunoașterea semnificațiilor.

Vizionați acest videoclip de recunoaștere în timp real a ceea ce vede camera.

După cum am spus deja, tehnologiile de învățare profundă sunt un întreg grup de tehnologii și soluții. Am enumerat deja câteva dintre ele în paragraful de mai sus, un alt exemplu sunt rețelele recurente, care sunt folosite în videoclipul de mai sus pentru a descrie ceea ce vede rețeaua. Dar cel mai popular reprezentant al acestei clase de tehnologii sunt încă rețelele neuronale convoluționale ale LyaKun. Ele sunt construite prin analogie cu principiile de funcționare a cortexului vizual al creierului pisicii, în care au fost descoperite așa-numitele celule simple, reacționând la linii drepte în unghiuri diferite și celule complexe - a căror reacție este asociată cu activarea. un anumit set celule simple. Deși, să fiu sincer, LaCun însuși nu era concentrat pe biologie, a decis el sarcina specifica(vizionați-i prelegerile), și apoi a coincis.

Pentru a spune foarte simplu, rețelele convoluționale sunt rețele în care principalul element structural al învățării este un grup (combinație) de neuroni (de obicei un pătrat de 3x3, 10x10 etc.), și nu doar unul. Și la fiecare nivel al rețelei sunt instruite zeci de astfel de grupuri. Rețeaua găsește combinații de neuroni care maximizează informațiile despre imagine. La primul nivel, rețeaua extrage cele mai elementare, structurale elemente simple imaginile sunt, s-ar putea spune, unități de construcție: limite, linii, segmente, contraste. Mai sus sunt deja combinații stabile de elemente ale primului nivel și așa mai departe în lanț. Aș dori să subliniez încă o dată caracteristica principalăînvățarea profundă: rețelele înseși formează aceste elemente și decid care dintre ele sunt mai importante și care nu. Acest lucru este important deoarece în domeniul învățării automate, crearea de caracteristici este esențială și acum trecem la etapa în care computerul însuși învață să creeze și să selecteze caracteristici. Aparatul în sine identifică o ierarhie de caracteristici informative.

Deci, în timpul procesului de învățare (vizionarea a sute de imagini), rețeaua convoluțională formează o ierarhie de caracteristici diverse niveluri adâncimi. La primul nivel, ele pot evidenția, de exemplu, astfel de elemente (reflectare contrast, unghi, chenar etc.).


La al doilea nivel, acesta va fi deja un element din elementele primului nivel. Pe a treia - din a doua. Trebuie să înțelegem asta această imagine- doar o demonstrație. Acum, în uz industrial, astfel de rețele au de la 10 la 30 de straturi (nivele).

După ce o astfel de rețea s-a antrenat, o putem folosi pentru clasificare. După ce au dat o imagine ca intrare, grupuri de neuroni din primul strat parcurg imaginea, activând în acele locuri în care există un element al imaginii corespunzător unui anumit element. Acestea. această rețea analizează imaginea în părți - mai întâi în linii, linii, unghiuri de înclinare, apoi părți mai complexe și în final se ajunge la concluzia că imaginea este din acest tip de combinație elemente de baza- acest chip.

Mai multe despre rețelele convoluționale -

Din articol veți afla ce este învățarea profundă. Articolul conține și multe resurse pe care le puteți folosi pentru a stăpâni acest domeniu.

ÎN lumea modernă De la asistență medicală până la producție, învățarea profundă este folosită peste tot. Companiile apelează la această tehnologie pentru a rezolva probleme complexe, cum ar fi recunoașterea vorbirii și a obiectelor, traducerea automată și așa mai departe.

Una dintre cele mai impresionante realizări din acest an a fost AlphaGo învingându-l pe cel mai bun jucător Go din lume. Pe lângă Go, aparatele au învins oameni în alte jocuri: dame, șah, reversi și Jeopardy.

Posibil victorie în joc de societate pare inaplicabil la solutie probleme reale, cu toate acestea, nu este deloc cazul. Go a fost conceput pentru a fi imbatabil prin inteligența artificială. Pentru a face acest lucru, ar trebui să învețe un lucru important pentru acest joc - intuiția umană. Acum, cu ajutorul acestei dezvoltări, este posibil să rezolvi multe probleme care înainte erau inaccesibile unui computer.

Evident, învățarea profundă este încă departe de a fi perfectă, dar este deja aproape de a fi utilă comercial. De exemplu, aceste mașini autonome. Companii cunoscute precum Google, Tesla și Uber încearcă deja să introducă mașini autonome pe străzile orașului.

Ford prezice crestere semnificativa ponderea fără pilot Vehicul până în 2021. Guvernul SUA a reușit, de asemenea, să dezvolte un set de reguli de siguranță pentru ei.

Ce este învățarea profundă?

Pentru a răspunde la această întrebare, trebuie să înțelegeți cum interacționează cu învățarea automată, rețelele neuronale și inteligența artificială. Pentru a face acest lucru, folosim metoda de vizualizare folosind cercuri concentrice:

Cercul exterior este inteligența artificială în general (de exemplu, computerele). Un pic mai departe - învățare automată, iar chiar în centru se află învățarea profundă și rețelele neuronale artificiale.

În linii mari, învățarea profundă este pur și simplu un nume mai convenabil pentru rețelele neuronale artificiale. „Adanc” în această expresie se referă la gradul de complexitate (adâncime) al rețelei neuronale, care poate fi adesea destul de superficial.

Creatorii primei rețele neuronale s-au inspirat din structura cortexului cerebral. Stratul de bază al rețelei, perceptronul, este în esență analogul matematic al unui neuron biologic. Și, ca și în creier, perceptronii care se intersectează unul cu celălalt pot apărea într-o rețea neuronală.

Primul strat al rețelei neuronale se numește strat de intrare. Fiecare nod din acest strat primește o anumită informație ca intrare și o transmite nodurilor ulterioare din alte straturi. Cel mai adesea, nu există conexiuni între nodurile unui strat, iar ultimul nod al lanțului emite rezultatul rețelei neuronale.

Nodurile din mijloc se numesc noduri ascunse deoarece nu au conexiuni cu lumea de afara, ca noduri de ieșire și de intrare. Ele sunt apelate numai atunci când straturile anterioare sunt activate.

Invatare profunda este în esență o tehnică de antrenament a rețelei neuronale care utilizează multe straturi pentru a rezolva probleme complexe (cum ar fi recunoașterea vorbirii) folosind modele. În anii optzeci, majoritatea rețelelor neuronale erau cu un singur strat din cauza costului ridicat și a capacităților limitate de date.

Dacă considerăm învățarea automată ca o ramură sau o variantă a inteligenței artificiale, atunci învățarea profundă este tip specializat o astfel de ramură.

Învățarea automată folosește inteligența computerizată care nu oferă imediat răspunsul. În schimb, codul va rula pe datele de testare și, pe baza corectitudinii rezultatelor sale, își va ajusta progresul. Pentru succesul acestui proces, o varietate de tehnici, software special și informatică sunt de obicei folosite pentru a descrie metode staticeși algebră liniară.

Metode de învățare profundă

Metodele de învățare profundă sunt împărțite în două tipuri principale:

  • Antrenament tutorat
  • Învățare nesupravegheată

Prima metodă folosește date special selectate pentru a obține rezultatul dorit. Necesită destul de multă intervenție umană, deoarece datele trebuie selectate manual. Cu toate acestea, este util pentru clasificare și regresie.

Imaginați-vă că sunteți proprietarul unei companii și doriți să determinați impactul bonusurilor asupra duratei contractelor subordonaților dvs. Cu date precolectate, o metodă de învățare supravegheată ar fi indispensabilă și foarte eficientă.

A doua metodă nu implică răspunsuri pregătite în prealabil și algoritmi de lucru. Acesta își propune să identifice modele ascunse în date. Este folosit de obicei pentru sarcini de grupare și asociere, cum ar fi gruparea clienților după comportament. „Și ei aleg cu asta” pe Amazon este o variantă a sarcinii de asociere.

În timp ce învățarea supravegheată este adesea destul de convenabilă, este mai mult varianta dificila inca mai bine. Învățarea profundă s-a dovedit a fi o rețea neuronală care nu necesită supraveghere umană.

Importanța învățării profunde

Calculatoarele au folosit mult timp tehnologia pentru a recunoaște anumite caracteristici dintr-o imagine. Cu toate acestea, rezultatele au fost departe de a avea succes. Viziune computerizată a avut un impact incredibil asupra învățării profunde. Aceste două tehnici sunt cele care acest moment rezolva toate problemele de recunoaștere.

În special, Facebook a reușit să recunoască fețele din fotografii folosind învățarea profundă. Aceasta nu este o simplă îmbunătățire a tehnologiei, ci un punct de cotitură care schimbă toate convingerile anterioare: „O persoană poate determina cu o probabilitate de 97,53% dacă aceeași persoană este reprezentată pe două. diferite fotografii. Programul dezvoltat de echipa Facebook poate face acest lucru cu o probabilitate de 97,25%, indiferent de iluminare sau dacă persoana se uită direct la cameră sau este întoarsă lateral spre aceasta.”

Recunoașterea vorbirii a suferit, de asemenea, modificări semnificative. Echipa de la Baidu, unul dintre cele mai importante motoare de căutare din China, a dezvoltat un sistem de recunoaștere a vorbirii care a reușit să depășească oamenii în viteza și acuratețea scrierii textului în limba engleză. dispozitive mobile. În engleză și mandarină.

Ceea ce este deosebit de interesant este că scrierea unei rețele neuronale comune pentru două limbi complet diferite nu a necesitat multă muncă: „Din punct de vedere istoric, oamenii vedeau chineza și engleza ca două limbi complet diferite, așa că era necesară o abordare diferită a fiecăreia dintre ele”, spune șeful Centrului de cercetare Baidu, Andrew Ng. „Algoritmii de învățare sunt acum atât de generalizați încât puteți Doarînvăța."

Google folosește învățarea profundă pentru a gestiona energia în centrele de date ale companiei. Au fost capabili să reducă costurile cu resursele de răcire cu 40%. Aceasta reprezintă o îmbunătățire cu aproximativ 15% a eficienței energetice și economii de milioane de dolari.

Microservicii de învățare profundă

Aici scurtă recenzie servicii legate de deep learning.

Tagger ilustrație. Îmbunătățit de Illustration2Vec, acest serviciu vă permite să marcați imaginile cu un rating de „protejat”, „îndoielnic”, „periculos”, „drept de autor” sau „general” pentru a înțelege în prealabil conținutul imaginii.

  • Suplimentul Theano de la Google
  • Editabil în Python și Numpy
  • Adesea folosit pentru a rezolva o serie specifică de probleme
  • Nu scop general. Concentrați-vă pe viziunea artificială
  • Editat în C++
  • Există o interfață în Python

Cursuri online de deep learning

Google și Udacity s-au unit pentru a crea un curs gratuit de deep learning, parte a cursului Udacity Machine Learning. Acest program este condus de dezvoltatori experimentați care doresc să dezvolte domeniul învățării automate și, în special, al învățării profunde.

O altă opțiune populară este cursul de învățare automată de la Andrew Ng, susținut de Coursera și Stanford.

  1. Învățare automată - Stanford de Andrew Ng pe Coursera (2010-2014)
  2. Învățare automată - Caltech de Yaser Abu-Mostafa (2012-2014)
  3. Învățare automată - Carnegie Mellon de Tom Mitchell (primăvara 2011)
  4. Rețele neuronale pentru învățarea automată – Geoffrey Hinton despre Coursera (2012)
  5. Clasa rețele neuronale– Hugo Larochelle de la Universitatea din Sherbrooke (2013)

Cărți despre învățarea profundă

În timp ce resursele din secțiunea anterioară se bazează pe o bază de cunoștințe destul de extinsă, Grokking Invatare profunda„, dimpotrivă, este conceput pentru începători. După cum spun autorii: „Dacă ați terminat clasa a XI-a și aveți o înțelegere aproximativă a modului de a scrie Python, vă vom învăța învățarea profundă.”

O alternativă populară la această carte este o carte cu titlul explicativ Deep Learning Book. Este deosebit de bun pentru că acoperă toată matematica de care veți avea nevoie pentru a intra în acest domeniu.

  1. „Deep Learning” de Yoshua Bengio, Ian Goodfellow și Aaron Courville (2015)
  2. „Rețele neuronale și învățarea profundă” de Michael Nielsen (2014)
  3. „Învățare profundă” de la Microsoft Research (2013)
  4. „Tutoriale de învățare profundă” de la Laboratorul LISA, Universitatea din Montreal (2015)
  5. „neuraltalk” de Andrej Karpathy
  6. „Introducere în algoritmii genetici”
  7. „Abordare modernă a inteligenței artificiale”
  8. „Prezentare generală asupra învățării profunde și a rețelelor neuronale”

Videoclipuri și prelegeri

Deep Learning Simplified este un canal YouTube minunat. Iată primul lor videoclip:

Au trecut peste 20 de ani de când a fost inventat termenul „învățare profundă”, dar oamenii au început să vorbească despre el abia de curând. Vă explicăm pe scurt de ce s-a întâmplat acest lucru, ce este învățarea profundă, cum diferă de învățarea automată și de ce trebuie să știți despre aceasta.

  • Ce este?

    Învățarea profundă este o ramură a învățării automate care utilizează un model inspirat de modul în care funcționează creierul - modul în care neuronii interacționează.

    Termenul în sine a apărut în anii 1980, dar până în 2012 nu a existat suficientă capacitate pentru a implementa această tehnologie și aproape nimeni nu i-a acordat atenție. După o serie de articole ale unor oameni de știință celebri și publicații în reviste științifice, tehnologia a devenit rapid populară și a primit atenția mass-media majore - The New York Times a fost prima mass-media mondială care a scris despre ea. Unul dintre motivele materialului a fost munca stiintifica specialiști de la universitățile din Toronto Alex Krizhevsky, Ilya Satskever și Jeff Hinton. Ei au descris și analizat rezultatele competiției de recunoaștere a imaginii ImageNet, în care rețeaua lor neuronală s-a antrenat folosind învățarea profundă a câștigat cu o marjă largă - sistemul a identificat 85% dintre obiecte. De atunci, doar rețeaua neuronală profundă a câștigat competiția

  • Stai, ce este învățarea automată?

    Acesta este un subdomeniu al inteligenței artificiale și un termen care descrie metode de construire a algoritmilor care învață din experiență, fără a scrie program special. Adică, în acest caz, o persoană nu trebuie să explice mașinii cum să rezolve o problemă; ea găsește singur răspunsul, din datele care îi sunt furnizate. De exemplu, dacă dorim ca algoritmul să identifice fețele, trebuie să îi arătăm zece mii de fețe diferite, să notăm unde este exact fața, iar apoi programul va învăța să o identifice singur.

    Aparatul poate învăța atât cu ajutorul unui profesor, când acesta marchează răspunsurile corecte pentru aparat, cât și fără el. Dar rezultatele sunt mai bune atunci când înveți cu un profesor. De fiecare dată când are loc prelucrarea datelor, sistemul devine mai precis.

  • Cum funcționează învățarea profundă?

    Imită gândirea umană abstractă și este capabil să generalizeze. De exemplu, o rețea neuronală instruită de mașini nu recunoaște bine literele scrise de mână - și astfel încât să nu se confunde în diverse opțiuni scris, toate trebuie să fie încărcate în ea.

    Învățarea profundă este utilizată atunci când se lucrează cu rețele neuronale artificiale multistrat și poate face față acestei sarcini.

    „Sunt trei termeni care În ultima vreme adesea folosit aproape interschimbabil: inteligența artificială, învățarea automată și învățarea profundă. Cu toate acestea, aceștia sunt de fapt termeni „cuibați”: inteligența artificială este orice poate ajuta un computer să îndeplinească sarcini umane; Învățarea automată este o ramură a AI în care programele nu rezolvă doar probleme, ci învață pe baza experienței pe care o au, iar învățarea profundă este o ramură a învățării automate care studiază rețelele neuronale profunde.

    Mai simplu spus: 1.dacă ai scris un program care joacă șah, asta e inteligență artificială; 2.dacă învață pe baza unor jocuri de mare maestru sau jucând împotriva lui însuși, aceasta este învățarea automată; 3.și dacă învață din ea nu orice, ci o rețea neuronală profundă, aceasta este învățare profundă.”.

  • Cum funcționează învățarea profundă?

    Să luăm un exemplu simplu - vom arăta fotografiile rețelei neuronale care înfățișează un băiat și o fată. În primul strat, neuronii răspund la imagini vizuale simple, cum ar fi modificările luminozității. Pe al doilea - altele mai complexe: unghiuri, cercuri. Până la al treilea strat, neuronii sunt capabili să răspundă la inscripții și la fețele umane. Pentru fiecare strat ulterior, imaginile identificate vor fi mai complexe. Rețeaua neuronală însăși determină care elemente vizuale ea este interesată să rezolve această problemă și le ierarhizează în ordinea importanței pentru a înțelege mai bine pe viitor ceea ce se arată în fotografie.

  • Și ce ai dezvoltat deja cu el?

    Majoritatea proiectelor de deep learning sunt folosite în recunoașterea foto sau audio și diagnosticarea bolilor. De exemplu, este deja folosit în Traduceri Google dintr-o imagine: tehnologia Deep Learning detectează dacă există litere într-o imagine și apoi le traduce. Un alt proiect care funcționează cu fotografii este un sistem de recunoaștere facială numit DeepFace. Poate recunoaște fețele umane cu o precizie de 97,25% - aproximativ aceeași precizie ca un om.

    În 2016 anul Google a lansat WaveNet, un sistem care poate simula vorbirea umană. Pentru a face acest lucru, compania a încărcat milioane de minute de date înregistrate în sistem. cereri vocale, care au fost folosite în proiectul OK Google, iar după studiu, rețeaua neuronală în sine a reușit să compună propoziții cu accentul corect, accentul și fără pauze ilogice.

    În același timp, învățarea profundă poate segmenta semantic o imagine sau un videoclip - adică nu doar să indice că există un obiect în imagine, ci și să evidențieze în mod ideal contururile acestuia. Această tehnologie este utilizată la mașinile cu conducere autonomă care detectează obstacolele rutiere, marcajele și citesc semnele rutiere pentru a evita accidentele. Rețeaua neuronală este folosită și în medicină - pentru a determina retinopatia diabetică din fotografiile ochilor pacienților, de exemplu. Departamentul de Sănătate al SUA a autorizat deja utilizarea acestei tehnologii în clinicile guvernamentale.

  • De ce nu au început să implementeze învățarea profundă mai devreme?

    Anterior, acest lucru era costisitor, dificil și consuma mult timp - aveai nevoie de procesoare grafice puternice, plăci video și memorie. Boom-ul învățării profunde este legat tocmai de larg răspândit GPU-uri, care accelerează și reduc costurile de calcul, capabilități practic nelimitate de stocare a datelor și dezvoltarea tehnologiei „big data”.

  • Aceasta este o tehnologie inovatoare, va schimba totul?

    Este greu de spus cu siguranță despre acest lucru; opiniile variază. Pe de o parte, Google, Facebook și altele companii mari au investit deja miliarde de dolari și sunt optimiști. În opinia lor, rețelele neuronale cu învățare profundă se pot schimba dispozitiv tehnologic pace. Unul dintre experții de top în învățarea automată, Andrew Ng, spune: „Dacă o persoană poate îndeplini o sarcină mental într-o secundă, cel mai probabil sarcina respectivă va fi automatizată în viitorul apropiat”. Ng numește învățarea automată „noua electricitate” – este o revoluție tehnologică, iar companiile care o ignoră se vor găsi rapid în spatele concurenței.

    Pe de altă parte, există sceptici: ei cred că învățarea profundă este un cuvânt de moda sau o rebranding a rețelelor neuronale. De exemplu, Serghei Bartunov, lector superior la Facultatea de Informatică a Școlii Superioare de Economie, consideră că acest algoritm este doar una dintre opțiunile (și nu cea mai bună) pentru formarea unei rețele neuronale, care a fost rapid preluată de publicații de masă și despre care toată lumea le cunoaște acum.

    Sergey Nikolenko, coautor al cărții „Deep Learning”: „Istoria inteligenței artificiale a cunoscut deja două „ierni”, când un val de hype și așteptări mari a fost urmat de dezamăgire. De ambele ori, apropo, a fost conectat cu rețele neuronale. În primul rând, la sfârșitul anilor 1950, s-a decis că perceptronul lui Rosenblatt va duce imediat la traducere automată și calculatoare conștiente de sine; dar, desigur, nu a funcționat din cauza hardware-ului limitat, a datelor și a lipsei de modele adecvate.

    Și la sfârșitul anilor 1980, aceeași greșeală a fost făcută când și-au dat seama cum să antreneze orice arhitectură de rețele neuronale. Părea că aici era, o cheie de aur care putea deschide orice uşă. Aceasta nu mai era o concluzie atât de naivă: într-adevăr, dacă luați o rețea neuronală de la sfârșitul anilor 1980, o măriți mecanic (măreșteți numărul de neuroni) și o antrenați pe seturi de date moderne și hardware modern, va funcționa foarte bine! Dar la acel moment nu existau suficiente date sau hardware, iar revoluția deep learning a trebuit să fie amânată până la sfârșitul anilor 2000.

    Trăim acum în al treilea val de hype în domeniul inteligenței artificiale. Dacă se va încheia într-o a treia „iarnă” sau cu crearea unei IA puternice, doar timpul va spune.”