|
|
||
|---|---|---|
| .. | ||
| AutoEncodersPyTorch.ipynb | ||
| AutoencodersTF.ipynb | ||
| README.md | ||
README.md
Avtoenkoderji
Pri treniranju CNN-jev je ena izmed težav, da potrebujemo veliko označenih podatkov. Pri klasifikaciji slik moramo slike razvrstiti v različne razrede, kar zahteva ročno delo.
Pre-učni kviz
Vendar pa bi morda želeli uporabiti surove (neoznačene) podatke za treniranje CNN ekstraktorjev značilnosti, kar imenujemo samostojno učenje. Namesto oznak bomo uporabili slike za treniranje kot vhod in izhod mreže. Glavna ideja avtoenkoderja je, da imamo kodirno mrežo, ki vhodno sliko pretvori v nek latentni prostor (običajno je to vektor manjših dimenzij), nato pa dekodirno mrežo, katere cilj je rekonstruirati izvirno sliko.
✅ Avtoenkoder je "vrsta umetne nevronske mreže, ki se uporablja za učenje učinkovitega kodiranja neoznačenih podatkov."
Ker treniramo avtoenkoder, da zajame čim več informacij iz izvirne slike za natančno rekonstrukcijo, mreža poskuša najti najboljšo vgradnjo vhodnih slik, da zajame njihov pomen.
Slika iz Keras bloga
Scenariji uporabe avtoenkoderjev
Čeprav rekonstrukcija izvirnih slik sama po sebi morda ne zveni uporabno, obstaja nekaj scenarijev, kjer so avtoenkoderji še posebej koristni:
- Zmanjšanje dimenzije slik za vizualizacijo ali treniranje vgradnje slik. Običajno avtoenkoderji dajejo boljše rezultate kot PCA, ker upoštevajo prostorsko naravo slik in hierarhične značilnosti.
- Odstranjevanje šuma, tj. odstranjevanje šuma s slike. Ker šum vsebuje veliko nepotrebnih informacij, avtoenkoder ne more vsega vključiti v relativno majhen latentni prostor, zato zajame le pomemben del slike. Pri treniranju odstranjevalcev šuma začnemo z izvirnimi slikami in uporabimo slike z umetno dodanim šumom kot vhod za avtoenkoder.
- Super-resolucija, povečanje ločljivosti slike. Začnemo z visokoločljivostnimi slikami in uporabimo sliko z nižjo ločljivostjo kot vhod za avtoenkoder.
- Generativni modeli. Ko treniramo avtoenkoder, lahko dekodirni del uporabimo za ustvarjanje novih objektov, ki izhajajo iz naključnih latentnih vektorjev.
Variacijski avtoenkoderji (VAE)
Tradicionalni avtoenkoderji nekako zmanjšajo dimenzijo vhodnih podatkov in ugotovijo pomembne značilnosti vhodnih slik. Vendar pa latentni vektorji pogosto nimajo veliko smisla. Z drugimi besedami, če vzamemo MNIST podatkovno zbirko kot primer, ugotoviti, katere številke ustrezajo različnim latentnim vektorjem, ni enostavna naloga, saj bližnji latentni vektorji ne ustrezajo nujno istim številkam.
Po drugi strani pa je za treniranje generativnih modelov bolje imeti neko razumevanje latentnega prostora. Ta ideja nas pripelje do variacijskega avtoenkoderja (VAE).
VAE je avtoenkoder, ki se nauči napovedovati statistično porazdelitev latentnih parametrov, tako imenovano latentno porazdelitev. Na primer, morda želimo, da so latentni vektorji normalno porazdeljeni z nekim povprečjem zmean in standardnim odklonom zsigma (obe vrednosti sta vektorja neke dimenzionalnosti d). Kodirnik v VAE se nauči napovedovati te parametre, nato pa dekodirnik vzame naključni vektor iz te porazdelitve za rekonstrukcijo objekta.
Povzetek:
- Iz vhodnega vektorja napovemo
z_meaninz_log_sigma(namesto da napovemo standardni odklon, napovemo njegov logaritem) - Vzamemo vzorec
sampleiz porazdelitve N(zmean,exp(zlog_sigma)) - Dekodirnik poskuša dekodirati izvirno sliko z uporabo
samplekot vhodnega vektorja
Slika iz tega bloga avtorja Isaaka Dykemana
Variacijski avtoenkoderji uporabljajo kompleksno funkcijo izgube, ki je sestavljena iz dveh delov:
- Izguba rekonstrukcije je funkcija izgube, ki prikazuje, kako blizu je rekonstruirana slika ciljni (lahko je povprečna kvadratna napaka ali MSE). To je ista funkcija izgube kot pri običajnih avtoenkoderjih.
- KL izguba, ki zagotavlja, da porazdelitev latentnih spremenljivk ostane blizu normalni porazdelitvi. Temelji na konceptu Kullback-Leiblerjeve divergence - merilu za oceno podobnosti dveh statističnih porazdelitev.
Ena pomembna prednost VAE-jev je, da omogočajo relativno enostavno generiranje novih slik, ker vemo, iz katere porazdelitve vzeti latentne vektorje. Na primer, če treniramo VAE z 2D latentnim vektorjem na MNIST, lahko nato spreminjamo komponente latentnega vektorja, da dobimo različne številke:
Slika avtorja Dmitry Soshnikov
Opazite, kako se slike prelivajo ena v drugo, ko začnemo jemati latentne vektorje iz različnih delov latentnega prostora parametrov. Ta prostor lahko vizualiziramo tudi v 2D:
Slika avtorja Dmitry Soshnikov
✍️ Vaje: Avtoenkoderji
Več o avtoenkoderjih se naučite v teh priloženih zvezkih:
Lastnosti avtoenkoderjev
- Specifični za podatke - dobro delujejo le s tipom slik, na katerih so bili trenirani. Na primer, če treniramo mrežo za super-resolucijo na rožah, ne bo dobro delovala na portretih. To je zato, ker mreža lahko ustvari sliko z višjo ločljivostjo tako, da vzame fine podrobnosti iz značilnosti, naučenih iz podatkovne zbirke za treniranje.
- Izgubni - rekonstruirana slika ni enaka izvirni sliki. Narava izgube je določena z funkcijo izgube, uporabljeno med treniranjem.
- Deluje na neoznačenih podatkih
Post-učni kviz
Zaključek
V tej lekciji ste se naučili o različnih vrstah avtoenkoderjev, ki so na voljo AI znanstveniku. Naučili ste se, kako jih zgraditi in kako jih uporabiti za rekonstrukcijo slik. Prav tako ste se naučili o VAE in kako ga uporabiti za generiranje novih slik.
🚀 Izziv
V tej lekciji ste se naučili o uporabi avtoenkoderjev za slike. Vendar pa jih lahko uporabimo tudi za glasbo! Oglejte si projekt Magenta MusicVAE, ki uporablja avtoenkoderje za učenje rekonstrukcije glasbe. Izvedite nekaj eksperimentov s to knjižnico, da vidite, kaj lahko ustvarite.
Post-učni kviz
Pregled in samostojno učenje
Za referenco preberite več o avtoenkoderjih v teh virih:
- Gradnja avtoenkoderjev v Keras
- Blog objava na NeuroHive
- Razlaga variacijskih avtoenkoderjev
- Pogojni variacijski avtoenkoderji
Naloga
Na koncu tega zvezka z uporabo TensorFlow boste našli 'nalogo' - uporabite jo kot svojo nalogo.
Omejitev odgovornosti:
Ta dokument je bil preveden z uporabo storitve AI za prevajanje Co-op Translator. Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda.
