AI kezdőknek · Számítógépes látás · Lecke 09

Autoenkóderek és VAE-k

Mi történik, ha egy neurális hálót nem megcímkézett adatokon, hanem önmagán tanítunk. Ebben a leckében megnézzük, hogyan tanul meg egy háló képeket tömöríteni és visszaállítani, és hogyan lesz ebből a technikából végül egy teljes értékű generatív modell.

Vissza a tananyaghoz


Ez a lecke a Microsoft nyílt forráskódú "AI kezdőknek" (AI For Beginners) tananyagának magyar adaptációja. A konvolúciós neurális hálók tanításának egyik nagy korlátja, hogy rengeteg címkézett adatra van szükség. Egy képosztályozó betanításához valakinek végig kellett néznie és kategorizálnia a képeket, ez pedig drága és lassú folyamat. Az autoenkóder erre ad választ, mert nyers, címkézetlen adatokból is képes tanulni.

A módszert önfelügyelt tanulásnak nevezzük, mert nincs szükség külön címkére, a bemenet és a kimenet egyaránt maga a kép. Az autoenkóder két részből áll. Az enkóder hálózat a bemeneti képet egy jóval kisebb méretű, úgynevezett latens térbe tömöríti, majd a dekóder hálózat ebből a tömör reprezentációból megpróbálja visszaállítani az eredeti képet. Mivel a hálót arra tanítjuk, hogy a rekonstrukció minél pontosabb legyen, kénytelen megtalálni a kép lényegét megragadó, tömör beágyazást.


Mire jó egy autoenkóder

Önmagában egy kép visszaállítása nem tűnik különösebben hasznosnak, de az autoenkóder számos gyakorlati helyzetben bizonyul értékesnek.


A variációs autoenkóder (VAE)

A hagyományos autoenkóder csökkenti a bemeneti adat dimenzióját, és megtalálja a legfontosabb jellemzőket, de a latens tér szerkezete nem igazán értelmezhető. Vegyük az MNIST kézzel írott számjegyek adathalmazát, ahol a közeli latens vektorok nem feltétlenül ugyanazt a számjegyet reprezentálják. Ha viszont generatív modellt szeretnénk építeni, sokkal jobban járunk, ha van valamilyen elképzelésünk a latens tér szerkezetéről. Erre a problémára ad választ a variációs autoenkóder, röviden VAE.

A VAE nem közvetlenül egy latens vektort tanul meg előre jelezni, hanem egy statisztikai eloszlást, az úgynevezett latens eloszlást. A gyakorlatban ez azt jelenti, hogy az enkóder egy átlagot és egy szórást jósol meg minden bemeneti képhez, a dekóder pedig egy ebből az eloszlásból véletlenszerűen mintavételezett vektor alapján állítja vissza a képet.

A VAE veszteségfüggvénye két részből áll. A rekonstrukciós veszteség azt méri, mennyire hasonlít a visszaállított kép az eredetihez, ez lényegében ugyanaz, mint a hagyományos autoenkódernél. Emellett van egy úgynevezett KL veszteség is, amely a Kullback-Leibler divergencia fogalmán alapul, és arra kényszeríti a latens eloszlást, hogy közel maradjon a normális eloszláshoz. Ez utóbbi teszi lehetővé, hogy a latens teret értelmes módon be lehessen járni.

Ennek az az előnye, hogy sokkal könnyebben generálhatunk új, valósághű képeket, hiszen pontosan tudjuk, milyen eloszlásból érdemes mintavételezni. Ha például egy kétdimenziós latens térrel tanítunk VAE-t az MNIST adathalmazon, a latens vektor komponenseit finoman változtatva a számjegyek szépen, folytonosan egymásba alakulnak át. Ez a viselkedés jól mutatja, hogy a VAE valóban egy értelmes, folytonos térképet rajzol fel az adatok mögötti struktúráról.


Az autoenkóderek korlátai

Fontos tisztában lenni azzal, hogy az autoenkóder nem varázslat, hanem egy adatspecifikus eszköz. Egy virágokon betanított felbontásnövelő háló nem fog jól teljesíteni portréképeken, mert a finom részleteket a tanítóadatból tanulta meg, és azok más témájú képeknél nem érvényesek. A rekonstrukció emellett mindig veszteséges, a visszaállított kép sosem lesz pixelre pontosan azonos az eredetivel, a veszteség jellegét pedig a tanítás során használt veszteségfüggvény határozza meg. Ugyanakkor épp az a legnagyobb erénye, hogy címkézetlen adaton is működik, ami a gyakorlatban rendkívül értékes tulajdonság, hiszen a legtöbb szervezetnél és kutatói projektnél a nyers, felcímkézetlen kép sokkal könnyebben elérhető, mint a gondosan kategorizált adat.


Miért érdemes ezzel foglalkozni

Az autoenkóder és a VAE gyakorlati jelentősége túlmutat a puszta kép rekonstruáláson. Vállalati környezetben gyakran van hatalmas mennyiségű címkézetlen kép, dokumentum vagy szenzoradat, amit hagyományos felügyelt tanítással nem tudnánk kihasználni, mert nincs hozzá elég emberi annotáció. Az önfelügyelt megközelítés ezt a korlátot oldja fel, hiszen a tanítójel maga az adat, nem egy külön elkészített címke. Ez az elv nemcsak a képfeldolgozásban jelenik meg, hanem a nagy nyelvi modellek tanítási módszertanában is visszaköszön, hiszen azok is jórészt önfelügyelt módon, nyers szövegen tanulnak.

A VAE-nél megismert gondolat, hogy a latens teret egy értelmezhető, folytonos statisztikai eloszlásként kezeljük, azóta is alapja számos újabb generatív architektúrának. Aki megérti, hogyan és miért kényszerítjük a hálót arra, hogy a latens tér normális eloszlást kövessen, az sokkal könnyebben fogja megérteni a diffúziós modellek és más modern képgeneráló rendszerek működését is.


Gyakorlati kód

Ha szeretnéd saját kezűleg is kipróbálni, hogyan épül fel és tanul egy autoenkóder PyTorchban, a Microsoft eredeti jegyzetfüzete lépésről lépésre bemutatja a folyamatot. Gyakorlati kód a GitHubon.


Forrás

Ez a lecke a Microsoft nyílt forráskódú, MIT licenc alatt elérhető "AI For Beginners" tananyagának magyar adaptációja. Eredeti angol lecke. GitHub. Felhasznált magyar gépi fordítás. GitHub.


← Előző lecke Következő lecke →

Workshop

AI Transformation Day

Egésznapos, vezetőknek szóló program. Feltérképezzük, hol tart a szervezet, mi az első reális lépés, és milyen belső feltételek szükségesek a sikerhez. A nap végén konkrét, prioritizált cselekvési lista.

Érdekel a program →