stub Vad är en Autoencoder? - Unite.AI
Anslut dig till vårt nätverk!

AI 101

Vad är en Autoencoder?

mm
Uppdaterad on

Om du har läst om oövervakade inlärningstekniker tidigare, kanske du har stött på termen "autokodare”. Autoencoders är ett av de primära sätten att oövervakade inlärningsmodeller utvecklas. Men vad är en autoencoder exakt?

Kortfattat fungerar autokodare genom att ta in data, komprimera och koda data och sedan rekonstruera data från kodningsrepresentationen. Modellen tränas tills förlusten minimeras och data återges så nära som möjligt. Genom denna process kan en autokodare lära sig de viktiga funktionerna i datan. Även om det är en snabb definition av en autokodare, skulle det vara fördelaktigt att titta närmare på autokodare och få en bättre förståelse för hur de fungerar. Den här artikeln kommer att försöka avmystifiera autokodare och förklara arkitekturen för autokodare och deras applikationer.

Vad är en Autoencoder?

Autokodare är neurala nätverk. Neurala nätverk är sammansatta av flera lager, och den definierande aspekten av en autokodare är att ingångslagren innehåller exakt lika mycket information som utdatalagret. Anledningen till att ingångsskiktet och utgångsskiktet har exakt samma antal enheter är att en autokodare syftar till att replikera indata. Den matar ut en kopia av data efter att ha analyserat den och rekonstruerat den på ett oövervakat sätt.

Datan som rör sig genom en autoencoder mappas inte bara direkt från ingång till utgång, vilket innebär att nätverket inte bara kopierar indata. Det finns tre komponenter till en autoencoder: en kodningsdel (ingång) som komprimerar data, en komponent som hanterar komprimerad data (eller flaskhals) och en avkodardel (utgång). När data matas in i en autoencoder kodas den och komprimeras sedan till en mindre storlek. Nätverket tränas sedan på den kodade/komprimerade datan och matar ut en återskapande av dessa data.

Så varför skulle du vilja träna ett nätverk för att bara rekonstruera den data som ges till det? Anledningen är att nätverket lär sig "essensen", eller de viktigaste egenskaperna hos indata. Efter att du har tränat nätverket kan en modell skapas som kan syntetisera liknande data, med tillägg eller subtraktion av vissa målfunktioner. Till exempel kan du träna en autoencoder på korniga bilder och sedan använda den tränade modellen för att ta bort kornen/bruset från bilden.

Autoencoder arkitektur

Låt oss ta en titt på arkitekturen för en autoencoder. Vi kommer att diskutera huvudarkitekturen för en autoencoder här. Det finns variationer på denna allmänna arkitektur som vi kommer att diskutera i avsnittet nedan.

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

Som tidigare nämnts kan en autokodare i huvudsak delas upp i tre olika komponenter: kodaren, en flaskhals och avkodaren.

Kodardelen av autokodaren är typiskt ett framkopplat, tätt anslutet nätverk. Syftet med kodningsskikten är att ta indata och komprimera den till en latent rymdrepresentation, vilket genererar en ny representation av datan som har reducerad dimensionalitet.

Kodlagren, eller flaskhalsen, handlar om den komprimerade representationen av data. Flaskhalskoden är noggrant utformad för att bestämma de mest relevanta delarna av de observerade data, eller för att uttrycka det på ett annat sätt de egenskaper hos datan som är viktigast för datarekonstruktion. Målet här är att avgöra vilka aspekter av data som behöver bevaras och vilka som kan kasseras. Flaskhalskoden måste balansera två olika överväganden: representationsstorlek (hur kompakt representationen är) och variabel/funktionsrelevans. Flaskhalsen utför elementvis aktivering på nätverkets vikter och fördomar. Flaskhalsskiktet kallas också ibland för en latent representation eller latenta variabler.

Avkodarskiktet är det som ansvarar för att ta den komprimerade datan och omvandla den tillbaka till en representation med samma dimensioner som den ursprungliga, oförändrade datan. Konverteringen görs med den latenta rymdrepresentationen som skapades av kodaren.

Den mest grundläggande arkitekturen för en autoencoder är en feed-forward-arkitektur, med en struktur ungefär som en enskiktsperceptron som används i flerskiktsperceptroner. Ungefär som vanliga neurala nätverk med feed-forward, tränas den automatiska kodaren genom användning av backpropagation.

Attribut för en autokodare

Det finns olika typer av autokodare, men de har alla vissa egenskaper som förenar dem.

Autokodare lär sig automatiskt. De kräver inga etiketter, och om de ges tillräckligt med data är det lätt att få en autoencoder att nå hög prestanda på en specifik typ av indata.

Autokodare är dataspecifika. Detta innebär att de bara kan komprimera data som i hög grad liknar data som autokodaren redan har tränats på. Autokodare är också förlustbringande, vilket innebär att utdata från modellen kommer att försämras i jämförelse med indata.

När man designar en autoencoder måste maskininlärningsingenjörer vara uppmärksamma på fyra olika modellhyperparametrar: kodstorlek, lagernummer, noder per lager och förlustfunktion.

Kodstorleken avgör hur många noder som börjar i mitten av nätverket, och färre noder komprimerar data mer. I en djup autokodare, medan antalet lager kan vara vilket antal som ingenjören anser lämpligt, bör antalet noder i ett lager minska allt eftersom kodaren fortsätter. Samtidigt gäller motsatsen i avkodaren, vilket innebär att antalet noder per lager bör öka när avkodarlagren närmar sig det sista lagret. Slutligen är förlustfunktionen hos en autokodare vanligtvis antingen binär korsentropi eller medelkvadratfel. Binär korsentropi är lämplig för fall där indatavärdena ligger inom ett intervall på 0–1.

Autoencoder typer

Som nämnts ovan finns variationer på den klassiska autoencoder-arkitekturen. Låt oss undersöka de olika autoencoder-arkitekturerna.

Gles

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

Även om autokodare vanligtvis har en flaskhals som komprimerar data genom en minskning av noder, sparsam autoencoders är ett alternativ till det typiska operativa formatet. I ett gles nätverk bibehåller de dolda lagren samma storlek som kodar- och avkodarlagren. Istället straffas aktiveringarna inom ett givet lager, vilket ställer in det så att förlustfunktionen bättre fångar de statistiska egenskaperna hos indata. För att uttrycka det på ett annat sätt, medan de dolda lagren i en gles autoencoder har fler enheter än en traditionell autoencoder, är bara en viss procentandel av dem aktiva vid varje given tidpunkt. De mest effektfulla aktiveringsfunktionerna bevaras och andra ignoreras, och denna begränsning hjälper nätverket att avgöra just de mest framträdande egenskaperna hos indata.

Kontrakterande

Kontraktiva autoencoders är utformade för att vara motståndskraftiga mot små variationer i data, och bibehålla en konsekvent representation av data. Detta åstadkoms genom att applicera ett straff på förlustfunktionen. Denna regulariseringsteknik är baserad på Frobenius-normen för den jakobiska matrisen för ingångskodaraktiveringarna. Effekten av denna regulariseringsteknik är att modellen tvingas konstruera en kodning där liknande indata kommer att ha liknande kodningar.

Convolutional

Konvolutionella autokodare koda indata genom att dela upp datan i undersektioner och sedan omvandla dessa undersektioner till enkla signaler som summeras för att skapa en ny representation av datan. I likhet med konvolutionsneurala nätverk, är en faltningsautokodare specialiserad på inlärning av bilddata, och den använder ett filter som flyttas över hela bilden sektion för sektion. Kodningarna som genereras av kodningsskiktet kan användas för att rekonstruera bilden, reflektera bilden eller modifiera bildens geometri. När filtren väl har lärt sig av nätverket kan de användas på vilken som helst tillräckligt liknande ingång för att extrahera bildens funktioner.

Denoising

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

Denoising autoencoders införa brus i kodningen, vilket resulterar i en kodning som är en korrupt version av den ursprungliga indata. Denna korrupta version av data används för att träna modellen, men förlustfunktionen jämför utdatavärdena med den ursprungliga ingången och inte den korrupta ingången. Målet är att nätverket ska kunna reproducera den ursprungliga, icke-korrupta versionen av bilden. Genom att jämföra den korrupta datan med originaldatan lär sig nätverket vilka funktioner i datan som är viktigast och vilka som är oviktiga/korrupta. Med andra ord måste en modell ha extraherat de viktiga funktionerna i bilddata för att en modell ska kunna förvanska de korrupta bilderna.

Varierande

Varierande autokodare verka genom att göra antaganden om hur de latenta variablerna i datan är fördelade. En variationsautokodare producerar en sannolikhetsfördelning för de olika egenskaperna hos träningsbilderna/de latenta attributen. Vid träning skapar kodaren latenta distributioner för de olika funktionerna i ingångsbilderna.

 

Eftersom modellen lär sig funktionerna eller bilderna som gaussiska distributioner istället för diskreta värden, kan den användas för att generera nya bilder. Den Gaussiska fördelningen samplas för att skapa en vektor, som matas in i avkodningsnätverket, som återger en bild baserad på denna vektor av sampel. I huvudsak lär sig modellen vanliga egenskaper hos träningsbilderna och tilldelar dem en viss sannolikhet att de kommer att inträffa. Sannolikhetsfördelningen kan sedan användas för att omvänd konstruera en bild och generera nya bilder som liknar de ursprungliga träningsbilderna.

När nätverket tränas analyseras den kodade datan och igenkänningsmodellen matar ut två vektorer som ritar ut medelvärdet och standardavvikelsen för bilderna. En fördelning skapas utifrån dessa värden. Detta görs för de olika latenta tillstånden. Avkodaren tar sedan slumpmässiga prover från motsvarande distribution och använder dem för att rekonstruera de initiala ingångarna till nätverket.

Autoencoder-applikationer

Autoencoders kan användas för en bred olika applikationer, men de används vanligtvis för uppgifter som dimensionsreduktion, datanedsättning, funktionsextraktion, bildgenerering, sekvens till sekvensförutsägelse och rekommendationssystem.

Datanedsättning är användningen av autoencoders för att ta bort korn/brus från bilder. På samma sätt kan autokodare användas för att reparera andra typer av bildskador, som suddiga bilder eller bilder som saknar avsnitt. Dimensionalitetsreduktion kan hjälpa nätverk med hög kapacitet att lära sig användbara funktioner hos bilder, vilket innebär att autokodarna kan användas för att utöka träningen av andra typer av neurala nätverk. Detta gäller även för att använda autoencoders för funktionsextraktion, eftersom autoencoders kan användas för att identifiera funktioner i andra träningsdatauppsättningar för att träna andra modeller.

När det gäller bildgenerering kan autoencoders användas för att generera falska mänskliga bilder eller animerade karaktärer, som har tillämpningar för att designa ansiktsigenkänningssystem eller automatisera vissa aspekter av animering.

Sekvens till sekvens förutsägelsemodeller kan användas för att bestämma den tidsmässiga strukturen av data, vilket innebär att en autokodare kan användas för att generera nästa även i en sekvens. Av denna anledning kan en autoencoder användas för att generera videor. Slutligen kan djupa autokodare användas för att skapa rekommendationssystem genom att plocka upp mönster relaterade till användarintresse, där kodaren analyserar användarengagemangdata och avkodaren skapar rekommendationer som passar de etablerade mönstren.

Bloggare och programmerare med specialiteter inom Maskininlärning och Deep Learning ämnen. Daniel hoppas kunna hjälpa andra att använda kraften i AI för socialt bästa.