Neironu tīkli. Kur viss tas virzās

Raksts sastāv no divām daļām:

  1. Īss dažu arhitektūru apraksts tīklos, kas atklāj objektus attēlā un attēlu segmentācijā ar visiem saprotamākajiem resursu saišu piemēriem. Centos izvēlēties video skaidrojumus, vēlams krievu valodā.
  2. Otrā daļa ir centiens apzināt neironu tīklu arhitektūru attīstības virzienus. Un tehnoloģijas, kas balstītas uz tām.

Neironu tīkli. Kur viss tas virzās

Attēls 1 – Izprast neironu tīklu arhitektūras nav viegli

Viss sākās ar to, ka izveidoju divas demonstrācijas lietotnes attēlu klasifikācijai un objektu atklāšanai Android telefonā:

  • Back-end demonstrācija, kad dati tiek apstrādāti serverī un pārsūtīti uz tālruni. Attēlu klasifikācija (image classification) trīs lāču veidiem: brūnais, melnais un mīkstais.
  • Front-end demonstrācija, kad dati tiek apstrādāti pašā telefonā. Objektu atklāšana (object detection) trīs veidiem: lazdu rieksts, vīģes un dateles.

Ir atšķirība starp attēlu klasifikācijas uzdevumiem, objektu atklāšanu attēlā un attēlu segmentāciju. Tāpēc radās nepieciešamība uzzināt, kuras neironu tīklu arhitektūras atklāj objektus attēlos un kuras var veikt segmentāciju. Atradu šādas arhitektūras piemērus ar visiem saprotamākajiem resursu saišu piemēriem:

  • R-CNN arhitektūru sērija (Regions with Convolution Neural Networks features): R-CNN, Fast R-CNN, Faster R-CNN, Mask R-CNN. Lai atklātu objektu attēlā, izmantojot Region Proposal Network (RPN) mehānismu, izdalās ierobežoti reģioni (bounding boxes). Sākotnēji RPN vietā tika izmantots lēnāks mehānisms Selective Search. Pēc tam izdalītie ierobežotie reģioni tiek iesniegti parastai neironu tīklam klasifikācijai. R-CNN arhitektūrā ir skaidri “for” cikli ierobežoto reģionu pārlūkošanai, kopumā līdz 2000 iterācijām caur iekšējo AlexNet tīklu. Skaitlis skaidri “for” ciklu palēnina attēlu apstrādes ātrumu. Skaitlis skaidri “for” ciklu, iterāciju pa iekšējo neironu tīklu, samazinās ar katru jauno arhitektūras versiju, un tiek veikti desmitiem citu izmaiņu ātruma palielināšanai un uzdevuma atklāšanai, lai nomainītu objektu atklāšanu uz to segmentāciju Mask R-CNN.
  • YOLO (You Only Look OYOLO (You Only Look Once) – pirmā neironu tīkls, kas reāllaikā atpazina objektus mobilajās ierīcēs. Izšķirošā iezīme: objekti tiek diferencēti vienā pagriezienā (svarīgi tikai vienu reizi apskatīt). Tātad YOLO arhitektūrā nav skaidru "for" cilpu, kā rezultātā tīkls darbojas ātri. Piemēram, šāda analoģija: NumPy operācijās ar matricām arī nav skaidru "for" cilpu, kuras NumPy realizē zemākās arhitektūras līmeņos, izmantojot programmēšanas valodu C. YOLO izmanto iepriekš noteiktu logu režģi. Lai vienu un to pašu objektu noteiktu vairākkārt, tiek izmantots logu pārklājuma koeficients (IoU, Ikrustojums osavienojums). Šī arhitektūra darbojas plašā diapazonā un ir augsta Urobustuma : modelis var būt apmācīts fotogrāfijās, bet labi darbojas arī zīmētās gleznās.Vienotais
  • SSD (SMultiBox Sdetektors) – tiek izmantoti visefektīvākie YOLO arhitektūras "haiki" (piemēram, non-maximum suppression) un pievieno jaunas, lai neironu tīkls strādātu ātrāk un precīzāk. Izšķirošā iezīme: objektu diferencēšana vienā pagriezienā, izmantojot iepriekš noteiktu logu režģi (default box) uz attēlu piramīdas. Attēlu piramīda ir kodēta konvolūcijas tenzoros, veicot secīgas konvolūcijas un puliģa operācijas (vai maksimālās pārvaldības procesā telpiskā dimensija samazinās). Tādā veidā var noteikt gan lielus, gan mazus objektus vienā tīkla pagriezienā. DMobileSSD (
  • NetV2 +Mobilais) – divu neironu tīklu arhitektūru kombinācija. Pirmais tīkls SSDMobileNetV2 darbojas ātri un palielina atpazīšanas precizitāti. MobileNetV2 tiek izmantots vietā VGG-16, kas sākotnēji tika izmantota . Otrais tīkls SSD nosaka objektu atrašanās vietu attēlā. oriģinālajā rakstāSqueezeNet
  • – ļoti mazs, bet precīzs neironu tīkls. Tas pats par sevi nespēj atrisināt objektu atklāšanas uzdevumu. Tomēr var tikt izmantots, kombinējot dažādas arhitektūras. Un lietojams mobilajās ierīcēs. Izšķirošā iezīme ir tā, ka vispirms dati tiek saspiesti līdz četriem 1×1 konvolūcijas filtriem, un pēc tam paplašināti līdz četriem 1×1 un četriem 3×3 konvolūcijas filtriem. Šāda veida datu saspiešanas-paplašināšanas iterācija tiek dēvēta par "Fire Module". DeepLab
  • DeepLab (Semantic Image Segmentation with Deep Convolutional Nets) – objektu segmentācija attēlā. Raksturīga architektūras iezīme ir izsviesta (dilated convolution) konvolūcija, kas saglabā telpisko izšķirtspēju. Pēc tam seko rezultātu pēcapstrādes posms, izmantojot grafisko varbūtības modeli (conditional random field), kas ļauj noņemt nelielus troksnīšus segmentācijā un uzlabot attēla kvalitāti. Zem draudīgā nosaukuma «grafiskais varbūtības modelis» slēpjas parasts Gausa filtrs, kas ir aptuveni aprēķināts piecās punktos.
  • Centos saprast ierīci RefineDet (Single-Shot Refinement Neural Network for Object Detection), bet maz ko sapratu.
  • Tāpat arī skatījos, kā darbojas «uzmanības» (attention) tehnoloģija: video1, video2, video3. Raksturīga arhitektūras «uzmanība» iezīme ir automātiska paaugstinātās uzmanības reģionu izcelšana attēlā (RoI, Regions of Interest) ar neironu tīkla, kas saucas Attention Unit. Paaugstinātas uzmanības reģioni līdzīgi ierobežotiem reģioniem (bounding boxes), taču atšķirībā no tiem nav fiksēti attēlā un var būt miglaini. Pēc tam no paaugstinātas uzmanības reģioniem tika izcelti iezīmes (fichas), kuras «iegūst» atkārtojamiem neironu tīkliem ar arhitektūrām LSDM, GRU vai Vanilla RNN. Atkārtojamie neironu tīkli spēj analizēt attiecības iezīmēs secībā. Atkārtojamie neironu tīkli sākotnēji tika izmantoti tekstu tulkošanai citās valodās, bet tagad arī attēla tulkošanai no attēla uz tekstu un no teksta uz attēlu.

Pētot šīs arhitektūras es sapratu, ka neko nesaprotu. Un jautājums nav par to, ka manam neironu tīklam ir problēmas ar uzmanības mehānismu. Šo visu arhitektūru radīšana līdzinās kaut kādam milzīgam hackathon, kur autori sacenšas hackošanā. Hacks (hack) – ātrs risinājums grūtai programmatūras problēmai. Tas ir, starp visām šīm arhitektūrām nav redzamas un saprotamas loģiskas saiknes. Viss, kas tās vieno – ir visveiksmīgāko hacks kopums, ko tās aizņemas viena no otras, plus kopīga visām konvolūcijas operācija ar atgriezenisko saiti (atgriezeniskā izplatīšana, backpropagation). Nav sistēmiskā domāšana! Nav skaidrs, ko mainīt un kā optimizēt esošos sasniegumus.

Kā rezultāts loģiskās saiknes trūkumam starp hākiem, tos ir ārkārtīgi grūti atcerēties un pielietot praksē. Tas ir fragmentēts zināšanas. Labākajā gadījumā tiek iegaumēti daži interesanti un negaidīti momenti, bet lielākā daļa no saprastā un nesaprastā iznīkst atmiņā jau pēc dažām dienām. Būtu labi, ja pēc nedēļas atcerētos vismaz arhitektūras nosaukumu. Bet rakstu lasīšanai un apskatu video skatīšanai tika patērētas stundas un pat dienas darba laika!

Neironu tīkli. Kur viss tas virzās

Attēls 2 – Neironu tīklu zooloģiskais dārzs

Vairums zinātnisko rakstu autoru, manuprāt, dara visu iespējamo, lai pat šīs fragmentētās zināšanas netiktu saprastas no lasītāja. Bet darbības vārdu formas desmit rindās teikumos ar formulām, kas ņemtas ‘no griestiem’ – tas ir atsevišķas raksta tēma (problēma publish or perish).

Tāpēc radās nepieciešamība sistematizēt informāciju par neironu tīkliem un tādējādi uzlabot izpratnes un atcerēšanās kvalitāti. Tāpēc galvenā tēma atsevišķo tehnoloģiju un mākslīgo neironu tīklu arhitektūru izpētē ir kļuvusi šāda uzdevums: u zakot, kur tas viss virzās, nevis kāda konkrēta neironu tīkla uzbūve.

Kur viss tas virzās. Galvenie rezultāti:

  • Sākuma skaits mašīnmācības uzņēmumos pēdējo divu gadu laikā strauji samazinājās. Iespējamā iemesls: ‘neironu tīkli vairs nav kas jauns’.
  • Ikviens spēs izveidot funkcionējošu neironu tīklu vienkāršai uzdevuma risināšanai. Lai to izdarītu, viņš paņems gatavu modeli no ‘modeļu zooloģiskā dārza’ (model zoo) un apmācīs pēdējo neironu tīkla slāni (transfer learning) uz gataviem datiem no Google Dataset Search vai no 25 tūkstošiem Kaggle datu kopām bez maksas Jupyter Notebook mākoņos.
  • Lieli neironu tīklu ražotāji sāka veidot ‘modeļu zooloģiskos dārzus’ (model zoo). Ar to palīdzību var ātri izveidot komerciālu lietojumprogrammu: TF Hub TensorFlow, MMDetection PyTorch, Detectron Caffe2, chainer-modelzoo Chainer un citi.
  • Neironu tīkli, kas darbojas reālā laikā (real-time) mobilajās ierīcēs. No 10 līdz 50 kadriem sekundē.
  • Neironu tīklu pielietojums telefonos (TF Lite), pārlūkos (TF.js) un ikdienas priekšmetos (IoT, Iinterneta of Tlietas). Īpaši telefonos, kuri jau atbalsta neironu tīklus uz ‘dzelzs’ līmeņa (neiroakseleratori).
  • „Katram ierīcēm, apģērba priekšmetiem un iespējams pat pārtikai būs IP-v6 adrese un tās sazināsies savā starpā“ – Sebastians Truns.
  • Arvien pieaug publicējumu skaits mašīnmācīšanās jomā, kas sāka pārsniegt Moora likumu (dubultojas reizi divos gados) no 2015. gada. Acīmredzot ir nepieciešamas neironu tīklos balstītas sistēmas rakstu analīzei.
  • Populāras kļūst šādas tehnoloģijas:
    • PyTorch – popularitāte strauji pieaug un, šķiet, apsteidz TensorFlow.
    • Automātiska hiperpārparametru izvēle AutoML – popularitāte pieaug pakāpeniski.
    • Pakāpeniska precizitātes samazināšanās un izpildes ātruma palielināšanās: neprecīza loģika, algoritmi veicināšanai, neprecīza (salīdzinoša) aprēķināšana, kvantizācija (kad neironu tīkla svars tiek pārveidots par veseliem skaitļiem un kvantizēts), neironu akseleratori.
    • Tulkojums no attēla uz tekstu un no teksta uz attēlu.
    • Izveide tridimensionālu objektu analīze video, tagad jau reālā laikā.
    • Galvenais DL – ir daudz datu, bet tos savākt un anotēt nav viegli. Tāpēc attīstās automātiskā anotācija (automated annotation) neironu tīklu lietošanai, izmantojot neironu tīklus.
  • Ar neironu tīkliem datorzinātne pēkšņi kļuvusi eksperiments zinātne un radās reproducējamības krīze.
  • IT nauda un neironu tīklu popularitāte radās vienlaikus, kad aprēķini kļuva par tirgus vērtību. Ekonomika no zeltu un valūtu kļūst zelta-vice-aprēķināšanas. Skatiet manu rakstu par ekonofiziku un IT naudas rašanās iemeslu.

Pakāpeniski parādās jauna ML/DL programmēšanas metodoloģija (Mašīnmācīšanās un dziļā mācīšanās), kas balstās uz programmas izpratni kā apmācītu neironu tīklu modeļu kopumu.

Neironu tīkli. Kur viss tas virzās

Attēls 3 – ML/DL kā jauna programmēšanas metodoloģija

Tomēr nav izveidojusies „neironu tīklu teorija”, kas ļautu domāt un strādāt sistemātiski. Tas, ko šobrīd sauc par „teoriju”, patiesībā ir eksperimentāli, heoristiski algoritmi.

Saites uz maniem un ne tikai resursiem:

Paldies par uzmanību!

Avots: habr.com

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster