A konvolúciós neurális hálózat ( CNN ) a mesterséges neurális hálózatok speciális architektúrája , amelyet Jan LeCun javasolt 1988-ban [1] , és amelynek célja a hatékony mintafelismerés [2] , a mély tanulási technológiák ( deep learning ) része. Használja a látókéreg néhány jellemzőjét [3] , amelyben úgynevezett egyszerű sejteket fedeztek fel, amelyek különböző szögben reagálnak az egyenes vonalakra, és összetett sejteket, amelyek reakciója egy bizonyos egyszerű sejtcsoport aktiválásával jár. . Így a konvolúciós neurális hálózatok ötlete a konvolúciós rétegek ( angol. konvolúciós rétegek ) és az almintavételezési rétegek ( angol. subsampling layers vagy angol pooling layers , subsample layers) összeillesztése. A hálózat felépítése egyirányú (visszacsatolás nélküli), alapvetően többrétegű. A képzéshez standard módszereket használnak, leggyakrabban a backpropagation módszert . A neuronok aktivációs funkciója (transzfer funkció) tetszőleges, a kutató választása szerint.
A hálózati architektúra elnevezése a konvolúciós művelet jelenlétének köszönhető , melynek lényege, hogy minden képrészletet elemenként megszorozunk a konvolúciós mátrixszal (kernel), majd az eredményt összegezzük és hasonló pozícióba írjuk a kimeneti kép.
A konvolúciós neurális háló működését általában úgy értelmezik, hogy a kép sajátos jellemzőitől az elvontabb részletek felé haladunk, és tovább haladunk a még absztraktabb részletek felé, egészen a magas szintű fogalmak kinyeréséig. Ugyanakkor a hálózat önmagában állítja be és alakítja ki az absztrakt jellemzők (a jellemzőtérképek sorozatai) szükséges hierarchiáját, kiszűri a lényegtelen részleteket és kiemeli a lényegeseket.
Az ilyen értelmezés inkább metaforikus vagy szemléletes. Valójában az összetett hálózat által előállított „jellemzők” annyira homályosak és nehezen értelmezhetők, hogy a gyakorlatban meg sem próbálják megérteni ezeknek a tulajdonságoknak a lényegét, még kevésbé „helyes”, hanem a felismerési eredmények javítását, megváltoztatják a hálózat szerkezetét és architektúráját. Így néhány jelentős jelenség figyelmen kívül hagyása a rendszer részéről azt jelezheti, hogy vagy nincs elegendő adat a betanításhoz, vagy a hálózati struktúra hibás, és ezekre a jelenségekre a rendszer nem tud hatékony szolgáltatásokat kifejleszteni.
Egy közönséges perceptronban , amely egy teljesen összekapcsolt neurális hálózat, minden neuron az előző réteg összes neuronjához kapcsolódik, és minden kapcsolatnak megvan a saját személyes súlyegyütthatója. A konvolúciós neurális hálózatban a konvolúciós művelet csak egy korlátozott súlyú, kis méretű mátrixot használ, amelyet a teljes feldolgozott rétegre „mozgatnak” (a legelején, közvetlenül a bemeneti képen), minden eltolás után aktiváló jelet képezve. a következő réteg hasonló helyzetű neuronjához. Vagyis ugyanazt a súlymátrixot használják a kimeneti réteg különböző neuronjaihoz, amelyet konvolúciós kernelnek is neveznek . Ezt valamilyen jellemző grafikus kódolásaként értelmezik, például egy ferde vonal jelenléte egy bizonyos szögben. Ezután az ilyen súlymátrixszal végzett konvolúciós művelet eredményeként létrejövő következő réteg ennek a tulajdonságnak a jelenlétét mutatja a feldolgozott rétegben és annak koordinátáit, létrehozva az úgynevezett jellemzőtérképet . Természetesen egy konvolúciós neurális hálózatban nem egy súlykészlet létezik, hanem egy teljes tartomány, amely képelemeket (például vonalakat és íveket különböző szögben) kódol. Ugyanakkor az ilyen konvolúciós magokat nem a kutató határozza meg előre, hanem önállóan alakítja ki a hálózatot a klasszikus hibavisszaterjesztés módszerével . Az egyes súlykészletek megadása saját jellemzőleképezési példányt generál, így a neurális hálózat többcsatornássá válik (sok független jellemzőtérkép egy rétegen). Azt is meg kell jegyezni, hogy ha egy rétegen súlymátrixszal iterálunk, az általában nem egy teljes lépéssel (ennek a mátrixnak a mérete), hanem egy kis távolsággal mozog. Így például, ha a súlymátrix mérete 5 × 5, akkor öt helyett egy vagy két neuronnal (pixellel) tolódik el, hogy ne „lépje át” a kívánt jellemzőt.
Az almintavételi művelet ( eng. subsampling , eng. pooling , más néven "almintavételi művelet" vagy pooling művelet) a generált jellemzőtérképek dimenziójának csökkentését hajtja végre. Ebben a hálózati architektúrában úgy gondolják, hogy a kívánt jellemző meglétének tényéről szóló információ fontosabb, mint koordinátáinak pontos ismerete, ezért a jellemzőtérkép több szomszédos neuronjából a maximumot választják ki és veszik a tömörített jellemzőtérkép egy kisebb dimenziójú neuronja. Ennek a műveletnek köszönhetően a további számítások felgyorsítása mellett a hálózat invariánsabbá válik a bemeneti kép léptékéhez képest.
Tekintsük részletesebben a konvolúciós neurális hálózat tipikus szerkezetét. A hálózat nagyszámú rétegből áll. A kezdeti réteg (bemeneti kép) után a jel egy sor konvolúciós rétegen halad át, amelyekben maga a konvolúció és a részmintavétel (pooling) váltakozik. A rétegek váltakozása lehetővé teszi, hogy tereptérképekből "jellemzőtérképeket" készítsünk, minden következő rétegen a térkép mérete csökken, de a csatornák száma nő. A gyakorlatban ez azt jelenti, hogy képesek vagyunk felismerni az összetett jellemző-hierarchiákat. Általában több rétegen való áthaladás után a tereptérkép vektorrá vagy akár skalárrá degenerálódik, de több száz ilyen jellemzőtérkép létezik. A hálózat konvolúciós rétegeinek kimenetén egy teljesen összekapcsolt neurális hálózat (perceptron) több rétege is telepítve van, amelyek bemenetére a végjellemző térképek kerülnek betáplálásra.
A konvolúciós réteg a konvolúciós neurális hálózat fő blokkja . A konvolúciós réteg minden csatornához saját szűrőt tartalmaz, melynek konvolúciós magja töredékenként dolgozza fel az előző réteget (az elemenkénti szorzat eredményeit összegezve minden fragmentumra). A konvolúciós kernel (kis mátrix) súlyai ismeretlenek, és edzés közben vannak beállítva.
A konvolúciós réteg jellemzője a viszonylag kis számú paraméter, amelyet az edzés során állítanak be. Tehát például, ha az eredeti kép mérete három csatornában 100x100 pixel (ami 30 000 bemeneti neuront jelent), és a konvolúciós réteg 3x3 pixeles kernellel használ 6 csatornás kimenetű szűrőket, akkor csak 9 kernelsúly kerül meghatározásra. a tanulási folyamatban azonban minden csatornakombinációnál, azaz 9×3×6=162 esetén ebben az esetben ez a réteg csak 162 paramétert igényel, ami lényegesen kevesebb, mint egy teljesen csatlakoztatott csatorna szükséges paramétereinek száma. neurális hálózat.
Az egyes konvolúciók skaláris eredménye az aktiválási függvényre esik , amely egyfajta nemlineáris függvény. Az aktiváló réteget általában logikailag kombinálják a konvolúciós réteggel (úgy tekintjük, hogy az aktiváló funkció a konvolúciós rétegbe van beépítve). A nemlinearitási függvény a kutató választása szerint tetszőleges lehet, ehhez hagyományosan olyan függvényeket használtak, mint a hiperbolikus érintő ( , ) vagy a szigmoid ( ). A 2000-es években azonban egy új aktiválási funkciót javasoltak [4] és tanulmányoztak [5] - a ReLU-t (az angol rectified linear unit rövidítése ), amely lehetővé tette a tanulási folyamat jelentős felgyorsítását és egyben a számítások egyszerűsítését (a magának a függvénynek az egyszerűsége) [6] , ami a függvényt kiszámító lineáris egyenirányítás blokkját jelenti . Azaz lényegében ez egy skalárérték negatív részének levágása. 2017-től ez a funkció és módosításai (Noisy ReLU, Leaky ReLU és mások) a leggyakrabban használt aktiválási funkciók a mély neurális hálózatokban, különösen a konvolúciós hálózatokban. Létezik egy módszer a lineáris egyenirányító blokkok optimális számának meghatározására [7] .
A pooling layer (egyébként almintavétel, részmintavétel) egy jellemzőtérkép nem lineáris tömörítése, míg a pixelek egy csoportja (általában 2 × 2 méretű) egy pixelre tömörül, és nemlineáris transzformáción megy keresztül. Ebben az esetben leggyakrabban a maximum funkciót használják. Az átalakítások nem átfedő téglalapokat vagy négyzeteket érintenek, amelyek mindegyikét egy-egy pixelbe tömörítik, és kiválasztják a maximális értékű képpontot. A pooling művelet jelentősen csökkentheti a kép térbeli térfogatát. A pooling értelmezése a következő: ha bizonyos jellemzőket már az előző konvolúciós művelet során azonosítottunk, akkor a további feldolgozáshoz már nincs szükség ilyen részletes képre, és azt tömörítjük egy kevésbé részletgazdagra. Ezenkívül a szükségtelen részletek kiszűrése segít az átképzés elkerülésében . A gyűjtőréteget általában a konvolúciós réteg után helyezik be a következő konvolúciós réteg elé.
A maximális függvénnyel való összevonáson kívül más függvények is használhatók - például az átlagérték vagy az L2 normalizálás . A gyakorlat azonban megmutatta a maximális funkcióval történő pooling előnyeit, ami a tipikus rendszerekben megtalálható.
Az így létrejövő reprezentációk méretének agresszívabb csökkentése érdekében egyre népszerűbbek a kisebb szűrők [8] alkalmazása vagy a pooling layerek teljes megszüntetése . [9]
Több menetes képkonvolúció és tömörítés után a rendszer egy adott nagy felbontású pixelrácsról absztraktabb jellemzőtérképekre épül át, általában minden következő rétegben a csatornák száma nő, és az egyes csatornákban a képméret csökken. . A végén marad egy nagy csatornahalmaz, amelyek kis mennyiségű adatot (akár egyetlen paramétert is) tárolnak, amelyeket az eredeti képből feltárt legelvontabb fogalmakként értelmeznek.
Ezeket az adatokat egyesítik és továbbítják egy hagyományos, teljesen összekapcsolt neurális hálózathoz, amely több rétegből is állhat. Ugyanakkor a teljesen összefüggő rétegek már elveszítik a pixelek térbeli szerkezetét, és viszonylag kis mérettel rendelkeznek (az eredeti kép pixelszámához képest).
A tanulás legegyszerűbb és legnépszerűbb módja a tanári tanulás módszere (címkézett adatokon) - a hiba és annak módosításai visszaterjedésének módja . De létezik számos felügyelet nélküli tanulási technika is a konvolúciós hálózathoz. Például a konvolúciós műveleti szűrőket külön-külön és autonóm módon lehet betanítani úgy, hogy a betanítási minta eredeti képeinek véletlenszerűen kivágott darabjait etetjük beléjük, és bármilyen ismert, nem felügyelt tanulási algoritmust alkalmazunk rájuk (például egy auto -asszociátor vagy akár a k-means módszer ) - ezt a technikát patch-alapú képzésnek nevezik . Ennek megfelelően a hálózati konvolúció következő rétege a hálózat már betanított első rétegének darabjain lesz betanítva. A konvolúciós neurális hálózatok kombinálhatók más mély tanulási technológiákkal is . Például egy konvolúciós auto-asszociátor [10] elkészítéséhez, a kaszkádban korlátozott Boltzmann-gépek konvolúciós változatához, amelyek valószínűségi matematikai berendezéssel tanulnak [11] , a ritka kódolás ( eng. sparse coding ) konvolúciós változatát, amelyet dekonvolúciós hálózatoknak neveznek . hálózatok „telepítése”) [12] .
A hálózat teljesítményének javítása, stabilitásának növelése és a túlillesztés megakadályozása érdekében kivételt (lemorzsolódást) is alkalmaznak - egy alhálózati képzési módszert véletlenszerű egyetlen neuronok kilökésével.
A mesterséges neurális hálózatok típusai | |
---|---|
|
Gépi tanulás és adatbányászat | |
---|---|
Feladatok | |
Tanulás tanárral | |
klaszteranalízis | |
Dimenziócsökkentés | |
Strukturális előrejelzés | |
Anomália észlelése | |
Grafikon valószínűségi modellek | |
Neurális hálózatok | |
Megerősítő tanulás |
|
Elmélet | |
Folyóiratok és konferenciák |
|