Rețele neuronale. Unde se duce toate astea?

Articolul constă din două părți:

  1. O scurtă descriere a unor arhitecturi de rețea pentru detectarea obiectelor în imagini și segmentarea imaginilor cu cele mai înțelese legături către resurse pentru mine. Am încercat să aleg explicații video și de preferință în rusă.
  2. A doua parte este o încercare de a înțelege direcția de dezvoltare a arhitecturilor rețelelor neuronale. Și tehnologii bazate pe ele.

Rețele neuronale. Unde se duce toate astea?

Figura 1 – Înțelegerea arhitecturilor rețelelor neuronale nu este ușoară

Totul a început prin realizarea a două aplicații demonstrative pentru clasificarea și detectarea obiectelor pe un telefon Android:

  • Demo back-end, când datele sunt procesate pe server și transmise către telefon. Clasificarea imaginilor a trei tipuri de urși: maro, negru și pluș.
  • Demo front-endatunci când datele sunt procesate chiar pe telefon. Detectarea obiectelor (detecția obiectelor) de trei tipuri: alune, smochine și curmale.

Există o diferență între sarcinile de clasificare a imaginilor, detectarea obiectelor într-o imagine și segmentarea imaginii. Prin urmare, a fost nevoie de a afla care arhitecturi de rețele neuronale detectează obiecte în imagini și care pot segmenta. Am găsit următoarele exemple de arhitecturi cu cele mai înțelese legături către resurse pentru mine:

  • O serie de arhitecturi bazate pe R-CNN (Rregiuni cu Convolutie Neural Ncaracteristici etworks): R-CNN, Fast R-CNN, R-CNN mai rapid, Mască R-CNN. Pentru a detecta un obiect dintr-o imagine, casetele de delimitare sunt alocate utilizând mecanismul Region Proposal Network (RPN). Inițial, a fost folosit mecanismul de căutare selectivă mai lent în locul RPN. Apoi regiunile limitate selectate sunt alimentate la intrarea unei rețele neuronale convenționale pentru clasificare. Arhitectura R-CNN are bucle explicite „for” în regiuni limitate, însumând până la 2000 de rulări prin rețeaua internă AlexNet. Buclele explicite „for” încetinesc viteza de procesare a imaginii. Numărul de bucle explicite care rulează prin rețeaua neuronală internă scade odată cu fiecare nouă versiune a arhitecturii și sunt făcute zeci de alte modificări pentru a crește viteza și pentru a înlocui sarcina de detectare a obiectelor cu segmentarea obiectelor în Mask R-CNN.
  • Yolo (You Oumai Lde asemenea Once) este prima rețea neuronală care a recunoscut obiecte în timp real pe dispozitive mobile. Caracteristica distinctivă: distingerea obiectelor într-o singură cursă (doar uitați-vă o dată). Adică, în arhitectura YOLO nu există bucle explicite „for”, motiv pentru care rețeaua funcționează rapid. De exemplu, această analogie: în NumPy, atunci când se efectuează operații cu matrice, nu există nici bucle explicite „for”, care în NumPy sunt implementate la nivelurile inferioare ale arhitecturii prin limbajul de programare C. YOLO folosește o grilă de ferestre predefinite. Pentru a preveni definirea de mai multe ori a aceluiași obiect, se folosește coeficientul de suprapunere a ferestrei (IoU). Iintersecție oVer Union). Această arhitectură operează pe o gamă largă și are înalte robusteţe: Un model poate fi antrenat pe fotografii, dar totuși se poate comporta bine pe picturile desenate manual.
  • SSD (Sfoc SMultiBox fierbinte Detector) – sunt folosite cele mai de succes „hack-uri” ale arhitecturii YOLO (de exemplu, suprimarea non-maximum) și sunt adăugate altele noi pentru a face rețeaua neuronală să funcționeze mai rapid și mai precis. Caracteristica distinctivă: distingerea obiectelor într-o singură rulare folosind o grilă dată de ferestre (caseta implicită) pe piramida imaginii. Piramida imaginii este codificată în tensori de convoluție prin operații succesive de convoluție și pooling (cu operația de max-pooling, dimensiunea spațială scade). În acest fel, atât obiectele mari cât și cele mici sunt determinate într-o singură rulare a rețelei.
  • MobileSSD (MobilNetV2+ SSD) este o combinație a două arhitecturi de rețele neuronale. Prima rețea MobileNetV2 funcționează rapid și mărește acuratețea recunoașterii. MobileNetV2 este folosit în loc de VGG-16, care a fost folosit inițial în Articol original. A doua rețea SSD determină locația obiectelor din imagine.
  • SqueezeNet – o rețea neuronală foarte mică, dar precisă. Prin ea însăși, nu rezolvă problema detectării obiectelor. Cu toate acestea, poate fi utilizat într-o combinație de arhitecturi diferite. Și folosit în dispozitivele mobile. Caracteristica distinctivă este că datele sunt mai întâi comprimate în patru filtre convoluționale 1×1 și apoi extinse în patru filtre convoluționale 1×1 și patru 3×3. O astfel de iterație a compresiei-extindere a datelor se numește „Modul de incendiu”.
  • DeepLab (Semantic Image Segmentation with Deep Convolutional Nets) – segmentarea obiectelor din imagine. O caracteristică distinctivă a arhitecturii este convoluția dilatată, care păstrează rezoluția spațială. Aceasta este urmată de o etapă de post-procesare a rezultatelor folosind un model grafic probabilistic (câmp aleatoriu condiționat), care vă permite să eliminați zgomotul mic din segmentare și să îmbunătățiți calitatea imaginii segmentate. În spatele numelui formidabil „model probabilistic grafic” se ascunde un filtru gaussian convențional, care este aproximat cu cinci puncte.
  • Am încercat să aflu dispozitivul RefineDet (O singura incercare Rafinarețea neuronală pentru obiect eaection), dar nu am înțeles mare lucru.
  • De asemenea, m-am uitat la modul în care funcționează tehnologia „atenției”: video1, video2, video3. O caracteristică distinctivă a arhitecturii „atenției” este selecția automată a regiunilor de atenție sporită în imagine (RoI, Regiunile of Interest) folosind o rețea neuronală numită Attention Unit. Regiunile de atenție sporită sunt similare cu casele de delimitare, dar spre deosebire de acestea, ele nu sunt fixate în imagine și pot avea limite neclare. Apoi, din regiunile de atenție sporită, semnele (trăsăturile) sunt izolate, care sunt „alimentate” rețelelor neuronale recurente cu arhitecturi. LSDM, GRU sau Vanilla RNN. Rețelele neuronale recurente sunt capabile să analizeze relația dintre caracteristicile dintr-o secvență. Rețelele neuronale recurente au fost folosite inițial pentru a traduce textul în alte limbi, iar acum pentru traducere imagini în text и text în imagine.

Pe măsură ce explorăm aceste arhitecturi Mi-am dat seama că nu înțeleg nimic. Și nu este că rețeaua mea neuronală are probleme cu mecanismul atenției. Crearea tuturor acestor arhitecturi este ca un fel de hackathon uriaș, în care autorii concurează în hack-uri. Hack este o soluție rapidă la o problemă dificilă de software. Adică nu există nicio legătură logică vizibilă și de înțeles între toate aceste arhitecturi. Tot ceea ce îi unește este un set de cele mai de succes hack-uri pe care le împrumută unul de la celălalt, plus unul comun pentru toți operație de convoluție în buclă închisă (eroare de backpropagation, backpropagation). Nu gândirea sistemică! Nu este clar ce trebuie schimbat și cum să optimizați realizările existente.

Ca urmare a lipsei conexiunii logice între hack-uri, acestea sunt extrem de greu de reținut și de aplicat în practică. Aceasta este cunoaștere fragmentată. În cel mai bun caz, câteva momente interesante și neașteptate sunt amintite, dar majoritatea a ceea ce este înțeles și de neînțeles dispare din memorie în câteva zile. O să fie bine dacă într-o săptămână vă amintiți măcar numele arhitecturii. Dar s-au petrecut câteva ore și chiar zile de lucru citind articole și vizionand videoclipuri de recenzii!

Rețele neuronale. Unde se duce toate astea?

Figura 2 – Grădina Zoologică a Rețelelor Neurale

Majoritatea autorilor de articole științifice, în opinia mea personală, fac tot posibilul pentru a se asigura că nici măcar această cunoaștere fragmentată nu este înțeleasă de cititor. Dar frazele participiale din propoziții de zece rânduri cu formule care sunt luate „din aer” sunt un subiect pentru un articol separat (problema publică sau pieri).

Din acest motiv, este nevoie de sistematizare a informației folosind rețele neuronale și, astfel, de creștere a calității înțelegerii și memorării. Prin urmare, subiectul principal de analiză a tehnologiilor și arhitecturilor individuale ale rețelelor neuronale artificiale a fost următoarea sarcină: afla unde se duce totul, și nu dispozitivul unei anumite rețele neuronale separat.

Unde se duc toate astea? Principalele rezultate:

  • Numărul de startup-uri de învățare automată în ultimii doi ani a scăzut brusc. Motiv posibil: „rețelele neuronale nu mai sunt ceva nou”.
  • Oricine poate crea o rețea neuronală funcțională pentru a rezolva o problemă simplă. Pentru a face acest lucru, luați un model gata făcut din „gradina zoologică model” și antrenați ultimul strat al rețelei neuronale (transfer de învățare) pe date gata făcute din Google Dataset Search sau de la 25 de mii de seturi de date Kaggle în liber cloud Jupyter Notebook.
  • Marii producători de rețele neuronale au început să creeze "gradina zoologica model" (grădina zoologică model). Folosindu-le puteți crea rapid o aplicație comercială: TF Hub pentru TensorFlow, MMDetection pentru PyTorch, Detectron pentru Caffe2, lanţ-modelzoo pentru Chainer și alții.
  • Rețelele neuronale care lucrează în timp real (în timp real) pe dispozitivele mobile. De la 10 la 50 de cadre pe secundă.
  • Utilizarea rețelelor neuronale în telefoane (TF Lite), în browsere (TF.js) și în articole de uz casnic (IoT, Internet of Tbalamale). Mai ales la telefoanele care suportă deja rețele neuronale la nivel hardware (acceleratoare neuronale).
  • „Fiecare dispozitiv, articol de îmbrăcăminte și poate chiar mâncare va avea adresa IP-v6 și comunicați unul cu celălalt" - Sebastian Thrun.
  • Numărul de publicații despre învățarea automată a început să crească depășește legea lui Moore (dublarea la fiecare doi ani) din 2015. Evident, avem nevoie de rețele neuronale pentru analiza articolelor.
  • Următoarele tehnologii câștigă popularitate:
    • PyTorch – popularitatea crește rapid și pare să depășească TensorFlow.
    • Selectarea automată a hiperparametrilor AutoML – popularitatea crește fără probleme.
    • Scăderea treptată a preciziei și creșterea vitezei de calcul: logica fuzzy, algoritmi stimularea, calcule inexacte (aproximative), cuantizare (atunci când greutățile rețelei neuronale sunt convertite în numere întregi și cuantizate), acceleratoare neuronale.
    • traducere imagini în text и text în imagine.
    • creație Obiecte XNUMXD din video, acum în timp real.
    • Principalul lucru despre DL este că există o mulțime de date, dar colectarea și etichetarea acestora nu este ușoară. Prin urmare, automatizarea markupurilor se dezvoltă (adnotare automată) pentru rețele neuronale care utilizează rețele neuronale.
  • Cu rețelele neuronale, informatica a devenit brusc știință experimentală și s-a ridicat criza de reproductibilitate.
  • Banii IT și popularitatea rețelelor neuronale au apărut simultan atunci când calculul a devenit o valoare de piață. Economia se schimbă de la o economie de aur și valută la aur-valută-calculatură. Vezi articolul meu pe econofizica și motivul apariției banilor IT.

Treptat apare unul nou Metodologia de programare ML/DL (Machine Learning & Deep Learning), care se bazează pe reprezentarea programului ca un set de modele de rețele neuronale antrenate.

Rețele neuronale. Unde se duce toate astea?

Figura 3 – ML/DL ca o nouă metodologie de programare

Cu toate acestea, nu a apărut niciodată „teoria rețelei neuronale”, în cadrul căruia poți gândi și lucra sistematic. Ceea ce se numește acum „teorie” este de fapt algoritmi experimentali, euristici.

Link-uri către resursele mele și alte resurse:

Vă mulțumim pentru atenție!

Sursa: www.habr.com

Adauga un comentariu