Ce este învățarea profundă și de ce toată lumea vorbește despre asta? Rețele neuronale și învățarea profundă: viitorul este aproape.

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ă antrenată de mașină nu recunoaște bine literele scrise de mână - și pentru a nu se confunda în diferite ortografii, toate acestea trebuie î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ă în sine determină care elemente vizuale sunt interesante pentru ea pentru rezolvarea acestei probleme și le ierarhizează în ordinea importanței pentru a înțelege mai bine în viitor ceea ce este arătat î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 traducerile de imagini de la Google: 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, Google a lansat WaveNet, un sistem care poate simula vorbirea umană. Pentru a face acest lucru, compania a încărcat în sistem milioane de minute de interogări vocale înregistrate care au fost folosite în proiectul OK Google, iar după ce a studiat, 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 utilizarea pe scară largă a procesoarelor grafice, care accelerează și reduc costul calculelor, 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 alte companii mari au investit deja miliarde de dolari și sunt optimiste. În opinia lor, rețelele neuronale cu învățare profundă sunt capabile să schimbe structura tehnologică a lumii. 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.”

  • Se vorbește și se scrie mult despre rețelele neuronale artificiale astăzi, atât în ​​contextul big data și al învățării automate, cât și în afara acestuia. În acest articol, vom aminti semnificația acestui concept, vom sublinia din nou domeniul de aplicare al acestuia și, de asemenea, vom vorbi despre o abordare importantă care este asociată cu rețelele neuronale - învățarea profundă, vom descrie conceptul său, precum și avantajele. și dezavantaje în cazuri specifice de utilizare.

    Ce este o rețea neuronală?

    După cum știți, conceptul de rețea neuronală (NN) vine din biologie și este un model oarecum simplificat al structurii creierului uman. Dar să nu ne adâncim în sălbăticia științelor naturale - cel mai simplu mod este să ne imaginăm un neuron (inclusiv unul artificial) ca un fel de cutie neagră cu multe găuri de intrare și o singură ieșire.

    Matematic, un neuron artificial transformă un vector de semnale de intrare (impacte) X într-un vector de semnale de ieșire Y folosind o funcție numită funcție de activare. În cadrul conexiunii (rețea neuronală artificială - ANN), funcționează trei tipuri de neuroni: intrare (primirea informațiilor din lumea exterioară - valorile variabilelor care ne interesează), ieșire (returnarea variabilelor dorite - de exemplu, prognoze). , sau semnale de control), precum și neuronii intermediari , care efectuează anumite funcții interne („ascunse”). O ANN clasică constă astfel din trei sau mai multe straturi de neuroni, iar în al doilea și straturile ulterioare („ascunse” și ieșire), fiecare element este conectat la toate elementele stratului anterior.

    Este important de reținut conceptul de feedback, care determină tipul structurii ANN: transmisie directă a semnalului (semnalele trec secvențial din stratul de intrare prin stratul ascuns și intră în stratul de ieșire) și structură recurentă, când rețeaua conține conexiuni care merg înapoi , de la neuronii mai îndepărtați la cei mai apropiați). Toate aceste concepte constituie informația minimă necesară pentru a trece la următorul nivel de înțelegere a ANN - antrenarea unei rețele neuronale, clasificarea metodelor acesteia și înțelegerea principiilor de funcționare ale fiecăreia dintre ele.

    Antrenamentul rețelei neuronale

    Nu trebuie să uităm de ce se folosesc astfel de categorii în general - altfel există riscul de a ne bloca în matematica abstractă. De fapt, rețelele neuronale artificiale sunt înțelese ca o clasă de metode de rezolvare a anumitor probleme practice, printre care principalele se numără problemele de recunoaștere a modelelor, luarea deciziilor, aproximarea și compresia datelor, precum și cele mai interesante pentru noi probleme de cluster. analiză și prognoză.

    Fără a merge la cealaltă extremă și fără a intra în detalii despre funcționarea metodelor ANN în fiecare caz specific, să ne reamintim că în orice circumstanțe este capacitatea unei rețele neuronale de a învăța (cu un profesor sau „pe cont propriu” ) acesta este punct-cheie folosindu-l pentru a rezolva probleme practice.

    În general, formarea unui ANN este după cum urmează:

    1. neuronii de intrare primesc variabile („stimuli”) din mediul extern;
    2. în conformitate cu informațiile primite, parametrii liberi ai rețelei neuronale se modifică (straturile intermediare ale neuronilor funcționează);
    3. Ca urmare a modificărilor în structura rețelei neuronale, rețeaua „reacționează” la informații într-un mod diferit.

    Acesta este algoritmul general pentru antrenarea unei rețele neuronale (amintiți-vă de câinele lui Pavlov - da, da, mecanismul intern de formare reflex condiționat exact asta este – și să uităm imediat: la urma urmei, contextul nostru presupune operarea cu concepte și exemple tehnice).

    Este clar că un algoritm de învățare universal nu există și, cel mai probabil, nu poate exista; Din punct de vedere conceptual, abordările învățării sunt împărțite în învățare supravegheată și învățare nesupravegheată. Primul algoritm presupune că pentru fiecare vector de intrare („învățare”) există o valoare necesară a vectorului de ieșire („țintă”) - astfel, aceste două valori formează o pereche de antrenament, iar întregul set de astfel de perechi este set de antrenament. În cazul învățării nesupravegheate, setul de antrenament este format doar din vectori de intrare – iar această situație este mai plauzibilă din punct de vedere al vieții reale.

    Invatare profunda

    Conceptul de învățare profundă se referă la o clasificare diferită și denotă o abordare a formării așa-numitelor structuri profunde, care includ rețele neuronale pe mai multe niveluri. Un exemplu simplu din domeniul recunoașterii imaginilor: este necesar să se învețe o mașină să identifice trăsături din ce în ce mai abstracte în ceea ce privește alte trăsături abstracte, adică să determine relația dintre expresia întregii fețe, a ochilor și a gurii și, în cele din urmă, grupuri de pixeli colorați din punct de vedere matematic. Astfel, într-o rețea neuronală profundă, fiecare nivel de caracteristici are propriul său strat; Este clar că pregătirea unui astfel de „colos” necesită experiența adecvată a cercetătorilor și nivelul de hardware. Condițiile s-au dezvoltat în favoarea învățării neuronale profunde abia în 2006 – iar opt ani mai târziu putem vorbi despre revoluția pe care această abordare a produs-o în învățarea automată.

    Deci, în primul rând, în contextul articolului nostru, merită remarcat următoarele: învățarea profundă în majoritatea cazurilor nu este supravegheată de o persoană. Adică, această abordare implică antrenarea unei rețele neuronale fără profesor. Acesta este principalul avantaj al abordării „profunde”: învățarea automată supravegheată, în special în cazul structurilor profunde, necesită costuri enorme de timp – și forță de muncă. Învățarea profundă este o abordare care modelează gândirea abstractă umană (sau, conform macar, reprezintă o încercare de a o aborda), mai degrabă decât de a o folosi.

    Ideea, ca de obicei, este minunată, dar în calea abordării apar probleme destul de naturale - în primul rând, înrădăcinate în pretențiile sale de universalitate. De fapt, dacă abordările de deep learning au obținut un succes semnificativ în domeniul recunoașterii imaginilor, atunci cu aceeași procesare limbaj natural Există încă mult mai multe întrebări decât răspunsuri. Este evident că în următorii n ani este puțin probabil să fie posibil să se creeze un „Leonardo Da Vinci artificial” sau chiar - cel puțin! - „homo sapiens artificial”.

    Totuși, cercetătorii în inteligența artificială se confruntă deja cu chestiunea eticii: temerile exprimate în fiecare film științifico-fantastic care se respectă, de la „Terminator” la „Transformers”, nu mai par amuzante (rețelele neuronale moderne sofisticate pot fi deja considerate plauzibile). modelează munca creierului insectei!), dar sunt în mod clar inutile pentru moment.

    Viitorul tehnologic ideal ne apare ca o epocă în care o persoană va putea să-și delege majoritatea puterilor unei mașini – sau cel puțin să îi permită să-i faciliteze o parte semnificativă a muncii sale intelectuale. Conceptul de învățare profundă este un pas către acest vis. Drumul de urmat este lung, dar este deja clar că rețelele neuronale și abordările în continuă evoluție asociate cu acestea sunt capabile să realizeze aspirațiile scriitorilor de science fiction de-a lungul timpului.

    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 conceput pentru a manipula grafice este o mașină ideală pentru calcularea modelelor de grafice create prin î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 descoperit și de ce rețelele profunde necesită atât de multă memorie și ce soluții există pentru a rezolva problema.

    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 tipuri variate 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 definite de mici programe 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 cea mai eficientă utilizare a resurselor IPU.

    Compilatorul traduce operațiunile standard utilizate în sistemele de învățare automată în cod de aplicație extrem de optimizat pentru IPU. 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 comunicări puternice între procesele din fiecare strat al rețelei, cu o comunicare mai ușoară între straturi.

    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ă. O rețea simplă pentru a explora acest set de date ajută la înțelegerea graficelor 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?

    Amprentele mari de memorie sunt una dintre cele mai mari provocări ale rețelelor 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 creier umanși cum funcționează, este în general clar că nu există un depozit mare 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 procesoarele convenționale este o modalitate de a evita problema blocajului memoriei, deblocând o lățime de bandă enormă și consumând mult mai puțină 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 o valoare mai mică de precizie pentru 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 realiza densitate mare calculele. 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. Astfel, trecerea la greutăți de precizie mai mică și activări pe GPU necesită încă mai mult de 7,5 GB de 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 de memorie externă deja limitată la lățime de bandă suferă de sarcina suplimentară de a reîncărca constant cântarul și de a stoca și prelua funcțiile 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. În acest fel, memoria existentă poate fi reutilizată. În al doilea rând, posibilitatea de reutilizare a memoriei 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 prezent.

    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 procesoarele și GPU-urile actuale.

    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 pentru rezolvarea problemelor reale, dar acest lucru nu este deloc adevărat. 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. Firme celebre precum Google, Tesla și Uber încearcă deja să introducă mașini autonome pe străzile orașului.

    Ford prevede o creștere semnificativă a ponderii vehiculelor autonome 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). Puțin mai departe este învățarea automată, iar chiar în centru sunt î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. Un nivel de bază al rețeaua, un perceptron, este în esență un analog 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 sunt numite noduri ascunse deoarece nu au conexiuni cu lumea exterioară, cum ar fi nodurile de ieșire și de intrare. Ele sunt apelate numai atunci când straturile anterioare sunt activate.

    Învățarea profundă 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ă luăm în considerare învățarea automată ca o ramură sau o variantă a inteligenței artificiale, atunci învățarea profundă este un tip specializat de 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, se folosesc de obicei o varietate de tehnici, software special și informatică, care descriu 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 metoda de învățare supravegheată este adesea destul de convenabilă, o versiune mai complexă este totuși mai bună. Î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. Viziunea 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 prezentată în două fotografii diferite. 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. limbi diferite, așa că fiecare dintre ei a necesitat o abordare diferită”, spune Andrew Ng, șeful centrului de cercetare Baidu. „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 de 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 Deep Learning, dimpotrivă, se adresează începătorilor. 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 cartea cu un nume grăitor Cartea de învățare profundă. 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:

    Revoluția viitoare a roboților inteligenți a fost prezisă în fiecare deceniu î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. Succesele 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 unui traducător electronic la sfârșitul anilor 1990 - au fost mai probabil rezultatul unor calcule „brutale” decât transferul mecanismelor de percepţie umană către procesele computerizate.calculele.

    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 o cutie pe un fundal simplu. Ei pot recunoaște acum fețele umane la fel de bine ca oamenii, chiar și pe complex, fundal natural. Î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ă.

    Cercetările privind rețelele neuronale în domeniul învățării automate în majoritatea cazurilor 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 chip 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. Algoritmii existenți nu au putut învăța să facă acest lucru 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 pentru „neuronii” de prim nivel, care apoi transmite „imaginea” prin conexiuni neliniare la neuronii de 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.

    Combinația de tehnici de învățare profundă, cunoștințe avansate despre neuroștiință și puterea computerelor moderne ne deschide perspective pentru inteligența artificială pe care nici măcar nu le putem evalua încă. Adevărul este deja evident că mintea poate avea nu numai o natură biologică.