Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 10136|Odpověď: 0

Vývoj architektury neuronových sítí: Komplexní přehled více než deseti architektur od LeNet5 po ENet

[Kopírovat odkaz]
Zveřejněno 24.04.2018 13:08:47 | | | |
LeNet5
LeNet5 vznikl v roce 1994 a je jednou z prvních konvolučních neuronových sítí, která posunula oblast hlubokého učení dál. Od roku 1988, po mnoha úspěšných iteracích, je tato průkopnická práce Yanna LeCuna pojmenována LeNet5 (viz: Gradient-Based Learning Applied to Document Recognition).


Architektura LeNet5 je založena na myšlence, že (zejména) rysy obrazu jsou rozloženy po celém obrazu, a že konvoluce s naučitelnými parametry je efektivní způsob, jak extrahovat podobné rysy na více místech s malým počtem parametrů. V té době nebyla žádná GPU, která by pomáhala s tréninkem, a dokonce i CPU bylo pomalé. Proto je klíčovým krokem možnost ukládat parametry i samotný výpočetní proces. To je opak používání každého pixelu jako samostatného vstupu pro velkou, vícevrstvou neuronovou síť. LeNet5 vysvětluje, že tyto pixely by neměly být použity v první vrstvě, protože obraz má silné prostorové korelace, které nelze využít použitím nezávislých pixelů jako různých vstupních prvků.

Funkce LeNet5 lze shrnout následovně:

Konvoluční neuronové sítě používají 3 vrstvy jako sekvenci: konvoluční, sdružené, nelineární → To je pravděpodobně klíčová vlastnost hlubokého učení obrazů od doby, kdy tento článek vznikl!
Použijte konvoluce k extrakci prostorových rysů
Podvzorek pomocí mapování na prostorový průměr
Nelinearita ve formě hyperbolické tečnosti (tanh) nebo S-tvaru (sigmoid).
Vícevrstvé neuronové sítě (MLP) slouží jako konečné klasifikátory
Řídké matice spojení mezi vrstvami se vyhýbají vysokým výpočetním nákladům

Celkově je tato síť výchozím bodem pro řadu nedávných architektur a inspirovala mnoho lidí v této oblasti.

Interval
V letech 1998 až 2010 byla neuronová síť ve fázi inkubace. Většina lidí si jejich rostoucí sílu neuvědomuje, zatímco jiní výzkumníci to dělají pomalu. Díky nástupu fotoaparátů v mobilních telefonech a levných digitálních fotoaparátů je využíváno stále více dat. A výpočetní výkon také roste, CPU jsou rychlejší a GPU se stávají výpočetními nástroji pro různé účely. Tyto trendy umožnily neuronovým sítím postupovat, byť pomalu. Data a výpočetní výkon činí úkoly, které neuronové sítě dokážou vykonávat, stále zajímavějšími. Poté se vše vyjasnilo......

Dan Ciresan Net
V roce 2010 publikovali Dan Claudiu Ciresan a Jurgen Schmidhuber implementaci nejstarší neuronové sítě GPU. Tato implementace je devítivrstvá neuronová síť běžící na grafickém procesoru NVIDIA GTX 280, včetně šíření dopředu a zpět.

AlexNet
V roce 2012 Alex Krizhevsky publikoval Alexet (viz: ImageNet Classification with Deep Convolutional Neural Networks), stále hlubší verzi LeNetu, která s výrazným náskokem vyhrála obtížnou soutěž ImageNet.


AlexNet rozšiřuje LeNetovy myšlenky na větší neuronové sítě, které dokážou učit mnohem složitější objekty a úrovně objektů. Přínosy této práce jsou:

Použijte modifikovanou lineární jednotku (ReLU) jako nelinearitu
Použijte techniku Dropout k selektivnímu ignorování jednotlivých neuronů během tréninku, abyste předešli přefitování modelu
Přepisujte velký pool, abyste se vyhnuli průměrnému efektu průměrného poolingu
Zkraťte dobu tréninku s grafickou kartou NVIDIA GTX 580

V tomto bodě mohou GPU poskytnout větší počet jader než CPU a doba trénování se může prodloužit desetinásobně, což umožňuje větší datové sady a větší obrazy.

Úspěch AlexNetu vedl k malé revoluci. Konvoluční neuronové sítě jsou nyní páteří hlubokého učení a staly se synonymem pro "velké neuronové sítě, které nyní dokážou řešit užitečné úkoly."

Překonání
V prosinci 2013 navrhla laboratoř Yanna LeCuna na Newyorské univerzitě derivaci AlexNetu s názvem Overfeat (viz: OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks). Tento článek také navrhl výukový ohraničující rámeček, což vedlo k mnoha článkům na stejné téma. Myslím, že je lepší naučit se rozdělovat objekty než umělé ohraničující rámy.

VGG
Síť VGG z Oxfordské univerzity (viz: Very Deep Convolutional Networks for Large-Scale Image Recognition) je první sítí, která používá menší 3×3 filtry na každé konvoluční vrstvě a kombinuje je k jejich zpracování jako konvoluční sekvence.

To se zdá být opakem LeNetova principu, kde se používají velké konvoluce k získání podobných rysů v obraze. Na rozdíl od filtrů 9×9 nebo 11×11 od AlexNetu se filtry začínají zmenšovat a blíží se nechvalně známé anomálii konvoluce 1×1, které se LeNet snaží vyhnout – alespoň na první vrstvě sítě. VGG však dosáhl velkého pokroku použitím několika konvolucí 3×3 za sebou, aby napodobil efekty větších receptivních polí, jako jsou 5×5 a 7×7. Tyto myšlenky byly také použity v novějších síťových architekturách, jako jsou Inception a ResNet.


VGG sítě používají více 3×3 konvolučních vrstev k charakterizaci složitých rysů. Všimněte si, že 3., 4. a 5. blok filtrů VGG-E: 256×256 a 512×512 3×3 jsou opakovaně používány k získání složitějších vlastností a kombinací těchto prvků. Tento efekt je ekvivalentní velkému klasifikátoru 512×512 se 3 konvolučními vrstvami. To samozřejmě znamená, že existuje mnoho parametrů a schopností učení. Tyto sítě je však obtížné trénovat a musí být rozděleny na menší sítě a vrstva po vrstvě. Je to způsobeno nedostatkem robustního způsobu, jak model regularizovat nebo více či méně omezit velké množství vyhledávacího prostoru kvůli velkému počtu parametrů.

VGG používá velké velikosti prvků v mnoha vrstvách, protože inference je časově náročná za běhu. Stejně jako u úzkého hrdla v Inceptionu snížení počtu funkcí ušetří některé výpočetní náklady.

Síť v síti
Myšlenka sítě v síti (NiN, viz článek: Síť v síti) je jednoduchá a skvělá: použití konvoluce 1×1 k poskytnutí více kompovatelných schopností pro rysy konvoluční vrstvy.

Architektura NiN používá prostorové vrstvy MLP po jednotlivých konvolucích k lepší kombinaci prvků před ostatními vrstvami. Opět si můžete myslet, že 1×1 konvoluce jsou v rozporu s původním principem LeNetu, ale ve skutečnosti dokážou kombinovat konvoluční rysy lepším způsobem, než není možné, jednoduše skládáním více konvolučních rysů. To se liší od použití původního pixelu jako vstupu další vrstvy. Konvoluce 1×1 se často používají k spaciálnímu kombinování prvků na mapách rysů po konvoluci, takže mohou použít velmi málo parametrů a sdílet je napříč všemi pixely těchto prvků!


Schopnost MLP výrazně zvýšit efektivitu jednotlivých konvolučních rysů jejich kombinací do složitějších skupin. Tato myšlenka byla od té doby použita v některých nedávných architekturách, jako jsou ResNet, Inception a jeho deriváty.

NiN také používá průměrnou vrstvu poolingu jako součást finálního klasifikátoru, což je další praxe, která se stane běžnou. To se provádí průměrováním odezvy sítě na více vstupních obrazů před klasifikací.

GoogLeNet a Inception
Christian Szegedy z Googlu zahájil svou snahu snížit výpočetní zátěž hlubokých neuronových sítí a navrhl GoogLeNet, první architekturu Inception (viz: Jít hlouběji s konvoluci).

Bylo to na podzim 2014 a modely hlubokého učení se stávaly užitečnými pro klasifikaci snímků obrazu versus video. Většina skeptiků už nepochybuje, že hluboké učení a neuronové sítě jsou tentokrát skutečně zpět a budou se dále vyvíjet. Vzhledem k užitečnosti těchto technologií mají internetoví giganti jako Google velký zájem tyto architektury efektivně a ve velkém měřítku nasadit na svých serverech.

Christian hodně přemýšlel o tom, jak hluboké neuronové sítě mohou dosáhnout vysoké úrovně výkonu, například na ImageNetu, a přitom snížit jejich výpočetní režii. Nebo lze dosáhnout zlepšení výkonu při zachování stejné výpočetní režie.

On a jeho tým přišli s modulem Inception:


Na první pohled jde v podstatě o paralelní kombinaci konvolučních filtrů 1×1, 3×3, 5×5. Ale skvělou myšlenkou Inception je snížit počet rysů před drahými paralelními moduly s 1×1 konvolučními bloky (NiN). Tomu se běžně říká "úzké hrdlo". Tato část bude vysvětlena v sekci "vrstva úzkého hrdla" níže.

GoogLeNet používá páteřní kost bez inception modulu jako počáteční vrstvu, následovanou průměrnou pooling vrstvou plus softmax klasifikátorem podobným NiN. Tento klasifikátor má mnohem menší počet operací než klasifikátory AlexNet a VGG. To také vedlo k velmi efektivnímu návrhu sítě, viz článek: Analýza hlubokých neuronových sítí pro praktické aplikace.

Vrstva úzkého hrdla
Inspirováno NiN, úzká hrdlová vrstva Inception snižuje počet prvků v každé vrstvě, a tím i počet operací; Takže doba inference může být nízká. Počet příznaků se sníží čtyřikrát, než jsou data předána drahými konvolučními moduly. To představuje významnou úsporu výpočetních nákladů a úspěch architektury.

Pojďme to ověřit konkrétně. Nyní, když máte 256 vstupů příznaků a 256 výstupů příznaků, předpokládejme, že vrstva Inception dokáže provést pouze 3×3 konvolucí, což znamená celkem 256×256×3×3 konvolucí (téměř 589 000 operací násobení a akumulace (MAC)). To může být nad náš výpočetní rozpočet, například spustit vrstvu za 0,5 milisekundy na serverech Google. Místo toho jsme se rozhodli snížit počet funkcí, které bylo třeba složit, což bylo 64 (tj. 256/4). V tomto případě začínáme konvolucí 256 -> 64 1×1, poté 64 konvolucí na všech větvích Inception, následovanou konvolucí 1×1 z rysu 64 -> 256, a nyní je operace následující:

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

Ve srovnání s předchozími 600 000 je nyní celkem 70 000 výpočetních objemů, což je téměř 10krát méně.

A i když jsme dělali lepší operace, neztratili jsme obecnost na této úrovni. Vrstva úzkého hrdla se ukázala jako špičková na datových sadách jako ImageNet a používá se také v architekturách jako ResNet, kterou představíme příště.

Je úspěšný, protože vstupní prvky jsou propojené, takže redundance lze snížit jejich správným kombinováním s konvolucí 1×1. Poté, co je malý počet rysů zmatený, lze je na další vrstvě opět rozvinout do smysluplných kombinací.

Inception V3 (a V2)
Christian a jeho tým jsou velmi plodní výzkumníci. V únoru 2015 byla zavedena dávkově normalizovaná Inception jako Inception V2 (viz článek: Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift). Dávková normalizace vypočítá průměr a směrodatnou odchylku všech zobrazení příznaků na výstupu jedné vrstvy a používá tyto hodnoty k normalizaci jejich odezv. To je ekvivalentní "bělení" dat, takže všechny neuronové mapy reagují ve stejném rozsahu a mají nulový průměr. To pomáhá při tréninku, když další vrstva nemusí učit offset od vstupních dat, a také se zaměřuje na lepší kombinaci těchto funkcí.

V prosinci 2015 tým vydal novou verzi modulu Inception a podobnou architekturu (viz článek: Rethinking the Inception Architecture for Computer Vision). Článek lépe vysvětluje původní architekturu GoogLeNet a poskytuje více detailů ohledně designových rozhodnutí. Původní myšlenka je následující:

Pečlivým budováním sítě se vyrovnává hloubka a šířka, aby se maximalizoval tok informací do sítě. Před každým poolingem přidejte mapování funkcí.
S rostoucí hloubkou se systematicky zvyšuje hloubka nebo počet prvků síťové vrstvy.
Každé zvýšení hloubky vrstvy použijte k většímu propojení prvků před další vrstvou.
Při použití pouze 3×3 konvolucí lze dané filtry 5×5 a 7×7 rozdělit na více 3×3, pokud je to možné. Podívejte se na obrázek níže


Výsledkem bylo, že nový Počátek se stal:


Filtr můžete také rozdělit zploštěním konvoluce na složitější moduly:


Při provádění výpočtů Inception může modul Inception také zmenšit velikost dat díky poolingu. To je v podstatě podobné jako paralelní spuštění jednoduché poolingové vrstvy při konvoluci:


Inception také používá pooling vrstvu a softmax jako finální klasifikátor.

ResNet
V prosinci 2015 došlo k nové změně, která se shodovala s Inception V3. ResNet má jednoduchý nápad: přivést výstup ze dvou po sobě jdoucích konvolučních vrstev a obejít vstup do další vrstvy (viz článek: Deep Residual Learning for Image Recognition).


To je podobné některým starým myšlenkám dříve. Ale v ResNetu rozdělují dvě vrstvy a aplikují se ve větším měřítku. Jít po dvou vrstvách je klíčová intuice, protože rozdělení jedné vrstvy nepřináší větší zlepšení. Průchod vrstvou 2 lze považovat za malý klasifikátor nebo síť v síti.

Je to poprvé, kdy počet síťových vrstev přesahuje 100, a dokonce lze trénovat i 1000 vrstev.

ResNet, který má velké množství síťových vrstev, začíná používat síťovou vrstvu podobnou úzkému hrdlu v Inception:


Tato vrstva zpracovává menší počet příznaků tím, že nejprve konvolutuje menší počet příznaků o 1×1 s menším výstupem (obvykle 1/4 vstupu), poté použije vrstvu 3×3 a nakonec vrstvu 1×1. Podobně jako modul Inception zajišťuje nízkou výpočetní náročnost a zároveň nabízí bohaté kombinace funkcí.

ResNet používá relativně jednoduchou počáteční vrstvu na vstupech: 7×7 objemovou základní vrstvu se dvěma pooly. Porovnejte to s komplexnějšími a méně intuitivními Inception V3 a V4.

ResNet také používá pooling vrstvu plus softmax jako finální klasifikátor.

Další poznatky o ResNetu se objevují každý den:

ResNet lze považovat za paralelní i souvislé, přičemž vstupy a výstupy (inouty) jsou v mnoha modulech paralelní, zatímco výstupy každého modulu jsou propojeny spojitě.
ResNet lze také považovat za kombinaci paralelních nebo spojitých modulů (viz článek: Reziduální sítě jsou exponenciální soubory relativně mělkých sítí).
Bylo zjištěno, že ResNet obvykle pracuje paralelně na síťových blocích na vrstvách 20–30. Místo toho, aby plynul nepřetržitě celou délkou sítě.
Když ResNet vrací výstup zpět na vstup jako RNN, lze síť považovat za biologicky důvěryhodnější kortikální model (viz článek: Překlenutí mezer mezi zbytkovým učením, rekurentními neuronovými sítěmi a vizuální kůrou).

Inception V4
Tady je další verze Inception od Christiana a jeho týmu, která je podobná Inception V3:


Inception V4 také kombinuje modul Inception a modul ResNet:


Myslím, že architektura není moc stručná, ale je také plná méně transparentních heuristik. Je těžké pochopit volby v něm a autoři to těžko vysvětlují.

Vzhledem k jednoduchosti sítě, kterou lze snadno pochopit a opravit, může být ResNet lepší.

SqueezeNet
SqueezeNet (viz článek: SqueezeNet: AlexNet přesnost s 50x méně parametry a velikostí modelu <0,5MB") je nedávno publikovaná architektura, která přepracovává koncepty v ResNet a Inception. Model sítě pro návrh lepší architektury je menší a parametry zatím nevyžadují složité kompresní algoritmy.

ENet
Náš tým plánuje spojit všechny funkce nedávno představené architektury a vytvořit velmi efektivní, nízkonákladovou síť, která používá méně parametrů a výpočtů k dosažení špičkových výsledků. Tato síťová architektura se nazývá ENet a navrhl ji Adam Paszke. Už jsme ho použili pro jednopixelové maržení a rozlišení scén.

Pro více informací o ENet viz článek ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation. ENet je síť kódování, sčítání a dekódování. Enkodér je běžný CNN design pro klasifikaci. Dekodér je síť pro upsamplování, která propaguje klasifikaci zpět k původnímu obrazu pro segmentaci. Používá pouze neuronové sítě a žádné jiné algoritmy pro segmentaci obrazů.

ENet je navržen tak, aby na začátku využíval co nejmenší množství zdrojů. Proto má tak malý skript, s kombinovanou sítí enkodérů a dekodérů zabírajících 0,7 MB s přesností 16 fp. I s tak malým modelem je ENet podobný nebo vyšší než jiná řešení neuronových sítí v přesnosti segmentace.

Analýza modulů
Analýza modulu CNN, která byla provedena v článku (Systematic evaluation of CNN advances on the ImageNet), je velmi užitečná:

Použijte ELU nelinearitu bez batchnorm nebo ReLU s batch norm.
Použijte naučenou transformaci barevného prostoru RGB.
Použijte strategii lineárního poklesu rychlosti učení.
Použijte součet průměrných a větších skupinových vrstev.
Použijte velikost mini-šarže přibližně 128 až 256. Pokud je to pro vaši GPU moc velké, stačí snížit rychlost učení na tuto velikost.
Použijte plně propojenou vrstvu jako konvoluci a zprůměrujte všechny predikce pro finální předpověď.
Když studie zvýší velikost tréninkové sady, zjistí, zda není dosaženo plató
Čistota dat je důležitější než jejich velikost.
Pokud nemůžeš zvětšit velikost vstupního obrazu, sniž krok na dalších vrstvách, což má stejný efekt.
Pokud má vaše síť složitou a vysoce optimalizovanou architekturu, jako je GoogLeNet, musíte být opatrní při jejích úpravách.

Další architektury, kterým stojí za to věnovat pozornost
FractalNet (viz článek: FractalNet: Ultra-Deep Neural Networks without Resizids) používá rekurzivní architekturu, která není na ImageNetu testována. Tato architektura je odvozena od ResNetu nebo obecněji od ResNetu.

budoucnost
Věříme, že vytvoření architektury neuronové sítě je nejvyšší prioritou pro rozvoj hlubokého učení. Náš tým důrazně doporučuje pečlivě si přečíst a porozumět článkům zmíněným v článku.

Ale člověk by se mohl ptát, proč trávíme tolik času tvorbou architektur? Proč nám neřeknete, co používat s daty? Jak kombinujete moduly? Tyto otázky jsou dobré, ale stále jsou předmětem výzkumu, a existuje článek, na který se lze odkázat: Neuronové sítě s diferencovatelnou strukturou.

Všimněte si, že většina architektur, o kterých jsme v tomto článku mluvili, se týká počítačového vidění. Podobné architektury neuronových sítí byly vyvinuty i v jiných oblastech a je velmi zajímavé dozvědět se o architektonických změnách ve všech ostatních úlohách.

Pokud vás zajímá srovnání architektury neuronových sítí a výpočetního výkonu, podívejte se na článek: Analýza hlubokých neuronových sítí pro praktické aplikace.







Předchozí:Několik metod výpočtu doby spuštění v Pythonu
Další:Antminer B3 vám řekne, co máte vykopat!
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com