peň Čo je to automatický kódovač? - Spojte sa.AI
Spojte sa s nami
Masterclass AI:

AI 101

Čo je to automatický kódovač?

mm
Aktualizované on

Ak ste už predtým čítali o technikách učenia bez dozoru, možno ste sa stretli s výrazom „automatické kódovanie“. Autokódovače sú jedným z hlavných spôsobov vývoja modelov učenia bez dozoru. Čo je to však vlastne automatický kódovač?

V stručnosti, automatické kódovače fungujú tak, že prijímajú dáta, komprimujú a kódujú dáta a potom rekonštruujú dáta z kódovacej reprezentácie. Model je trénovaný, kým nie je strata minimalizovaná a údaje sú reprodukované čo najtesnejšie. Prostredníctvom tohto procesu sa môže autokóder naučiť dôležité vlastnosti údajov. Aj keď je to rýchla definícia automatického kódovania, bolo by užitočné bližšie sa pozrieť na automatické kódovače a lepšie pochopiť, ako fungujú. Tento článok sa bude snažiť demystifikovať autokodéry, vysvetlí architektúru autokodérov a ich aplikácie.

Čo je to automatický kódovač?

Automatické kódovače sú neurónové siete. Neurónové siete sa skladajú z viacerých vrstiev a definujúcim aspektom autokódera je, že vstupné vrstvy obsahujú presne toľko informácií ako výstupná vrstva. Dôvodom, prečo má vstupná vrstva a výstupná vrstva presne rovnaký počet jednotiek, je to, že cieľom automatického kódovania je replikovať vstupné údaje. Vydáva kópiu údajov po ich analýze a rekonštrukcii bez dozoru.

Dáta, ktoré sa pohybujú cez automatický kódovač, nie sú len mapované priamo zo vstupu na výstup, čo znamená, že sieť nekopíruje len vstupné dáta. Autokodér má tri komponenty: kódovaciu (vstupnú) časť, ktorá komprimuje údaje, komponent, ktorý spracováva komprimované údaje (alebo úzke miesto) a časť dekodéra (výstup). Keď sú údaje vložené do automatického kódovača, sú zakódované a potom skomprimované na menšiu veľkosť. Sieť je potom trénovaná na zakódovaných/komprimovaných údajoch a na výstupe sa obnovia tieto údaje.

Prečo by ste teda chceli trénovať sieť tak, aby len rekonštruovala údaje, ktoré sú jej poskytnuté? Dôvodom je, že sieť sa učí „podstatu“ alebo najdôležitejšie vlastnosti vstupných údajov. Po natrénovaní siete je možné vytvoriť model, ktorý dokáže syntetizovať podobné údaje s pridaním alebo odčítaním určitých cieľových funkcií. Môžete napríklad trénovať automatický kódovač na zrnité obrázky a potom použiť natrénovaný model na odstránenie zrnitosti/šumu z obrázka.

Architektúra automatického kódovania

Poďme sa na to pozrieť architektúra autokódera. Tu budeme diskutovať o hlavnej architektúre autokódera. Existujú variácie tejto všeobecnej architektúry, o ktorých budeme diskutovať v časti nižšie.

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

Ako už bolo spomenuté, autoenkodér možno v podstate rozdeliť na tri rôzne komponenty: kodér, úzke miesto a dekodér.

Kódovacia časť autokódera je typicky dopredná, husto prepojená sieť. Účelom kódovacích vrstiev je zobrať vstupné dáta a skomprimovať ich do reprezentácie latentného priestoru, čím sa vytvorí nová reprezentácia dát, ktorá má zníženú dimenzionalitu.

Vrstvy kódu alebo úzke miesto sa zaoberajú komprimovanou reprezentáciou údajov. Kód úzkeho miesta je starostlivo navrhnutý tak, aby určoval najrelevantnejšie časti pozorovaných údajov alebo inak povedané vlastnosti údajov, ktoré sú najdôležitejšie pre rekonštrukciu údajov. Cieľom je určiť, ktoré aspekty údajov je potrebné zachovať a ktoré možno zahodiť. Kód úzkeho miesta musí vyvážiť dve rôzne úvahy: veľkosť reprezentácie (ako kompaktná je reprezentácia) a relevantnosť premennej/funkcie. Úzke miesto vykonáva aktiváciu prvkov na váhe a odchýlky siete. Vrstva úzkeho miesta sa tiež niekedy nazýva latentná reprezentácia alebo latentné premenné.

Vrstva dekodéra je zodpovedná za prevzatie komprimovaných údajov a ich konverziu späť na reprezentáciu s rovnakými rozmermi ako pôvodné, nezmenené údaje. Konverzia sa vykonáva pomocou reprezentácie latentného priestoru, ktorú vytvoril kódovač.

Najzákladnejšou architektúrou autokódera je dopredná architektúra so štruktúrou podobnou jednovrstvovému perceptrónu používanému vo viacvrstvových perceptrónoch. Podobne ako bežné dopredné neurónové siete je automatický kódovač trénovaný pomocou spätného šírenia.

Atribúty automatického kódovania

Existujú rôzne typy automatických kódovačov, ale všetky majú určité vlastnosti, ktoré ich spájajú.

Automatické kódovače sa učia automaticky. Nevyžadujú štítky a ak je k dispozícii dostatok údajov, je ľahké získať automatický kódovač na dosiahnutie vysokého výkonu pri konkrétnom druhu vstupných údajov.

Automatické kódovače sú dátovo špecifické. To znamená, že môžu komprimovať iba údaje, ktoré sú veľmi podobné údajom, na ktoré už bol automatický kódovač natrénovaný. Autoenkódery sú tiež stratové, čo znamená, že výstupy modelu budú v porovnaní so vstupnými dátami degradované.

Pri navrhovaní automatického kódovača musia inžinieri strojového učenia venovať pozornosť štyrom rôznym hyperparametrom modelu: veľkosť kódu, počet vrstiev, uzly na vrstvu a funkcia straty.

Veľkosť kódu rozhoduje o tom, koľko uzlov začína strednú časť siete a menej uzlov komprimuje údaje viac. V hlbokom automatickom kódovači, zatiaľ čo počet vrstiev môže byť ľubovoľný počet, ktorý inžinier považuje za vhodný, počet uzlov vo vrstve by sa mal s pokračovaním kódovača znižovať. Medzitým platí opak v dekodéri, čo znamená, že počet uzlov na vrstvu by sa mal zvyšovať, keď sa vrstvy dekodéra blížia ku konečnej vrstve. Nakoniec, stratová funkcia autokódera je zvyčajne buď binárna krížová entropia alebo stredná štvorcová chyba. Binárna krížová entropia je vhodná pre prípady, keď sú vstupné hodnoty údajov v rozsahu 0 – 1.

Typy automatického kódovania

Ako je uvedené vyššie, existujú variácie klasickej architektúry autokódera. Pozrime sa na rôzne architektúry automatických kódovačov.

Riedke

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

Zatiaľ čo automatické kódovače majú zvyčajne úzke miesto, ktoré komprimuje údaje znížením počtu uzlov, riedky autokóders sú alternatívou k tomuto typickému operačnému formátu. V riedkej sieti si skryté vrstvy zachovávajú rovnakú veľkosť ako vrstvy kodéra a dekodéra. Namiesto toho sú aktivácie v rámci danej vrstvy penalizované, čím sa nastaví tak, aby funkcia straty lepšie zachytávala štatistické vlastnosti vstupných údajov. Inými slovami, zatiaľ čo skryté vrstvy riedkeho autokódera majú viac jednotiek ako tradičný autokóder, len určité percento z nich je aktívnych v danom čase. Najvplyvnejšie aktivačné funkcie sú zachované a ostatné sú ignorované a toto obmedzenie pomáha sieti určiť len tie najvýraznejšie vlastnosti vstupných údajov.

Kontraktívny

Kontraktívne autokódery sú navrhnuté tak, aby boli odolné voči malým odchýlkam v údajoch a zachovávali konzistentnú reprezentáciu údajov. To sa dosiahne uplatnením penalizácie na stratovú funkciu. Táto regularizačná technika je založená na Frobeniovej norme Jacobiánskej matice pre aktiváciu vstupného kodéra. Účinok tejto techniky regularizácie je, že model je nútený vytvoriť kódovanie, kde podobné vstupy budú mať podobné kódovania.

Konvolučný

Konvolučné automatické kódovače kódovanie vstupných údajov rozdelením údajov do podsekcií a následnou konverziou týchto podsekcií na jednoduché signály, ktoré sa sčítajú, aby sa vytvorila nová reprezentácia údajov. Podobne ako konvolučné neurónové siete sa konvolučný autokóder špecializuje na učenie obrazových údajov a používa filter, ktorý sa presúva cez celý obraz po častiach. Kódovanie generované kódovacou vrstvou je možné použiť na rekonštrukciu obrazu, odrážanie obrazu alebo úpravu geometrie obrazu. Akonáhle sa sieť naučí filtre, môžu sa použiť na akomkoľvek dostatočne podobnom vstupe na extrahovanie vlastností obrazu.

Odšumovanie

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

Odšumovacie automatické kódovače zaviesť do kódovania šum, výsledkom čoho je kódovanie, ktoré je poškodenou verziou pôvodných vstupných údajov. Táto poškodená verzia údajov sa používa na trénovanie modelu, ale funkcia straty porovnáva výstupné hodnoty s pôvodným vstupom a nie s poškodeným vstupom. Cieľom je, aby sieť bola schopná reprodukovať pôvodnú, nepoškodenú verziu obrazu. Porovnaním poškodených údajov s pôvodnými údajmi sa sieť dozvie, ktoré vlastnosti údajov sú najdôležitejšie a ktoré sú nedôležité/poškodené. Inými slovami, na to, aby model odšumoval poškodené obrázky, musí extrahovať dôležité vlastnosti obrazových údajov.

Variačné

Variačné automatické kódovače fungujú tak, že vytvárajú predpoklady o tom, ako sú distribuované latentné premenné údajov. Variačný autokóder vytvára rozdelenie pravdepodobnosti pre rôzne vlastnosti trénovacích obrázkov/latentných atribútov. Pri trénovaní kódovač vytvára latentné distribúcie pre rôzne vlastnosti vstupných obrázkov.

 

Pretože sa model učí funkcie alebo obrázky ako Gaussove distribúcie namiesto diskrétnych hodnôt, je možné ho použiť na generovanie nových obrázkov. Gaussova distribúcia je vzorkovaná, aby sa vytvoril vektor, ktorý sa privádza do dekódovacej siete, ktorá vykresľuje obraz na základe tohto vektora vzoriek. V podstate sa model učí spoločné črty tréningových obrázkov a priraďuje im určitú pravdepodobnosť, že sa vyskytnú. Rozdelenie pravdepodobnosti sa potom môže použiť na spätné inžinierstvo obrázka, čím sa generujú nové obrázky, ktoré sa podobajú pôvodným cvičným obrázkom.

Pri trénovaní siete sa zakódované údaje analyzujú a model rozpoznávania vytvára dva vektory, ktoré vykresľujú strednú a štandardnú odchýlku obrázkov. Na základe týchto hodnôt sa vytvorí rozdelenie. Toto sa robí pre rôzne latentné stavy. Dekodér potom odoberie náhodné vzorky zo zodpovedajúcej distribúcie a použije ich na rekonštrukciu počiatočných vstupov do siete.

Aplikácie automatického kódovania

Autokodéry je možné použiť pre široké rôzne aplikácie, ale zvyčajne sa používajú na úlohy, ako je redukcia rozmerov, odšumovanie údajov, extrakcia prvkov, generovanie obrázkov, predikcia sekvencie po sekvenciu a systémy odporúčaní.

Odšumovanie údajov je použitie automatických kódovačov na odstránenie zrna/šumu z obrázkov. Podobne je možné automatické kódovanie použiť na opravu iných typov poškodenia obrazu, ako sú rozmazané obrázky alebo chýbajúce časti obrázkov. Zníženie rozmerov môže pomôcť vysokokapacitným sieťam naučiť sa užitočné vlastnosti obrázkov, čo znamená, že automatické kódovače môžu byť použité na rozšírenie tréningu iných typov neurónových sietí. Platí to aj pre používanie autokódovačov na extrakciu funkcií, pretože autokódery možno použiť na identifikáciu funkcií iných množín tréningových údajov na trénovanie iných modelov.

Pokiaľ ide o generovanie obrázkov, automatické kódovanie je možné použiť na generovanie falošných ľudských obrázkov alebo animovaných postáv, čo má uplatnenie pri navrhovaní systémov rozpoznávania tvárí alebo automatizácii určitých aspektov animácie.

Modely predikcie od sekvencie k sekvencii možno použiť na určenie časovej štruktúry údajov, čo znamená, že na generovanie ďalších dokonca v sekvencii možno použiť autokóder. Z tohto dôvodu by sa na generovanie videí mohol použiť automatický kódovač. Nakoniec, hlboké automatické kódovače možno použiť na vytváranie systémov odporúčaní na základe vzorov týkajúcich sa záujmu používateľov, pričom kódovač analyzuje údaje o interakcii používateľov a dekodér vytvára odporúčania, ktoré zodpovedajú zavedeným vzorom.

Bloger a programátor so špecializáciou v Strojové učenie a Deep Learning témy. Daniel dúfa, že pomôže ostatným využívať silu AI pre sociálne dobro.