5. Convnets
Definice¶
- Konvoluční sítě se skládají z vrstev neuronů, které jsou navzájem propojené. Každá vrstva má na vstupu určitý počet neuronů a na výstupu jiný počet neuronů.
- Konvoluční sítě používají filtry k vyhledávání vzorů v datech. Filtry jsou konvolučními maticemi, které se posouvají po datech a provedou konvoluci s daty. Výsledkem je nový obraz, který je pak použit k detekci vzorů.
- Konvoluční sítě mimo klasických fully connected vrstev používají také konvoluční a pooling vrstvy.
Použiti¶
- Konvoluční neuronové sítě (CNN) jsou typy neuronových sítí, které jsou vynikající pro analýzu obrazu a učení z velkého množství dat.
- Konvoluční sítě dokážou najít a rozpoznat vzory a struktury v datech bez explicitního zadání, co se má hledat. Toto je velká výhoda oproti jiným typům neuronových sítí, které vyžadují explicitní definici toho, co se má hledat.
Otázky¶
Rozdíly convnet vrstvy a fully connected?¶
Convnet vrstva¶
- Neurony v konvolučních vrstvách jsou spojeny jen s hrstkou neuronů v předchozí vrstvě, které patří do nějakého okolí a stejná sada vah je použita pro všechny neurony ve vrstvě. Každý neuron si ze svého regionu (např. 3x3 grid) extrahuje příznak podle stejného předpisu (protože stejné váhy).
- Tento postup dává smysl jen v případě, že data jsou prostorová a příznaky se vyskytují lokálně a na jakékoliv pozici.
Fully connected vrstva¶
- Ve fully connected vrstvě jsou všechny neurony spojeny se všemi neurony v předchozí vrstvě a každý má svou vlastní váhu. Nepředpokládá nic o povaze dat, funguje zcela obecně, ale je velmi výpočetně náročné na pamět a výpočet.
Jak přesně funguje konvoluční neuron?¶
Konvoluční neuron¶
- Konvoluční neuron funguje tak, že má nějaký filtr (definovaný váhami) a tento filtr aplikuje konvolucí na svůj region v obrázku. Jeho aktivace značí nějakou vizuální stimulaci.
- V průběhu učení CNN se filtry učí extrahovat nejprve obecné příznaky jako hrany, rohy, čáry (mohou být použity ručně vytvořené filtry z klasického zpracování obrazu) a v pozdějších vrstvách se extrahují textury a komplikovanější vzory.
Co je pooling?¶
Pooling¶
- Pooling je technika k redukci rozměrů vstupních dat. Je to druh nekonvoluční operace, která se používá po konvoluci, aby se snížila velikost vstupních dat a zároveň se zachovaly důležité informace.
-
Extrahované příznaky se nějakým způsobem sjednocují (např. maxpooling, average pooling,...).
- Max Pooling - vezme nejvetsi cislo
- Average pooling - vezme prumer
- Sum Pooling - vezme soucet
-
Na začátku u barevných obrázků máme hloubku 3, v dalších vrstvách je hloubka dána počtem natrénovaných filterů.
- Padding pro místa kde filter zasahuje mimo rozsah konvoluce (zero padding, same padding,...).
- Stride pro délku kroku při přechodech konvoluce.
Co je to dropout?¶
Dropout¶
- Během trénování vypíná (nastavuje váhy na 0) náhodné neurony, což slouží jako regularizace jelikož se síť nenaučí spoléhat na nějakou malou sadu velmi důležitých neuronů.
- Další forma regularizace například L1 a L2, augmentace dat, batch normalizace (standardizace vstupů do vrstvy).
Jaké jsou typy předučených konvolučních sítí?¶
- AlexNet – první CNN vítěz ImageNet ILSVRC 2012, podobný LeNetu, ale hlubší, stackoval konvoluční vrstvy.
- GoogLeNet – vítěz ILSVRC 2014, postupně se vyvinul v Inception sítě, používá Inception moduly s méně parametry a místo poslední FC vrstvy je average pooling.
- VGG – runner-up ILSVRC 2014, velmi hluboká a velká síť (140 M parametrů).
- ResNet – reziduální skip connections které napomáhají vanishing gradient problému a zajišťují information flow, batch normalization.
- DenseNet.
- MobileNet.
Jak se regularizuje convoluční neuronová síť?¶
- Pomoci Dropout, Data augmentation, L1 a L2 normalizace (penalizuje velke hodnoty vah ve filtru)
Data augmentation¶
- Data augmentation je technika, při které se trénovací data rozšiřují tak, že se vytvoří nová data ze stávajících dat pomocí různých transformací (např. otočení, posunutí, změna kontrastu atd.). Toto může pomoci zvýšit objem trénovacích dat a zabránit přetrénování sítě.