Verbinding met ons

AI 101

Wat is 'n outo-enkodeerder?

mm
Opgedateer on

As jy al voorheen oor leertegnieke sonder toesig gelees het, het jy dalk die term “outo-enkodeer”. Outo-enkodeerders is een van die primêre maniere waarop leermodelle sonder toesig ontwikkel word. Maar wat is 'n outo-enkodeerder presies?

Kortliks, outo-enkodeerders werk deur data in te neem, die data saam te komprimeer en te enkodeer, en dan die data te rekonstrueer vanaf die enkoderingsvoorstelling. Die model word opgelei totdat die verlies tot die minimum beperk is en die data so na as moontlik weergegee word. Deur hierdie proses kan 'n outo-enkodeerder die belangrike kenmerke van die data leer. Alhoewel dit 'n vinnige definisie van 'n outo-enkodeerder is, sal dit voordelig wees om outo-encoders van nader te bekyk en 'n beter begrip te kry van hoe hulle funksioneer. Hierdie artikel sal poog om outo-enkodeerders te ontmystifiseer, wat die argitektuur van outo-enkodeerders en hul toepassings verduidelik.

Wat is 'n outo-enkodeerder?

Outo-enkodeerders is neurale netwerke. Neurale netwerke is saamgestel uit veelvuldige lae, en die bepalende aspek van 'n outo-enkodeerder is dat die invoerlae presies soveel inligting as die uitvoerlaag bevat. Die rede waarom die invoerlaag en uitvoerlaag presies dieselfde aantal eenhede het, is dat 'n outo-enkodeerder daarop gemik is om die invoerdata te herhaal. Dit voer 'n kopie van die data uit nadat dit ontleed en op 'n manier sonder toesig gerekonstrueer is.

Die data wat deur 'n outo-enkodeerder beweeg, word nie net direk van invoer na uitvoer gekarteer nie, wat beteken dat die netwerk nie net die invoerdata kopieer nie. Daar is drie komponente vir 'n outo-enkodeerder: 'n enkodering (invoer) gedeelte wat die data saampers, 'n komponent wat die saamgeperste data (of bottelnek) hanteer en 'n dekodeerder (afvoer) gedeelte. Wanneer data in 'n outo-enkodeerder ingevoer word, word dit geënkodeer en dan tot 'n kleiner grootte saamgepers. Die netwerk word dan opgelei op die geënkodeerde/saamgeperste data en dit voer 'n herskepping van daardie data uit.

So hoekom sal jy 'n netwerk wil oplei om net die data wat daaraan gegee word, te rekonstrueer? Die rede is dat die netwerk die "essensie", of belangrikste kenmerke van die invoerdata, leer. Nadat jy die netwerk opgelei het, kan 'n model geskep word wat soortgelyke data kan sintetiseer, met die byvoeging of aftrekking van sekere teikenkenmerke. Jy kan byvoorbeeld 'n outo-enkodeerder op korrelbeelde oplei en dan die opgeleide model gebruik om die korrel/geraas van die beeld te verwyder.

Outo-enkodeerder argitektuur

Kom ons kyk na die argitektuur van 'n outo-enkodeerder. Ons sal die hoofargitektuur van 'n outo-enkodeerder hier bespreek. Daar is variasies op hierdie algemene argitektuur wat ons in die afdeling hieronder sal bespreek.

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

Soos voorheen genoem, kan 'n outo-enkodeerder in wese in drie verskillende komponente verdeel word: die enkodeerder, 'n bottelnek en die dekodeerder.

Die enkodeerdergedeelte van die outo-enkodeerder is tipies 'n voorwaartse, dig gekoppelde netwerk. Die doel van die enkoderingslae is om die insetdata te neem en dit saam te druk in 'n latente ruimtevoorstelling, wat 'n nuwe voorstelling van die data genereer wat dimensionaliteit verminder het.

Die kodelae, of die bottelnek, handel oor die saamgeperste voorstelling van die data. Die bottelnek-kode is noukeurig ontwerp om die mees relevante gedeeltes van die waargenome data te bepaal, of om dit anders te stel die kenmerke van die data wat die belangrikste is vir data-rekonstruksie. Die doel hier is om te bepaal watter aspekte van die data bewaar moet word en watter weggegooi kan word. Die knelpuntkode moet twee verskillende oorwegings balanseer: voorstellingsgrootte (hoe kompak die voorstelling is) en veranderlike/kenmerkrelevansie. Die bottelnek voer elementsgewyse aktivering uit op die gewigte en vooroordele van die netwerk. Die bottelneklaag word ook soms 'n latente voorstelling of latente veranderlikes genoem.

Die dekodeerderlaag is wat verantwoordelik is om die saamgeperste data te neem en dit terug te omskep in 'n voorstelling met dieselfde afmetings as die oorspronklike, onveranderde data. Die omskakeling word gedoen met die latente ruimtevoorstelling wat deur die enkodeerder geskep is.

Die mees basiese argitektuur van 'n outo-enkodeerder is 'n voorwaartse argitektuur, met 'n struktuur wat baie soos 'n enkellaagperseptron gebruik word in meerlaagperseptrone. Net soos gereelde neurale netwerke, word die outo-enkodeerder opgelei deur die gebruik van terugpropagasie.

Eienskappe van 'n outo-enkodeerder

Daar is verskillende tipes outo-enkodeerders, maar hulle het almal sekere eienskappe wat hulle verenig.

Outo-enkodeerders leer outomaties. Hulle benodig nie etikette nie, en as genoeg data gegee word, is dit maklik om 'n outo-enkodeerder te kry om hoë werkverrigting op 'n spesifieke soort invoerdata te bereik.

Outo-enkodeerders is data-spesifiek. Dit beteken dat hulle slegs data kan saamdruk wat baie soortgelyk is aan data waarop die outo-enkodeerder reeds opgelei is. Outo-enkodeerders het ook verlies, wat beteken dat die uitsette van die model verswak sal word in vergelyking met die insetdata.

Wanneer 'n outo-enkodeerder ontwerp word, moet masjienleeringenieurs aandag gee aan vier verskillende modelhiperparameters: kodegrootte, laagnommer, nodusse per laag en verliesfunksie.

Die kodegrootte bepaal hoeveel nodusse die middelste gedeelte van die netwerk begin, en minder nodusse komprimeer die data meer. In 'n diep outo-enkodeerder, terwyl die aantal lae enige getal kan wees wat die ingenieur toepaslik ag, moet die aantal nodusse in 'n laag afneem soos die enkodeerder aangaan. Intussen geld die teenoorgestelde in die dekodeerder, wat beteken dat die aantal nodusse per laag moet toeneem namate die dekodeerderlae die finale laag nader. Laastens is die verliesfunksie van 'n outo-enkodeerder tipies óf binêre kruisentropie óf gemiddelde kwadraatfout. Binêre kruisentropie is geskik vir gevalle waar die insetwaardes van die data in 'n 0 – 1 reeks is.

Outo-enkodeerder tipes

Soos hierbo genoem, bestaan ​​daar variasies op die klassieke outo-enkodeerder-argitektuur. Kom ons ondersoek die verskillende outo-enkodeerder-argitekture.

Yl

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

Terwyl outo-enkodeerders tipies 'n bottelnek het wat die data saampers deur 'n vermindering van nodusse, yl outo-enkodeerders is 'n alternatief vir daardie tipiese operasionele formaat. In 'n yl netwerk behou die versteekte lae dieselfde grootte as die enkodeerder- en dekodeerderlae. In plaas daarvan word die aktiverings binne 'n gegewe laag gepenaliseer, wat dit opstel sodat die verliesfunksie die statistiese kenmerke van invoerdata beter vasvang. Om dit anders te stel, terwyl die verborge lae van 'n yl outo-enkodeerder meer eenhede het as 'n tradisionele outo-enkodeerder, is slegs 'n sekere persentasie daarvan op enige gegewe tydstip aktief. Die mees impakvolle aktiveringsfunksies word bewaar en ander word geïgnoreer, en hierdie beperking help die netwerk om net die mees opvallende kenmerke van die invoerdata te bepaal.

Sametrekking

Kontrakterende outo-enkodeerders is ontwerp om veerkragtig te wees teen klein variasies in die data, en handhaaf 'n konsekwente voorstelling van die data. Dit word bewerkstellig deur 'n straf op die verliesfunksie toe te pas. Hierdie regulariseringstegniek is gebaseer op die Frobenius-norm van die Jakobiaanse matriks vir die insetkodeerderaktiverings. Die effek van hierdie regulariseringstegniek is dat die model gedwing word om 'n enkodering te konstrueer waar soortgelyke insette soortgelyke enkoderings sal hê.

Convolutional

Konvolusionele outo-enkodeerders kodeer insetdata deur die data in onderafdelings te verdeel en dan hierdie onderafdelings om te skakel in eenvoudige seine wat saamgesom word om 'n nuwe voorstelling van die data te skep. Soortgelyk aan konvolusie neurale netwerke, spesialiseer 'n konvolusie outo-enkodeerder in die aanleer van beelddata, en dit gebruik 'n filter wat oor die hele beeld afdeling vir afdeling geskuif word. Die enkoderings wat deur die enkoderingslaag gegenereer word, kan gebruik word om die beeld te rekonstrueer, die beeld te reflekteer of die beeld se geometrie te verander. Sodra die filters deur die netwerk aangeleer is, kan hulle op enige voldoende soortgelyke insette gebruik word om die kenmerke van die beeld te onttrek.

Denoising

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

Denoising outo-enkodeerders voer geraas in die enkodering in, wat lei tot 'n enkodering wat 'n korrupte weergawe van die oorspronklike invoerdata is. Hierdie korrupte weergawe van die data word gebruik om die model op te lei, maar die verliesfunksie vergelyk die uitsetwaardes met die oorspronklike invoer en nie die korrupte toevoer nie. Die doel is dat die netwerk die oorspronklike, nie-korrupte weergawe van die beeld sal kan reproduseer. Deur die korrupte data met die oorspronklike data te vergelyk, leer die netwerk watter kenmerke van die data die belangrikste is en watter kenmerke onbelangrik/korrupsies is. Met ander woorde, vir 'n model om die korrupte beelde te ontwrig, moet dit die belangrike kenmerke van die beelddata onttrek het.

Variasie

Variasionele outo-enkodeerders werk deur aannames te maak oor hoe die latente veranderlikes van die data versprei word. 'n Variasie outo-enkodeerder produseer 'n waarskynlikheidsverdeling vir die verskillende kenmerke van die opleidingsbeelde/die latente eienskappe. Tydens opleiding skep die enkodeerder latente verspreidings vir die verskillende kenmerke van die insetbeelde.

 

Omdat die model die kenmerke of beelde as Gaussiese verdelings in plaas van diskrete waardes leer, kan dit gebruik word om nuwe beelde te genereer. Die Gaussiese verspreiding word gemonster om 'n vektor te skep, wat in die dekoderingsnetwerk ingevoer word, wat 'n beeld op hierdie vektor van monsters weergee. In wese leer die model algemene kenmerke van die opleidingsbeelde en ken hulle 'n mate van waarskynlikheid toe dat dit sal voorkom. Die waarskynlikheidsverspreiding kan dan gebruik word om 'n beeld om te manipuleer, wat nuwe beelde genereer wat soos die oorspronklike opleidingsbeelde lyk.

Wanneer die netwerk opgelei word, word die geënkodeerde data ontleed en die herkenningsmodel voer twee vektore uit, wat die gemiddelde en standaardafwyking van die beelde uitteken. 'n Verspreiding word geskep op grond van hierdie waardes. Dit word gedoen vir die verskillende latente toestande. Die dekodeerder neem dan ewekansige monsters uit die ooreenstemmende verspreiding en gebruik dit om die aanvanklike insette na die netwerk te rekonstrueer.

Outo-enkodeerder toepassings

Outo-enkodeerders kan vir 'n wye gebruik word verskeidenheid toepassings, maar hulle word tipies gebruik vir take soos dimensionaliteitsvermindering, data-denoising, kenmerkonttrekking, beeldgenerering, volgorde-tot-volgorde-voorspelling en aanbevelingstelsels.

Dataderuising is die gebruik van outo-enkodeerders om korrel/geraas van beelde te stroop. Net so kan outo-enkodeerders gebruik word om ander soorte beeldskade te herstel, soos vaag beelde of beelde wat gedeeltes ontbreek. Dimensionaliteitvermindering kan hoëkapasiteitnetwerke help om nuttige kenmerke van beelde te leer, wat beteken dat die outo-enkodeerders gebruik kan word om die opleiding van ander tipes neurale netwerke aan te vul. Dit geld ook vir die gebruik van outo-enkodeerders vir kenmerk-onttrekking, aangesien outo-enkodeerders gebruik kan word om kenmerke van ander opleidingsdatastelle te identifiseer om ander modelle op te lei.

In terme van beeldgenerering, kan outo-enkodeerders gebruik word om vals menslike beelde of geanimeerde karakters te genereer, wat toepassings het in die ontwerp van gesigherkenningstelsels of die outomatisering van sekere aspekte van animasie.

Volgorde-tot-volgorde-voorspellingsmodelle kan gebruik word om die tydelike struktuur van data te bepaal, wat beteken dat 'n outo-enkodeerder gebruik kan word om die volgende selfs in 'n reeks te genereer. Om hierdie rede kan 'n outo-enkodeerder gebruik word om video's te genereer. Ten slotte kan diep outo-enkodeerders gebruik word om aanbevelingstelsels te skep deur patrone op te tel wat verband hou met gebruikersbelangstelling, met die enkodeerder wat gebruikersbetrokkenheiddata ontleed en die dekodeerder wat aanbevelings skep wat by die gevestigde patrone pas.

Blogger en programmeerder met spesialiteite in masjienleer en Diep leer onderwerpe. Daniel hoop om ander te help om die krag van KI vir sosiale voordeel te gebruik.