ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 150
Numărul 149 Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 19
Abonament PDF

Deep learning

Roland Szabo
Junior Python Developer
@3Pillar Global



PROGRAMARE


În ultimii doi -trei ani a apărut un nou buzzword: deep learning. În 2012 Microsoft a prezentat un demo destul de impresionant care recunoaștea vorbitul în limba engleză, traducea în chineză, apoi reda, cu vocea originală, în chineză, traducerea. Tot atunci, Google a realizat un sistem care, din 10 milioane de imagini alese din clipuri de pe YouTube, a învățat singur să recunoască fețe de pisici și alte 22.000 de categorii de obiecte.

În decembrie 2013, Facebook a deschis un laborator de cercetare în domeniul inteligenței artificiale, condus de Yann LeCunn de la Universitatea din New York, unul dintre principalii cercetători în domeniul "deep learning".

Deep learning-ul reprezintă o categorie de algoritmi de învățare automată care se remarcă prin faptul că într-o primă etapă învață cum să se prelucreze datele de intrare și ulterior funcția dorită. Până acum, pentru recunoașterea de obiecte în imagini, cercetătorii trebuiau să găsească tot felul de trăsături specifice obiectelor, să le extragă din imagini și apoi să aplice un algoritm de clasificare cum ar fi SVM sau Random Forest pentru a determina ce conține fiecare imagine. Pentru unele obiecte s-au găsit trăsături bune (recunoașterea fețelor funcționează destul de bine), pentru altele nu chiar (un tocător de hârtie este greu de descris și recunoscut chiar și de către oameni). În contrast, algoritmii de deep learning nu necesită extragerea de trăsături despre categorii în prealabil, deoarece ele învață să facă aceasta în mod automat.

Partea de "deep" din nume provine din faptul că în loc de a avea un singur nivel care primește datele de intrare și ne dă rezultatul dorit, avem o serie de nivele care procesează datele primite de la nivele anterioare, extrăgând trăsături de nivel tot mai înalt. Ultimul nivel este cel care se ocupă de obținerea rezultatului, după ce datele au fost deja transformate și comprimate.

Filtre învățate de un Restricted Boltzmann Machine pe MNIST

Începuturile "deep learning"-ului

Marea partea a algoritmilor de deep learning este reprezentată de diferite forme de rețele neuronale. Prima variantă a acestora a fost perceptronul, propus în 1958 de către Frank Rosenblatt, bazându-se pe cercetările lui Warren McCulloch și Walter Pitts. Aceștia au propus în 1943 un model matematic pentru funcționarea neuronilor din creierul animal.

Perceptronul este un model foarte simplu: intrarea este înmulțită cu o pondere și apoi toate rezultatele sunt adunate. Dacă rezultatul este mai mare decât o valoare predefinită, atunci rezultatul este 1, altfel este 0. Ponderile acestea trebuie adaptate pentru fiecare set de date în parte. Există un algoritm prin care se pot calcula.

Însă acestui model simplu i s-a descoperit o problemă majoră: nu funcționa decât pentru date linear separabile. De exemplu: în plan, dacă toate punctele care au clasa pozitivă se pot separa cu o dreaptă de punctele cu clasa negativă. Aceasta este o limitare mare, ceea ce a dus la abandonarea pentru o vreme a rețelelor neuronale .

În 1975, Paul Werbos a descoperit algoritmul "backpropagation", care permitea folosirea mai multor straturi în rețelele neuronale. Dacă în perceptron intrările erau folosite pentru a calcula imediat rezultatul, acum se puteau folosi mai multe straturi, care efectau o prelucrare a datelor din stratul anterior, și se puteau folosi alte funcții de activare (rezultatul nu mai trece brusc de la negativ la pozitiv, ci are o trecere continuă). Hornik a demonstrat teoretic că o rețea neuronală cu un strat ascuns, cu un număr suficient de mare de neuroni, putea să aproximeze orice funcție computabilă, cu o precizie arbitrară. Algoritmul funcționează în felul următor: inițializezi aleatoriu toate ponderile dintre neuroni și începi să vezi ce valori s-ar obține pentru datele tale de intrare. Calculezi diferența față de valoarea care trebuie să fie obținută și aceasta o "propagi înapoi" pe penultimul strat, împărțind eroarea în mod proporțional la fiecare neuron, în funcție de ce pondere avea. Această propagare înapoi se repetă până se ajunge la primul strat și apoi se calculează noile valori obținute. Acest ciclu de corectare se repetă până când eroarea obținută pe datele noastre este suficient de mică (sau până ne-am plictisit să mai așteptăm).

Deci am rezolvat problema, avem algoritmul perfect pentru învățare automată? Nu chiar. S-au descoperit alte două probleme. Prima era că numărul de neuroni necesar pentru a aproxima funcții creștea exponențial cu numărul de intrări. O altă problemă era că s-a demonstrat că antrenarea rețelelor neuronale aparține clasei de probleme NP-Complete, despre care se presupune că nu poate fi rezolvată în timp polinomial.

Din cauza acestor două probleme și a utilizării altor tehnici mai rapide precum arborii de decizie (1986), SVM (1996)sau random forests (1995), rețelele neuronale au fost iarăși neglijate pentru o vreme de marea parte a cercetătorilor. Totuși, unii au obținut rezultate bune cu ele, cum ar fi Yann LeCun cu LeNet (1998). Le Net este un sistem de recunoaștere a cifrelor scrise de mână, folosit la multe bănci, bazat pe rețele neuronale convoluționale.

Schemă a straturilor din LeNet

Marea descoperire

O schimbare majoră de paradigmă a apărut în 2006, când Geoffrey Hinton a publicat două articole care conțineau idei noi și revoluționare: "Reducing the dimensionality of data with neural networks" și "A fast learning algorithm for deep belief nets", bazate pe Restricted Boltzmann Machines. Acești algoritmi noi pornesc căutarea pentru parametrii rețelelor neuronale din locuri care sunt mai aproape de valorile optimale. Rețelele neuronale se antrenau strat cu strat în mod nesupervizat, pentru a găsi structura din spatele datelor, pentru ca la sfârșit să se efectueze corecții fine folosind algoritmul clasic de backpropagation.

Unul dintre testele standard pentru tehnici de învățare automată este MNIST, care este un set de 70.000 de imagini conținând fiecare câte o cifră. Datele sunt împărțite în două, 60.000 de imagini fiind folosite pentru antrenare, iar 10.000 pentru testare. Se evită astfel situația în care algoritmul de învățare automată pur și simplu memorează valorile cu care a fost antrenat, verificându-se dacă este capabil de a generaliza și la valori noi. Pe acest set de date, o rețea antrenată în prealabil cu RBM-uri a obținut o eroare de 1%, care la vremea respectivă era printre cinci cele mai bune rezultate.

Structura unui Deep Belief Network, fomat dintr-o serie de RBM-uri suprapuse.

În 2007 Yoshua Bengio a introdus autoencodere în locul RBM-urilor, care au fost apoi dezvoltate și au apărut tot felul de variații, cum ar fi denoising autoencoder, sparse autoencoder.

S-au făcut multe progrese în acest domeniu de învățare prealabilă, până când în 2010 James Martens a publicat un articol în care prezenta un alt algoritm pentru găsirea parametrilor, folosind derivate de ordinul 2 și fără a folosi învățarea nesupervizată prealabilă, care obținea rezultate mai bune decât rezultatele de până atunci.

Tot în același an, Dan Cireșan a arătat că nici măcar acest algoritm nu este necesar, ci, folosind algoritmul clasic de backpropagare, cu o rețea adâncă și lată, pe GPU, folosind deformări elastice pe imagini, se pot obține rezultate excelente pe MNIST: 0.35% eroare. În 2012, același grup a stabilit recordul curent pe MNIST, de 0.23%, care este o eroare mai mică decât cea făcută de oameni în urma clasificării. De data aceasta au folosit rețele neuronale convoluționale și max-pooling, dar tot fără antrenare prealabilă.

Unde suntem azi

Cercul s-a închis și am revenit de unde am "început": ultimele rezultate nu mai folosesc antrenarea prealabilă nesupervizată, ci doar algoritmul de backpropagation. Îmbunătățirile se aduc în domeniul funcțiilor de activare ( care se referă la cum se trec datele de la un strat la altul), unde acum sunt la modă "Rectified Linear Units", precum și în cel al tehnicilor de regularizare (care ajută la generalizare și previn memorarea intrărilor) precum maxout și dropout și la alternarea straturilor convoluționale și a celor de max-pooling.

În articolele următoare se vor prezenta avantajele și dezavantajele tehnicilor menționate lor, respectiv cum se pot implementa folosind diverse framework-uri de învățare automată.

NUMĂRUL 149 - Development with AI

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects