használatával

Célok:

  1. Értse meg a mesterséges idegháló működésének alapelvét
  2. Ismerje meg a mesterséges neurális hálózatok típusát, az úgynevezett Autocodereket
  3. Használja az autokódolókat a képek zajának csökkentésére

Az autoencoderek (Autoencoders) a mesterséges ideghálózat egy speciális típusa (ANN rövidítése angolul). Éppen ezért az autokódolók megértéséhez a legjobb, ha először van egy ötletünk az ANN működéséről.

ANN alapjai

Az ANN-ek számítási modellek, amelyeket a biológiai ideghálózatok inspiráltak. Egyszerűsítve az ANN három fő komponensre osztható: egy bemeneti rétegre, több rejtett rétegre és egy kimeneti rétegre (lásd 1. ábra). Az összes rejtett réteg halmaza olyan funkcióként értelmezhető, amely a priori több ismeretlen paramétertől függ, az úgynevezett neuron súlyoktól. Ezen súlyok megtalálásához az ANN-t ki kell képezni.

1.ábra: A bemeneti réteg állhat például egy kép pixelértékeiből. A rejtett rétegek egy bizonyos G függvényként értelmezhetők, amely függ a wi súlyoktól, az Xi bemeneti értékektől. A G függvény átalakítja a bemenet értékeit, és az ANN típusától függően visszatérhet a kimenethez egy másik kép, vagy annak a valószínűsége, hogy a bemeneten lévő kép egy korábban meghatározott osztályhoz tartozik.

A neurális hálózatok témájának részletesebb áttekintéséhez ajánlott elolvasni a kurzust az alábbi linken (link beillesztése)

Autokódolók

Mint korábban említettük, az autokódolók az ANN sajátos esetei. Ezek sajátossága, hogy a bemenet általában pontosan megegyezik a kimenettel. Az előző példa alapján, ha a 0 képét átadjuk a bemenetnek, az Autocoder a nulla képét a lehető legközelebb adja ki a bemenet képéhez (2. ábra). Ezen a ponton érdemes feltenni a kérdést: mi a haszna egy ilyen ideghálózatnak? A kérdés megválaszolásához egy kicsit jobban meg kell értenünk az Autocoders architektúráját. A fő különbség a hagyományos hálózatokkal szemben az, hogy a közbenső rétegek (rejtett rétegek) először csökkentik méretüket (Encoder), majd szimmetrikusan ismét növelik (Decoder) (2. ábra)

2. ábra: Az Autoencoder általános architektúrája.

Az ANN felépítéséből adódóan a középső réteg kompaktan reprezentálja a bemeneti változókat. Így a kódolót alkotó rétegek kompaktabb változatot hoznak létre az eredeti képből, míg a dekódert alkotó rétegek megpróbálják visszaállítani az eredeti képet a kompakt változatból. Az ilyen típusú algoritmus érdekes alkalmazása a nagy felbontású képek megszerzése alacsony felbontású képekből. Egy másik alkalmazás, a képfeldolgozás hatókörén kívül, a dimenziók csökkentése azokban a problémákban, ahol több száz függő változó van. Ebben az értelemben az autokódolók alternatívának és robusztusabb technikának bizonyultak, mint a PCA (fő komponens elemzés).

Autokódolók képszűrőként

A dimenziócsökkentés alternatívájaként az autokódolók a képek zajainak szűrésére is használhatók. Ehhez az edzés szakaszában zajjal rendelkező képeket kell átadni bemenetként, és a megfelelő zaj nélküli képeket át kell adni a kimeneten (3. ábra)

3. ábra: Az Autocoder általános felépítése a képek zajainak eltávolítására

Ily módon az Autocoder "megtanulja" eltávolítani a képek zaját. A kiképzés után az Autocoder képes lesz megszüntetni a 0 és 9 közötti számjegyek bármilyen képének zaját, még akkor is, ha a hálózat még soha nem látta őket. Ne feledje, hogy nem szükséges semmilyen konkrét szabályt vagy szűrőt megjelölni a hálózaton, hanem azt, hogy a tanítási szakaszban „megtanulja” önmagát.

Kód egy Autoencoder létrehozásához a képek szűrésére

Az alábbiakban bemutatjuk a képzaj eltávolítására szolgáló Autoencoder létrehozásának kódját. Ebben a példában a Python sklearn könyvtár MNIST adataiból kivont, kézzel írt számjegyek képeit fogjuk használni. A könyvtár 70 000 számjegyű képet tartalmaz

Először a képek halmaza két csoportra oszlik; Az első csoportot a hálózat kiképzéséhez használt adatokból (85%), a többit (15%) a hálózat minőségének értékelésére fogják felhasználni. Ezután egy új változóba mentjük mindkét képkészletet, de most Gauss-zaj hozzáadása után. Ezeket a képeket továbbítják az Autocoder bemenetére a képzési szakaszban, míg az MNIST-ből kivont eredeti képeket a kimenethez továbbítják. A hálózati architektúra meghatározásához a keras Python könyvtárat kell használni, amely egy nagyon egyszerű TensorFlow felület.

Végül bemutatjuk azokat az eredményeket, amelyek az Autocoder alkalmazásával lettek érvényesek az érvényesítési készlet egyes képein (4. ábra).

4. ábra: Képek Gauss-zajjal (felső vonal) és a megfelelő képek, amelyeket a Filtering Autocoder ad vissza (alsó vonal).

Amint a 4. ábrán látható, az eredmény meglehetősen lenyűgöző. A módszer legfőbb előnye, hogy nem kell aggódnunk az alkalmazandó szűrő típusa miatt, hanem az, hogy az ideghálózat önmagában megtanulja, melyik a legoptimálisabb szűrőkészlet, amelyet alkalmazni kell a várt eredmény elérése érdekében. Másrészt ennek a módszernek a fő hátránya, hogy nagyszámú képre (több mint 1000) van szükség az ideghálózat edzéséhez. Tehát, mint mindig mondjuk, az autokódolók használata vagy nem a képzaj csökkentése érdekében sok függ az adott problémától. Általánosságban elmondható, hogy ha nagy képkészlettel rendelkezünk a hálózat kiképzéséhez, akkor előnyösebb az Autocodereket használni bármely más módszer előtt a képek zajának csökkentésére.