Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 10136|Odgovoriti: 0

Evolucija arhitekture nevronskih mrež: Celovit pregled več kot desetih arhitektur od LeNet5 do ENet

[Kopiraj povezavo]
Objavljeno na 24. 04. 2018 13:08:47 | | | |
LeNet5
LeNet5 je nastal leta 1994 in je ena prvih konvolucijskih nevronskih mrež ter je napredoval področje globokega učenja. Od leta 1988, po številnih uspešnih iteracijah, je to pionirsko delo Yanna LeCuna poimenovano LeNet5 (glej: Gradient-Based Learning Applied to Document Recognition).


Arhitektura LeNet5 temelji na ideji, da so (predvsem) značilnosti slike razporejene po celotni sliki, in da je konvolucija z učljivimi parametri učinkovit način za izvlečenje podobnih značilnosti na več mestih z majhnim številom parametrov. Takrat ni bilo grafične kartice, ki bi pomagala pri treningu, celo procesor je bil počasen. Zato je sposobnost shranjevanja parametrov in postopka izračuna ključen razvoj. To je nasprotje uporabe vsakega piksla kot ločenega vhoda za veliko, večplastno nevronsko mrežo. LeNet5 pojasnjuje, da teh pikslov ne bi smeli uporabljati v prvi plasti, ker ima slika močne prostorske korelacije, ki jih ni mogoče izkoristiti z uporabo neodvisnih pikslov v sliki kot različnih vhodnih lastnosti.

Značilnosti LeNet5 lahko povzamemo takole:

Konvolucijske nevronske mreže uporabljajo 3 plasti kot zaporedje: konvolucijske, združene, nelinearne → To je verjetno ključna lastnost globokega učenja slik od takrat do tega članka!
Uporabite konvolucije za izločanje prostorskih značilnosti
Podvzorec z uporabo preslikave na prostorsko povprečje
Nelinearnost v obliki hiperbolične tangente (tanh) ali S-oblike (sigmoid).
Večplastne nevronske mreže (MLP) služijo kot končni klasifikatorji
Redke povezovalne matrike med plastmi se izognejo velikim računskim stroškom

Na splošno je to omrežje izhodišče za številne sodobne arhitekture in je navdihnilo mnoge na tem področju.

Interval
Od leta 1998 do 2010 je bila nevronska mreža v inkubacijski fazi. Večina ljudi se ne zaveda njihove rastoče moči, medtem ko drugi raziskovalci to počnejo počasi. Zaradi pojava mobilnih telefonov in poceni digitalnih kamer se izkorišča vedno več podatkov. Tudi računalniška moč raste, procesorji postajajo hitrejši, GPU-ji pa postajajo računalniška orodja za več namenov. Ti trendi so omogočili napredek nevronskih mrež, čeprav počasi. Podatki in računalniška moč naredijo naloge, ki jih nevronske mreže lahko opravijo, vse bolj zanimive. Po tem je postalo vse jasno......

Dan Ciresan Net
Leta 2010 sta Dan Claudiu Ciresan in Jurgen Schmidhuber objavila implementacijo najzgodnejše nevronske mreže GPU. Ta implementacija je 9-plastna nevronska mreža, ki deluje na grafičnem procesorju NVIDIA GTX 280, vključno s širjenjem naprej in nazaj.

AlexNet
Leta 2012 je Alex Krizhevsky izdal Alexet (glej: ImageNet Classification with Deep Convolutional Neural Networks), vse globljo in širšo različico LeNet, ki je z veliko prednostjo zmagala na zahtevnem tekmovanju ImageNet.


AlexNet razširja LeNetove ideje na večje nevronske mreže, ki lahko spoznajo veliko bolj kompleksne objekte in nivoje objektov. Prispevki tega dela so:

Uporabite spremenjeno linearno enoto (ReLU) kot nelinearnost
Uporabite tehniko Dropout za selektivno ignoriranje posameznih nevronov med treningom, da preprečite prekomerno prilagajanje modela
Preglasite velik bazen, da se izognete povprečnemu učinku povprečnega združevanja
Zmanjšajte čas učenja z NVIDIA GTX 580 grafično kartico

Takrat lahko GPU-ji zagotovijo večje število jeder kot procesorji, čas učenja pa se lahko poveča za 10-krat, kar omogoča večje podatkovne zbirke in večje slike.

Uspeh AlexNeta je povzročil majhno revolucijo. Konvolucijske nevronske mreže so zdaj hrbtenica globokega učenja in so postale sinonim za "velike nevronske mreže, ki lahko zdaj rešujejo uporabne naloge."

Prekoračitev
Decembra 2013 je laboratorij Yann LeCun na Univerzi v New Yorku predlagal izpeljanko AlexNeta z naslovom Overfeat (glej: OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks). Ta članek je predlagal tudi učno omejujočo škatlo, kar je vodilo do številnih člankov na isto temo. Verjamem, da je bolje naučiti se razdvajati predmete kot umetne omejujoče okvirje.

VGG
Omrežje VGG z Univerze v Oxfordu (glej: Very Deep Convolutional Networks for Large-Image Recognition) je prvo omrežje, ki uporablja manjše 3×3 filtre na vsaki konvolucijski plasti in jih združuje za obdelavo kot konvolucijsko zaporedje.

To se zdi nasprotje LeNetovega principa, kjer se velike konvolucije uporabljajo za pridobitev podobnih značilnosti na sliki. Za razliko od AlexNetovih 9×9 ali 11×11 filtrov se filtri začenjajo manjšati, bližje zloglasni anomaliji konvolucije 1×1, ki se ji LeNet skuša izogniti – vsaj na prvi plasti omrežja. Vendar je VGG dosegel velik napredek z uporabo več 3×3 konvolucij zaporedoma, da posnema učinke večjih receptivnih polj, kot sta 5×5 in 7×7. Te ideje so bile uporabljene tudi v novejših omrežnih arhitekturah, kot sta Inception in ResNet.


VGG omrežja uporabljajo več 3×3 konvolucijskih plasti za karakterizacijo kompleksnih značilnosti. Upoštevajte, da se 3., 4. in 5. blok VGG-E: 256×256 in 512×512 3×3 filtrov uporabljajo večkrat zaporedoma za pridobivanje bolj zapletenih značilnosti in kombinacij teh značilnosti. Učinek je enakovreden velikemu klasifikatorju 512×512 s tremi konvolucijskimi plastmi. To seveda pomeni, da obstaja veliko parametrov in učnih sposobnosti. Vendar pa je teh omrežij težko trenirati in jih je treba razdeliti na manjša omrežja ter kopičiti plast za plastjo. To je posledica pomanjkanja robustnega načina za regularizacijo modela ali za bolj ali manj omejevanje velike količine iskalnega prostora zaradi velikega števila parametrov.

VGG uporablja velike velikosti značilnosti v več plasteh, ker je sklepanje med izvajanjem časovno potratno. Tako kot ozko grlo pri Inceptionu bo zmanjšanje števila funkcij prihranilo nekaj računskih stroškov.

Omrežje v omrežju
Ideja omrežja v omrežju (NiN, glej članek: Omrežje v omrežju) je preprosta in odlična: uporaba 1×1 konvolucije za zagotavljanje bolj sestavljivih zmogljivosti za značilnosti konvolucijske plasti.

Arhitektura NiN uporablja prostorske MLP plasti po posameznih konvolucijah za boljše združevanje značilnosti pred drugimi plastmi. Spet lahko mislite, da so 1×1 konvolucije v nasprotju z izvirnim načelom LeNeta, vendar lahko v resnici združujejo konvolucijske značilnosti na boljši način, kot to ni mogoče, če preprosto zložimo več konvolucijskih značilnosti. To se razlikuje od uporabe izvirnega piksla kot vhoda za naslednjo plast. 1×1 konvolucije se pogosto uporabljajo za spatisko združevanje značilnosti na zemljevidih značilnosti po konvoluciji, tako da lahko dejansko uporabijo zelo malo parametrov in jih delijo med vse piksle teh značilnosti!


Sposobnost MLP, da močno poveča učinkovitost posameznih konvolucijskih značilnosti z njihovo združitvijo v bolj kompleksne skupine. Ta ideja je bila kasneje uporabljena v nekaterih novejših arhitekturah, kot so ResNet, Inception in njegovi derivati.

NiN uporablja tudi povprečno sloj združevanja kot del končnega klasifikatorja, kar bo še ena praksa, ki bo postala pogosta. To se doseže s povprečenjem odzivov omrežja na več vhodnih slik pred klasifikacijo.

GoogLeNet in Inception
Christian Szegedy iz Googla je začel svojo pot zmanjšanja računskega bremena globokih nevronskih mrež in zasnoval GoogLeNet, prvo arhitekturo Inception (glej: Going Deeper with Convolutions).

Bilo je jeseni 2014, ko so modeli globokega učenja postajali uporabni pri razvrščanju slik v primerjavi z video okvirji. Večina skeptikov ne dvomi več, da sta globoko učenje in nevronske mreže tokrat res nazaj in se bodo še naprej razvijali. Glede na uporabnost teh tehnologij so internetni velikani, kot je Google, zelo zainteresirani za učinkovito in obsežno uvajanje teh arhitektur na svojih strežnikih.

Christian je veliko razmišljal o tem, kako lahko globoke nevronske mreže dosežejo visoko raven zmogljivosti, kot na primer na ImageNetu, hkrati pa zmanjšujejo svoje računske stroške. Ali pa je mogoče izboljšati zmogljivost ob zagotavljanju enakega računskega obremenitve.

On in njegova ekipa so zasnovali modul Inception:


Na prvi pogled je to v bistvu vzporedna kombinacija konvolucijskih filtrov 1×1, 3×3, 5×5. A velika ideja Inception je zmanjšati število značilnosti pred dragimi paralelnimi moduli z 1×1 konvolucijskimi bloki (NiN). To se pogosto imenuje "ozko grlo". Ta razdelek bo pojasnjen v spodnjem razdelku "ozka grla".

GoogLeNet uporablja hrbtenico brez inception modula kot začetno plast, ki ji sledi povprečna sloj združevanja in softmax klasifikator, podoben NiN. Ta klasifikator ima bistveno manjše število operacij kot klasifikatorji AlexNet in VGG. To je prav tako privedlo do zelo učinkovite zasnove omrežja, glej članek: Analiza globokih nevronskih mrežnih modelov za praktične aplikacije.

Plast ozkega grla
Navdihnjen z NiN, ozko grlo v Inceptionu zmanjša število značilnosti v vsaki plasti in s tem število operacij; Tako je mogoče čas sklepanja ohraniti nizek. Število značilnosti se zmanjša za 4-krat, preden se podatki prenesejo skozi drage konvolucijske module. To pomeni pomemben prihranek pri računskih stroških in uspeh arhitekture.

Preverimo to natančno. Zdaj, ko imate 256 vhodov značilnosti in 256 izhodov značilnosti, predpostavimo, da lahko plast Inception izvede le 3×3 konvolucij, kar pomeni skupno 256×256×3×3 konvolucij (skoraj 589.000 množenih in akumulacijskih (MAC) operacij). To bi lahko preseglo naš računski proračun, recimo, da bi plast zagnali v 0,5 milisekunde na Google strežnikih. Namesto tega smo se odločili zmanjšati število značilnosti, ki jih je bilo treba prepletati, kar je bilo 64 (tj. 256/4). V tem primeru začnemo s konvolucijo 256 -> 64 1×1, nato 64 konvolucij na vseh vejah Inceptiona, sledi konvolucija 1×1 iz značilnosti 64 -> 256, in zdaj je operacija naslednja:

256×64 × 1×1 = 16.000 s
64×64 × 3×3 = 36.000 s
64×256 × 1×1 = 16.000 s

V primerjavi s prejšnjimi 600.000 jih je zdaj skupno 70.000 računskih volumnov, kar je skoraj 10-krat manj.

In čeprav smo opravili boljše operacije, nismo izgubili splošnosti na tej plasti. Plast ozkega grla se je izkazala za vrhunsko na podatkovnih nizih, kot je ImageNet, prav tako pa se uporablja v arhitekturah, kot je ResNet, ki jo bomo predstavili v nadaljevanju.

Uspešen je, ker so vhodne lastnosti povezane, zato je redundantnost mogoče zmanjšati s pravilno kombinacijo z 1×1 konvolucijo. Nato, ko je nekaj značilnosti zapletenih, jih lahko na naslednji plasti ponovno razširimo v smiselne kombinacije.

Inception V3 (in V2)
Christian in njegova ekipa so zelo plodni raziskovalci. Februarja 2015 je bila predstavljena serijsko normalizirana metoda Inception kot Inception V2 (glej članek: Batch Normalization: Accelerating Deep Network Training with Reducing Internal Covariate Shift). Serijska normalizacija izračuna povprečje in standardni odklon vseh preslikav značilnosti na izhodu ene plasti ter uporabi te vrednosti za normalizacijo njihovih odzivov. To je enakovredno "beljenju" podatkov, tako da vse nevronske mape reagirajo v istem območju in so ničelne sredine. To pomaga pri učenju, ko naslednja plast ne potrebuje učenja offseta od vhodnih podatkov, hkrati pa se osredotoča na boljše združevanje teh funkcij.

Decembra 2015 je ekipa izdala novo različico modula Inception in podobne arhitekture (glej članek: Ponovno razmišljanje o arhitekturi Inception za računalniški vid). Članek bolje pojasnjuje izvirno arhitekturo GoogLeNet in ponuja več podrobnosti o oblikovalskih odločitvah. Izvirna ideja je naslednja:

S skrbno gradnjo omrežja sta globina in širina uravnoteženi, da se maksimira pretok informacij v omrežje. Pred vsakim združevanjem dodajte preslikavo funkcij.
Ko se globina povečuje, se globina ali število značilnosti omrežne plasti sistematično povečuje.
Vsako povečanje globine plasti uporabite za povečanje vezave značilnosti pred naslednjo plastjo.
Z uporabo samo 3×3 konvolucij je mogoče določene 5×5 in 7×7 filtre razdeliti na več 3×3 filtrov, kadar je to mogoče. Poglejte spodnjo sliko


Posledično je novi Inception postal:


Filter lahko tudi razdelite tako, da konvolucijo sploščite na bolj kompleksne module:


Med izvajanjem začetnih izračunov lahko modul Inception tudi zmanjša velikost podatkov z zagotavljanjem združevanja. To je v bistvu podobno kot vzporedno izvajanje preproste sloja združevanja pri izvajanju konvolucije:


Inception prav tako uporablja sloj za združevanje in softmax kot končni klasifikator.

ResNet
Decembra 2015 je prišlo do nove spremembe, ki je sovpadala z Inception V3. ResNet ima preprosto idejo: dovajaj izhod dveh zaporednih konvolucijskih plasti in obideš vhod v naslednjo plast (glej članek: Deep Residual Learning for Image Recognition).


To je podobno nekaterim starim idejam prej. V ResNetu pa razdelita dve plasti in se uporabita v večjem obsegu. Prehod po dveh plasteh je ključna intuicija, saj razdelitev ene plasti ne prinese večjega napredka. Prehod skozi plast 2 bi lahko razumeli kot majhen klasifikator ali omrežje v omrežju.

To je prvič, da število omrežnih plasti presega 100, in da je mogoče trenirati celo 1000 plasti.

ResNet, ki ima veliko omrežnih plasti, začenja uporabljati omrežno plast, podobno kot ozko grlo v Inceptionu:


Ta plast obdela manjše število značilnosti tako, da najprej preplete manjše število značilnosti za 1×1 z manjšim izhodom (običajno 1/4 vhoda), nato uporabi plast 3×3 in nato plast 1×1. Podobno kot modul Inception to zagotavlja nizko računsko zahtevnost in hkrati bogate kombinacije funkcij.

ResNet uporablja razmeroma preprosto začetno plast na vhodih: 7×7-volumno osnovno plast z dvema bazenoma. Primerjajte to z bolj kompleksnima in manj intuitivnima Inception V3 in V4.

ResNet uporablja tudi sloj združevanja in softmax kot končni klasifikator.

Drugi vpogledi o ResNetu se pojavljajo vsak dan:

ResNet lahko obravnavamo tako vzporedno kot sosednje, pri čemer vhode in izhode (inoute) obravnavamo kot vzporedne v mnogih modulih, medtem ko so izhodi vsakega modula povezani neprekinjeno.
ResNet lahko obravnavamo tudi kot kombinacijo vzporednih ali zveznih modulov (glej članek: Preostala omrežja so eksponentni ansambli relativno plitvih omrežij).
Ugotovljeno je bilo, da ResNet običajno deluje vzporedno na omrežnih blokih na plasteh 20–30. Namesto da bi neprestano tekel skozi celotno dolžino omrežja.
Ko ResNet pošilja izhod nazaj na vhod kot RNN, lahko omrežje štejemo za bolj biološko zaupanja vreden kortikalni model (glej članek: Bridging the Gaps Between Residual Learning, Rekurentne nevronske mreže in vizualno skorjo).

Inception V4
Tukaj je še ena različica Inception od Christiana in njegove ekipe, ki je podobna Inception V3:


Inception V4 združuje tudi modul Inception in modul ResNet:


Mislim, da arhitektura ni zelo jedrnata, a je tudi polna manj preglednih heuristik. Težko je razumeti izbire v njem in avtorjem je težko razložiti.

Glede na preprostost omrežja, ki jo je mogoče enostavno razumeti in popraviti, je ResNet morda boljši.

SqueezeNet
SqueezeNet (glej članek: SqueezeNet: AlexNet-level accuracy with 50x manj parametrov in <0,5MB velikosti modela") je nedavno objavljena arhitektura, ki ponovno obdeluje koncepte v ResNet in Inception. Boljši arhitekturni model omrežja je manjši, parametri pa še ne zahtevajo zapletenih algoritmov stiskanja.

Vstopi
Naša ekipa načrtuje združitev vseh značilnosti nedavno predstavljene arhitekture, da ustvari zelo učinkovito, nizko obremenjeno omrežje, ki uporablja manj parametrov in izračunov za doseganje vrhunskih rezultatov. Ta omrežna arhitektura se imenuje ENet in jo je zasnoval Adam Paszke. Že smo ga uporabili za označevanje posameznih pikslov in ločljivost prizorov.

Za več informacij o ENetu glejte članek ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation. ENet je mreža kodiranja, seštevanja in dekodiranja. Kodirnik je običajna CNN zasnova za klasifikacijo. Dekoder je omrežje za nadvzorčenje, ki klasifikacijo prenese nazaj do izvirne slike za segmentacijo. To uporablja le nevronske mreže in ne druge algoritme za segmentacijo slik.

ENet je zasnovan tako, da na začetku uporablja čim manjšo možno količino virov. Zato ima tako majhen skript, s kombinirano mrežo kodirnikov in dekoderjev, ki zavzemajo 0,7 MB z natančnostjo 16 fp. Tudi pri tako majhnem modelu je ENet po natančnosti segmentacije podoben ali višji od drugih rešitev za nevronske mreže.

Analiza modulov
Analiza CNN modula, ki je bila izvedena v članku (Sistematična evalvacija napredkov CNN na ImageNetu), je zelo koristna:

Uporabi ELU nelinearnost brez batchnorm ali ReLU z batchnorm.
Uporabite naučeno RGB barvno transformacijo.
Uporabite strategijo linearnega upada učne stopnje.
Uporabite vsoto povprečnih in večjih združenih plasti.
Uporabite velikost mini serije približno od 128 do 256. Če je to preveliko za vašo grafično kartico, preprosto zmanjšajte hitrost učenja na to velikost.
Uporabite popolnoma povezano plast kot konvolucijo in povprečite vse napovedi za končno napoved.
Ko študija poveča velikost učnega nabora, zazna, ali obstaja plato, ki ni dosežena
Čistoča podatkov je pomembnejša od njihove velikosti.
Če ne moreš povečati velikosti vhodne slike, zmanjšaj korak na naslednjih plasteh, kar ima enak učinek.
Če ima vaše omrežje kompleksno in visoko optimizirano arhitekturo, kot je GoogLeNet, morate biti previdni pri spreminjanju.

Druge arhitekture, na katere je vredno biti pozoren
FractalNet (glej članek: FractalNet: Ultra-Deep NeuralNetworks without Resipatterns) uporablja rekurzivno arhitekturo, ki pa ni testirana na ImageNetu. Ta arhitektura je izpeljanka ResNeta oziroma bolj splošno ResNet.

prihodnost
Verjamemo, da je ustvarjanje arhitekture nevronskih mrež ena glavnih prioritet za razvoj globokega učenja. Naša ekipa močno priporoča natančno branje in razumevanje člankov, omenjenih v članku.

A morda se vprašamo, zakaj toliko časa porabimo za ustvarjanje arhitektur? Zakaj nam ne bi povedali, kaj naj uporabimo s podatki? Kako združiti module? Ta vprašanja so dobra, a še vedno v raziskavah, in obstaja članek, na katerega se lahko sklicujemo: Nevronske mreže z diferencirano strukturo.

Upoštevajte, da je večina arhitektur, o katerih smo govorili v tem članku, povezana z računalniškim vidom. Podobne arhitekture nevronskih mrež so bile razvite tudi na drugih področjih, zato je zelo zanimivo izvedeti več o arhitekturnih spremembah pri vseh drugih nalogah.

Če vas zanima primerjava arhitekture nevronskih mrež in računalniške zmogljivosti, si oglejte članek: Analiza globokih nevronskih mrežnih modelov za praktične aplikacije.







Prejšnji:Več metod izračuna časa izvajanja v Pythonu
Naslednji:Antminer B3 vam pove, kaj morate kopati!
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com