Närvivõrgud. Kuhu see kõik läheb?

Artikkel koosneb kahest osast:

  1. Mõne võrguarhitektuuri lühikirjeldus piltidel objektide tuvastamiseks ja kujutiste segmenteerimiseks koos minu jaoks kõige arusaadavamate linkidega ressurssidele. Püüdsin valida videoselgitused ja soovitavalt vene keeles.
  2. Teine osa on katse mõista närvivõrgu arhitektuuride arengusuunda. Ja nendel põhinevad tehnoloogiad.

Närvivõrgud. Kuhu see kõik läheb?

Joonis 1 – Närvivõrgu arhitektuuride mõistmine pole lihtne

Kõik sai alguse kahe demorakenduse loomisest objektide klassifitseerimiseks ja tuvastamiseks Android-telefonis:

  • Tausta demo, kui andmeid töödeldakse serveris ja edastatakse telefoni. Kolme tüüpi karude kujutise klassifikatsioon: pruun, must ja kaisu.
  • Esiosa demokui andmeid töödeldakse telefonis endas. Kolme tüüpi objektide tuvastamine (objektide tuvastamine): sarapuupähklid, viigimarjad ja datlid.

Erinevus on piltide klassifitseerimise, pildil objekti tuvastamise ja pildi segmenteerimine. Seetõttu tekkis vajadus välja selgitada, millised närvivõrgu arhitektuurid tuvastavad kujutistel objekte ja millised suudavad segmenteerida. Leidsin järgmised arhitektuurinäited, millel on minu jaoks kõige arusaadavamad lingid ressurssidele:

  • R-CNN-il põhinevate arhitektuuride seeria (Rpiirkonnad Convolutsioon Neural Nvõrgu funktsioonid): R-CNN, kiire R-CNN, Kiirem R-CNN, Mask R-CNN. Objekti tuvastamiseks pildil eraldatakse piirdekastid piirkonna ettepanekuvõrgu (RPN) mehhanismi abil. Algselt kasutati RPN-i asemel aeglasemat valikulise otsingu mehhanismi. Seejärel suunatakse valitud piiratud piirkonnad klassifitseerimiseks tavapärase närvivõrgu sisendisse. R-CNN-i arhitektuuril on selgesõnalised "for" silmused piiratud piirkondades, kokku kuni 2000 käitamist AlexNeti sisevõrgu kaudu. Selgesõnalised for-tsüklid aeglustavad pilditöötluse kiirust. Sisemist närvivõrku läbivate eksplitsiitsete silmuste arv väheneb iga uue arhitektuuriversiooniga ning kiiruse suurendamiseks ja objektide tuvastamise ülesande asendamiseks objektide segmenteerimisega Mask R-CNN-is tehakse kümneid muid muudatusi.
  • Yolo (You Only Lka Once) on esimene närvivõrk, mis tuvastas mobiilseadmetes objekte reaalajas. Iseloomulik tunnus: objektide eristamine ühe jooksuga (vaadake vaid üks kord). See tähendab, et YOLO arhitektuuris pole selgesõnalisi "for" silmuseid, mistõttu võrk töötab kiiresti. Näiteks see analoogia: NumPy-s pole maatriksitega tehteid sooritades ka selgesõnalisi “for” silmuseid, mis NumPy-s realiseeritakse arhitektuuri madalamatel tasanditel läbi C programmeerimiskeele YOLO kasutab etteantud akende võrgustikku. Sama objekti mitu korda määratlemise vältimiseks kasutatakse akna ülekattekoefitsienti (IoU). Iristmik onägema Unioon). See arhitektuur toimib laias vahemikus ja on kõrge robustsus: Modelli saab koolitada fotode jaoks, kuid see toimib siiski hästi käsitsi joonistatud maalidel.
  • SSD (Statud Skuum MultiBox Detector) – kasutatakse YOLO arhitektuuri edukamaid “häkke” (näiteks mittemaksimaalne supressioon) ja lisatakse uusi, et närvivõrk kiiremini ja täpsemalt töötaks. Eristav tunnus: objektide eristamine ühe käiguga, kasutades pildipüramiidil etteantud akende võrgustikku (vaikekast). Kujutise püramiid kodeeritakse konvolutsioonitensorites järjestikuste konvolutsiooni- ja poolimisoperatsioonide kaudu (maksimaalse ühendamise operatsiooni korral ruumiline mõõde väheneb). Nii määratakse ühe võrgujooksuga nii suured kui ka väikesed objektid.
  • MobileSSD (mobiilneNetV2+ SSD) on kahe närvivõrgu arhitektuuri kombinatsioon. Esimene võrk MobileNetV2 töötab kiiresti ja suurendab tuvastamise täpsust. MobileNetV2 kasutatakse VGG-16 asemel, mida algselt kasutati originaalartikkel. Teine SSD-võrk määrab pildil olevate objektide asukoha.
  • SqueezeNet – väga väike, kuid täpne närvivõrk. Iseenesest ei lahenda see objektide tuvastamise probleemi. Siiski saab seda kasutada erinevate arhitektuuride kombinatsioonis. Ja seda kasutatakse mobiilseadmetes. Eripäraks on see, et andmed tihendatakse esmalt neljaks 1×1 konvolutsioonfiltriks ja seejärel laiendatakse neljaks 1×1 ja neljaks 3×3 konvolutsioonfiltriks. Ühte sellist andmete tihendamise ja laiendamise iteratsiooni nimetatakse "tulemooduliks".
  • DeepLab (Semantic Image Segmentation with Deep Convolutional Nets) – pildil olevate objektide segmenteerimine. Arhitektuuri eripäraks on laienenud konvolutsioon, mis säilitab ruumilise eraldusvõime. Sellele järgneb tulemuste järeltöötluse etapp, kasutades graafilist tõenäosusmudelit (tingimuslik juhuslik väli), mis võimaldab eemaldada segmenteerimisel väikese müra ja parandada segmenteeritud pildi kvaliteeti. Hirmuäratava nimetuse “graafiline tõenäosusmudel” taga peidab end tavapärane Gaussi filter, mis on ligikaudne viie punktiga.
  • Proovis seadet välja mõelda RefineDet (Ühekordne võte täiustamaNeural Network for Object Detväljaanne), aga ma ei saanud paljust aru.
  • Vaatasin ka, kuidas "tähelepanu" tehnoloogia töötab: video1, video2, video3. Tähelepanu-arhitektuuri eripäraks on kõrgendatud tähelepanu all olevate piirkondade automaatne valimine pildil (RoI, Regions of Interest), kasutades närvivõrku nimega Attention Unit. Suurenenud tähelepanu piirkonnad on sarnased piirdekastidega, kuid erinevalt neist ei ole need pildil fikseeritud ja nende piirid võivad olla hägused. Seejärel eraldatakse kõrgendatud tähelepanu piirkondadest märgid (omadused), mis "söödatakse" korduvatesse arhitektuuriga närvivõrkudesse. LSDM, GRU või Vanilla RNN. Korduvad närvivõrgud on võimelised analüüsima jada tunnuste suhet. Korduvaid närvivõrke kasutati algselt teksti tõlkimiseks teistesse keeltesse ja nüüd tõlkimiseks pildid tekstiks и tekst pildiks.

Kui me neid arhitektuure uurime Sain aru, et ma ei saa millestki aru. Ja asi pole selles, et minu närvivõrgul on tähelepanumehhanismiga probleeme. Kõigi nende arhitektuuride loomine on nagu mingi tohutu häkaton, kus autorid võistlevad häkkides. Häkkimine on kiire lahendus keerulisele tarkvaraprobleemile. See tähendab, et kõigi nende arhitektuuride vahel puudub nähtav ja arusaadav loogiline seos. Neid ühendab vaid komplekt kõige edukamaid häkke, mida nad üksteiselt laenavad, ja üks kõigi jaoks ühine. suletud ahela konvolutsioonioperatsioon (viga backpropagation, backpropagation). Ei süsteemne mõtlemine! Pole selge, mida muuta ja kuidas olemasolevaid saavutusi optimeerida.

Häkkidevahelise loogilise seose puudumise tõttu on neid äärmiselt raske meeles pidada ja praktikas rakendada. See on killustatud teadmine. Parimal juhul meenuvad mõned huvitavad ja ootamatud hetked, kuid suurem osa mõistetavast ja arusaamatust kaob mälust mõne päevaga. Hea, kui nädala pärast mäletate vähemalt arhitektuuri nime. Aga mitu tundi ja isegi päeva tööaega kulus artikleid lugedes ja ülevaatevideoid vaadates!

Närvivõrgud. Kuhu see kõik läheb?

joonis 2 – Närvivõrkude loomaaed

Enamik teadusartiklite autoreid teeb minu isikliku arvamuse kohaselt kõik selleks, et isegi need killustatud teadmised lugejale aru ei saaks. Kuid osalaused kümnerealistes lausetes valemitega, mis on võetud “õhust” on eraldi artikli teema (probleem avaldada või hukka saada).

Sel põhjusel on vaja teavet süstematiseerida närvivõrkude abil ja seeläbi tõsta arusaamise ja meeldejätmise kvaliteeti. Seetõttu oli tehisnärvivõrkude üksikute tehnoloogiate ja arhitektuuride analüüsi põhiteemaks järgmine ülesanne: uurige, kuhu see kõik läheb, mitte ühegi konkreetse närvivõrgu seade eraldi.

Kuhu see kõik läheb? Peamised tulemused:

  • Masinõppe idufirmade arv viimase kahe aasta jooksul langes järsult. Võimalik põhjus: "närvivõrgud pole enam midagi uut."
  • Igaüks saab lihtsa probleemi lahendamiseks luua toimiva närvivõrgu. Selleks võtke “mudelloomaaiast” valmis mudel ja treenige närvivõrgu viimane kiht (ülekandmisõpe) valmisandmetel alates Google'i andmestiku otsing või pärit 25 tuhat Kaggle'i andmekogumit tasuta sisse pilv Jupyteri märkmik.
  • Suured närvivõrkude tootjad hakkasid looma "mudelloomaaiad" (mudel loomaaed). Nende abil saate kiiresti luua kommertsrakenduse: TF jaotur TensorFlow jaoks, MMDtuvastus PyTorchi jaoks, Detectron Caffe2 jaoks, aheldaja-modelzoo jaoks Chainer ja teised.
  • Töötavad närvivõrgud reaalajas (reaalajas) mobiilseadmetes. 10 kuni 50 kaadrit sekundis.
  • Närvivõrkude kasutamine telefonides (TF Lite), brauserites (TF.js) ja sees majapidamistarbed (IoT, Internet of Thinged). Eriti telefonides, mis juba toetavad närvivõrke riistvara tasemel (närvikiirendid).
  • "Iga seade, riideese ja võib-olla isegi toit on olemas IP-v6 aadress ja suhelda üksteisega" - Sebastian Thrun.
  • Masinõpet käsitlevate publikatsioonide arv on hakanud kasvama ületada Moore'i seadust (kahekordistub iga kahe aasta järel) alates 2015. aastast. Ilmselgelt vajame artiklite analüüsimiseks närvivõrke.
  • Järgmised tehnoloogiad koguvad populaarsust:
    • PyTorch – populaarsus kasvab kiiresti ja näib mööduvat TensorFlow’st.
    • Hüperparameetrite automaatne valik AutoML – populaarsus kasvab sujuvalt.
    • Järk-järguline täpsuse vähenemine ja arvutuskiiruse suurenemine: hägune loogika, algoritmid hoogustamine, ebatäpsed (ligikaudsed) arvutused, kvantimine (kui närvivõrgu kaalud teisendatakse täisarvudeks ja kvantitakse), närvikiirendid.
    • Tõlge pildid tekstiks и tekst pildiks.
    • loomine XNUMXD-objektid videost, nüüd reaalajas.
    • Peamine DL-i puhul on see, et andmeid on palju, kuid nende kogumine ja märgistamine pole lihtne. Seetõttu areneb märgistamise automatiseerimine (automaatne märkus) närvivõrke kasutavate närvivõrkude jaoks.
  • Närvivõrkudega sai järsku arvutiteadus eksperimentaalne teadus ja tõusis reprodutseeritavuse kriis.
  • IT-raha ja närvivõrkude populaarsus tekkisid korraga, kui andmetöötlusest sai turuväärtus. Majandus on muutumas kulla- ja valuutamajandusest kuld-valuuta-arvutamine. Vaadake minu artiklit teemal ökonofüüsika ja IT-raha ilmumise põhjus.

Järk-järgult ilmub uus ML/DL programmeerimise metoodika (Machine Learning & Deep Learning), mis põhineb programmi esitamisel koolitatud närvivõrgu mudelite komplektina.

Närvivõrgud. Kuhu see kõik läheb?

Joonis 3 – ML/DL kui uus programmeerimismetoodika

Siiski ei ilmunud see kunagi "närvivõrgu teooria", mille raames saate süstemaatiliselt mõelda ja töötada. See, mida praegu nimetatakse teooriaks, on tegelikult eksperimentaalsed heuristilised algoritmid.

Lingid minu ja muudele ressurssidele:

Tänan teid tähelepanu eest!

Allikas: www.habr.com

Lisa kommentaar