Konvolúciós neurális hálózatok

Befejeződött

Bár bármilyen gépi tanuláshoz használhat mélytanulási modelleket, ezek különösen hasznosak nagy számértékekből – például képekből – álló adatok kezelésére. A képeket használó gépi tanulási modellek képezik a számítógépes látás nevű terület alapjait, és a mélytanulási technikák az elmúlt években elképesztő fejlődést hoztak ezen a területen.

Ezen a területen a mély tanulás sikerének középpontjában egy konvolúciós neurális hálózatnak vagy CNN-nek nevezett modell áll. A CNN általában úgy működik, hogy kinyeri a funkciókat a képekből, majd egy teljesen csatlakoztatott neurális hálózatba eteti ezeket a funkciókat egy előrejelzés létrehozásához. A hálózat funkciókinyerési rétegei az egyes képpontértékek potenciálisan hatalmas tömbjének funkcióinak számát egy kisebb funkciókészletre csökkentik, amely támogatja a címkék előrejelzését.

Rétegek a CNN-ben

A CNN-k több rétegből állnak, amelyek mindegyike egy adott feladatot hajt végre a funkciók kinyerése vagy a címkék előrejelzése során.

Konvolúciós rétegek

Az egyik fő rétegtípus egy konvolúciós réteg, amely a képek fontos funkcióit nyeri ki. A konvolúciós réteg úgy működik, hogy szűrőt alkalmaz a képekre. A szűrőt egy olyan kernel határozza meg, amely súlyértékek mátrixából áll.

Egy 3x3-ás szűrő például a következőképpen definiálható:

 1  -1   1
-1   0  -1
 1  -1   1

A kép szintén csak a képpontértékek mátrixa. A szűrő alkalmazásához "átfedi" egy képre, és kiszámítja a megfelelő kép képpontértékeinek súlyozott összegét a szűrőmag alatt. Az eredmény ezután egy egyenértékű 3x3-as javítás középső cellájába lesz rendelve egy új, a kép méretével megegyező méretű értékmátrixban. Tegyük fel például, hogy egy 6 x 6-os kép a következő képpontértékekkel rendelkezik:

255 255 255 255 255 255 
255 255 100 255 255 255
255 100 100 100 255 255
100 100 100 100 100 255
255 255 255 255 255 255
255 255 255 255 255 255

A szűrő alkalmazása a kép bal felső 3x3-ás javítócsomagjára a következőképpen működik:

255 255 255      1  -1   1    (255 x 1)+(255 x -1)+(255 x 1) +
255 255 100  x  -1   0  -1  = (255 x -1)+(255 x 0)+(100 x -1) +   = 155
255 100 100      1  -1   1    (255 x1 )+(100 x -1)+(100 x 1)

Az eredmény a megfelelő képpontértékhez van rendelve az új mátrixban a következőhöz hasonlóan:

 ?   ?   ?   ?   ?   ?  
 ?  155  ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?

Most a szűrőt áthelyezi (konzolve), általában 1-es lépésmérettel (tehát egy képponttal jobbra haladva), és kiszámítja a következő képpont értékét.

255 255 255      1  -1   1    (255 x 1)+(255 x -1)+(255 x 1) +
255 100 255  x  -1   0  -1  = (255 x -1)+(100 x 0)+(255 x -1) +   = -155
100 100 100      1  -1   1    (100 x1 )+(100 x -1)+(100 x 1)

Most már kitölthetjük az új mátrix következő értékét.

 ?   ?   ?   ?   ?   ?  
 ?  155 -155 ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?

A folyamat addig ismétlődik, amíg a szűrőt a rendszerkép 3x3-ra javította, hogy létrehozzuk az alábbihoz hasonló új értékmátrixot:

?   ?   ?    ?    ?   ?
?  155 -155 155 -155  ?
? -155 310 -155  155  ?
?  310 155  310   0   ?
? -155 -155 -155  0   ?
?   ?   ?    ?    ?   ?

A szűrőmag mérete miatt a peremhálózaton lévő képpontok értékei nem számíthatók ki; ezért általában csak egy párnázási értéket alkalmazunk (gyakran 0):

0   0   0    0    0   0
0  155 -155 155 -155  0
0 -155 310 -155  155  0
0  310 155  310   0   0
0 -155 -155 -155  0   0
0   0   0    0    0   0

A konvolúció kimenete általában egy aktiválási függvénynek van átadva, amely gyakran egy relu-függvény , amely biztosítja, hogy a negatív értékek értéke 0 legyen:

0   0   0    0    0   0
0  155  0   155   0   0
0   0  310   0   155  0
0  310 155  310   0   0
0   0   0    0    0   0
0   0   0    0    0   0

Az eredményként kapott mátrix a gépi tanulási modellek betanítására használható funkcióértékek funkciótérképe .

Megjegyzés: A funkciótérkép értékei nagyobbak lehetnek a képpontok maximális értékénél (255), ezért ha képként szeretné megjeleníteni a funkciótérképet, normalizálnia kell a funkcióértékeket 0 és 255 között.

A konvolúciós folyamat az alábbi animációban látható.

A filter kernel is convolved across an image of a triangle, extracting features that emphasize the three edges and corners

  1. A rendszer egy képet ad át a konvolúciós rétegnek. Ebben az esetben a kép egy egyszerű geometriai alakzat.
  2. A kép egy 0 és 255 közötti értékeket tartalmazó képponttömbből áll (színképek esetén ez általában egy háromdimenziós tömb, amely piros, zöld és kék csatornák értékeit tartalmaz).
  3. A szűrőmagot általában véletlenszerű súlyokkal inicializáljuk (ebben a példában olyan értékeket választottunk, amelyek kiemelik, hogy a szűrő milyen hatással lehet a képpontértékekre, de valódi CNN-ben a kezdeti súlyok általában véletlenszerű Gauss-eloszlásból származnak). Ezzel a szűrővel kinyerhető egy funkciótérkép a képadatokból.
  4. A szűrő összefonódik a kép között, és a funkcióértékeket úgy számítja ki, hogy az egyes pozíciókban a megfelelő képpontértékekkel szorzott súlyok összegét alkalmazza. A rendszer egy reLU-aktiválási függvényt alkalmaz a negatív értékek 0 értékre való beállításához.
  5. A konvolúció után a funkciótérkép tartalmazza a kinyert funkcióértékeket, amelyek gyakran hangsúlyozzák a kép legfontosabb vizuális attribútumait. Ebben az esetben a funkciótérkép kiemeli a háromszög széleit és sarkait a képen.

A konvolúciós réteg általában több szűrőmagot alkalmaz. Minden szűrő egy másik funkciótérképet hoz létre, és az összes funkciótérkép a hálózat következő rétegébe kerül.

Rétegek készletezése

Miután kinyerte a funkcióértékeket a képekből, a rendszer készletezési (vagy csökkentési) rétegeket használ a funkcióértékek számának csökkentésére, a kinyert fő megkülönböztető funkciók megtartása mellett.

A készletezés egyik leggyakoribb típusa a maximális készletezés , amelyben a rendszer szűrőt alkalmaz a képre, és csak a szűrőterületen belüli maximális képpontérték marad meg. Így például egy 2x2-szeres készletező kernel alkalmazása egy kép következő javítására 155-ös eredményt eredményezne.

0   0
0  155

Vegye figyelembe, hogy a 2x2 készletezési szűrő hatása az értékek számának csökkentése 4-ről 1-re.

A konvolúciós rétegekhez hasonlóan a rétegek készletezése is úgy működik, hogy a szűrőt a teljes funkciótérképre alkalmazza. Az alábbi animáció egy képtérkép maximális készletezési példáját mutatja be.

A filter kernel is convolved across an image of a triangle, extracting features that emphasize the three edges and corners, max pooling for an image map.

  1. A konvolúciós réteg szűrője által kinyert funkciótérkép funkcióértékek tömbjét tartalmazza.
  2. A készletező kernel a funkcióértékek számának csökkentésére szolgál. Ebben az esetben a kernel mérete 2x2, ezért a funkcióértékek számának negyedévesét tartalmazó tömböt hoz létre.
  3. A készletező kernel összefonódik a funkciótérképen, és csak a legmagasabb képpontértéket őrzi meg minden pozícióban.

Rétegek elvetése

A CNN egyik legnehezebb kihívása a túlillesztés elkerülése, ahol az eredményül kapott modell jól teljesít a betanítási adatokkal, de nem általánosítja jól az új adatokat, amelyeken nem képezték be. A túlillesztés mérséklésére az egyik módszer az, ha olyan rétegeket tartalmaz, amelyekbe a betanítási folyamat véletlenszerűen eltávolítja (vagy elveti) a funkciótérképeket. Ez ellenintuitívnak tűnhet, de hatékony módja annak, hogy a modell ne tanuljon meg túlzottan függeni a betanítási képektől.

A túlillesztés mérséklésére használható egyéb technikák közé tartozik a betanítási képek véletlenszerű tükrözése, tükrözése vagy húzása a betanítási korszakok között változó adatok létrehozásához.

Rétegek simítása

Miután konvolúciós és készletezési rétegeket használt a képek hasznos funkcióinak kinyeréséhez, az eredményül kapott funkciótérképek képpontértékek többdimenziós tömbjei. Az egybesimító réteg a funkciótérképek egy olyan értékvektorra való összesimítására szolgál, amely egy teljesen csatlakoztatott réteg bemeneteként használható.

Teljesen csatlakoztatott rétegek

A CNN általában egy teljesen csatlakoztatott hálózattal végződik, amelyben a szolgáltatásértékek egy bemeneti rétegbe kerülnek egy vagy több rejtett rétegen keresztül, és előrejelzett értékeket hoznak létre egy kimeneti rétegben.

Az alapszintű CNN-architektúra a következőhöz hasonló lehet:

A CNN consisting of a convolutional layer, a pooling layer, a dropping layer, a flattening layer, and a fully connected layer

  1. A rendszer a képeket konvolúciós rétegbe eteti. Ebben az esetben két szűrő van, így minden kép két funkciótérképet hoz létre.
  2. A funkciótérképek egy készletezési rétegbe kerülnek, ahol a 2x2-es készletezési kernel csökkenti a funkciótérképek méretét.
  3. Egy csepegtető réteg véletlenszerűen elvet néhány funkcióleképezést, hogy megakadályozza a túlillesztést.
  4. Az egybesimító réteg felveszi a többi funkciótérkép-tömböt, és egy vektorba simítja őket.
  5. A vektorelemeket a rendszer egy teljesen csatlakoztatott hálózatba eteti, amely létrehozza az előrejelzéseket. Ebben az esetben a hálózat egy olyan besorolási modell, amely három lehetséges képosztály (háromszög, négyzet és kör) valószínűségét jelzi előre.

CNN-modell betanítása

Mint minden mély neurális hálózat esetében, a CNN-t úgy tanítják be, hogy több korszakon keresztül adja át a betanítási adatokat, és az egyes korszakokra kiszámított veszteség alapján módosítja a súlyokat és az elfogultsági értékeket. CNN esetén a korrigált súlyok visszafejtése magában foglalja a konvolúciós rétegekben használt szűrőmag-súlyokat, valamint a teljesen csatlakoztatott rétegekben használt súlyokat.