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.

Vieš, že
Vieš, že…

…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.