Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 10136|Odpoveď: 0

Evolúcia architektúry neurónových sietí: Komplexný prehľad viac ako desiatich architektúr od LeNet5 po ENet

[Kopírovať odkaz]
Zverejnené 24. 4. 2018 13:08:47 | | | |
LeNet5
LeNet5 vznikol v roku 1994 a je jednou z prvých konvolučných neurónových sietí, ktorá posunula oblasť hlbokého učenia vpred. Od roku 1988, po mnohých úspešných iteráciách, sa táto priekopnícka práca Yanna LeCuna nazýva LeNet5 (pozri: Gradient-Based Learning Applied to Document Recognition).


Architektúra LeNet5 je založená na myšlienke, že (najmä) vlastnosti obrazu sú rozložené po celom obrázku a že konvolúcia s učiteľnými parametrami je efektívny spôsob, ako extrahovať podobné prvky na viacerých miestach s malým počtom parametrov. V tom čase nebola žiadna grafická karta, ktorá by pomohla s tréningom, a dokonca aj CPU bolo pomalé. Preto je schopnosť ukladať parametre aj proces výpočtu kľúčovým vývojom. To je opak použitia každého pixelu ako samostatného vstupu pre veľkú, viacvrstvovú neurónovú sieť. LeNet5 vysvetľuje, že tieto pixely by sa nemali používať v prvej vrstve, pretože obraz má silné priestorové korelácie, ktoré nemožno využiť použitím nezávislých pixelov v obrázku ako rôznych vstupných prvkov.

Vlastnosti LeNet5 možno zhrnúť nasledovne:

Konvolučné neurónové siete používajú 3 vrstvy ako sekvenciu: konvolučné, združené, nelineárne → Toto je pravdepodobne kľúčová vlastnosť hlbokého učenia obrazov od tohto článku!
Použite konvolúcie na extrahovanie priestorových prvkov
Podvzorka pomocou mapovania na priestorový priemer
Nelinearita vo forme hyperbolickej tangenty (tanh) alebo S-tvaru (sigmoid).
Viacvrstvové neurónové siete (MLP) slúžia ako konečné klasifikátory
Riedke matice spojenia medzi vrstvami sa vyhýbajú vysokým výpočtovým nákladom

Celkovo je táto sieť východiskovým bodom pre veľké množstvo nedávnych architektúr a inšpirovala mnohých v tejto oblasti.

Interval
V rokoch 1998 až 2010 bola neurónová sieť v inkubačnej fáze. Väčšina ľudí si ich rastúcu silu neuvedomuje, zatiaľ čo iní výskumníci to robia pomaly. Vďaka príchodu mobilných telefónov a lacných digitálnych fotoaparátov sa využíva čoraz viac dát. A výpočtový výkon tiež rastie, CPU sa zrýchľujú a GPU sa stávajú výpočtovými nástrojmi na rôzne účely. Tieto trendy umožnili neurónovým sieťam napredovať, hoci pomaly. Dáta a výpočtový výkon robia úlohy, ktoré neurónové siete dokážu zvládnuť, čoraz zaujímavejšími. Potom sa všetko vyjasnilo......

Dan Ciresan Net
V roku 2010 Dan Claudiu Ciresan a Jurgen Schmidhuber publikovali implementáciu najskoršej GPU neurónovej siete. Táto implementácia je 9-vrstvová neurónová sieť bežiaca na grafickom procesore NVIDIA GTX 280, vrátane smerovania dopredu a späť.

AlexNet
V roku 2012 Alex Krizhevsky publikoval Alexet (pozri: ImageNet Classification with Deep Convolutional Neural Networks), čoraz hlbšiu verziu LeNet, ktorá vyhrala náročnú súťaž ImageNet s výrazným náskokom.


AlexNet rozširuje LeNetove myšlienky na väčšie neurónové siete, ktoré dokážu učiť oveľa zložitejšie objekty a úrovne objektov. Príspevky tejto práce sú:

Použite modifikovanú lineárnu jednotku (ReLU) ako nelinearitu
Použite techniku Dropout na selektívne ignorovanie jednotlivých neurónov počas tréningu, aby ste predišli prefitovaniu modelu
Prepíšte veľký pool, aby ste sa vyhli priemernému efektu priemerného poolingu
Skráťte čas tréningu s grafickou kartou NVIDIA GTX 580

V tomto bode môžu GPU poskytnúť väčší počet jadier ako CPU a čas trénovania sa môže predĺžiť desaťnásobne, čo umožňuje väčšie dátové súbory a väčšie obrázky.

Úspech AlexNetu viedol k malej revolúcii. Konvolučné neurónové siete sú dnes chrbticou hlbokého učenia a stali sa synonymom "veľkých neurónových sietí, ktoré dokážu riešiť užitočné úlohy."

Overfeat
V decembri 2013 laboratórium Yanna LeCuna na Newyorskej univerzite navrhlo deriváciu AlexNetu s názvom Overfeat (pozri: OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks). Tento článok tiež navrhol vzdelávací ohraničujúci box, čo viedlo k mnohým článkom na tú istú tému. Verím, že je lepšie naučiť sa rozdeľovať objekty než sa učiť umelé ohraničovacie boxy.

VGG
Sieť VGG z Oxfordskej univerzity (pozri: Very Deep Convolutional Networks for Large-Scale Image Recognition) je prvou sieťou, ktorá používa menšie 3×3 filtre na každej konvolučnej vrstve a kombinuje ich na spracovanie ako konvolučnú sekvenciu.

Zdá sa, že je to opak LeNetovho princípu, kde sa používajú veľké konvolúcie na získanie podobných vlastností v obraze. Na rozdiel od filtrov 9×9 alebo 11×11 od AlexNetu sa filtre začínajú zmenšovať, približujúc sa k neslávne známej anomálii konvolúcie 1×1, ktorej sa LeNet snaží vyhnúť – aspoň na prvej vrstve siete. VGG však dosiahol veľký pokrok použitím viacerých konvolúcií 3×3 za sebou, aby napodobnil účinky väčších receptívnych polí, ako sú 5×5 a 7×7. Tieto myšlienky boli použité aj v novších sieťových architektúrach, ako sú Inception a ResNet.


VGG siete používajú viacero 3×3 konvolučných vrstiev na charakterizáciu komplexných prvkov. Upozorňujeme, že 3., 4. a 5. blok filtrov VGG-E: 256×256 a 512×512 3×3 sa používajú viackrát postupne na získanie zložitejších vlastností a kombinácií týchto vlastností. Tento efekt je ekvivalentný veľkému klasifikátoru 512×512 s tromi konvolučnými vrstvami. To samozrejme znamená, že existuje veľa parametrov a schopností učenia. Tieto siete sa však ťažko trénujú a musia byť rozdelené na menšie siete a vrstva po vrstve. Je to spôsobené absenciou robustného spôsobu regularizácie modelu alebo viac-menej obmedzenia veľkého množstva vyhľadávacieho priestoru kvôli veľkému počtu parametrov.

VGG používa veľké veľkosti prvkov v mnohých vrstvách, pretože inferencia je časovo náročná počas behu. Rovnako ako pri úzkom mieste v Inception, zníženie počtu funkcií ušetrí niektoré výpočtové náklady.

Sieť v sieti
Myšlienka siete v sieti (NiN, pozri článok: Sieť v sieti) je jednoduchá a skvelá: použitie konvolúcie 1×1 na poskytnutie lepších skladateľných schopností pre vlastnosti konvolučnej vrstvy.

Architektúra NiN používa priestorové vrstvy MLP po jednotlivých konvolúciách na lepšie kombinovanie prvkov pred ostatnými vrstvami. Opäť si môžete myslieť, že 1×1 konvolúcie sú v rozpore s pôvodným princípom LeNetu, ale v skutočnosti dokážu kombinovať konvolučné vlastnosti lepším spôsobom, než nie je možné, jednoducho vrstvením ďalších konvolučných prvkov. To sa líši od použitia pôvodného pixelu ako vstupu na ďalšiu vrstvu. Konvolúcie 1×1 sa často používajú na spatické kombinovanie prvkov na mapách príznakov po konvolúcii, takže môžu použiť veľmi málo parametrov a zdieľať ich naprieč všetkými pixelmi týchto prvkov!


Schopnosť MLP výrazne zvýšiť efektivitu jednotlivých konvolučných prvkov ich kombinovaním do zložitejších skupín. Táto myšlienka bola odvtedy použitá v niektorých nedávnych architektúrach, ako sú ResNet, Inception a jeho deriváty.

NiN tiež používa vrstvu priemerného poolingu ako súčasť finálneho klasifikátora, čo je ďalšia prax, ktorá sa stane bežnou. Toto sa dosahuje priemerovaním odpovedí siete na viaceré vstupné obrazy pred klasifikáciou.

GoogLeNet a Inception
Christian Szegedy z Google začal svoju snahu znížiť výpočtovú záťaž hlbokých neurónových sietí a navrhol GoogLeNet, prvú architektúru Inception (pozri: Ísť hlbšie s konvolúciami).

Bolo to na jeseň 2014 a modely hlbokého učenia sa stávali užitočnými pri klasifikácii obrazových a video snímok. Väčšina skeptikov už nepochybuje, že hlboké učenie a neurónové siete sú tentoraz naozaj späť a budú sa naďalej vyvíjať. Vzhľadom na užitočnosť týchto technológií majú internetoví giganti ako Google veľký záujem efektívne a vo veľkom rozsahu nasadiť tieto architektúry na svojich serveroch.

Christian veľa premýšľal o tom, ako hlboké neurónové siete dokážu dosiahnuť vysokú úroveň výkonu, napríklad na ImageNet, a zároveň znížiť ich výpočtovú záťaž. Alebo je možné dosiahnuť zlepšenia výkonu pri zachovaní rovnakého výpočtového zaťaženia.

On a jeho tím prišli s modulom Inception:


Na prvý pohľad ide v podstate o paralelnú kombináciu konvolučných filtrov 1×1, 3×3, 5×5. Veľkou myšlienkou Inception je však znížiť počet funkcií pred drahými paralelnými modulmi s 1×1 konvolučnými blokmi (NiN). Toto sa bežne označuje ako "úzke hrdlo". Táto časť bude vysvetlená v sekcii "vrstva úzkeho miesta" nižšie.

GoogLeNet používa chrbticu bez inception modulu ako počiatočnú vrstvu, nasledovanú priemernou vrstvou poolingu plus softmax klasifikátorom podobným NiN. Tento klasifikátor má oveľa menší počet operácií ako klasifikátory AlexNet a VGG. To tiež viedlo k veľmi efektívnemu návrhu siete, pozri článok: Analýza modelov hlbokých neurónových sietí pre praktické aplikácie.

Vrstva úzkeho hrdla
Inšpirovaná NiN, úzke hrdlo v Inception znižuje počet prvkov v každej vrstve, a tým aj počet operácií; Takže čas inferencie môže zostať nízky. Počet príznakov sa zníži štvornásobne, kým dáta neprejdú cez drahé konvolučné moduly. Ide o významnú úsporu výpočtových nákladov a úspech architektúry.

Overme si to konkrétne. Teraz, keď máte 256 vstupov funkcií a 256 výstupov funkcií, predpokladajme, že vrstva Inception dokáže vykonať len 3×3 konvolúcií, čo znamená celkovo 256×256×3×3 konvolúcií (takmer 589 000 operácií násobenia a akumulácie (MAC)). To môže byť nad náš výpočtový rozpočet, napríklad spustiť vrstvu za 0,5 milisekundy na Google serveroch. Namiesto toho sme sa rozhodli znížiť počet funkcií, ktoré bolo potrebné zložitiť, čo bolo 64 (teda 256/4). V tomto prípade začíname konvolúciou 256 -> 64 1×1, potom 64 konvolúcij na všetkých vetvách Inception, nasledovanou konvolúciou 1×1 z vlastnosti 64 -> 256, a teraz je operácia nasledovná:

256×64 × 1×1 = 16 000 s
64×64 × 3×3 = 36 000 s
64×256 × 1×1 = 16 000 s

V porovnaní s predchádzajúcimi 600 000 je teraz celkovo 70 000 výpočtových objemov, čo je takmer 10-krát menej.

A hoci sme robili lepšie operácie, na tejto úrovni sme nestratili všeobecnosť. Vrstva úzkeho miesta sa ukázala ako špičková na datasetoch ako ImageNet a používa sa aj v architektúrach ako ResNet, ktorú predstavíme v najbližšom okamihu.

Je úspešný, pretože vstupné vlastnosti sú prepojené, takže redundanciu možno znížiť ich správnym kombinovaním s konvolúciou 1×1. Potom, po tom, čo sa malý počet prvkov zdeformuje, môžu byť na ďalšej vrstve opäť rozšírené do zmysluplných kombinácií.

Inception V3 (a V2)
Christian a jeho tím sú veľmi plodní výskumníci. Vo februári 2015 bol predstavený dávkovo normalizovaný Inception pod názvom Inception V2 (pozri článok: Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift). Dávková normalizácia vypočíta strednú hodnotu a štandardnú odchýlku všetkých zobrazení príznakov na výstupe jednej vrstvy a využíva tieto hodnoty na normalizáciu ich odpovedí. To je ekvivalentné "bieleniu" dát, takže všetky neurónové mapy reagujú v rovnakom rozsahu a majú nulový priemer. To pomáha pri trénovaní, keď ďalšia vrstva nemusí učiť offset od vstupných dát, a tiež sa zameriava na lepšie kombinovanie týchto funkcií.

V decembri 2015 tím vydal novú verziu modulu Inception a podobnej architektúry (pozri článok: Rethinking the Inception Architecture for Computer Vision). Článok lepšie vysvetľuje pôvodnú architektúru GoogLeNet a poskytuje viac detailov o dizajnových voľbách. Pôvodná myšlienka je nasledovná:

Starostlivým budovaním siete sa vyvažuje hĺbka a šírka, aby sa maximalizoval tok informácií do siete. Pred každým poolingom pridajte mapovanie funkcií.
S rastúcou hĺbkou sa systematicky zvyšuje aj hĺbka alebo počet prvkov sieťovej vrstvy.
Využite každé zvýšenie hĺbky vrstvy na zvýšenie viazania prvkov pred ďalšou vrstvou.
Pri použití iba 3×3 konvolúcií je možné dané 5×5 a 7×7 filtre rozdeliť na viacero 3×3, ak je to možné. Pozrite sa na obrázok nižšie


V dôsledku toho sa nový Inception stal:


Filter môžete tiež rozdeliť sploštením konvolúcie na zložitejšie moduly:


Pri vykonávaní výpočtov Inception môže modul Inception tiež zmenšiť veľkosť dát poskytovaním poolingu. To je v podstate podobné ako spustiť jednoduchú vrstvu poolingu paralelne pri konvolúcii:


Inception tiež používa pooling vrstvu a softmax ako finálny klasifikátor.

ResNet
V decembri 2015 prišla nová zmena, ktorá sa zhodovala s Inception V3. ResNet má jednoduchý nápad: nasmerovať výstup z dvoch po sebe idúcich konvolučných vrstiev a obísť vstup do ďalšej vrstvy (pozri článok: Deep Residual Learning for Image Recognition).


To je podobné niektorým starým myšlienkam, ktoré boli predtým. Ale v ResNet rozdeľujú dve vrstvy a aplikujú sa vo väčšom meradle. Prejsť po dvoch vrstvách je kľúčová intuícia, pretože rozdelenie jednej vrstvy neprináša väčšie zlepšenie. Prechod cez vrstvu 2 možno považovať za malý klasifikátor alebo sieť v sieti.

Je to prvýkrát, čo počet sieťových vrstiev presahuje 100, a dokonca je možné trénovať aj 1000 vrstiev.

ResNet, ktorý má veľké množstvo sieťových vrstiev, začína používať sieťovú vrstvu podobnú úzkemu hrdlu v Inception:


Táto vrstva spracováva menší počet príznakov tým, že najprv konvolutuje menší počet prvkov o 1×1 s menším výstupom (zvyčajne 1/4 vstupu), potom použije vrstvu 3×3 a nakoniec vrstvu 1×1. Podobne ako modul Inception, toto zabezpečuje nízku výpočtovú náročnosť a zároveň poskytuje bohaté kombinácie funkcií.

ResNet používa relatívne jednoduchú počiatočnú vrstvu na vstupoch: 7×7-objemovú základnú vrstvu s dvoma poolmi. Porovnajte to s komplexnejšími a menej intuitívnymi Inception V3 a V4.

ResNet tiež používa pooling vrstvu plus softmax ako finálny klasifikátor.

Ďalšie poznatky o ResNet sa objavujú každý deň:

ResNet možno považovať za paralelný aj súvislý, pričom vstupy a výstupy (inouty) sú v mnohých moduloch paralelné, zatiaľ čo výstupy každého modulu sú prepojené nepretržite.
ResNet možno tiež považovať za kombináciu paralelných alebo spojitých modulov (pozri článok: Residual Networks are Exponential Ensembles of Relatively Shallow Networks).
Zistilo sa, že ResNet zvyčajne pracuje paralelne na sieťových blokoch na vrstvách 20-30. Namiesto toho, aby plynul nepretržite po celej dĺžke siete.
Keď ResNet posiela výstup späť na vstup ako RNN, sieť možno považovať za biologicky dôveryhodnejší kortikálny model (pozri článok: Bridging the Gaps Between Residual Learning, Rekurentné neurónové siete a vizuálna kôra).

Inception V4
Tu je ďalšia verzia Inception od Christiana a jeho tímu, ktorá je podobná Inception V3:


Inception V4 tiež kombinuje modul Inception a modul ResNet:


Myslím, že architektúra nie je veľmi stručná, ale je plná menej transparentných heuristík. Je ťažké pochopiť voľby v ňom a autori to ťažko vysvetľujú.

Vzhľadom na jednoduchosť siete, ktorú je možné ľahko pochopiť a opraviť, môže byť ResNet lepší.

SqueezeNet
SqueezeNet (pozri článok: SqueezeNet: AlexNet-level accuracy with 50x menej parametrov a <0,5MB veľkosti modelu") je nedávno publikovaná architektúra, ktorá spracováva koncepty v ResNet a Inception. Model siete s lepšou architektúrou je menší a parametre zatiaľ nevyžadujú zložité kompresné algoritmy.

ENet
Náš tím plánuje spojiť všetky funkcie nedávno predstavenej architektúry, aby vytvoril veľmi efektívnu, nízko zaťaženú sieť, ktorá používa menej parametrov a výpočtov na dosiahnutie špičkových výsledkov. Táto sieťová architektúra sa nazýva ENet a navrhol ju Adam Paszke. Už sme ho použili na jednopixelové značkovanie a rozlíšenie scény.

Viac informácií o ENet nájdete v článku ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation. ENet je sieť kódovania, sčítania a dekódovania. Enkodér je bežný dizajn CNN na klasifikáciu. Dekodér je sieť na upsamplovanie, ktorá propaguje klasifikáciu späť k pôvodnému obrazu na segmentáciu. Toto používa iba neurónové siete a žiadne iné algoritmy na segmentáciu obrázkov.

ENet je navrhnutý tak, aby na začiatku využíval čo najnižšie množstvo zdrojov. Preto má taký malý skript, s kombinovanou sieťou enkodérov a dekodérov zaberajúcich 0,7 MB s presnosťou 16 fp. Aj pri tak malom modeli je ENet podobný alebo vyšší ako iné riešenia neurónových sietí v presnosti segmentácie.

Analýza modulov
Analýza modulu CNN, ktorá bola vykonaná v článku (Systematické hodnotenie pokrokov CNN na ImageNete), je veľmi užitočná:

Použi ELU nelinearitu bez batchnorm alebo ReLU s batchnorm.
Použite naučenú transformáciu RGB farebného priestoru.
Použite stratégiu lineárneho poklesu rýchlosti učenia.
Použite súčet priemerných a väčších zoskupených vrstiev.
Použite veľkosť mini-šarže približne 128 až 256. Ak je to príliš veľké pre vašu GPU, jednoducho zmenšite rýchlosť učenia na túto veľkosť.
Použite plne prepojenú vrstvu ako konvolúciu a spriemerujte všetky predpovede na vytvorenie finálnej predpovede.
Keď štúdia zvýši veľkosť tréningovej množiny, zistí, či neexistuje plateau, ktorá nie je dosiahnutá
Čistota dát je dôležitejšia než ich veľkosť.
Ak nemôžete zväčšiť veľkosť vstupného obrazu, znížte krok na nasledujúcich vrstvách, čo má rovnaký efekt.
Ak má vaša sieť zložitú a vysoko optimalizovanú architektúru, ako je GoogLeNet, musíte byť opatrní pri jej úpravách.

Ďalšie architektúry, ktorým sa oplatí venovať pozornosť
FractalNet (pozri článok: FractalNet: Ultra-Deep Neural Networks without Resizidí) používa rekurzívnu architektúru, ktorá nie je testovaná na ImageNet. Táto architektúra je odvodená od ResNet alebo všeobecnejšie ResNet.

budúcnosť
Veríme, že vytvorenie architektúry neurónovej siete je najvyššou prioritou pre rozvoj hlbokého učenia. Náš tím dôrazne odporúča dôkladné čítanie a pochopenie článkov uvedených v článku.

Ale možno sa človek pýta, prečo trávime toľko času tvorbou architektúr? Prečo nám nepovedať, čo používať s dátami? Ako kombinovať moduly? Tieto otázky sú dobré, ale stále sú predmetom výskumu, a existuje článok, na ktorý sa dá odkazovať: Neurónové siete s diferencovateľnou štruktúrou.

Všimnite si, že väčšina architektúr, o ktorých sme hovorili v tomto článku, sa týka počítačového videnia. Podobné architektúry neurónových sietí boli vyvinuté aj v iných oblastiach a je veľmi zaujímavé dozvedieť sa o architektonických zmenách vo všetkých ostatných úlohách.

Ak máte záujem porovnávať architektúru neurónových sietí a výpočtový výkon, pozrite si článok: Analýza hlbokých neurónových sietí pre praktické aplikácie.







Predchádzajúci:Niekoľko metód výpočtu času vykonávania v Pythone
Budúci:Antminer B3 vám povie, čo máte kopať!
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com