|
|
||
|---|---|---|
| .. | ||
| AutoEncodersPyTorch.ipynb | ||
| AutoencodersTF.ipynb | ||
| README.md | ||
README.md
Autoencoders
NÀr man trÀnar CNNs Àr ett av problemen att vi behöver mycket mÀrkt data. NÀr det gÀller bildklassificering mÄste vi dela upp bilder i olika klasser, vilket Àr en manuell process.
Pre-lecture quiz
Men vi kanske vill anvÀnda rÄ (omÀrkt) data för att trÀna CNN-funktionsextraktorer, vilket kallas sjÀlvövervakad inlÀrning. IstÀllet för etiketter anvÀnder vi trÀningsbilder som bÄde nÀtverksinmatning och -utmatning. Huvudidén med autoencoder Àr att vi har ett encoder-nÀtverk som omvandlar inmatningsbilden till ett latent utrymme (vanligtvis bara en vektor av mindre storlek), och sedan ett decoder-nÀtverk, vars mÄl Àr att rekonstruera den ursprungliga bilden.
â En autoencoder Ă€r "en typ av artificiellt neuralt nĂ€tverk som anvĂ€nds för att lĂ€ra sig effektiva kodningar av omĂ€rkt data."
Eftersom vi trÀnar en autoencoder för att fÄnga sÄ mycket information som möjligt frÄn den ursprungliga bilden för en korrekt rekonstruktion, försöker nÀtverket hitta den bÀsta inbÀddningen av inmatningsbilder för att fÄnga dess innebörd.
Bild frÄn Keras blog
Scenarier för att anvÀnda Autoencoders
Ăven om det inte verkar anvĂ€ndbart i sig att rekonstruera ursprungliga bilder, finns det nĂ„gra scenarier dĂ€r autoencoders Ă€r sĂ€rskilt anvĂ€ndbara:
- Minska dimensionen pÄ bilder för visualisering eller trÀna bildinbÀddningar. Autoencoders ger vanligtvis bÀttre resultat Àn PCA eftersom de tar hÀnsyn till bilders rumsliga natur och hierarkiska funktioner.
- AvlÀgsna brus, dvs. ta bort brus frÄn bilden. Eftersom brus innehÄller mycket onödig information kan autoencodern inte passa allt i det relativt lilla latenta utrymmet och fÄngar dÀrför bara den viktiga delen av bilden. NÀr vi trÀnar brusreducerare börjar vi med ursprungliga bilder och anvÀnder bilder med artificiellt tillagt brus som inmatning för autoencodern.
- Superupplösning, öka bildens upplösning. Vi börjar med högupplösta bilder och anvÀnder bilden med lÀgre upplösning som autoencoderns inmatning.
- Generativa modeller. NÀr vi har trÀnat autoencodern kan den dekoderande delen anvÀndas för att skapa nya objekt frÄn slumpmÀssiga latenta vektorer.
Variationsautoencoders (VAE)
Traditionella autoencoders reducerar dimensionen pÄ inmatningsdata pÄ nÄgot sÀtt och identifierar viktiga funktioner i inmatningsbilder. Men latenta vektorer Àr ofta svÄra att tolka. Med andra ord, om vi tar MNIST-datasetet som exempel, Àr det inte lÀtt att avgöra vilka siffror som motsvarar olika latenta vektorer, eftersom nÀrliggande latenta vektorer inte nödvÀndigtvis motsvarar samma siffror.
För att trÀna generativa modeller Àr det dÀremot bÀttre att ha en förstÄelse för det latenta utrymmet. Denna idé leder oss till variationsautoencoder (VAE).
VAE Àr en autoencoder som lÀr sig att förutsÀga statistisk fördelning av de latenta parametrarna, den sÄ kallade latenta fördelningen. Till exempel kanske vi vill att latenta vektorer ska vara normalt fördelade med en viss medelvÀrde zmean och standardavvikelse zsigma (bÄde medelvÀrde och standardavvikelse Àr vektorer med en viss dimension d). Encoder i VAE lÀr sig att förutsÀga dessa parametrar, och sedan tar dekodern en slumpmÀssig vektor frÄn denna fördelning för att rekonstruera objektet.
Sammanfattningsvis:
- FrÄn inmatningsvektorn förutsÀger vi
z_meanochz_log_sigma(istÀllet för att förutsÀga standardavvikelsen direkt förutsÀger vi dess logaritm) - Vi samplar en vektor
samplefrÄn fördelningen N(zmean,exp(zlog_sigma)) - Dekodern försöker dekoda den ursprungliga bilden med
samplesom inmatningsvektor
Bild frÄn denna blogpost av Isaak Dykeman
Variationsautoencoders anvÀnder en komplex förlustfunktion som bestÄr av tvÄ delar:
- Rekonstruktionsförlust Àr förlustfunktionen som visar hur nÀra en rekonstruerad bild Àr mÄlet (det kan vara Mean Squared Error, eller MSE). Det Àr samma förlustfunktion som i vanliga autoencoders.
- KL-förlust, som sÀkerstÀller att latenta variabelns fördelning förblir nÀra normalfördelning. Den baseras pÄ begreppet Kullback-Leibler divergence - en metrik för att uppskatta hur lika tvÄ statistiska fördelningar Àr.
En viktig fördel med VAE Àr att de gör det relativt enkelt att generera nya bilder, eftersom vi vet vilken fördelning vi ska sampla latenta vektorer frÄn. Till exempel, om vi trÀnar VAE med en 2D latent vektor pÄ MNIST, kan vi sedan variera komponenterna i den latenta vektorn för att fÄ olika siffror:
Bild av Dmitry Soshnikov
Observera hur bilderna smÀlter samman nÀr vi börjar sampla latenta vektorer frÄn olika delar av det latenta parameterutrymmet. Vi kan ocksÄ visualisera detta utrymme i 2D:
Bild av Dmitry Soshnikov
âïž Ăvningar: Autoencoders
LĂ€r dig mer om autoencoders i dessa motsvarande notebooks:
Egenskaper hos Autoencoders
- Dataspecifika - de fungerar bara bra med den typ av bilder de har trÀnats pÄ. Till exempel, om vi trÀnar ett nÀtverk för superupplösning pÄ blommor, kommer det inte att fungera bra pÄ portrÀtt. Detta beror pÄ att nÀtverket kan producera högupplösta bilder genom att ta fina detaljer frÄn funktioner som lÀrts frÄn trÀningsdatasetet.
- Förlustfyllda - den rekonstruerade bilden Àr inte densamma som den ursprungliga bilden. Förlustens natur definieras av den förlustfunktion som anvÀnds under trÀningen.
- Fungerar pÄ omÀrkt data
Post-lecture quiz
Slutsats
I denna lektion lÀrde du dig om de olika typerna av autoencoders som finns tillgÀngliga för AI-forskaren. Du lÀrde dig hur man bygger dem och hur man anvÀnder dem för att rekonstruera bilder. Du lÀrde dig ocksÄ om VAE och hur man anvÀnder det för att generera nya bilder.
đ Utmaning
I denna lektion lÀrde du dig om att anvÀnda autoencoders för bilder. Men de kan ocksÄ anvÀndas för musik! Kolla in Magenta-projektets MusicVAE-projekt, som anvÀnder autoencoders för att lÀra sig rekonstruera musik. Gör nÄgra experiment med detta bibliotek för att se vad du kan skapa.
Post-lecture quiz
Granskning & SjÀlvstudier
För referens, lÀs mer om autoencoders i dessa resurser:
- Bygga Autoencoders i Keras
- Blogpost pÄ NeuroHive
- Variationsautoencoders Förklarade
- Villkorliga Variationsautoencoders
Uppgift
I slutet av denna notebook med TensorFlow hittar du en 'uppgift' - anvÀnd detta som din uppgift.
Ansvarsfriskrivning:
Detta dokument har översatts med hjĂ€lp av AI-översĂ€ttningstjĂ€nsten Co-op Translator. Ăven om vi strĂ€var efter noggrannhet, vĂ€nligen notera att automatiska översĂ€ttningar kan innehĂ„lla fel eller felaktigheter. Det ursprungliga dokumentet pĂ„ sitt originalsprĂ„k bör betraktas som den auktoritativa kĂ€llan. För kritisk information rekommenderas professionell mĂ€nsklig översĂ€ttning. Vi ansvarar inte för eventuella missförstĂ„nd eller feltolkningar som uppstĂ„r vid anvĂ€ndning av denna översĂ€ttning.
