|
|
||
|---|---|---|
| .. | ||
| AutoEncodersPyTorch.ipynb | ||
| AutoencodersTF.ipynb | ||
| README.md | ||
README.md
Autokooderit
Kun koulutamme CNN-verkkoja, yksi ongelmista on, että tarvitsemme paljon merkittyä dataa. Kuvien luokittelussa tämä tarkoittaa, että kuvat on jaoteltava eri luokkiin, mikä vaatii manuaalista työtä.
Ennakkokysely
Toisaalta voimme haluta käyttää raakadataa (ilman merkintöjä) CNN-ominaisuuksien oppimiseen, mitä kutsutaan itseohjautuvaksi oppimiseksi. Merkittyjen tietojen sijaan käytämme harjoituskuvia sekä verkon syötteenä että tulosteena. Autokooderin pääidea on, että meillä on enkooderiverkko, joka muuntaa syötekuvan johonkin latenttitilaan (yleensä pienemmän kokoiseen vektoriin), ja dekooderiverkko, jonka tehtävänä on rekonstruoida alkuperäinen kuva.
✅ Autokooderi on "keinotekoisen neuroverkon tyyppi, jota käytetään oppimaan tehokkaita koodauksia merkitsemättömästä datasta."
Koska koulutamme autokooderia tallentamaan mahdollisimman paljon alkuperäisen kuvan tietoa tarkkaa rekonstruointia varten, verkko pyrkii löytämään parhaan upotuksen syötekuville niiden merkityksen tallentamiseksi.
Kuva Keras-blogista
Autokooderien käyttöskenaariot
Vaikka alkuperäisten kuvien rekonstruointi ei itsessään vaikuta kovin hyödylliseltä, on olemassa muutamia skenaarioita, joissa autokooderit ovat erityisen hyödyllisiä:
- Kuvien ulottuvuuden pienentäminen visualisointia varten tai kuva-upotusten oppiminen. Yleensä autokooderit antavat parempia tuloksia kuin PCA, koska ne ottavat huomioon kuvien spatiaalisen luonteen ja hierarkkiset piirteet.
- Kohinanpoisto, eli kohinan poistaminen kuvasta. Koska kohina sisältää paljon tarpeetonta tietoa, autokooderi ei pysty tallentamaan kaikkea suhteellisen pieneen latenttitilaan, ja näin se tallentaa vain kuvan tärkeät osat. Kohinanpoistajien koulutuksessa aloitamme alkuperäisistä kuvista ja käytämme kuvia, joihin on lisätty keinotekoista kohinaa, autokooderin syötteenä.
- Superresoluutio, eli kuvan resoluution parantaminen. Aloitamme korkearesoluutioisista kuvista ja käytämme matalamman resoluution kuvaa autokooderin syötteenä.
- Generatiiviset mallit. Kun autokooderi on koulutettu, dekooderiosaa voidaan käyttää uusien objektien luomiseen satunnaisista latenttivektoreista.
Variatiiviset autokooderit (VAE)
Perinteiset autokooderit pienentävät syötteen ulottuvuutta jollain tavalla ja tunnistavat syötekuvien tärkeät piirteet. Latenttivektorit eivät kuitenkaan usein ole kovin merkityksellisiä. Esimerkiksi MNIST-datasetin tapauksessa ei ole helppoa selvittää, mitkä numerot vastaavat eri latenttivektoreita, koska läheiset latenttivektorit eivät välttämättä vastaa samoja numeroita.
Generatiivisten mallien kouluttamisessa on kuitenkin hyödyllistä ymmärtää latenttitilaa. Tämä ajatus johtaa meidät variatiiviseen autokooderiin (VAE).
VAE on autokooderi, joka oppii ennustamaan latenttiparametrien tilastollisen jakauman, niin sanotun latenttijakauman. Esimerkiksi voimme haluta, että latenttivektorit jakautuvat normaalisti keskiarvolla zmean ja keskihajonnalla zsigma (sekä keskiarvo että keskihajonta ovat jonkin ulottuvuuden d vektoreita). VAE:n enkooderi oppii ennustamaan nämä parametrit, ja dekooderi käyttää satunnaista vektoria tästä jakaumasta rekonstruoidakseen objektin.
Yhteenveto:
- Syötevektorista ennustamme
z_meanjaz_log_sigma(keskihajonnan sijaan ennustamme sen logaritmin) - Otamme vektorin
samplejakaumasta N(zmean,exp(zlog_sigma)) - Dekooderi yrittää dekoodata alkuperäisen kuvan käyttäen
sample-vektoria syötteenä
Kuva tästä blogikirjoituksesta kirjoittanut Isaak Dykeman
Variatiiviset autokooderit käyttävät monimutkaista häviöfunktiota, joka koostuu kahdesta osasta:
- Rekonstruktiohäviö on häviöfunktio, joka osoittaa, kuinka lähellä rekonstruoitu kuva on kohdetta (esimerkiksi keskineliövirhe, MSE). Se on sama häviöfunktio kuin tavallisissa autokoodereissa.
- KL-häviö, joka varmistaa, että latenttimuuttujien jakaumat pysyvät lähellä normaalia jakaumaa. Se perustuu Kullback-Leiblerin divergenssiin - metriikkaan, jolla arvioidaan kahden tilastollisen jakauman samankaltaisuutta.
Yksi VAE:n tärkeistä eduista on, että niiden avulla voimme luoda uusia kuvia suhteellisen helposti, koska tiedämme, mistä jakaumasta voimme ottaa näytteitä latenttivektoreille. Esimerkiksi, jos koulutamme VAE:n 2D-latenttivektorilla MNIST-datasetilla, voimme muuttaa latenttivektorin komponentteja saadaksemme erilaisia numeroita:
Kuva Dmitry Soshnikovilta
Huomaa, kuinka kuvat sulautuvat toisiinsa, kun alamme ottaa latenttivektoreita eri osista latenttiparametritilaa. Voimme myös visualisoida tämän tilan 2D-muodossa:
Kuva Dmitry Soshnikovilta
✍️ Harjoitukset: Autokooderit
Opi lisää autokoodereista näissä vastaavissa muistikirjoissa:
Autokooderien ominaisuudet
- Dataan sidottu - ne toimivat hyvin vain sellaisten kuvien kanssa, joilla ne on koulutettu. Esimerkiksi, jos koulutamme superresoluutioverkon kukilla, se ei toimi hyvin muotokuvilla. Tämä johtuu siitä, että verkko voi tuottaa korkeamman resoluution kuvan ottamalla yksityiskohtia koulutusdatan oppimista piirteistä.
- Häviöllinen - rekonstruoitu kuva ei ole sama kuin alkuperäinen kuva. Häviön luonne määräytyy koulutuksessa käytetyn häviöfunktion mukaan.
- Toimii merkitsemättömällä datalla
Jälkikysely
Yhteenveto
Tässä oppitunnissa opit erilaisista autokooderityypeistä, joita tekoälytutkija voi käyttää. Opit, kuinka niitä rakennetaan ja kuinka niitä käytetään kuvien rekonstruointiin. Opit myös VAE:sta ja sen käytöstä uusien kuvien luomiseen.
🚀 Haaste
Tässä oppitunnissa opit käyttämään autokoodereita kuvien kanssa. Mutta niitä voidaan käyttää myös musiikkiin! Tutustu Magenta-projektin MusicVAE -projektiin, joka käyttää autokoodereita musiikin rekonstruinnin oppimiseen. Tee kokeiluja tämän kirjaston kanssa nähdäksesi, mitä voit luoda.
Jälkikysely
Kertaus ja itseopiskelu
Lisätietoja autokoodereista löydät näistä resursseista:
- Autokooderien rakentaminen Kerasilla
- Blogikirjoitus NeuroHivessa
- Variatiiviset autokooderit selitettynä
- Ehdolliset variatiiviset autokooderit
Tehtävä
TensorFlow-muistikirjan lopussa on 'tehtävä' - käytä sitä tehtävänäsi.
Vastuuvapauslauseke:
Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua Co-op Translator. Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä.
