|
|
||
|---|---|---|
| .. | ||
| AutoEncodersPyTorch.ipynb | ||
| AutoencodersTF.ipynb | ||
| README.md | ||
README.md
Autoenkóderek
Amikor CNN-eket tanítunk, az egyik probléma az, hogy sok címkézett adatra van szükségünk. Képklasszifikáció esetén például manuálisan kell az egyes képeket különböző osztályokba sorolni.
Pre-lecture quiz
Azonban előfordulhat, hogy nyers (címkézetlen) adatokat szeretnénk használni a CNN jellemzők kinyerésére, amit önfelügyelt tanulásnak nevezünk. Címkék helyett a tanítóképeket használjuk hálózati bemenetként és kimenetként is. Az autoenkóder fő ötlete az, hogy lesz egy enkóder hálózat, amely a bemeneti képet valamilyen rejtett térbe alakítja (általában egy kisebb méretű vektor), majd egy dekóder hálózat, amelynek célja az eredeti kép rekonstruálása.
✅ Az autoenkóder "egy mesterséges neurális hálózat típusa, amelyet címkézetlen adatok hatékony kódolásának megtanulására használnak."
Mivel az autoenkódert arra tanítjuk, hogy az eredeti képből minél több információt megragadjon a pontos rekonstrukció érdekében, a hálózat megpróbálja megtalálni a bemeneti képek legjobb beágyazását, hogy megragadja azok jelentését.
Kép a Keras blogból
Autoenkóderek használati forgatókönyvei
Bár az eredeti képek rekonstruálása önmagában nem tűnik hasznosnak, van néhány forgatókönyv, ahol az autoenkóderek különösen hasznosak:
- Képek dimenziójának csökkentése vizualizációhoz vagy képbeágyazások tanítása. Az autoenkóderek általában jobb eredményeket adnak, mint a PCA, mivel figyelembe veszik a képek térbeli jellegét és hierarchikus jellemzőit.
- Zajcsökkentés, azaz zaj eltávolítása a képről. Mivel a zaj sok haszontalan információt hordoz, az autoenkóder nem tudja mindet beilleszteni a viszonylag kis rejtett térbe, így csak a kép fontos részét ragadja meg. Zajcsökkentők tanításakor az eredeti képekkel kezdünk, és mesterségesen zajt adunk hozzájuk, amelyeket az autoenkóder bemeneteként használunk.
- Szuperfelbontás, a kép felbontásának növelése. Magas felbontású képekkel kezdünk, és az alacsonyabb felbontású képet használjuk az autoenkóder bemeneteként.
- Generatív modellek. Miután az autoenkódert betanítottuk, a dekóder részt felhasználhatjuk új objektumok létrehozására véletlenszerű rejtett vektorokból kiindulva.
Variációs Autoenkóderek (VAE)
A hagyományos autoenkóderek valamilyen módon csökkentik a bemeneti adatok dimenzióját, és megpróbálják azonosítani a bemeneti képek fontos jellemzőit. Azonban a rejtett vektorok gyakran nem értelmezhetők. Más szóval, ha például az MNIST adathalmazt vesszük, nem könnyű meghatározni, hogy mely számjegyek felelnek meg a különböző rejtett vektoroknak, mivel a közeli rejtett vektorok nem feltétlenül ugyanazokat a számjegyeket jelentik.
Ezzel szemben generatív modellek tanításához jobb, ha van némi megértésünk a rejtett térről. Ez az ötlet vezet el minket a variációs autoenkóderhez (VAE).
A VAE egy olyan autoenkóder, amely megtanulja előre jelezni a rejtett paraméterek statisztikai eloszlását, az úgynevezett rejtett eloszlást. Például azt szeretnénk, hogy a rejtett vektorok normálisan legyenek elosztva egy zmean átlaggal és zsigma szórással (mind az átlag, mind a szórás egy d dimenziós vektor). A VAE enkóder megtanulja ezeket a paramétereket előre jelezni, majd a dekóder véletlenszerű vektort vesz ebből az eloszlásból, hogy rekonstruálja az objektumot.
Összefoglalva:
- A bemeneti vektorból előre jelezzük
z_meanész_log_sigmaértékeket (a szórás helyett annak logaritmusát jelezzük előre) - Mintát veszünk egy
samplevektorból az N(zmean,exp(zlog_sigma)) eloszlásból - A dekóder megpróbálja dekódolni az eredeti képet a
samplevektort bemenetként használva
A variációs autoenkóderek egy összetett veszteségfüggvényt használnak, amely két részből áll:
- Rekonstrukciós veszteség, amely azt mutatja, hogy a rekonstruált kép mennyire közel áll a célhoz (ez lehet például a Mean Squared Error, vagy MSE). Ez ugyanaz a veszteségfüggvény, mint a normál autoenkódereknél.
- KL veszteség, amely biztosítja, hogy a rejtett változó eloszlása közel maradjon a normál eloszláshoz. Ez a Kullback-Leibler divergencia fogalmán alapul - egy metrika, amely két statisztikai eloszlás hasonlóságát méri.
A VAE-k egyik fontos előnye, hogy viszonylag könnyen lehet új képeket generálni, mivel tudjuk, mely eloszlásból kell mintát venni a rejtett vektorokhoz. Például, ha egy VAE-t tanítunk 2D rejtett vektorral az MNIST adathalmazon, akkor a rejtett vektor komponenseit változtatva különböző számjegyeket kapunk:
Kép Dmitry Soshnikov által
Figyeljük meg, hogyan olvadnak össze a képek, ahogy a rejtett paramétertér különböző részeiből kezdünk mintát venni. Ezt a teret 2D-ben is vizualizálhatjuk:
Kép Dmitry Soshnikov által
✍️ Gyakorlatok: Autoenkóderek
További információ az autoenkóderekről az alábbi jegyzetekben található:
Az autoenkóderek tulajdonságai
- Adatspecifikus - csak azon képtípusokkal működnek jól, amelyeken tanították őket. Például, ha egy szuperfelbontású hálózatot virágokon tanítunk, az nem fog jól működni portrékon. Ennek oka, hogy a hálózat a magasabb felbontású képet úgy állítja elő, hogy finom részleteket vesz a tanító adathalmazból tanult jellemzőkből.
- Veszteséges - a rekonstruált kép nem ugyanaz, mint az eredeti kép. A veszteség jellege a tanítás során használt veszteségfüggvénytől függ.
- Címkézetlen adatokkal működik
Post-lecture quiz
Összegzés
Ebben a leckében megismerkedtél az autoenkóderek különböző típusaival, amelyeket az AI kutatók használhatnak. Megtanultad, hogyan építsd fel őket, és hogyan használd őket képek rekonstruálására. Emellett megismerkedtél a VAE-vel és azzal, hogyan lehet új képeket generálni vele.
🚀 Kihívás
Ebben a leckében megtanultad, hogyan használhatók az autoenkóderek képekhez. De zenéhez is használhatók! Nézd meg a Magenta projekt MusicVAE projektjét, amely autoenkódereket használ a zene rekonstruálásának megtanulására. Végezzen néhány kísérletet ezzel a könyvtárral, hogy lássa, mit tud létrehozni.
Post-lecture quiz
Áttekintés és önálló tanulás
További információ az autoenkóderekről az alábbi forrásokban található:
- Autoenkóderek építése Keras-ban
- Blogbejegyzés a NeuroHive-on
- Variációs autoenkóderek magyarázata
- Feltételes variációs autoenkóderek
Feladat
A TensorFlow jegyzet végén található egy "feladat" - ezt használd házi feladatként.
Felelősség kizárása:
Ez a dokumentum az AI fordítási szolgáltatás Co-op Translator segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely a fordítás használatából eredhet.
