škrbina Što je Autoenkoder? - Ujedinite se.AI
Povežite se s nama
Majstorski tečaj umjetne inteligencije:

AI 101

Što je Autoenkoder?

mm
Ažurirano on

Ako ste već čitali o tehnikama učenja bez nadzora, možda ste naišli na izraz "automatsko kodiranje”. Autokoderi su jedan od primarnih načina na koji se razvijaju modeli učenja bez nadzora. No, što je točno autoenkoder?

Ukratko, autokoderi rade uzimajući podatke, sažimajući i kodirajući podatke, a zatim rekonstruirajući podatke iz prikaza kodiranja. Model se uvježbava sve dok se gubitak ne smanji na najmanju moguću mjeru i dok se podaci ne reproduciraju što je moguće preciznije. Kroz ovaj proces autokoder može naučiti važne značajke podataka. Iako je to kratka definicija autoenkodera, bilo bi korisno pobliže pogledati autokodere i steći bolje razumijevanje njihovog funkcioniranja. Ovaj će članak nastojati demistificirati autokodere, objašnjavajući arhitekturu autokodera i njihove primjene.

Što je Autoenkoder?

Autoenkoderi su neuronske mreže. Neuronske mreže sastoje se od više slojeva, a definirajući aspekt autoenkodera je da ulazni slojevi sadrže točno onoliko informacija koliko i izlazni sloj. Razlog zašto ulazni sloj i izlazni sloj imaju potpuno isti broj jedinica je taj što autokoder ima za cilj replicirati ulazne podatke. Izdaje kopiju podataka nakon što ih analizira i rekonstruira na nenadzirani način.

Podaci koji se kreću kroz autokoder ne mapiraju se samo ravno od ulaza do izlaza, što znači da mreža ne kopira samo ulazne podatke. Postoje tri komponente autokodera: dio za kodiranje (ulazni) koji sažima podatke, komponenta koja obrađuje komprimirane podatke (ili usko grlo) i dio za dekoder (izlazni). Kada se podaci unesu u autokoder, oni se kodiraju i zatim komprimiraju na manju veličinu. Mreža se zatim uvježbava na kodiranim/komprimiranim podacima i daje rekreaciju tih podataka.

Pa zašto biste htjeli uvježbati mrežu da samo rekonstruira podatke koji su joj dani? Razlog je taj što mreža uči “bit”, odnosno najvažnija svojstva ulaznih podataka. Nakon što ste uvježbali mrežu, može se izraditi model koji može sintetizirati slične podatke, uz dodavanje ili oduzimanje određenih ciljanih značajki. Na primjer, možete uvježbati autokoder na zrnatim slikama, a zatim upotrijebiti uvježbani model za uklanjanje zrnatosti/šuma sa slike.

Arhitektura autokodera

Pogledajmo arhitektura autoenkodera. Ovdje ćemo raspravljati o glavnoj arhitekturi autoenkodera. Postoje varijacije ove opće arhitekture o kojima ćemo raspravljati u odjeljku u nastavku.

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

Kao što je prethodno spomenuto, autokoder se u osnovi može podijeliti na tri različite komponente: koder, usko grlo i dekoder.

Kodirajući dio autoenkodera obično je gusto povezana mreža s unaprijednim prijenosom. Svrha slojeva kodiranja je uzeti ulazne podatke i komprimirati ih u prikaz latentnog prostora, generirajući novi prikaz podataka koji ima smanjenu dimenzionalnost.

Slojevi koda ili usko grlo bave se komprimiranim prikazom podataka. Kod uskog grla pažljivo je osmišljen kako bi odredio najrelevantnije dijelove promatranih podataka, ili drugačije rečeno, značajke podataka koje su najvažnije za rekonstrukciju podataka. Ovdje je cilj odrediti koje aspekte podataka treba sačuvati, a koje odbaciti. Kod uskog grla treba uravnotežiti dva različita razmatranja: veličinu prikaza (koliko je prikaz kompaktan) i relevantnost varijable/značajke. Usko grlo izvodi elementnu aktivaciju na težinama i pristranostima mreže. Sloj uskog grla ponekad se naziva i latentna reprezentacija ili latentne varijable.

Sloj dekodera je ono što je odgovorno za uzimanje komprimiranih podataka i njihovo pretvaranje natrag u prikaz s istim dimenzijama kao izvorni, nepromijenjeni podaci. Pretvorba se vrši s prikazom latentnog prostora koji je kreirao koder.

Najosnovnija arhitektura autoenkodera je feed-forward arhitektura, sa strukturom koja je slična jednoslojnom perceptronu koji se koristi u višeslojnim perceptronima. Slično kao i obične neuronske mreže s povratnim prijenosom, automatski se koder obučava upotrebom povratnog širenja.

Atributi autoenkodera

Postoje razne vrste autoenkodera, ali svi imaju određena svojstva koja ih ujedinjuju.

Autokoderi uče automatski. Ne zahtijevaju oznake, a ako se dobije dovoljno podataka, lako je natjerati autokoder da postigne visoke performanse na određenoj vrsti ulaznih podataka.

Autokoderi su specifični za podatke. To znači da mogu komprimirati samo podatke koji su vrlo slični podacima na kojima je autokoder već uvježban. Autokoderi također imaju gubitke, što znači da će izlazi modela biti degradirani u usporedbi s ulaznim podacima.

Prilikom dizajniranja autokodera, inženjeri strojnog učenja trebaju obratiti pozornost na četiri različita hiperparametra modela: veličinu koda, broj sloja, čvorove po sloju i funkciju gubitka.

Veličina koda odlučuje koliko čvorova počinje srednji dio mreže, a manji broj čvorova više komprimira podatke. U dubokom autokoderu, dok broj slojeva može biti bilo koji broj koji inženjer smatra odgovarajućim, broj čvorova u sloju trebao bi se smanjivati ​​kako koder radi. U međuvremenu, suprotno vrijedi za dekoder, što znači da bi se broj čvorova po sloju trebao povećavati kako se slojevi dekodera približavaju konačnom sloju. Konačno, funkcija gubitka autoenkodera obično je ili binarna unakrsna entropija ili srednja kvadratna pogreška. Binarna kros-entropija je prikladna za slučajeve gdje su ulazne vrijednosti podataka u rasponu od 0 – 1.

Vrste autokodera

Kao što je gore spomenuto, postoje varijacije klasične arhitekture autokodera. Ispitajmo različite arhitekture autokodera.

Rijetko

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

Dok autokoderi obično imaju usko grlo koje komprimira podatke smanjenjem čvorova, rijetki autoenkoders su alternativa tom tipičnom operativnom formatu. U rijetkoj mreži skriveni slojevi održavaju istu veličinu kao slojevi kodera i dekodera. Umjesto toga, aktivacije unutar određenog sloja se kažnjavaju, postavljajući ga tako da funkcija gubitka bolje hvata statističke značajke ulaznih podataka. Drugim riječima, iako skriveni slojevi rijetkog autokodera imaju više jedinica od tradicionalnog autokodera, samo je određeni postotak njih aktivan u bilo kojem trenutku. Najutjecajnije funkcije aktivacije su sačuvane, a ostale su zanemarene, a ovo ograničenje pomaže mreži da odredi samo najistaknutije značajke ulaznih podataka.

Sažet

Kontraktivni autokoderi dizajnirani su da budu otporni na male varijacije u podacima, održavajući dosljedan prikaz podataka. To se postiže primjenom penala na funkciju gubitka. Ova tehnika regularizacije temelji se na Frobeniusovoj normi Jacobijeve matrice za aktivacije ulaznog kodera. Učinak ove tehnike regularizacije je da je model prisiljen konstruirati kodiranje gdje će slični ulazi imati slična kodiranja.

Convolutional

Konvolucijski autokoderi kodirati ulazne podatke dijeljenjem podataka u pododjeljke i zatim pretvaranjem tih pododjeljaka u jednostavne signale koji se zbrajaju kako bi se stvorio novi prikaz podataka. Slično konvolucijskim neuronskim mrežama, konvolucijski autokoder specijaliziran je za učenje slikovnih podataka i koristi filtar koji se pomiče kroz cijelu sliku dio po dio. Kodiranja koja generira sloj kodiranja mogu se koristiti za rekonstrukciju slike, reflektiranje slike ili modificiranje geometrije slike. Nakon što mreža nauči filtre, oni se mogu koristiti na bilo kojem dovoljno sličnom ulazu za izdvajanje značajki slike.

Uklanjanje šuma

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

Denoising autoenkoderi unose šum u kodiranje, što rezultira kodiranjem koje je oštećena verzija izvornih ulaznih podataka. Ova oštećena verzija podataka koristi se za obuku modela, ali funkcija gubitka uspoređuje izlazne vrijednosti s izvornim ulazom, a ne s oštećenim ulazom. Cilj je da mreža bude u mogućnosti reproducirati izvornu, neoštećenu verziju slike. Uspoređujući oštećene podatke s izvornim podacima, mreža uči koje su značajke podataka najvažnije, a koje su nevažne/oštećene. Drugim riječima, kako bi model dešumirao oštećene slike, mora imati ekstrahirane važne značajke slikovnih podataka.

Varijabilno

Varijacijski autokoderi djelovati stvarajući pretpostavke o tome kako su latentne varijable podataka raspoređene. Varijacijski autokoder proizvodi distribuciju vjerojatnosti za različite značajke slika obuke/latentnih atributa. Prilikom uvježbavanja, koder stvara latentne distribucije za različite značajke ulaznih slika.

 

Budući da model uči značajke ili slike kao Gaussove distribucije umjesto diskretnih vrijednosti, može se koristiti za generiranje novih slika. Gaussova distribucija uzorkuje se kako bi se stvorio vektor, koji se ubacuje u mrežu za dekodiranje, koja prikazuje sliku na temelju ovog vektora uzoraka. U osnovi, model uči zajedničke značajke slika za obuku i dodjeljuje im neku vjerojatnost da će se pojaviti. Distribucija vjerojatnosti tada se može koristiti za obrnuti inženjering slike, generiranje novih slika koje nalikuju izvornim slikama za obuku.

Prilikom treniranja mreže, kodirani podaci se analiziraju i model prepoznavanja daje dva vektora, izvlačeći srednju vrijednost i standardnu ​​devijaciju slika. Na temelju tih vrijednosti kreira se distribucija. Ovo se radi za različita latentna stanja. Dekoder tada uzima nasumične uzorke iz odgovarajuće distribucije i koristi ih za rekonstrukciju početnih ulaza u mrežu.

Aplikacije automatskog kodiranja

Autokoderi se mogu koristiti za širok raznolikost primjena, ali obično se koriste za zadatke kao što su smanjenje dimenzionalnosti, uklanjanje buke u podacima, ekstrakcija značajki, generiranje slika, predviđanje niza za nizom i sustavi preporuka.

Uklanjanje šuma u podacima je upotreba autokodera za uklanjanje zrnatosti/šuma sa slika. Slično tome, autokoderi se mogu koristiti za popravak drugih vrsta oštećenja slike, poput mutnih slika ili slika kojima nedostaju dijelovi. Smanjenje dimenzionalnosti može pomoći mrežama velikog kapaciteta da nauče korisne značajke slika, što znači da se autokoderi mogu koristiti za povećanje obuke drugih vrsta neuronskih mreža. To također vrijedi za korištenje autokodera za ekstrakciju značajki, jer se autokoderi mogu koristiti za identifikaciju značajki drugih skupova podataka za obuku za obuku drugih modela.

Što se tiče generiranja slika, autokoderi se mogu koristiti za generiranje lažnih ljudskih slika ili animiranih likova, što ima primjenu u dizajniranju sustava za prepoznavanje lica ili automatizaciji određenih aspekata animacije.

Modeli predviđanja od sekvence do sekvence mogu se koristiti za određivanje vremenske strukture podataka, što znači da se autokoder može koristiti za generiranje sljedećeg u nizu. Iz tog razloga, autokoder bi se mogao koristiti za generiranje videa. Naposljetku, duboki autokoderi mogu se koristiti za stvaranje sustava preporuka odabirom uzoraka koji se odnose na interes korisnika, pri čemu koder analizira podatke o angažmanu korisnika, a dekoder stvara preporuke koje odgovaraju utvrđenim obrascima.

Bloger i programer sa specijalnošću u Strojno učenje i Duboko učenje temama. Daniel se nada pomoći drugima da iskoriste snagu umjetne inteligencije za društveno dobro.