škrbina Kaj je Autoencoder? - Združi se.AI
Povežite se z nami

AI 101

Kaj je Autoencoder?

mm
Posodobljeno on

Če ste že brali o tehnikah nenadzorovanega učenja, ste morda naleteli na izraz »avtokoder”. Avtokodirniki so eden od primarnih načinov za razvoj nenadzorovanih učnih modelov. Toda kaj točno je samodejni kodirnik?

Na kratko, samodejni kodirniki delujejo tako, da sprejmejo podatke, jih stisnejo in kodirajo ter nato rekonstruirajo podatke iz predstavitve kodiranja. Model se uri, dokler se izguba ne zmanjša na minimum in se podatki čim bolj natančno reproducirajo. S tem postopkom se lahko samodejni kodirnik nauči pomembnih lastnosti podatkov. Čeprav je to kratka definicija samodejnega kodirnika, bi bilo koristno, če bi si avtokodirnike podrobneje ogledali in bolje razumeli, kako delujejo. Ta članek si bo prizadeval demistificirati samodejne kodirnike z razlago arhitekture samodejnih kodirnikov in njihovih aplikacij.

Kaj je Autoencoder?

Samodejni kodirniki so nevronske mreže. Nevronske mreže so sestavljene iz več plasti in odločilni vidik samodejnega kodirnika je, da vhodne plasti vsebujejo točno toliko informacij kot izhodna plast. Razlog, da imata vhodna in izhodna plast popolnoma enako število enot, je v tem, da samodejni kodirnik želi posnemati vhodne podatke. Odda kopijo podatkov, potem ko jih analizira in rekonstruira na nenadzorovan način.

Podatki, ki se premikajo skozi samodejni kodirnik, niso samo preslikani neposredno od vhoda do izhoda, kar pomeni, da omrežje ne samo kopira vhodnih podatkov. Samodejni kodirnik ima tri komponente: kodirni (vhodni) del, ki stisne podatke, komponento, ki obravnava stisnjene podatke (ali ozko grlo), in dekodirni (izhodni) del. Ko se podatki vnesejo v samodejni kodirnik, so kodirani in nato stisnjeni na manjšo velikost. Omrežje se nato usposobi za kodirane/stisnjene podatke in izda ponovno ustvarjanje teh podatkov.

Zakaj bi torej želeli usposobiti omrežje, da samo rekonstruira podatke, ki so mu dani? Razlog je v tem, da se omrežje nauči "bistva" oziroma najpomembnejših lastnosti vhodnih podatkov. Ko ste usposobili omrežje, je mogoče ustvariti model, ki lahko sintetizira podobne podatke z dodajanjem ali odvzemanjem določenih ciljnih funkcij. Na primer, lahko urite samodejni kodirnik na zrnatih slikah in nato z usposobljenim modelom odstranite zrnatost/šum s slike.

Arhitektura samodejnega kodirnika

Oglejmo si arhitektura samodejnega kodirnika. Tukaj bomo razpravljali o glavni arhitekturi samodejnega kodirnika. Obstajajo različice te splošne arhitekture, o katerih bomo razpravljali v spodnjem razdelku.

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

Kot je bilo že omenjeno, lahko samodejni kodirnik v bistvu razdelimo na tri različne komponente: kodirnik, ozko grlo in dekoder.

Kodirniški del samodejnega kodirnika je običajno gosto povezano omrežje s posredovanjem. Namen slojev za kodiranje je vzeti vhodne podatke in jih stisniti v predstavitev latentnega prostora, s čimer ustvarijo novo predstavitev podatkov z zmanjšano dimenzionalnostjo.

Plasti kode ali ozko grlo se ukvarjajo s stisnjeno predstavitvijo podatkov. Koda ozkega grla je skrbno zasnovana za določanje najpomembnejših delov opazovanih podatkov ali, drugače rečeno, značilnosti podatkov, ki so najpomembnejše za rekonstrukcijo podatkov. Cilj tukaj je določiti, katere vidike podatkov je treba ohraniti in katere je mogoče zavreči. Koda ozkega grla mora uravnotežiti dva različna pomisleka: velikost predstavitve (kako kompaktna je predstavitev) in ustreznost spremenljivke/funkcije. Ozko grlo izvede elementno aktivacijo uteži in pristranskosti omrežja. Plast ozkega grla včasih imenujemo tudi latentna predstavitev ali latentne spremenljivke.

Dekodirna plast je odgovorna za prevzem stisnjenih podatkov in njihovo pretvorbo nazaj v predstavitev z enakimi dimenzijami kot izvirni, nespremenjeni podatki. Pretvorba se izvede s predstavitvijo latentnega prostora, ki jo je ustvaril kodirnik.

Najosnovnejša arhitektura samodejnega kodirnika je arhitektura s podajanjem naprej, s strukturo, ki je podobna enoplastnemu perceptronu, ki se uporablja v večplastnih perceptronih. Podobno kot običajne nevronske mreže s posredovanjem naprej se tudi samodejni kodirnik usposablja z uporabo povratnega širjenja.

Atributi samodejnega kodirnika

Obstajajo različne vrste samodejnih kodirnikov, vendar imajo vsi določene lastnosti, ki jih združujejo.

Avtokodirniki se samodejno učijo. Ne potrebujejo oznak in če je na voljo dovolj podatkov, je enostavno dobiti samodejni kodirnik za doseganje visoke zmogljivosti pri določeni vrsti vhodnih podatkov.

Avtokodirniki so specifični za podatke. To pomeni, da lahko stisnejo samo podatke, ki so zelo podobni podatkom, na katerih je bil samodejni kodirnik že usposobljen. Avtokodirniki so tudi izgubni, kar pomeni, da bodo izhodi modela poslabšani v primerjavi z vhodnimi podatki.

Pri načrtovanju samodejnega kodirnika morajo biti inženirji strojnega učenja pozorni na štiri različne hiperparametre modela: velikost kode, število plasti, vozlišča na plast in funkcijo izgube.

Velikost kode določa, koliko vozlišč začne srednji del omrežja, manj vozlišč pa bolj stisne podatke. Medtem ko je v globokem samodejnem kodirniku število plasti lahko poljubno število, ki se inženirju zdi primerno, bi se moralo število vozlišč v plasti zmanjšati, ko kodirnik deluje. Medtem pa velja nasprotno v dekoderju, kar pomeni, da bi moralo število vozlišč na plast naraščati, ko se plasti dekodirnika približujejo končni plasti. Končno je izgubna funkcija samodejnega kodirnika tipično binarna navzkrižna entropija ali povprečna kvadratna napaka. Binarna navzkrižna entropija je primerna za primere, ko so vhodne vrednosti podatkov v območju 0–1.

Vrste samodejnega kodiranja

Kot je navedeno zgoraj, obstajajo različice klasične arhitekture samodejnega kodirnika. Oglejmo si različne arhitekture samodejnega kodirnika.

Redko

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

Medtem ko imajo samodejni kodirniki običajno ozko grlo, ki stisne podatke z zmanjšanjem vozlišč, redki avtokoderso alternativa tisti tipični operativni obliki. V redkem omrežju skrite plasti ohranjajo enako velikost kot plasti kodirnika in dekodirnika. Namesto tega so aktivacije znotraj dane plasti kaznovane, kar je nastavljeno tako, da funkcija izgube bolje zajame statistične značilnosti vhodnih podatkov. Povedano drugače, čeprav imajo skrite plasti redkega samodejnega kodirnika več enot kot tradicionalni samodejni kodirnik, je v danem trenutku aktiven le določen odstotek. Najučinkovitejše aktivacijske funkcije so ohranjene, druge pa so prezrte, ta omejitev pa pomaga omrežju določiti samo najpomembnejše lastnosti vhodnih podatkov.

Kontraktivni

Kontraktivni avtokoderji so zasnovani tako, da so odporni proti majhnim variacijam podatkov in ohranjajo dosledno predstavitev podatkov. To se doseže z uporabo kazni za funkcijo izgube. Ta tehnika regulacije temelji na Frobeniusovi normi Jacobijeve matrike za aktivacije vhodnega kodirnika. Učinek te tehnike regularizacije je, da je model prisiljen zgraditi kodiranje, kjer bodo imeli podobni vhodi podobna kodiranja.

Konvolucijska

Konvolucijski samodejni kodirniki kodira vhodne podatke tako, da podatke razdeli na pododdelke in nato te pododdelke pretvori v preproste signale, ki se seštejejo, da ustvarijo novo predstavitev podatkov. Podobno kot konvolucijske nevronske mreže je konvolucijski samodejni kodirnik specializiran za učenje slikovnih podatkov in uporablja filter, ki se premika po delih celotne slike. Kodiranja, ki jih ustvari kodirna plast, se lahko uporabijo za rekonstrukcijo slike, refleksijo slike ali spreminjanje geometrije slike. Ko se filtri naučijo v omrežju, jih je mogoče uporabiti na katerem koli dovolj podobnem vnosu za ekstrahiranje značilnosti slike.

Označevanje

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

Avtokodirniki za odstranjevanje hrupa v kodiranje vnesejo šum, kar povzroči kodiranje, ki je poškodovana različica izvirnih vhodnih podatkov. Ta poškodovana različica podatkov se uporablja za usposabljanje modela, vendar funkcija izgube primerja izhodne vrednosti z izvirnim vhodom in ne s poškodovanim vhodom. Cilj je, da bo omrežje lahko reproduciralo izvirno, nepoškodovano različico slike. S primerjavo poškodovanih podatkov z izvirnimi podatki se omrežje nauči, katere lastnosti podatkov so najpomembnejše in katere lastnosti so nepomembne/poškodbe. Z drugimi besedami, da bi model lahko odstranil hrup na poškodovanih slikah, mora imeti ekstrahirane pomembne značilnosti slikovnih podatkov.

Variacijski

Variacijski avtokodirniki delujejo s predpostavkami o tem, kako so porazdeljene latentne spremenljivke podatkov. Variacijski samodejni kodirnik ustvari verjetnostno porazdelitev za različne značilnosti učnih slik/latentnih atributov. Ko se uri, kodirnik ustvari latentne porazdelitve za različne značilnosti vhodnih slik.

 

Ker se model uči značilnosti ali slike kot Gaussove porazdelitve namesto diskretnih vrednosti, ga je mogoče uporabiti za ustvarjanje novih slik. Gaussova porazdelitev je vzorčena, da se ustvari vektor, ki se vnese v dekodirno omrežje, ki upodablja sliko na podlagi tega vektorja vzorcev. V bistvu se model nauči skupnih značilnosti učnih slik in jim dodeli določeno verjetnost, da se bodo pojavile. Porazdelitev verjetnosti se lahko nato uporabi za obratni inženiring slike, pri čemer se ustvarijo nove slike, ki so podobne izvirnim slikam za usposabljanje.

Pri usposabljanju omrežja se kodirani podatki analizirajo in model za prepoznavanje izpiše dva vektorja, ki izrišeta srednjo in standardno deviacijo slik. Na podlagi teh vrednosti se ustvari porazdelitev. To se naredi za različna latentna stanja. Dekoder nato vzame naključne vzorce iz ustrezne distribucije in jih uporabi za rekonstrukcijo začetnih vhodov v omrežje.

Aplikacije za samodejno kodiranje

Avtokodirnike je mogoče uporabiti za široko različne aplikacije, vendar se običajno uporabljajo za naloge, kot so zmanjšanje dimenzionalnosti, odstranjevanje šumov v podatkih, ekstrakcija funkcij, generiranje slik, napoved zaporedja zaporedja in sistemi priporočil.

Odstranjevanje hrupa podatkov je uporaba samodejnih kodirnikov za odstranjevanje zrnatosti/šuma s slik. Podobno je mogoče samodejne kodirnike uporabiti za popravilo drugih vrst poškodb slike, kot so zamegljene slike ali slike, na katerih manjkajo deli. Zmanjšanje dimenzionalnosti lahko pomaga visokozmogljivim omrežjem pri učenju uporabnih lastnosti slik, kar pomeni, da se lahko samodejni kodirniki uporabljajo za izboljšanje usposabljanja drugih vrst nevronskih mrež. To velja tudi za uporabo samodejnih kodirnikov za ekstrakcijo funkcij, saj se samodejni kodirniki lahko uporabljajo za identifikacijo funkcij drugih naborov podatkov za usposabljanje za usposabljanje drugih modelov.

Kar zadeva ustvarjanje slik, se lahko samodejni kodirniki uporabljajo za ustvarjanje lažnih človeških slik ali animiranih likov, kar se uporablja pri oblikovanju sistemov za prepoznavanje obrazov ali avtomatizaciji določenih vidikov animacije.

Za določanje časovne strukture podatkov je mogoče uporabiti modele napovedovanja od zaporedja do zaporedja, kar pomeni, da je mogoče uporabiti samodejni kodirnik za ustvarjanje naslednjega celo v zaporedju. Iz tega razloga bi lahko za ustvarjanje videoposnetkov uporabili samodejni kodirnik. Nazadnje, globoke samodejne kodirnike je mogoče uporabiti za ustvarjanje priporočilnih sistemov z zaznavanjem vzorcev, povezanih z zanimanjem uporabnikov, pri čemer kodirnik analizira podatke o angažiranosti uporabnika, dekoder pa ustvarja priporočila, ki ustrezajo uveljavljenim vzorcem.

Bloger in programer s posebnostmi v strojno učenje in Globoko učenje teme. Daniel upa, da bo drugim pomagal uporabiti moč umetne inteligence za družbeno dobro.