Convolutional neural network (CNN)
Čo je convolutional neural network?
Convolutional neural network (CNN), v slovenskom preklade konvolučná neurónová sieť, je typ hlbokej neurónovej siete špecializovaný na spracovanie dát s mriežkovou štruktúrou, predovšetkým obrazov. Na rozdiel od plne prepojených neurónových sietí využíva CNN konvolučné vrstvy, ktoré aplikujú filtre na lokálne oblasti vstupu a extrahujú z nich príznaky.
Architektúra CNN sa inšpirovala biologickým vizuálnym kortexom cicavcov. Jednotlivé neuróny reagujú na podnety len v ohraničenej oblasti zorného poľa, pričom tieto oblasti sa čiastočne prekrývajú a spoločne pokrývajú celé vizuálne pole.
Architektúra konvolučnej neurónovej siete
Štandardná architektúra CNN pozostáva z niekoľkých typov vrstiev:
- Konvolučné vrstvy aplikujú naučené filtre na vstupné dáta a vytvárajú mapy príznakov. Každý filter deteguje špecifické vzory – v nižších vrstvách hrany a textúry, vo vyšších vrstvách komplexnejšie štruktúry ako časti objektov.
- Pooling vrstvy redukujú priestorové rozmery máp príznakov, čím znižujú výpočtovú náročnosť a pomáhajú dosiahnuť invariantnosť voči malým posunom vo vstupe. Najčastejšie sa používa max pooling, ktorý vyberá maximálnu hodnotu z definovanej oblasti.
- Plne prepojené vrstvy sa zvyčajne nachádzajú na konci siete a transformujú extrahované príznaky na výstupné predikcie. Pri klasifikácii obrazov produkujú pravdepodobnosti príslušnosti k jednotlivým triedam.
Princípy fungovania CNN
Kľúčovým princípom CNN je zdieľanie váh. Rovnaký filter sa aplikuje na celý vstupný obraz, čo výrazne znižuje počet parametrov v porovnaní s plne prepojenými sieťami. Táto vlastnosť umožňuje CNN efektívne sa učiť priestorovo invariantné príznaky.
Trénovanie CNN prebieha pomocou algoritmu spätného šírenia chyby. Sieť spracuje vstupný obraz, porovná výstup s očakávaným výsledkom a postupne upravuje váhy filtrov tak, aby minimalizovala chybu predikcie. Tento proces sa opakuje na tisícoch až miliónoch tréningových príkladov.
…architektúra ResNet z roku 2015 priniesla koncept reziduálnych spojení, ktoré umožnili trénovať siete s viac ako 100 vrstvami? Predtým bolo trénovanie takto hlbokých sietí prakticky nemožné kvôli problému miznúceho gradientu.
Príklady použitia CNN
Konvolučné neurónové siete dominujú v úlohách počítačového videnia. V medicíne pomáhajú pri analýze röntgenových snímok, CT skenov a histologických vzoriek. Systémy založené na CNN dosahujú v niektorých diagnostických úlohách porovnateľnú presnosť s ľudskými expertmi.
Autonómne vozidlá využívajú CNN na detekciu objektov, rozpoznávanie dopravných značiek a segmentáciu jazdnej dráhy. V priemysle sa nasadzujú na kontrolu kvality výrobkov a detekciu defektov na výrobných linkách.
CNN majú svoje obmedzenia – vyžadujú veľké množstvo označených tréningových dát a ich rozhodovací proces je ťažko interpretovateľný. Pri spracovaní obrazov s výrazne odlišnými charakteristikami od tréningových dát môže ich presnosť výrazne klesnúť.
Zdroje a odkazy
Použité zdroje:
- Stanford CS231n – Convolutional Neural Networks for Visual Recognition: https://cs231n.stanford.edu/2020/
Odporúčané zdroje:
- Deep Learning Book – Convolutional Networks: https://www.deeplearningbook.org
Uvedené informácie sú orientačné a môžu sa líšiť v závislosti od verzie, implementácie a prostredia.