Grunnleggende AI

Hva er en Autoencoder?

mm
Legg til Unite.AI blant dine foretrukne kilder pÃĨ Google

Hvis du har lest om ukontrollerte lÃĶringsteknikker tidligere, kan du ha kommet over begrepet “autoencoder”. Autoencodere er en av de primÃĶre mÃĨtene ukontrollerte lÃĶringmodeller utvikles. Men hva er en autoencoder egentlig?

Kort sagt, opererer autoencodere ved ÃĨ ta inn data, komprimere og kode dataene, og deretter rekonstruere dataene fra kodepresentasjonen. Modellen trenes til tapet er minimert og dataene er gjengitt sÃĨ nÃļyaktig som mulig. Gjennom denne prosessen kan en autoencoder lÃĶre de viktige egenskapene til dataene. Mens det er en rask definisjon av en autoencoder, ville det vÃĶre nyttig ÃĨ ta en nÃĶrmere titt pÃĨ autoencodere og fÃĨ en bedre forstÃĨelse av hvordan de fungerer. Denne artikkelen vil forsÃļke ÃĨ avmystifisere autoencodere, forklare arkitekturen til autoencodere og deres anvendelser.

Hva er en Autoencoder?

Autoencodere er neurale nettverk. Neurale nettverk bestÃĨr av flere lag, og det avgjÃļrende aspektet ved en autoencoder er at inngangslagene inneholder nÃļyaktig like mye informasjon som utgangslaget. Grunnen til at inngangslaget og utgangslaget har nÃļyaktig like mange enheter er at en autoencoder har som mÃĨl ÃĨ replikere inngangsdataene. Den utsteder en kopi av dataene etter ÃĨ ha analysert og rekonstruert dem pÃĨ en ukontrollert mÃĨte.

Dataene som flyter gjennom en autoencoder er ikke bare kartlagt rett fra inngang til utgang, det vil si at nettverket ikke bare kopierer inngangsdataene. Det finnes tre komponenter i en autoencoder: en kode-del (inngang) som komprimerer dataene, en komponent som hÃĨndterer de komprimerte dataene (eller flaskenhalssammenlÃļpet), og en dekoder (utgang) del. NÃĨr dataene mates inn i en autoencoder, blir de kodet og deretter komprimert ned til en mindre stÃļrrelse. Nettverket trenes deretter pÃĨ de kodete/komprimerte dataene og utsteder en rekonstruksjon av disse dataene.

Hvorfor ville du Ãļnske ÃĨ trenere et nettverk for ÃĨ bare rekonstruere dataene som er gitt til det? Grunnen er at nettverket lÃĶrer “essensen” eller de viktigste egenskapene til inngangsdataene. Etter at du har trenet nettverket, kan en modell skapes som kan syntetisere lignende data, med tillegg eller fjerning av bestemte mÃĨl-egenskaper. For eksempel kunne du trenere en autoencoder pÃĨ kornete bilder og deretter bruke den trenede modellen til ÃĨ fjerne kornet/ stÃļyen fra bildet.

Autoencoder Arkitektur

La oss ta en titt pÃĨ arkitekturen til en autoencoder. Vi skal diskutere hovedarkitekturen til en autoencoder her. Det finnes variasjoner pÃĨ denne generelle arkitekturen som vi skal diskutere i seksjonen under.

Foto: Michela Massi via Wikimedia Commons,(https://commons.wikimedia.org/wiki/File:Autoencoder_schema.png)

Som tidligere nevnt kan en autoencoder i hovedsak deles inn i tre forskjellige komponenter: koderen, en flaskenhalssammenlÃļp og dekoderen.

Kode-delen til autoencoderen er vanligvis et feedforward, tett koblet nettverk. FormÃĨlet med kode-lagene er ÃĨ ta inngangsdataene og komprimere dem til en latent rom-representasjon, som genererer en ny representasjon av dataene med redusert dimensjonalitet.

Kode-lagene, eller flaskenhalssammenlÃļpet, hÃĨndterer den komprimerte representasjonen av dataene. FlaskenhalssammenlÃļpet er nÃļye designet for ÃĨ bestemme de mest relevante delene av de observerte dataene, eller med andre ord de egenskapene til dataene som er mest viktige for data-rekonstruksjon. MÃĨlet her er ÃĨ bestemme hvilke aspekter av dataene som mÃĨ beholdes og hvilke som kan kastes. FlaskenhalssammenlÃļpet mÃĨ balansere to forskjellige overveielser: representasjonsstÃļrrelse (hvor kompakt representasjonen er) og variabel/egenskaps-relevans. FlaskenhalssammenlÃļpet utfÃļrer element-vis aktivering pÃĨ vektene og forvrengningene til nettverket. FlaskenhalssammenlÃļpet kalles ogsÃĨ noen ganger en latent representasjon eller latent variabler.

Dekoder-laget er ansvarlig for ÃĨ ta den komprimerte dataen og konvertere den tilbake til en representasjon med samme dimensjoner som de opprinnelige, uendrede dataene. Konverteringen utfÃļres med den latente rom-representasjonen som ble skapt av koderen.

Den mest grunnleggende arkitekturen til en autoencoder er en feed-forward-arkitektur, med en struktur mye lik en enkelt lag-perceptron brukt i multilag-perceptron. Liksom vanlige feed-forward neurale nettverk, trenes autoencoderen gjennom bruk av backpropagation.

Egenskaper til en Autoencoder

Det finnes forskjellige typer autoencodere, men de alle har bestemte egenskaper som forener dem.

Autoencodere lÃĶrer automatisk. De krever ikke merking, og hvis de fÃĨr nok data, er det lett ÃĨ fÃĨ en autoencoder til ÃĨ nÃĨ hÃļy ytelse pÃĨ en bestemt type inngangsdata.

Autoencodere er dataspesifikke. Dette betyr at de bare kan komprimere data som er svÃĶrt lik data som autoencoderen allerede er trenet pÃĨ. Autoencodere er ogsÃĨ tapende, det vil si at utgangene til modellen vil vÃĶre forringet i forhold til inngangsdataene.

NÃĨr du designer en autoencoder, mÃĨ maskinlÃĶringsingeniÃļrer vÃĶre oppmerksomme pÃĨ fire forskjellige modell-hyperparametere: kode-stÃļrrelse, lag-nummer, noder per lag og tap-funksjon.

Kode-stÃļrrelsen bestemmer hvor mange noder som starter midten av nettverket, og fÃĶrre noder komprimerer dataene mer. I en dyp autoencoder, mens antallet lag kan vÃĶre noe som ingeniÃļren finner passende, bÃļr antallet noder i et lag minske etter hvert som koderen fortsetter. Samtidig er det motsatte sant i dekoderen, det vil si at antallet noder per lag bÃļr Ãļke etter hvert som dekoder-lagene nÃĶrmer seg det siste laget. Til slutt er tap-funksjonen til en autoencoder vanligvis enten binÃĶr kryss-entropi eller gjennomsnittlig kvadratisk feil. BinÃĶr kryss-entropi er passende for tilfeller der inngangsverdiene til dataene er i et 0-1 omrÃĨde.

Autoencoder Typer

Som nevnt ovenfor finnes variasjoner pÃĨ den klassiske autoencoder-arkitekturen. La oss undersÃļke de forskjellige autoencoder-arkitektene.

Sparse

Foto: Michela Massi via Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Autoencoder_sparso.png)

mens autoencodere vanligvis har en flaskenhalssammenlÃļp som komprimerer dataene gjennom en reduksjon av noder, er sparse autoencodere en alternativ til denne typiske driftsformen. I et sparse nettverk beholder de skjulte lagene samme stÃļrrelse som koder- og dekoder-lagene. I stedet straffes aktiveringene innenfor et gitt lag, og det blir satt opp slik at tap-funksjonen bedre fanger de statistiske egenskapene til inngangsdataene. For ÃĨ si det pÃĨ en annen mÃĨte, mens de skjulte lagene i en sparse autoencoder har flere enheter enn en tradisjonell autoencoder, er bare en viss prosent av dem aktive pÃĨ et gitt tidspunkt. De mest betydningsfulle aktiveringsfunksjonene beholdes og andre ignoreres, og denne begrensningen hjelper nettverket ÃĨ bestemme bare de mest betydningsfulle egenskapene til inngangsdataene.

Contractive

Contractive autoencodere er designet for ÃĨ vÃĶre motstandsdyktige mot smÃĨ variasjoner i dataene, og opprettholder en konsekvent representasjon av dataene. Dette oppnÃĨs ved ÃĨ pÃĨfÃļre en straff til tap-funksjonen. Denne reguleringsteknikken er basert pÃĨ Frobenius-normen til Jacob-matrisen for inngangskoder-aktiveringene. Effekten av denne reguleringsteknikken er at modellen tvinges til ÃĨ konstruere en kode der lignende innganger vil ha lignende koder.

Convolutional

Convolutional autoencodere koder inngangsdataene ved ÃĨ dele dataene inn i underseksjoner og deretter konvertere disse underseksjonene til enkle signaler som summeres sammen for ÃĨ skape en ny representasjon av dataene. Liksom convolution-neurale nettverk, spesialiserer en convolutional autoencoder seg i lÃĶring av bilde-data, og den bruker en filter som flyttes over hele bilde-seksjonen seksjon for seksjon. Kodene generert av kode-laget kan brukes til ÃĨ rekonstruere bildet, reflektere bildet eller modifisere bildets geometri. NÃĨr filterne har blitt lÃĶrt av nettverket, kan de brukes pÃĨ noen tilstrekkelig like innganger for ÃĨ trekke ut egenskapene til bildet.

Denoising

Foto: MAL via Wikimedia Commons, CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:ROF_Denoising_Example.png)

Denoising autoencodere introduserer stÃļy i kodingen, resulterende i en kode som er en forringet versjon av de opprinnelige inngangsdataene. Denne forringede versjonen av dataene brukes til ÃĨ trenere modellen, men tap-funksjonen sammenligner utgangsverdiene med de opprinnelige inngangsdataene og ikke den forringede inngangen. MÃĨlet er at nettverket skal kunne reprodusere den opprinnelige, uforringede versjonen av bildet. Ved ÃĨ sammenligne den forringede dataen med den opprinnelige dataen, lÃĶrer nettverket hvilke egenskaper til dataene som er mest viktige og hvilke egenskaper som er uviktige/forringelser. Med andre ord, for at en modell skal kunne fjerne stÃļyen fra de forringede bildene, mÃĨ den ha trukket ut de viktige egenskapene til bilde-dataene.

Variational

Variational autoencodere opererer ved ÃĨ gjÃļre antagelser om hvordan de latente variablene til dataene er fordelt. En variational autoencoder produserer en sannsynlighetsfordeling for de forskjellige egenskapene til trening-bildene/de latente attributtene. NÃĨr det trenes, skaper koderen latente fordelinger for de forskjellige egenskapene til inngangs-bildene.

 

Fordi modellen lÃĶrer egenskapene eller bildene som Gaussiske fordelinger i stedet for diskrete verdier, er den i stand til ÃĨ brukes til ÃĨ generere nye bilder. Den Gaussiske fordelingen samples for ÃĨ skape en vektor, som mates inn i dekoder-nettverket, som renderer et bilde basert pÃĨ denne vektoren av prÃļver. I virkeligheten lÃĶrer modellen de vanlige egenskapene til trening-bildene og tilordner dem en viss sannsynlighet for at de vil skje. Sannsynlighetsfordelingen kan deretter brukes til ÃĨ reversere en ingeniÃļr en bildet, og generere nye bilder som ligner de opprinnelige trening-bildene.

NÃĨr nettverket trenes, analyseres de kodete dataene og gjenkjenningmodellen utsteder to vektorer, som trekker ut gjennomsnittet og standardavviket til bildene. En fordeling skapes basert pÃĨ disse verdiene. Dette gjÃļres for de forskjellige latente tilstandene. Dekoderen tar deretter tilfeldige prÃļver fra den tilhÃļrende fordelingen og bruker dem til ÃĨ rekonstruere de opprinnelige inngangene til nettverket.

Autoencoder Anvendelser

Autoencodere kan brukes til en rekke forskjellige anvendelser, men de brukes vanligvis til oppgaver som dimensjonsreduksjon, data-stÃļyfjerning, egenskaps-uttrekk, bilde-generering, sekvens-til-sekvens-prediksjon og anbefalings-systemer.

Data-stÃļyfjerning er bruk av autoencodere til ÃĨ fjerne korn/stÃļy fra bilder. Liksom autoencodere kan brukes til ÃĨ reparere andre typer bilde-skader, som blurrede bilder eller bilder med manglende seksjoner. Dimensjonsreduksjon kan hjelpe hÃļy-kapasitets nettverk til ÃĨ lÃĶre nyttige egenskaper til bilder, det vil si at autoencodere kan brukes til ÃĨ supplere treningen av andre typer neurale nettverk. Dette er ogsÃĨ sant for ÃĨ bruke autoencodere til egenskaps-uttrekk, da autoencodere kan brukes til ÃĨ identifisere egenskaper til andre trening- datasett for ÃĨ trenere andre modeller.

I forhold til bilde-generering kan autoencodere brukes til ÃĨ generere falske menneskelige bilder eller animerte karakterer, som har anvendelser i design av ansiktsgjenkjenningssystemer eller automatisering av visse aspekter av animasjon.

Sekvens-til-sekvens-prediksjonsmodeller kan brukes til ÃĨ bestemme den tidsmessige strukturen til dataene, det vil si at en autoencoder kan brukes til ÃĨ generere den neste hendelsen i en sekvens. Av denne grunn kan en autoencoder brukes til ÃĨ generere videoer. Til slutt kan dype autoencodere brukes til ÃĨ skape anbefalingssystemer ved ÃĨ plukke opp mÃļnster relatert til brukerinteresse, med koderen som analyserer brukerengasjementsdata og dekoderen som skaper anbefalinger som passer de etablerte mÃļnstrene.

Blogger og programmerer med spesialomrÃĨder i Machine Learning og Deep Learning emner. Daniel hÃĨper ÃĨ hjelpe andre med ÃĨ bruke kraften av AI for sosialt godt.