stubs Kas ir automātiskais kodētājs? - Apvienojieties.AI
Savienoties ar mums
AI meistarklase:

AI 101

Kas ir automātiskais kodētājs?

mm
Atjaunināts on

Ja iepriekš esat lasījis par nekontrolētām mācīšanās metodēm, iespējams, esat saskāries ar terminu "automātiskais kodētājs”. Autokodētāji ir viens no galvenajiem veidiem, kā tiek izstrādāti nekontrolēti mācību modeļi. Bet kas īsti ir automātiskais kodētājs?

Īsumā, autokodētāji darbojas, uzņemot datus, saspiežot un kodējot datus un pēc tam rekonstruējot datus no kodēšanas attēlojuma. Modelis tiek apmācīts, līdz tiek samazināti zaudējumi un dati tiek reproducēti pēc iespējas tuvāk. Izmantojot šo procesu, automātiskais kodētājs var uzzināt svarīgās datu funkcijas. Lai gan šī ir ātra automātiskā kodētāja definīcija, būtu lietderīgi tuvāk apskatīt automātiskos kodētājus un iegūt labāku izpratni par to darbību. Šajā rakstā tiks mēģināts demistificēt autokodētājus, izskaidrojot automātisko kodētāju arhitektūru un to lietojumus.

Kas ir automātiskais kodētājs?

Autokodētāji ir neironu tīkli. Neironu tīkli sastāv no vairākiem slāņiem, un automātiskā kodētāja noteicošais aspekts ir tāds, ka ievades slāņi satur tieši tik daudz informācijas kā izvades slānis. Iemesls, kāpēc ievades slānim un izvades slānim ir vienāds vienību skaits, ir tāds, ka automātiskā kodētāja mērķis ir atkārtot ievades datus. Tas izdod datu kopiju pēc to analīzes un rekonstrukcijas bez uzraudzības.

Dati, kas tiek pārvietoti caur automātisko kodētāju, nav tikai kartēti tieši no ievades uz izvadi, kas nozīmē, ka tīkls ne tikai kopē ievades datus. Autokodētājam ir trīs komponenti: kodēšanas (ievades) daļa, kas saspiež datus, komponents, kas apstrādā saspiestos datus (vai vājo vietu), un dekodētāja (izejas) daļa. Kad dati tiek ievadīti automātiskajā kodētājā, tie tiek kodēti un pēc tam saspiesti līdz mazākam izmēram. Pēc tam tīkls tiek apmācīts kodētajiem/saspiestajiem datiem, un tas izdod šo datu atjaunošanu.

Tātad, kāpēc jūs vēlaties apmācīt tīklu, lai tas vienkārši rekonstruētu tam sniegtos datus? Iemesls ir tāds, ka tīkls apgūst ievaddatu “būtību” jeb svarīgākās iezīmes. Pēc tīkla apmācības var izveidot modeli, kas var sintezēt līdzīgus datus, pievienojot vai atņemot noteiktas mērķa funkcijas. Piemēram, varat apmācīt automātisko kodētāju graudainiem attēliem un pēc tam izmantot apmācīto modeli, lai no attēla noņemtu graudainību/troksni.

Autoencoder arhitektūra

Apskatīsim automātiskā kodētāja arhitektūra. Šeit mēs apspriedīsim automātiskā kodētāja galveno arhitektūru. Šai vispārīgajai arhitektūrai ir dažādas variācijas, kuras mēs apspriedīsim tālāk esošajā sadaļā.

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

Kā minēts iepriekš, automātisko kodētāju būtībā var iedalīt trīs dažādos komponentos: kodētājs, sašaurinājums un dekodētājs.

Autokodētāja kodētāja daļa parasti ir uz priekšu vērsts, blīvi savienots tīkls. Kodēšanas slāņu mērķis ir iegūt ievades datus un saspiest tos latentā telpas attēlojumā, ģenerējot jaunu datu attēlojumu, kam ir samazināta dimensija.

Koda slāņi jeb sašaurinājums nodarbojas ar datu saspiestu attēlojumu. Sastrēgumu kods ir rūpīgi izstrādāts, lai noteiktu visatbilstošākās novēroto datu daļas vai citā veidā norādītu datu funkcijas, kas ir vissvarīgākās datu rekonstrukcijai. Mērķis šeit ir noteikt, kuri datu aspekti ir jāsaglabā un kurus var izmest. Šaurās vietas kodam ir jāsabalansē divi dažādi apsvērumi: attēlojuma lielums (cik kompakts ir attēlojums) un mainīgā/līdzekļa atbilstība. Šaurums veic elementu aktivizēšanu, ņemot vērā tīkla svaru un novirzes. Sašaurinājuma slāni dažreiz sauc arī par latentu attēlojumu vai latentiem mainīgajiem.

Dekodētāja slānis ir atbildīgs par saspiesto datu ņemšanu un pārveidošanu atpakaļ reprezentācijā ar tādiem pašiem izmēriem kā sākotnējiem, nemainītiem datiem. Konvertēšana tiek veikta, izmantojot kodētāja izveidoto latentās telpas attēlojumu.

Visvienkāršākā automātiskā kodētāja arhitektūra ir uz priekšu vērsta arhitektūra, kuras struktūra ir līdzīga viena slāņa perceptronam, ko izmanto daudzslāņu perceptronos. Līdzīgi kā parastie uz priekšu vērstie neironu tīkli, automātiskais kodētājs tiek apmācīts, izmantojot atpakaļejošo pavairošanu.

Autoencoder atribūti

Ir dažādi automātisko kodētāju veidi, taču tiem visiem ir noteiktas īpašības, kas tos vieno.

Autokodētāji mācās automātiski. Tiem nav nepieciešamas etiķetes, un, ja tiek sniegts pietiekami daudz datu, ir viegli iegūt automātisko kodētāju, lai sasniegtu augstu veiktspēju noteikta veida ievades datiem.

Autokodētāji ir specifiski datiem. Tas nozīmē, ka viņi var saspiest tikai datus, kas ir ļoti līdzīgi tiem datiem, par kuriem automātiskais kodētājs jau ir apmācīts. Autokodētāji ir arī ar zaudējumiem, kas nozīmē, ka modeļa izejas tiks pasliktinātas salīdzinājumā ar ievades datiem.

Izstrādājot automātisko kodētāju, mašīnmācīšanās inženieriem ir jāpievērš uzmanība četriem dažādiem modeļa hiperparametriem: koda lielumam, slāņa numuram, slāņa mezgliem un zudumu funkcijai.

Koda lielums nosaka, cik mezglu sāk tīkla vidējo daļu, un mazāk mezglu vairāk saspiež datus. Lai gan dziļā automātiskā kodētājā slāņu skaits var būt jebkurš, ko inženieris uzskata par piemērotu, slāņa mezglu skaitam vajadzētu samazināties, kodētājam iedarbinot. Tikmēr dekodētājā ir pretējais, kas nozīmē, ka mezglu skaitam vienā slānī vajadzētu palielināties, dekodētāja slāņiem tuvojoties pēdējam slānim. Visbeidzot, automātiskā kodētāja zuduma funkcija parasti ir vai nu bināra šķērsentropija, vai vidējā kvadrātiskā kļūda. Binārā šķērsentropija ir piemērota gadījumiem, kad datu ievades vērtības ir diapazonā no 0 līdz 1.

Autoencoder veidi

Kā minēts iepriekš, pastāv klasiskās automātiskās kodēšanas arhitektūras variācijas. Apskatīsim dažādas automātiskās kodēšanas arhitektūras.

Retāk

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

Lai gan automātiskajiem kodētājiem parasti ir vājā vieta, kas saspiež datus, samazinot mezglus, rets autokodētājss ir alternatīva šim tipiskajam darbības formātam. Retā tīklā slēptie slāņi saglabā tādu pašu izmēru kā kodētāja un dekodētāja slāņi. Tā vietā aktivizēšana noteiktā slānī tiek sodīta, iestatot to tā, lai zaudēšanas funkcija labāk uztvertu ievades datu statistiskās pazīmes. Citiem vārdiem sakot, lai gan retā automātiskā kodētāja slēptajos slāņos ir vairāk vienību nekā tradicionālajam automātiskajam kodētājam, tikai noteikta procentuālā daļa no tiem ir aktīvi jebkurā brīdī. Visietekmīgākās aktivizācijas funkcijas tiek saglabātas, bet citas tiek ignorētas, un šis ierobežojums palīdz tīklam noteikt tikai vissvarīgākās ievades datu funkcijas.

Kontraktīvs

Kontraktīvi autokoderi ir izstrādāti tā, lai tie būtu izturīgi pret nelielām datu variācijām, saglabājot konsekventu datu attēlojumu. To panāk, zaudējuma funkcijai piemērojot sodu. Šī regularizācijas tehnika ir balstīta uz Jakoba matricas Frobeniusa normu ievades kodētāja aktivizēšanai. Šīs regularizācijas metodes rezultāts ir tāds, ka modelis ir spiests izveidot kodējumu, kurā līdzīgām ievadēm būs līdzīgi kodējumi.

Convolutional

Konvolūcijas autokodētāji kodēt ievades datus, sadalot datus apakšsadaļās un pēc tam pārveidojot šīs apakšsadaļas vienkāršos signālos, kas tiek summēti kopā, lai izveidotu jaunu datu attēlojumu. Līdzīgi kā konvolūcijas neironu tīkli, konvolūcijas automātiskais kodētājs specializējas attēla datu apguvē, un tas izmanto filtru, kas tiek pārvietots pa visu attēlu sadaļām. Kodēšanas slāņa ģenerētos kodējumus var izmantot, lai rekonstruētu attēlu, atspoguļotu attēlu vai mainītu attēla ģeometriju. Kad tīkls ir apguvis filtrus, tos var izmantot jebkurai pietiekami līdzīgai ievadei, lai iegūtu attēla funkcijas.

Trokšņa mazināšana

Fotoattēls: MAL, izmantojot Wikimedia Commons, CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:ROF_Denoising_Example.png)

Autoenkoderu atcelšana kodējumā ievieš troksni, kā rezultātā tiek iegūts kodējums, kas ir bojāta sākotnējo ievades datu versija. Šī bojātā datu versija tiek izmantota, lai apmācītu modeli, bet zudumu funkcija salīdzina izvades vērtības ar sākotnējo ievadi, nevis bojāto ievadi. Mērķis ir, lai tīkls spēs reproducēt attēla sākotnējo, nesabojāto versiju. Salīdzinot bojātos datus ar sākotnējiem datiem, tīkls uzzina, kuras datu funkcijas ir vissvarīgākās un kuras ir nesvarīgas/bojātas. Citiem vārdiem sakot, lai modelis novērstu bojāto attēlu troksni, tam ir jābūt iegūtām svarīgām attēla datu iezīmēm.

Variācijas

Variācijas autokodētāji darbojas, izdarot pieņēmumus par to, kā tiek sadalīti datu latentie mainīgie. Variācijas automātiskais kodētājs veido varbūtības sadalījumu dažādām apmācības attēlu iezīmēm/latento atribūtiem. Apmācības laikā kodētājs izveido latentus sadalījumus dažādām ievades attēlu funkcijām.

 

Tā kā modelis apgūst funkcijas vai attēlus kā Gausa sadalījumus, nevis diskrētas vērtības, to var izmantot jaunu attēlu ģenerēšanai. Gausa sadalījums tiek atlasīts, lai izveidotu vektoru, kas tiek ievadīts dekodēšanas tīklā, kas atveido attēlu, pamatojoties uz šo paraugu vektoru. Būtībā modelis apgūst apmācības attēlu kopīgās iezīmes un piešķir tiem zināmu varbūtību, ka tās notiks. Pēc tam varbūtības sadalījumu var izmantot, lai apgrieztu attēlu, ģenerējot jaunus attēlus, kas līdzinās oriģinālajiem apmācības attēliem.

Apmācot tīklu, kodētie dati tiek analizēti un atpazīšanas modelis izvada divus vektorus, kas nosaka attēlu vidējo un standarta novirzi. Pamatojoties uz šīm vērtībām, tiek izveidots sadalījums. Tas tiek darīts dažādiem latentiem stāvokļiem. Pēc tam dekodētājs ņem izlases paraugus no atbilstošā sadalījuma un izmanto tos, lai rekonstruētu sākotnējās ievades tīklā.

Autoencoder lietojumprogrammas

Autoencoders var izmantot plašu pielietojumu daudzveidība, taču tos parasti izmanto tādiem uzdevumiem kā izmēru samazināšana, datu trokšņa samazināšana, funkciju ieguve, attēlu ģenerēšana, secības uz secību prognozēšana un ieteikumu sistēmas.

Datu trokšņa samazināšana ir automātisko kodētāju izmantošana, lai no attēliem noņemtu graudus/trokšņus. Tāpat automātiskos kodētājus var izmantot, lai labotu cita veida attēla bojājumus, piemēram, izplūdušus attēlus vai attēlus, kuriem trūkst sadaļas. Dimensiju samazināšana var palīdzēt lieljaudas tīkliem apgūt noderīgas attēlu funkcijas, kas nozīmē, ka automātiskos kodētājus var izmantot, lai paplašinātu cita veida neironu tīklu apmācību. Tas attiecas arī uz automātisko kodētāju izmantošanu funkciju ieguvei, jo automātiskos kodētājus var izmantot, lai identificētu citu apmācības datu kopu funkcijas, lai apmācītu citus modeļus.

Runājot par attēlu ģenerēšanu, automātiskos kodētājus var izmantot, lai ģenerētu viltotus cilvēku attēlus vai animētas rakstzīmes, kuras var izmantot sejas atpazīšanas sistēmu projektēšanā vai noteiktu animācijas aspektu automatizēšanai.

Secības uz secību prognozēšanas modeļus var izmantot, lai noteiktu datu laika struktūru, kas nozīmē, ka automātisko kodētāju var izmantot, lai ģenerētu nākamo pat secībā. Šī iemesla dēļ video ģenerēšanai var izmantot automātisko kodētāju. Visbeidzot, dziļos automātiskos kodētājus var izmantot, lai izveidotu ieteikumu sistēmas, uztverot modeļus, kas saistīti ar lietotāju interesēm, kodētājam analizējot lietotāju iesaistes datus, bet dekodētājam izveidojot ieteikumus, kas atbilst noteiktajiem modeļiem.

Emuāru autors un programmētājs ar specialitātēm Mašīnu mācīšana un Dziļa mācīšanās tēmas. Daniels cer palīdzēt citiem izmantot mākslīgā intelekta spēku sociālā labuma gūšanai.