Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 10136|Válasz: 0

A neurális hálózati architektúra fejlődése: Átfogó áttekintés több mint tíz architektúráról a LeNet5-től az ENet-ig

[Linket másol]
Közzétéve 2018. 04. 24. 13:08:47 | | | |
LeNet5
A LeNet5 1994-ben született, és az egyik első konvolúciós neurális hálózat, amely előmozdította a mélytanulás területét. 1988 óta, számos sikeres iteráció után, Yann LeCun úttörő munkáját LeNet5-nek nevezik el (lásd: Gradient-Based Learning Applied to Document Recognition).


A LeNet5 architektúrája azon az elképzelésen alapul, hogy (különösen) egy kép jellemzői az egész képen eloszlanak, és hogy a tanulható paraméterekkel való konvolúció hatékony módja annak, hogy hasonló jellemzőket több helyen kinyerjünk néhány paraméterrel. Akkoriban nem volt GPU a képzés segítésére, és még a CPU is lassú volt. Ezért kulcsfontosságú fejlesztés a paraméterek mentésének lehetősége, valamint a számítási folyamat. Ez ellentéte annak, mint az egyes pixelek külön bemenetként egy nagy, többrétegű neurális hálózathoz. LeNet5 elmagyarázza, hogy ezeket a pixeleket nem szabad az első rétegben használni, mert a képnek erős térbeli korrelációi vannak, amelyeket független pixelek különböző bemeneti jellemzőkként nem lehet kihasználni.

A LeNet5 funkciói a következőképpen összefoglalhatók:

A konvolúciós neurális hálózatok három réteget használnak sorozatként: konvolúciós, csoportos, nemlineáris → Ez valószínűleg a kép mélytanulásának egyik kulcsfontosságú jellemzője a cikk óta!
Konvolúciókat használj térbeli jellemzők kinyerésére
Alminta a térbeli átlagra való leképezéssel
Nemlinearitás hiperbolikus érintő (tanh) vagy S-alakú (sigmoid) formában.
A többrétegű neurális hálózatok (MLP-k) szolgálnak a végső osztályozókként
A rétegek közötti ritka kapcsolatmátrixok elkerülik a nagy számítási költségeket

Összességében ez a hálózat a számos új architektúra kiindulópontja, és sokakat inspirált ebben a térben.

Szünet
1998 és 2010 között a neurális hálózat inkubációs szakaszban volt. A legtöbben nem tudják növekvő erejét, míg más kutatók lassan teszik ezt. A mobiltelefonos kamerák és az olcsó digitális kamerák megjelenésének köszönhetően egyre több adatot használnak ki. A számítási kapacitás is növekedik, a CPU-k gyorsabbak, és a GPU-k több célra is számítástechnikai eszközökké válnak. Ezek a trendek lehetővé tették a neurális hálózatok fejlődését, bár lassan. Az adatok és a számítási kapacitás egyre érdekesebbé teszi azokat a feladatokat, amelyeket a neurális hálózatok elvégezhetnek. Ezután minden világossá vált......

Dan Ciresan háló
2010-ben Dan Claudiu Ciresan és Jurgen Schmidhuber közzétették a legkorábbi GPU neurális hálózat megvalósítását. Ez a megvalósítás egy 9 rétegű neurális hálózat, amely egy NVIDIA GTX 280 grafikus processzoron fut, beleértve az elő- és visszaterjedést is.

AlexNet
2012-ben Alex Krizhevsky kiadta az Alexet című könyvet (lásd: ImageNet osztályozás mély konvolúciós neural hálózatokkal), amely a LeNet mélyebb és szélesebb változata, és jelentős különbséggel nyerte meg a nehéz ImageNet versenyt.


Az AlexNet kiterjeszti a LeNet ötleteit nagyobb neurális hálózatokra is, amelyek sokkal összetettebb objektumokat és objektumszinteket képesek megtanulni. A mű hozzájárulásai a következők:

Használj módosított lineáris egységet (ReLU) nemlineáris számként
A Dropout technikát használd szelektíven figyelmen kívül hagyni az egyes neuronokat a képzés során, hogy elkerüld a modell túlilleszkedését
Felülírni egy nagy medencét, hogy elkerüld az átlagos csoportosítás átlagos hatását
Csökkentse a képzési időt az NVIDIA GTX 580 GPU-val

Ekkor a GPU-k több magot tudnak biztosítani, mint a CPU-k, és a képzési idő tízszeres meghosszabbításra vezethet, ami nagyobb adathalmazokat és nagyobb képeket tesz lehetővé.

Az AlexNet sikere egy kis forradalomhoz vezetett. A konvolúciós neurális hálózatok ma már a mélytanulás gerincét képezik, és egyet jelentenek a "nagy neurális hálózatokkal, amelyek most már hasznos feladatokat képesek megoldani."

Overfeat
2013 decemberében a New York-i Egyetem Yann LeCun laborja egy AlexNet-derivált, Overfeat (lásd: OverFeat: Integrált felismerés, lokalizáció és detektálás konvolúciós hálózatok segítségével). Ez a cikk egy tanulási korlátot is javasolt, ami számos tanulmányhoz vezetett ugyanezen a témán. Úgy gondolom, jobb megtanulni tárgyak szétosztását, mint mesterséges korlátoló dobozokat.

VGG
Az Oxfordi Egyetem VGG hálózata (lásd: Very Deep Convolutional Networks for Large-Scale Image Recognition) az első hálózat, amely minden konvolúciós rétegnél kisebb 3×3-as szűrőt használ, és ezeket kombinálja, hogy konvolúciós sorozatként feldolgozza őket.

Ez úgy tűnik, ellentétes a LeNet elvével, ahol nagy konvolúciókat használnak hasonló jellemzők eléréséhez egy képen. Ellentétben az AlexNet 9×9 vagy 11×11 szűrőivel, a szűrők egyre kisebb lenni, közelebb kerülve a hírhedt 1×1-es konvolúciós anomáliához, amelyet a LeNet igyekszik elkerülni – legalábbis a hálózat első rétegén. Ugyanakkor a VGG jelentős előrelépést ért el azzal, hogy több 3×3-as konvolúciót használ egymásutánban, hogy utánozza a nagyobb receptív mezők, például az 5×5 és 7×7 hatásait. Ezeket az ötleteket újabb hálózati architektúrákban is alkalmazták, mint az Inception és a ResNet.


A VGG hálózatok több 3×3 konvolúciós réteget használnak összetett jellemzők jellemezésére. Fontos megjegyezni, hogy a VGG-E: 256×256 és 512×512 3×3 szűrők 3., 4., 4., 5. blokkjait többször használják sorban a bonyolultabb jellemzők és ezek kombinációinak kinyerésére. Ez a hatás egy nagy, 512×512-es osztályozó ekvival, amely három konvolúciós réteggel rendelkezik. Ez nyilvánvalóan azt jelenti, hogy rengeteg paraméter és tanulási képesség van. De ezek a hálózatok nehezen taníthatók, és kisebb hálózatokra kell osztani, és rétegről rétegre kell gyűjteniük. Ennek oka, hogy nincs robusztus módja a modell rendszeresítésére, vagy a nagy mennyiségű paraméter miatt nagyobb vagy kevésbé korlátozott keresési terület.

A VGG nagy funkcióméreteket használ sok rétegben, mert a következtetés futásidőben időigényes. Ahogy az Inception szűk keresztmetszetében, a funkciók számának csökkentése némi számítási költséget takarít meg.

Hálózat a hálózatban
A Network in Network (NiN, lásd tanulmány: Network In Network) ötlete egyszerű és nagyszerű: az 1×1 konvolúció alkalmazása, hogy több kompoziolizálható képességeket biztosítson a konvolúciós réteg jellemzőihez.

A NiN architektúra térbeli MLP rétegeket használ egyedi konvolúciók után, hogy jobban kombinálja a jellemzőket a többi réteg előtt. Ismétlem, azt gondolhatjuk, hogy az 1×1-es konvolúciók ellentétesek a LeNet eredeti elvével, de valójában jobb módon képesek konvolúciós jellemzőket kombinálni, mint ahogy egyszerűen több konvolúciós jellemzőt egymásra rakva nem lehetne. Ez eltér attól, ha az eredeti pixelt használnánk következő rétegbemenetként. Az 1×1 konvolúciókat gyakran használják arra, hogy szpatiális módon kombinálják a jellemzőket a jellemzők térképein a konvolúció után, így valójában nagyon kevés paramétert használhatnak, és ezeket megoszthatják ezeknek a jellemzőknek minden pixele között!


Az MLP képessége, hogy jelentősen növelje az egyes konvolúciós jellemzők hatékonyságát azáltal, hogy összetettebb csoportokba egyesíti őket. Ezt az ötletet azóta néhány újabb architektúrában alkalmazták, például a ResNet, az Inception és annak származékai.

A NiN egy átlagos csoportosítási réteget is használ a végső osztályozó részeként, ami szintén általánossá válik. Ezt úgy érjük el, hogy átlagolják a hálózat válaszait több bemeneti képre a besorolás előtt.

GoogLeNet és Inception
Christian Szegedy a Google-tól kezdte meg a mély neurális hálózatok számítási terhelésének csökkentését, és megtervezte a GoogLeNet-et, az első Inception architektúrát (lásd: Mélyebb keresés a konvolutionsokkal).

2014 őszén volt, és a mélytanulási modellek egyre hasznosabbá váltak a kép és videó képkockák osztályozásában. A legtöbb szkeptikus már nem kételkedik abban, hogy a mélytanulás és a neurális hálózatok most valóban visszatértek, és tovább fejlődni fognak. Ezeknek a technológiáknak a hasznossága miatt az olyan internetes óriások, mint a Google, nagyon érdeklődnek abban, hogy ezeket az architektúrákat hatékonyan és nagy léptékben telepítsék szervereikre.

Christian sokat gondolkodott azon, hogyan érhetnek el mély neurális hálózatok magas teljesítményt, például az ImageNet-en, miközben csökkentik a számítási terhelésüket. Vagy teljesítményjavításokat is elérhetünk, miközben ugyanazt a számítási költséget biztosítják.

Ő és csapata kitalálták az Inception modult:


Első pillantásra ez lényegében egy párhuzamos kombináció 1×1, 3×3, 5×5 konvolúciós szűrőkből. Az Inception nagyszerű ötlete az, hogy csökkentse a jellemzők számát a drága párhuzamos modulok előtt, amelyek 1×1 konvolúciós blokkokkal (NiN) rendelkeznek. Ezt gyakran "szűk keresztmetszetnek" nevezik. Ezt a részt az alábbi "szűk keresztmetszet" szakaszban magyarázzuk el.

A GoogLeNet egy kezdeti rétegként egy inception modul nélküli gerincet használ, majd egy átlagos pooling réteget és egy softmax osztályzót, amely hasonló a NiN-hez. Ez a klasifikátor sokkal kevesebb műveletet tartalmaz, mint az AlexNet és a VGG osztályozói. Ez egy nagyon hatékony hálózati tervezéshez is vezetett, lásd a tanulmányt: An Analysis of Deep Neural Network Models for Practical Applications.

Szűk keresztmetszet réteg
A NiN inspirálta az Inception szűk keresztmetszetét csökkenti minden rétegben lévő funkciók számát, így a műveletek számát; Így a következtetési idő alacsonyan maradhat. A jellemzők számát négyszeresére csökkentik, mielőtt az adatokat drága konvolúciós modulokon keresztül továbbítanák. Ez jelentős megtakarítás a számítási költségek szempontjából, és az architektúra sikere is megvan.

Nézzük meg különösen. Most, hogy 256 funkció bemeneted és 256 funkció kimeneted van, tegyük fel, hogy az Inception réteg csak 3×3 konvolúciót tud végrehajtani, ami összesen 256×256×3×3 konvoluciót jelent (közel 589 000 szorzási és felhalmozódási (MAC) művelet). Ez talán túllépi a számítási költségvetésünket, mondjuk 0,5 milliszekundum alatt futtatni a réteget Google szervereken. Ehelyett úgy döntöttünk, hogy csökkentjük a bonyolult jellemzők számát, ami 64 volt (azaz 256/4). Ebben az esetben egy 256 -> 64 1×1 konvolúcióval kezdünk, majd az Inception minden ágán 64 konvolúcióval, majd egy 1×1 konvolúcióval 64 -> 256 jellemzőből, és most a művelet a következő:

256×64 × 1×1 = 16 000-es
64×64 × 3×3 = 36 000-es évek
64×256 × 1×1 = 16 000-es

A korábbi 600 000-hez képest most összesen 70 000 számítási térfogat van, ami majdnem tízszerese kevesebb.

És bár jobb műveleteket végeztünk, ezen a rétegen nem veszítettük el az általánosságot. A szűk keresztmetszetű réteg bizonyítottan kiváló olyan adathalmazokban, mint az ImageNet, és olyan architektúrákban is használják, mint a ResNet, amelyet a következőképpen bemutatunk.

Ez azért sikeres, mert a bemeneti jellemzők összefüggnek, így a redundancia csökkenthető azzal, hogy megfelelően kombináljuk őket 1×1 konvolúcióval. Ezután, miután néhány jellemző összebonyolult, a következő rétegben újra bővíthetők értelmes kombinációkká.

Inception V3 (és V2)
Christian és csapata nagyon termékeny kutatók. 2015 februárjában bevezették a Batch-normalizált Inceptiont Inception V2 néven (lásd tanulmányt: Batch Normalization: Accelerating Deep Network Training by Reduction Internal Covariate Shift). A batch-normalizáció kiszámítja az összes jellemzőleképezés átlagát és szórását egy réteg kimenetén, és ezeket az értékeket használja válaszok normalizálására. Ez egyenértékű az adatok "fehérítésével", így minden neurális leképezés ugyanabban a tartományban reagál, és nulla átlag. Ez segít a képzésben, amikor a következő rétegnek nem kell megtanulnia az elmozdulást a bemeneti adatokból, és arra is összpontosít, hogyan lehet jobban kombinálni ezeket a funkciókat.

2015 decemberében a csapat kiadta az Inception modul új verzióját és hasonló architektúrát (lásd tanulmányt: Az Inception architektúrájának újragondolása számítógépes látásért). A tanulmány jobban bemutatja az eredeti GoogLeNet architektúrát, részletesebben bemutatva a tervezési lehetőségeket. Az eredeti ötlet a következő:

A hálózat gondos felépítésével a mélység és a szélesség egyensúlyban van, hogy maximalizálják az információáramlást a hálózatba. Minden csoportosítás előtt adj hozzá jellemzők térképezést.
Ahogy a mélység nő, a hálózati réteg mélysége vagy jellemzői is rendszerszinten nőnek.
Minden réteg mélységnövelését használd arra, hogy növeld a jellemzők kötését a következő réteg előtt.
Csak 3×3 konvolúció használatával egy adott 5×5 és 7×7 szűrőt lehetőség szerint több 3×3-ra lehet osztani. Nézd meg az alábbi képet


Ennek eredményeként az új Inception a következő lett:


A szűrőt úgy is feloszthatod, hogy a konvolúciót összetettebb modulokra simítod:


Az incepciós számítások során az Inception modul csökkentheti az adatok méretét is azáltal, hogy csoportosítást biztosít. Ez lényegében hasonló ahhoz, mint egy egyszerű pooling réteget párhuzamosan futtatni konvolúció esetén:


Az Inception egy pooling layer és softmax végső osztályozásként is használ.

ResNet
2015 decemberében új változás történt, amely egybeesett az Inception V3-mal. A ResNet egyszerű ötlete van: két egymást követő konvolúciós réteg kimenetét táplálja, és a bemenetet a következő rétegre kerülni (lásd a tanulmányt: Deep Rezidual Learning for Image Recognition).


Ez hasonló néhány régi ötlethez. De a ResNetben a két réteget szétválasztják, és nagyobb léptékben alkalmazzák. A két réteg után való tridj kulcsfontosságú intuíció, mert egy réteg szétválasztása nem hoz több javulást. A 2. rétegen való áthaladás egy kis osztályozó vagy hálózat-hálózat alapú áthaladásának tekinthető.

Ez az első alkalom, hogy a hálózati rétegek száma meghaladja a 100-at, sőt még 1000 réteget is lehet tanítani.

A ResNet, amely számos hálózati réteget tartalmaz, elkezd egy olyan hálózati réteget használni, amely hasonló az Inception szűk keresztmetszetéhez:


Ez a réteg kisebb számú jellemzőt dolgoz fel úgy, hogy először egy kisebb számú tulajdonságot egy 1×1-es kimenettel (általában a bemenet 1/4-ével) bonyolít össze, majd egy 3×3-as és végül 1×1-es réteget használ. Az Inception modulhoz hasonlóan ez alacsony számítási intenzitást biztosít, miközben gazdag funkciókombinációkat kínál.

A ResNet viszonylag egyszerű kezdeti réteget használ a bemeneteken: egy 7×7 kötetes alapréteget két pooldal. Hasonlítsuk össze ezt az összetettebb és kevésbé intuitív Inception V3-mal és V4-gel.

A ResNet a végső osztályozásként egy pooling layer plus softmax-ot is használ.

További ismeretek a ResNetről minden nap előfordulnak:

A ResNet párhuzamos és egymáshoz kapcsolódó megoldásként kezelhető, sok modulban a bemeneteket és kimeneteket (bejövőket) párhuzamosnak kezeli, miközben minden modul kimenetei folyamatosan kapcsolódnak.
A ResNet párhuzamos vagy folyamatos modulok kombinációjaként is tekinthető (lásd a tanulmányt: Maradék hálózatok arányosan sekély hálózatok exponeciális együttesei).
Megállapították, hogy a ResNet általában párhuzamosan működik hálózati blokkokban a 20-30-as rétegekben. Ahelyett, hogy folyamatosan végigáramlik a hálózat teljes hosszán.
Amikor a ResNet visszaadja az outputot a bemenetre, mint egy RNN, a hálózatot biológiailag megbízhatóbb kéreg modellnek tekinthető (lásd tanulmány: Bridging the Gaps Between Residual Learning, Recurrent Neural Networks and Visual Cortex).

Inception V4
Íme egy másik verzió az Inception-nak Christian és csapatától, amely hasonló az Inception V3-hoz:


Az Inception V4 egyesíti az Inception modult és a ResNet modult is:


Szerintem az architektúra nem túl tömör, de tele van kevésbé átlátható heurisztikákkal. Nehéz megérteni a benne szereplő választásokat, és a szerzőknek nehéz elmagyarázni.

A hálózat egyszerűsége miatt, amely könnyen érthető és javítható, a ResNet talán jobb választás lehet.

SqueezeNet
A SqueezeNet (lásd tanulmányt: SqueezeNet: AlexNet-szintű pontosság 50-szeres kevesebb paraméterrel és <0,5MB modellmérettel) egy nemrég megjelent architektúra, amely újradolgozza a ResNet és az Inception koncepcióit. Egy jobb architektúratervezési hálózati modell kisebb, és a paraméterek még nem igényelnek összetett tömörítési algoritmusokat.

ENet
Csapatunk azt tervezi, hogy a nemrég feltárt architektúra minden jellemzőjét egyesíti, hogy egy nagyon hatékony, alacsony súlyú hálózatot hozzon létre, amely kevesebb paramétert és számítást használ a kiváló eredmények eléréséhez. Ezt a hálózati architektúrát ENetnek hívják, és Adam Paszke tervezte. Már használtuk egypixeles jelöléshez és jelenetfelbontáshoz.

További információért az ENetről lásd az ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation című tanulmányt. Az ENet egy kódolás, hozzáadás és dekódolás hálózata. Az enkóder egy szokásos CNN tervezésű besorolás. A dekóder egy felmintavételezési hálózat, amely visszafelé terjeszti a besorolást az eredeti képre a szegmentálás céljából. Ez csak neurális hálózatokat használ, és más algoritmusokat nem használ képszegmentálásra.

Az ENet úgy van tervezve, hogy a lehető legkevesebb erőforrást használja fel az elején. Ezért van ilyen kicsi szkriptje, ahol egy kombinált kódoló és dekóder hálózat foglal el 0,7 MB-ot 16 fp pontossággal. Még ilyen kis modell mellett is az ENet hasonló vagy jobb a többi neurális hálózati megoldáshoz szegmentálási pontosságban.

Modul elemzés
A CNN modul elemzése, amelyet a cikkben (Systematic evaluation of CNN advances on the ImageNet) végeztek, nagyon hasznos:

Használd az ELU-n nemlineáris rendszert batchnorm nélkül, vagy ReLU-t batchnormmal.
Használj egy tanult RGB színtér transzformációt.
Használj lineáris tanulási ütemcsökkenési stratégiát.
Használd az átlagos és nagyobb összegű rétegek összegét.
Használj egy mini-adag méretet, amely körülbelül 128-tól 256-ig terjed. Ha ez túl nagy a GPU-dnak, egyszerűen skálázd le a tanulási sebességet erre a méretre.
Használd a teljesen összekapcsolt réteget konvolúcióként, és átlagold az összes előrejelzést a végső előrejelzés elkészítéséhez.
Amikor a tanulmány növeli a képzési készlet méretét, azt mutatja, hogy van-e olyan szint, amelyet nem érnek el
Az adatok tisztasága fontosabb, mint az adatok mérete.
Ha nem tudod növelni a bemeneti kép méretét, csökkentsd a léptéket a következő rétegeken, ez ugyanazt az eredményt hozza.
Ha a hálózatod összetett és erősen optimalizált architektúrával rendelkezik, mint például a GoogLeNet, óvatosnak kell lenned annak módosításával.

Más architektúrák, amelyekre érdemes figyelni
A FractalNet (lásd tanulmányt: FractalNet: Ultra-Deep Neural Networks without Residuals) rekurzív architektúrát használ, amelyet nem tesztelnek az ImageNeten. Ez az architektúra a ResNet vagy általánosabban a ResNet származéka.

jövő
Úgy véljük, hogy a neurális hálózati architektúra létrehozása a mélytanulás fejlesztésének egyik legfontosabb prioritása. Csapatunk erősen ajánlja, hogy alaposan olvassa el és értse meg a cikkben említett cikkeket.

De talán az ember elgondolkodhat, miért töltünk ennyi időt az építészet készítésével? Miért nem mondod meg, mit használjunk az adatokkal? Hogyan kombinálod a modulokat? Ezek a kérdések jók, de még kutatás alatt állnak, és van egy tanulmány, amelyre hivatkozhatunk: Neural networks differenciálható szerkezettel.

Fontos megjegyezni, hogy a cikkben említett architektúrák többsége a számítógépes látásról szól. Hasonló neurális hálózati architektúrákat fejlesztettek ki más területeken is, és nagyon érdekes megismerni az architektúra változásait minden más feladatban.

Ha érdekel a neurális hálózati architektúra és a számítási teljesítmény összehasonlítása, tekintse meg a következő tanulmányt: An Analysis of Deep Neural Network Models for Practical Applications.







Előző:Több Python végrehajtási időszámítási módszer
Következő:Az Antminer B3 megmondja, mit kell ásni!
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com