A konvolúciós neurális hálózat (CNN, Convolutional Neural Network) a számítógépes látás legelterjedtebb eszköze. Az architektúra különlegessége abban rejlik, hogy a tanulható szűrők (kernelek) révén képes lokális jellemzőket kinyerni a képből — anélkül, hogy minden pixelt minden neuronhoz kellene kapcsolni. Ez a paramétermegosztás teszi a CNN-eket jóval hatékonyabbá a teljesen összekötött hálózatoknál képfeldolgozási feladatoknál.
A konvolúciós réteg
A konvolúciós réteg szűrőkkel (kernelekkel) pásztázza végig a bemeneti képet. Minden szűrő egy kis mátrix — tipikusan 3×3 vagy 5×5 pixel méretű —, amelynek elemeit a tanítás folyamán az optimalizáló algoritmus állítja be. A szűrő és a bemeneti kép lokális részlete közötti skaláris szorzatot nevezzük konvolúciónak (a gépi tanulásban pontosabban keresztkorrelációnak).
Egyetlen konvolúciós réteg többtucat szűrőt tartalmaz, amelyek különböző jellemzőkre specializálódnak. Az első rétegek jellemzően vízszintes, függőleges és átlós éldetektorokat tanulnak; a mélyebb rétegek egyre összetettebb formákat — görbéket, textúrákat, végül arcokat vagy járműveket — kódolnak.
Padding és stride
A padding a bemeneti kép szélein hozzáadott nulla-értékű pixelsor, amely megakadályozza, hogy a kimenet kisebb legyen a bemenetnél ("same" padding esetén). A stride a szűrő lépésközét jelöli: 2-es stride esetén a szűrő kétpixelenként lép tovább, és a kimenet mérete felére csökken.
Aktivációs függvények
Konvolúció után az eredményt egy nemlineáris aktivációs függvényen vezetik át — e nélkül a rétegek egymás utáni alkalmazása csak egyetlen lineáris transzformációnak felelne meg.
A legelterjedtebb aktiváció a ReLU (Rectified Linear Unit), amely az összes negatív értéket nullává teszi, a pozitívakat változatlanul hagyja. A ReLU egyszerűsége és számítási hatékonysága miatt szinte minden modern CNN alkalmazza, bár változatai — Leaky ReLU, GELU — is elterjedtek.
Pooling rétegek
A pooling réteg csökkenti a jellemzőtérkép (feature map) térbeli felbontását, ezzel csökkentve a hálózat paramétereinek számát és a kisebb eltolásokra való érzékenységet (transzlációs invariancia).
- Max pooling: egy kis ablakból (pl. 2×2) a legnagyobb értéket tartja meg.
- Average pooling: az átlagot veszi. Főképp globálisan — az egész jellemzőtérkép felett — alkalmazzák a teljesen összekötött réteg helyett.
A tipikus CNN-felépítés: [Konvolúció → ReLU → Konvolúció → ReLU → Max Pooling] blokkokat ismétel többször, majd egy vagy két teljesen összekötött (FC) réteg következik, végül egy Softmax osztályozó.
Batch normalizáció
A Batch Normalization (BN) réteg minden minibatch elemét normalizálja az adott réteg aktivációinak átlagára és szórására, majd tanulható skálázási és eltolási paraméterekkel transzformálja vissza. Ez stabilabbá teszi a tanítási folyamatot, lehetővé teszi a nagyobb tanulási rátát, és csökkenti a hálózat érzékenységét az inicializálásra.
Ismert architektúrák
VGG-16 és VGG-19
A Karen Simonyan és Andrew Zisserman által 2014-ben publikált VGG hálózatok egységes 3×3-as konvolúciós blokkokat alkalmaznak, amelyek 16 vagy 19 réteget tartalmaznak. A VGG-16 megközelítőleg 138 millió paramétert tartalmaz, ami a maitechnológiához képest nagy, de az architektúra egyszerűsége miatt tanítási és transzfer tanulási célokra ma is sokszor hivatkoznak rá.
ResNet
A Kaiming He és munkatársai által fejlesztett ResNet (2015) a maradék összeköttetésekkel (skip connections) áthidalta a nagyon mély hálózatok tanítási instabilitását. A ResNet-50 és ResNet-101 változatok ma is alapmodelleknek számítanak számos képfelismerési feladatban.
EfficientNet
Az EfficientNet (Tan & Le, 2019) egy szisztematikus skálázási módszer, amely a hálózat mélységét, szélességét és a bemeneti kép felbontását egyszerre optimalizálja egy összetett skálázási együttható segítségével. Az EfficientNetB0–B7 sorozat a kisebb modellek esetén is versenyképes pontosságot ér el töredéknyi számítási igénnyel.
Transzfer tanulás
A transzfer tanulás (transfer learning) az egyik leggyakrabban alkalmazott módszer a CNN-ek gyakorlati bevetésénél: egy ImageNet-en előre betanított modell súlyait egy új, kisebb adatbázisra vonatkozó feladathoz finomhangolják (fine-tuning). Ez drasztikusan csökkenti a szükséges annotált tanítóminta mennyiségét.
A PyTorch és a TensorFlow/Keras könyvtárak széles körben elérhetővé teszik az előre betanított modellsúlyokat. Egy 1000 kategóriás ImageNet-osztályozóból néhány sor kóddal létrehozható egy orvosi képdiagnosztikai vagy ipari hibadetektáló alkalmazás, ha elegendő domain-specifikus adattal finomhangolják.
Tanítási folyamat és optimalizálás
A CNN-ek tanítása visszaterjesztés (backpropagation) és gradiensereszkedés-alapú optimalizálókkal (SGD, Adam, AdamW) történik. A tanítás stabil lefolyásához a következő elemek elengedhetetlenek:
- Adataugmentáció: véletlen forgatás, vágás, tükrözés, zajhozzáadás — csökkenti a túlilleszkedést.
- Dropout: véletlenszerűen kikapcsolt neuronok a teljesen összekötött rétegekben.
- Learning rate scheduler: a tanulási ráta fokozatos csökkentése a tanítás előrehaladtával (cosine annealing, step decay).
- Súlydegeneráció (weight decay): L2-regularizáció a súlyok normájának korlátozására.
Összefoglalás
A konvolúciós neurális hálózatok a számítógépes látás alapvető eszközei. A rétegek hierarchiája lehetővé teszi a bemeneti képek jellemzőinek automatikus tanulását — az élektől a komplex vizuális fogalmakig. A modern architektúrák és a transzfer tanulás révén a CNN-ek viszonylag kis adatbázissal is jól működő modellek betanítását teszik lehetővé.