A izbucnit balonul de învățare automată sau este începutul unui nou zori?

Lansat recent articol, care arată o tendință bună în învățarea automată în ultimii ani. Pe scurt: numărul startup-urilor de învățare automată a scăzut în ultimii doi ani.

A izbucnit balonul de învățare automată sau este începutul unui nou zori?
Bine. Să ne uităm la „dacă bula a izbucnit”, „cum să continuăm să trăim” și să vorbim despre unde vine această mârâială în primul rând.

Mai întâi, să vorbim despre care a fost impulsul acestei curbe. De unde a venit ea? Probabil își vor aminti totul victorie machine learning în 2012 la competiția ImageNet. La urma urmei, acesta este primul eveniment global! Dar în realitate nu este cazul. Și creșterea curbei începe puțin mai devreme. L-aș împărți în mai multe puncte.

  1. 2008 a văzut apariția termenului de „big data”. Au început produsele reale apărea din 2010. Big Data este direct legată de machine learning. Fără date mari, funcționarea stabilă a algoritmilor care existau la acel moment este imposibilă. Și acestea nu sunt rețele neuronale. Până în 2012, rețelele neuronale erau rezervația unei minorități marginale. Dar apoi au început să funcționeze algoritmi complet diferiți, care existau de ani, sau chiar decenii: SVM(1963,1993), Pădurea întâmplătoare (1995), AdaBoost (2003),... Startup-urile acelor ani sunt asociate în primul rând cu prelucrarea automată a datelor structurate: case de marcat, utilizatori, publicitate, multe altele.

    Un derivat al acestui prim val este un set de cadre precum XGBoost, CatBoost, LightGBM etc.

  2. În 2011-2012 rețele neuronale convoluționale a câștigat o serie de concursuri de recunoaștere a imaginii. Utilizarea lor efectivă a fost oarecum întârziată. Aș spune că startup-urile și soluțiile masiv semnificative au început să apară în 2014. A fost nevoie de doi ani pentru a digera faptul că neuronii încă funcționează, pentru a crea cadre convenabile care ar putea fi instalate și lansate într-un timp rezonabil, pentru a dezvolta metode care să stabilizeze și să accelereze timpul de convergență.

    Rețelele convoluționale au făcut posibilă rezolvarea problemelor de viziune computerizată: clasificarea imaginilor și a obiectelor din imagine, detectarea obiectelor, recunoașterea obiectelor și a oamenilor, îmbunătățirea imaginii etc., etc.

  3. 2015-2017. Boom-ul algoritmilor și proiectelor bazate pe rețele recurente sau analogii acestora (LSTM, GRU, TransformerNet etc.). Au apărut algoritmi de vorbire în text și sisteme de traducere automată care funcționează bine. Acestea se bazează parțial pe rețele convoluționale pentru a extrage caracteristicile de bază. Parțial pentru că am învățat cum să colectăm seturi de date foarte mari și bune.

A izbucnit balonul de învățare automată sau este începutul unui nou zori?

„A izbucnit bula? Este hype supraîncălzit? Au murit ca un blockchain?”
In caz contrar! Mâine Siri nu va mai funcționa pe telefonul tău, iar poimâine Tesla nu va ști diferența dintre o viraj și un cangur.

Rețelele neuronale funcționează deja. Sunt în zeci de dispozitive. Îți permit cu adevărat să câștigi bani, să schimbi piața și lumea din jurul tău. Hype arată puțin diferit:

A izbucnit balonul de învățare automată sau este începutul unui nou zori?

Doar că rețelele neuronale nu mai sunt ceva nou. Da, mulți oameni au așteptări mari. Dar un număr mare de companii au învățat să folosească neuronii și să facă produse pe baza acestora. Neuronii oferă noi funcționalități, vă permit să reduceți locurile de muncă și să reduceți prețul serviciilor:

  • Companiile producătoare integrează algoritmi pentru a analiza defectele pe linia de producție.
  • Fermele de animale cumpără sisteme pentru controlul vacilor.
  • Combine automate.
  • Centre de apel automate.
  • Filtre în SnapChat. (bine, măcar ceva util!)

Dar principalul, și nu cel mai evident: „Nu mai există idei noi sau nu vor aduce capital instantaneu”. Rețelele neuronale au rezolvat zeci de probleme. Și vor decide și mai mult. Toate ideile evidente care existau au dat naștere multor startup-uri. Dar tot ce era la suprafață fusese deja adunat. În ultimii doi ani, nu am întâlnit nicio idee nouă pentru utilizarea rețelelor neuronale. Nici o singură abordare nouă (bine, ok, există câteva probleme cu GAN-urile).

Și fiecare pornire ulterioară este din ce în ce mai complexă. Nu mai este nevoie de doi tipi care antrenează un neuron folosind date deschise. Este nevoie de programatori, un server, o echipă de markeri, suport complex etc.

Ca urmare, sunt mai puține startup-uri. Dar există mai multă producție. Trebuie să adăugați recunoașterea plăcuței de înmatriculare? Există sute de specialiști cu experiență relevantă pe piață. Poți angaja pe cineva și în câteva luni angajatul tău va face sistemul. Sau cumpărați gata făcute. Dar faci un nou startup?... Nebun!

Trebuie să creezi un sistem de urmărire a vizitatorilor - de ce să plătești pentru o grămadă de licențe când poți să-ți faci propriile în 3-4 luni, ascuți-l pentru afacerea ta.

Acum, rețelele neuronale parcurg aceeași cale pe care au trecut zeci de alte tehnologii.

Vă amintiți cum s-a schimbat conceptul de „dezvoltator de site-uri web” din 1995? Piața nu este încă saturată de specialiști. Sunt foarte puțini profesioniști. Dar pot pune pariu că în 5-10 ani nu va fi mare diferență între un programator Java și un dezvoltator de rețele neuronale. Vor fi destui din ambii specialiști pe piață.

Pur și simplu va exista o clasă de probleme care pot fi rezolvate de neuroni. A apărut o sarcină - angajați un specialist.

"Ce urmeaza? Unde este inteligența artificială promisă?”

Dar aici există o mică, dar interesantă neînțelegere :)

Stiva tehnologică care există astăzi, aparent, nu ne va conduce la inteligența artificială. Ideile și noutatea lor s-au epuizat în mare măsură. Să vorbim despre ceea ce deține nivelul actual de dezvoltare.

Restricții

Să începem cu mașinile autonome. Pare clar că este posibil să se producă mașini complet autonome cu tehnologia actuală. Dar peste câți ani se va întâmpla acest lucru nu este clar. Tesla crede că acest lucru se va întâmpla în câțiva ani -


Există multe altele specialiști, care estimează că este de 5-10 ani.

Cel mai probabil, în opinia mea, în 15 ani infrastructura orașelor se va schimba ea însăși în așa fel încât apariția mașinilor autonome să devină inevitabilă și să devină continuarea ei. Dar aceasta nu poate fi considerată inteligență. Tesla modernă este o conductă foarte complexă pentru filtrarea datelor, căutarea și recalificarea. Acestea sunt reguli-reguli-reguli, colectarea datelor și filtrele asupra lor (aici aici Am mai scris puțin despre asta, sau vizionați de la acest semne).

Prima problemă

Și aici vedem prima problemă fundamentală. Date mare. Acesta este exact ceea ce a dat naștere valului actual de rețele neuronale și învățarea automată. În zilele noastre, pentru a face ceva complex și automat, ai nevoie de multe date. Nu doar mult, ci foarte, foarte mult. Avem nevoie de algoritmi automati pentru colectarea, marcarea și utilizarea lor. Vrem să facem ca mașina să vadă camioanele cu fața la soare - trebuie mai întâi să colectăm un număr suficient de ele. Vrem ca mașina să nu înnebunească cu o bicicletă înșurubat în portbagaj - mai multe mostre.

Mai mult, un exemplu nu este suficient. Sute? Mii?

A izbucnit balonul de învățare automată sau este începutul unui nou zori?

A doua problemă

A doua problemă — vizualizarea a ceea ce a înțeles rețeaua noastră neuronală. Aceasta este o sarcină foarte netrivială. Până acum, puțini oameni înțeleg cum să vizualizeze acest lucru. Aceste articole sunt foarte recente, acestea sunt doar câteva exemple, chiar dacă îndepărtate:
Vizualizare obsesia pentru texturi. Arată bine pe ce tinde neuronul să se fixeze + ceea ce percepe ca informații de pornire.

A izbucnit balonul de învățare automată sau este începutul unui nou zori?
Vizualizare Atenție la traduceri. De fapt, atracția poate fi adesea folosită tocmai pentru a arăta ce a provocat o astfel de reacție în rețea. Am văzut astfel de lucruri atât pentru soluții de depanare, cât și pentru produse. Există o mulțime de articole pe această temă. Dar cu cât datele sunt mai complexe, cu atât este mai dificil să înțelegeți cum să obțineți o vizualizare robustă.

A izbucnit balonul de învățare automată sau este începutul unui nou zori?

Ei bine, da, vechiul set de „uite ce este în interiorul plasei în filtre" Aceste imagini au fost populare în urmă cu 3-4 ani, dar toată lumea și-a dat seama rapid că imaginile sunt frumoase, dar nu aveau prea multă semnificație.

A izbucnit balonul de învățare automată sau este începutul unui nou zori?

Nu am menționat zeci de alte gadget-uri, metode, hack-uri, cercetări despre cum să afișați interiorul rețelei. Funcționează aceste instrumente? Vă ajută să înțelegeți rapid care este problema și să depanați rețeaua?... Obțineți ultimul procent? Ei bine, cam la fel:

A izbucnit balonul de învățare automată sau este începutul unui nou zori?

Puteți urmări orice competiție pe Kaggle. Și o descriere a modului în care oamenii iau deciziile finale. Am stivuit 100-500-800 de unități de modele și a funcționat!

Exagerez, desigur. Dar aceste abordări nu oferă răspunsuri rapide și directe.

Având suficientă experiență, după ce ați cercetat diferite opțiuni, puteți da un verdict despre motivul pentru care sistemul dvs. a luat o astfel de decizie. Dar va fi dificil să corectați comportamentul sistemului. Instalați o cârjă, mutați pragul, adăugați un set de date, luați o altă rețea backend.

A treia problemă

A treia problemă fundamentală — grilele învață statistici, nu logica. Statistic asta față:

A izbucnit balonul de învățare automată sau este începutul unui nou zori?

În mod logic, nu seamănă prea mult. Rețelele neuronale nu învață nimic complex decât dacă sunt forțate. Ei învață întotdeauna cele mai simple semne posibile. Ai ochi, nas, cap? Deci aceasta este fata! Sau dați un exemplu în care ochii nu înseamnă o față. Și din nou - milioane de exemple.

Este destul loc în partea de jos

Aș spune că aceste trei probleme globale limitează în prezent dezvoltarea rețelelor neuronale și a învățării automate. Și acolo unde aceste probleme nu l-au limitat, este deja utilizat în mod activ.

Acesta este sfarsitul? Sunt rețelele neuronale funcționale?

Necunoscut. Dar, desigur, toată lumea speră că nu.

Există multe abordări și direcții pentru rezolvarea problemelor fundamentale pe care le-am evidențiat mai sus. Dar până acum, niciuna dintre aceste abordări nu a făcut posibil să se facă ceva fundamental nou, să se rezolve ceva care nu a fost încă rezolvat. Până acum, toate proiectele fundamentale sunt realizate pe baza unor abordări stabile (Tesla), sau rămân proiecte de testare ale institutelor sau corporațiilor (Google Brain, OpenAI).

În linii mari, direcția principală este crearea unei reprezentări la nivel înalt a datelor de intrare. Într-un sens, „memorie”. Cel mai simplu exemplu de memorie este diversele „Încorporare” - reprezentări de imagine. Ei bine, de exemplu, toate sistemele de recunoaștere facială. Rețeaua învață să obțină de la o față o reprezentare stabilă care nu depinde de rotație, iluminare sau rezoluție. În esență, rețeaua minimizează metrica „fețele diferite sunt departe” și „fețele identice sunt aproape”.

A izbucnit balonul de învățare automată sau este începutul unui nou zori?

Pentru o astfel de pregătire sunt necesare zeci și sute de mii de exemple. Dar rezultatul poartă unele dintre rudimentele „Învățare unică”. Acum nu avem nevoie de sute de chipuri pentru a ne aminti o persoană. O singură față și asta e tot ce suntem să aflăm!
Există o singură problemă... Grila poate învăța doar obiecte destul de simple. Când încercați să distingeți nu fețele, ci, de exemplu, „oamenii după haine” (sarcina Reidentificare) - calitatea scade cu multe ordine de mărime. Și rețeaua nu mai poate învăța modificări destul de evidente ale unghiurilor.

Și învățarea din milioane de exemple este, de asemenea, un fel de distracție.

Se lucrează pentru reducerea semnificativă a alegerilor. De exemplu, se poate aminti imediat una dintre primele lucrări de pe Învățare OneShot de la google:

A izbucnit balonul de învățare automată sau este începutul unui nou zori?

Există multe astfel de lucrări, de exemplu 1 sau 2 sau 3.

Există un minus - de obicei antrenamentul funcționează bine pe câteva exemple simple, „MNIST”. Și când treceți la sarcini complexe, aveți nevoie de o bază de date mare, de un model de obiecte sau de un fel de magie.
În general, munca la antrenamentul One-Shot este un subiect foarte interesant. Găsești o mulțime de idei. Dar, în cea mai mare parte, cele două probleme pe care le-am enumerat (preinstruire pe un set de date uriaș / instabilitate pe date complexe) interferează foarte mult cu învățarea.

Pe de altă parte, GAN-urile — rețele generative adversare — abordează subiectul Embedding. Probabil ați citit o grămadă de articole despre Habré pe această temă. (1, 2,3)
O caracteristică a GAN este formarea unui spațiu intern de stare (în esență aceeași încorporare), care vă permite să desenați o imagine. Poate fi persoană, poate fi activitate.

A izbucnit balonul de învățare automată sau este începutul unui nou zori?

Problema cu GAN este că, cu cât obiectul generat este mai complex, cu atât este mai dificil să-l descrii în logica „generator-discriminator”. Drept urmare, singurele aplicații reale ale GAN despre care se aude sunt DeepFake, care, din nou, manipulează reprezentările faciale (pentru care există o bază uriașă).

Am văzut foarte puține alte utilizări utile. De obicei, un fel de șmecherie care implică finisarea desenelor de imagini.

Și din nou. Nimeni nu are idee cum ne va permite acest lucru să trecem într-un viitor mai luminos. Reprezentarea logicii/spațiului într-o rețea neuronală este bună. Dar avem nevoie de un număr mare de exemple, nu înțelegem cum neuronul reprezintă acest lucru în sine, nu înțelegem cum să-l facem pe neuron să-și amintească o idee cu adevărat complexă.

Consolidarea învățării - aceasta este o abordare dintr-o direcție complet diferită. Cu siguranță vă amintiți cum Google i-a învins pe toată lumea din Go. Victorii recente în Starcraft și Dota. Dar aici totul este departe de a fi atât de roz și promițător. El vorbește cel mai bine despre RL și complexitățile sale acest articol.

Pentru a rezuma pe scurt ceea ce a scris autorul:

  • Modelele din cutie nu se potrivesc/funcționează prost în majoritatea cazurilor
  • Problemele practice sunt mai ușor de rezolvat în alte moduri. Boston Dynamics nu folosește RL din cauza complexității/impredictibilității/complexității sale de calcul
  • Pentru ca RL să funcționeze, aveți nevoie de o funcție complexă. Este adesea dificil de creat/scris
  • Dificil de antrenat modele. Trebuie să petreci mult timp pentru a pompa și a ieși din optima locală
  • Ca urmare, este dificil să repeți modelul, modelul este instabil cu cele mai mici modificări
  • Adesea, supraajustează unele modele aleatoare, chiar și un generator de numere aleatorii

Punctul cheie este că RL nu lucrează încă în producție. Google are câteva experimente ( 1, 2 ). Dar nu am văzut un singur sistem de produs.

Memorie. Dezavantajul a tot ceea ce este descris mai sus este lipsa structurii. Una dintre abordările pentru a încerca să aranjezi toate acestea este de a oferi rețelei neuronale acces la memorie separată. Pentru ca ea să poată înregistra și rescrie rezultatele pașilor ei acolo. Apoi, rețeaua neuronală poate fi determinată de starea curentă a memoriei. Acest lucru este foarte asemănător cu procesoarele și computerele clasice.

Cel mai faimos și popular articol — de la DeepMind:

A izbucnit balonul de învățare automată sau este începutul unui nou zori?

Se pare că aceasta este cheia înțelegerii inteligenței? Dar probabil că nu. Sistemul necesită încă o cantitate imensă de date pentru antrenament. Și funcționează în principal cu date tabulare structurate. Mai mult, când Facebook hotărât o problemă similară, apoi au urmat calea „scurcă memoria, faceți neuronul mai complicat și au mai multe exemple - și va învăța de la sine”.

Descurcarea. O altă modalitate de a crea o memorie semnificativă este să luați aceleași înglobări, dar în timpul antrenamentului, introduceți criterii suplimentare care să vă permită să evidențiați „sensurile” în ele. De exemplu, dorim să antrenăm o rețea neuronală pentru a distinge comportamentul uman într-un magazin. Dacă am urma calea standard, ar trebui să facem o duzină de rețele. Unul caută o persoană, al doilea determină ce face, al treilea este vârsta lui, al patrulea este sexul lui. Logica separată se uită la partea magazinului în care face/este antrenat să facă acest lucru. Al treilea îi determină traiectoria etc.

Sau, dacă ar exista o cantitate infinită de date, atunci ar fi posibil să se antreneze o singură rețea pentru toate rezultatele posibile (în mod evident, o astfel de serie de date nu poate fi colectată).

Abordarea dezentelirii ne spune - să antrenăm rețeaua astfel încât ea însăși să poată distinge între concepte. Astfel încât să formeze o încorporare pe baza videoclipului, în care o zonă ar determina acțiunea, se va determina în timp poziția pe podea, se va determina înălțimea persoanei și se va determina sexul persoanei. În același timp, la antrenament, aș dori aproape să nu solicit rețelei cu astfel de concepte cheie, ci mai degrabă să evidențieze și să grupeze zone. Există destul de multe astfel de articole (unele dintre ele 1, 2, 3) și în general sunt destul de teoretice.

Dar această direcție, cel puțin teoretic, ar trebui să acopere problemele enumerate la început.

A izbucnit balonul de învățare automată sau este începutul unui nou zori?

Descompunerea imaginii conform parametrilor „culoarea peretelui/culoarea podelei/forma obiectului/culoarea obiectului/etc.”

A izbucnit balonul de învățare automată sau este începutul unui nou zori?

Descompunerea unei fețe în funcție de parametrii „mărime, sprâncene, orientare, culoarea pielii etc.”

Alții

Există multe alte domenii, nu atât de globale, care vă permit să reduceți cumva baza de date, să lucrați cu date mai eterogene etc.

Atenție. Probabil că nu are sens să separăm asta ca metodă separată. Doar o abordare care îi îmbunătățește pe alții. Multe articole îi sunt dedicate (1,2,3). Punctul de atenție este de a îmbunătăți răspunsul rețelei în mod specific la obiectele semnificative în timpul antrenamentului. Adesea printr-un fel de desemnare țintă externă sau o rețea externă mică.

Simulare 3D. Dacă faci un motor 3D bun, poți acoperi adesea 90% din datele de antrenament cu el (am văzut chiar un exemplu în care aproape 99% din date au fost acoperite de un motor bun). Există multe idei și hack-uri despre cum să funcționeze o rețea antrenată pe un motor 3D folosind date reale (ajustare fină, transfer de stil etc.). Dar, adesea, a face un motor bun este cu câteva ordine de mărime mai dificilă decât colectarea datelor. Exemple când au fost fabricate motoarele:
Antrenament robot (google, braingarden)
pregătire recunoaştere mărfuri în magazin (dar în cele două proiecte pe care le-am făcut, ne-am putea lipsi cu ușurință).
Antrenament la Tesla (din nou, videoclipul de mai sus).

Constatări

Întregul articol este, într-un fel, concluzii. Probabil că mesajul principal pe care vroiam să-l transmit a fost „freebiturile s-au terminat, neuronii nu mai oferă soluții simple”. Acum trebuie să muncim din greu pentru a lua decizii complexe. Sau munciți din greu făcând cercetări științifice complexe.

În general, subiectul este discutabil. Poate cititorii au exemple mai interesante?

Sursa: www.habr.com

Adauga un comentariu