stub Kas yra automatinis kodavimo įrenginys? - Vienykitės.AI
Susisiekti su mumis
AI meistriškumo klasė:

AI 101 m

Kas yra automatinis kodavimo įrenginys?

mm
Atnaujinta on

Jei anksčiau skaitėte apie neprižiūrimo mokymosi metodus, galbūt susidūrėte su terminu „automatinis kodavimas“. Automatiniai kodavimo įrenginiai yra vienas iš pagrindinių neprižiūrimų mokymosi modelių kūrimo būdų. Tačiau kas tiksliai yra automatinis kodavimo įrenginys?

Trumpai tariant, automatiniai kodavimo įrenginiai veikia paimdami duomenis, suglaudindami ir užkoduodami duomenis, o tada atkurdami duomenis iš kodavimo atvaizdo. Modelis mokomas tol, kol nuostoliai sumažinami iki minimumo ir duomenys atkuriami kuo tiksliau. Per šį procesą automatinis kodavimo įrenginys gali sužinoti svarbias duomenų savybes. Nors tai yra greitas automatinio kodavimo įrenginio apibrėžimas, būtų naudinga atidžiau pažvelgti į automatinius kodavimo įrenginius ir geriau suprasti, kaip jie veikia. Šiame straipsnyje bus stengiamasi demistifikuoti automatinius koduotuvus, paaiškinant automatinių kodavimo įrenginių architektūrą ir jų programas.

Kas yra automatinis kodavimo įrenginys?

Automatiniai kodavimo įrenginiai yra neuroniniai tinklai. Neuroniniai tinklai susideda iš kelių sluoksnių, o pagrindinis automatinio kodavimo aspektas yra tas, kad įvesties sluoksniuose yra lygiai tiek informacijos, kiek ir išvesties sluoksnyje. Priežastis, kodėl įvesties sluoksnyje ir išvesties sluoksniuose yra lygiai toks pat vienetų skaičius, yra ta, kad automatinis kodavimo įrenginys siekia pakartoti įvesties duomenis. Ji išveda duomenų kopiją po to, kai juos išanalizavo ir atkuria be priežiūros.

Duomenys, judantys per automatinį kodavimo įrenginį, nėra tiesiog susiejami nuo įvesties iki išvesties, o tai reiškia, kad tinklas ne tik kopijuoja įvesties duomenis. Yra trys automatinio kodavimo komponentai: kodavimo (įvesties) dalis, kuri suspaudžia duomenis, komponentas, kuris tvarko suspaustus duomenis (arba kliūtis), ir dekoderio (išvesties) dalis. Kai duomenys įvedami į automatinį kodavimo įrenginį, jie užkoduojami ir suspaudžiami iki mažesnio dydžio. Tada tinklas apmokomas naudoti užkoduotus / suglaudintus duomenis ir išveda tuos duomenis iš naujo.

Taigi kodėl norėtumėte išmokyti tinklą tiesiog atkurti jam pateiktus duomenis? Priežastis ta, kad tinklas sužino „esmę“ arba svarbiausias įvesties duomenų savybes. Išmokę tinklą, galima sukurti modelį, galintį sintetinti panašius duomenis, pridedant arba atimant tam tikras tikslines savybes. Pavyzdžiui, galite išmokyti automatinį kodavimo įrenginį naudoti grūdėtus vaizdus, ​​o tada naudoti parengtą modelį, kad pašalintumėte vaizdo grūdėtumą / triukšmą.

Autoencoder architektūra

Pažvelkime automatinio kodavimo įrenginio architektūra. Čia aptarsime pagrindinę automatinio kodavimo įrenginio architektūrą. Yra šios bendros architektūros variantų, kuriuos aptarsime toliau pateiktame skyriuje.

Nuotrauka: Michela Massi per „Wikimedia Commons“, (https://commons.wikimedia.org/wiki/File:Autoencoder_schema.png)

Kaip minėta anksčiau, automatinį kodavimo įrenginį iš esmės galima suskirstyti į tris skirtingus komponentus: kodavimo įrenginį, kliūtį ir dekoderį.

Automatinio kodavimo įrenginio kodavimo dalis paprastai yra tankiai sujungtas tinklas. Kodavimo sluoksnių paskirtis – paimti įvesties duomenis ir suspausti juos į latentinės erdvės atvaizdą, generuojant naują duomenų, kurių matmenys sumažėjo, atvaizdą.

Kodo sluoksniai arba kliūtis yra susiję su suspaustu duomenų vaizdu. Kliūties kodas yra kruopščiai sukurtas siekiant nustatyti svarbiausias stebimų duomenų dalis arba kitaip apibūdinti duomenų ypatybes, kurios yra svarbiausios duomenų atkūrimui. Tikslas yra nustatyti, kuriuos duomenų aspektus reikia išsaugoti, o kuriuos galima atmesti. Kliūties kaklelio kodas turi suderinti du skirtingus aspektus: atvaizdavimo dydį (kiek kompaktiškas vaizdas) ir kintamojo / funkcijos tinkamumą. Kliūtis atlieka elementų suaktyvinimą, atsižvelgiant į tinklo svorį ir paklaidas. Butelio kaklelio sluoksnis taip pat kartais vadinamas latentiniu vaizdu arba latentiniais kintamaisiais.

Dekoderio sluoksnis yra atsakingas už suspaustų duomenų paėmimą ir pavertimą atgal į atvaizdą, kurio matmenys tokie pat kaip ir pirminiai, nepakeisti duomenys. Konvertavimas atliekamas naudojant kodavimo įrenginio sukurtą latentinės erdvės vaizdą.

Pati pagrindinė automatinio kodavimo architektūra yra nukreipimo į priekį architektūra, kurios struktūra panaši į vieno sluoksnio perceptroną, naudojamą daugiasluoksniuose perceptronuose. Panašiai kaip įprasti persiuntimo neuroniniai tinklai, automatinis koduotuvas yra treniruojamas naudojant atgalinį sklidimą.

Autoencoder atributai

Yra įvairių tipų automatinių kodavimo įrenginių, tačiau jie visi turi tam tikrų savybių, kurios juos vienija.

Automatiniai kodavimo įrenginiai mokosi automatiškai. Jiems nereikia etikečių, o jei pateikiama pakankamai duomenų, lengva gauti automatinį kodavimo įrenginį, kad būtų pasiektas didelis našumas naudojant tam tikros rūšies įvesties duomenis.

Automatiniai kodavimo įrenginiai priklauso nuo duomenų. Tai reiškia, kad jie gali suspausti tik tuos duomenis, kurie yra labai panašūs į duomenis, kuriuos naudoti automatinis kodavimo įrenginys jau buvo išmokytas. Automatiniai kodavimo įrenginiai taip pat yra nuostolingi, o tai reiškia, kad modelio išėjimai bus pabloginti, palyginti su įvesties duomenimis.

Kurdami automatinį kodavimo įrenginį, mašininio mokymosi inžinieriai turi atkreipti dėmesį į keturis skirtingus modelio hiperparametrus: kodo dydį, sluoksnio numerį, sluoksnio mazgus ir praradimo funkciją.

Kodo dydis lemia, kiek mazgų pradeda vidurinę tinklo dalį, o mažiau mazgų labiau suspaudžia duomenis. Giliame automatiniame kodavimo įrenginyje, nors sluoksnių skaičius gali būti bet koks skaičius, kurį inžinierius laiko tinkamu, sluoksnio mazgų skaičius turėtų mažėti, kai kodavimo priemonė įsijungia. Tuo tarpu dekoderyje galioja priešingai, ty mazgų skaičius viename sluoksnyje turėtų didėti, kai dekoderio sluoksniai artėja prie galutinio sluoksnio. Galiausiai, autoenkoderio praradimo funkcija paprastai yra dvejetainė kryžminė entropija arba vidutinė kvadratinė paklaida. Dvejetainė kryžminė entropija yra tinkama tais atvejais, kai duomenų įvesties reikšmės yra 0–1 diapazone.

Autoencoder tipai

Kaip minėta aukščiau, yra klasikinės automatinio kodavimo architektūros variantų. Panagrinėkime skirtingas automatinio kodavimo architektūras.

Retai

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

Nors automatiniai kodavimo įrenginiai paprastai turi kliūtį, dėl kurios duomenys suspaudžiami sumažinus mazgus, retas autokoderiss yra alternatyva tam tipiškam veiklos formatui. Retame tinkle paslėpti sluoksniai išlaiko tokį patį dydį kaip kodavimo ir dekoderio sluoksniai. Vietoj to, aktyvinimas tam tikrame sluoksnyje yra baudžiamas, todėl jis nustatomas taip, kad praradimo funkcija geriau užfiksuotų įvesties duomenų statistines ypatybes. Kitaip tariant, nors paslėpti negausaus automatinio kodavimo sluoksniai turi daugiau vienetų nei tradicinis automatinis kodavimo įrenginys, bet kuriuo metu aktyvūs tik tam tikra jų dalis. Įtakingiausios aktyvinimo funkcijos išsaugomos, o kitos ignoruojamos, o šis apribojimas padeda tinklui nustatyti tik svarbiausias įvesties duomenų savybes.

Sutartinis

Sutartiniai automatiniai kodavimo įrenginiai yra sukurti taip, kad būtų atsparūs nedideliems duomenų svyravimams, išlaikant nuoseklų duomenų pateikimą. Tai pasiekiama taikant baudą nuostolių funkcijai. Ši reguliavimo technika pagrįsta Jakobijos matricos Frobenijaus norma įvesties kodavimo įrenginio aktyvinimui. Šios reguliavimo technikos poveikis yra tas, kad modelis yra priverstas sukurti kodavimą, kai panašios įvestys turės panašias koduotes.

Convolutional

Konvoliuciniai automatiniai kodavimo įrenginiai užkoduoti įvesties duomenis, padalydami juos į poskyrius ir konvertuodami šiuos poskyrius į paprastus signalus, kurie sumuojami, kad būtų sukurtas naujas duomenų vaizdas. Panašiai kaip ir konvoliuciniai neuroniniai tinklai, konvoliucinis automatinis kodavimo įrenginys specializuojasi vaizdo duomenų mokymuisi ir naudoja filtrą, kuris perkeliamas per visą vaizdą. Kodavimo sluoksnio sugeneruotos koduotės gali būti naudojamos atkurti vaizdą, atspindėti vaizdą arba modifikuoti vaizdo geometriją. Tinklui išmokus filtrus, juos galima naudoti bet kurioje pakankamai panašioje įvestyje, kad būtų galima išskirti vaizdo ypatybes.

Triukšmo slopinimas

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

Triukšmo slopinimo automatiniai kodavimo įrenginiai į kodavimą įvesti triukšmo, todėl kodavimas yra sugadinta pradinių įvesties duomenų versija. Ši sugadinta duomenų versija naudojama modeliui mokyti, tačiau praradimo funkcija lygina išvesties reikšmes su pradine įvestimi, o ne su sugadinta įvestimi. Siekiama, kad tinklas galėtų atkurti originalią, nesugadintą vaizdo versiją. Palyginus sugadintus duomenis su pradiniais duomenimis, tinklas sužino, kurios duomenų savybės yra svarbiausios, o kurios – nesvarbios/sugadintos. Kitaip tariant, kad modelis sugadintų vaizdų triukšmą, jis turi išgauti svarbias vaizdo duomenų savybes.

Variacinė

Variaciniai automatiniai kodavimo įrenginiai veikia darydami prielaidas, kaip paskirstomi latentiniai duomenų kintamieji. Variacinis automatinis kodavimo įrenginys sukuria įvairių mokymo vaizdų / latentinių atributų tikimybių pasiskirstymą. Treniruodamasis koduotuvas sukuria latentinius paskirstymus skirtingoms įvesties vaizdų funkcijoms.

 

Kadangi modelis išmoksta ypatybes ar vaizdus kaip Gauso skirstinius, o ne atskiras reikšmes, jis gali būti naudojamas naujiems vaizdams generuoti. Gauso skirstinys atrenkamas, kad būtų sukurtas vektorius, kuris įvedamas į dekodavimo tinklą, kuris atvaizduoja vaizdą pagal šį pavyzdžių vektorių. Iš esmės modelis išmoksta bendras mokymo vaizdų ypatybes ir priskiria jiems tam tikrą tikimybę, kad jie įvyks. Tada tikimybių pasiskirstymas gali būti naudojamas norint pakeisti vaizdą, generuojant naujus vaizdus, ​​kurie būtų panašūs į originalius mokomuosius vaizdus.

Treniruojant tinklą, užkoduoti duomenys yra analizuojami ir atpažinimo modelis išveda du vektorius, nubrėždami vaizdų vidurkį ir standartinį nuokrypį. Pagal šias reikšmes sukuriamas paskirstymas. Tai daroma skirtingoms latentinėms būsenoms. Tada dekoderis paima atsitiktinius mėginius iš atitinkamo paskirstymo ir naudoja juos pradiniams tinklo įėjimams atkurti.

Automatinio kodavimo programos

Automatiniai kodavimo įrenginiai gali būti naudojami plačiam programų įvairovė, tačiau jie paprastai naudojami tokioms užduotims kaip matmenų mažinimas, duomenų triukšmo mažinimas, funkcijų išskyrimas, vaizdų generavimas, numatymas nuo sekos iki sekos ir rekomendacijų sistemos.

Duomenų triukšmo mažinimas yra automatinių kodavimo įrenginių naudojimas, norint pašalinti vaizdų grūdėtumą / triukšmą. Panašiai automatiniai kodavimo įrenginiai gali būti naudojami kitų tipų vaizdo pažeidimams, pvz., neryškiems vaizdams arba vaizdams, kuriuose nėra sekcijų, atitaisyti. Matmenų sumažinimas gali padėti didelės talpos tinklams išmokti naudingų vaizdų savybių, o tai reiškia, kad automatiniai kodavimo įrenginiai gali būti naudojami kitų tipų neuroninių tinklų mokymui papildyti. Tai taip pat pasakytina apie automatinių kodavimo įrenginių naudojimą funkcijų išgavimui, nes automatiniai kodavimo įrenginiai gali būti naudojami kitų mokymo duomenų rinkinių ypatybėms identifikuoti, kad būtų galima išmokyti kitus modelius.

Kalbant apie vaizdų generavimą, automatiniai kodavimo įrenginiai gali būti naudojami netikriems žmogaus atvaizdams ar animuotiems simboliams generuoti, o tai yra pritaikyta kuriant veido atpažinimo sistemas arba automatizuojant tam tikrus animacijos aspektus.

Sekos iki sekos numatymo modeliai gali būti naudojami norint nustatyti laikiną duomenų struktūrą, o tai reiškia, kad automatinis koduotuvas gali būti naudojamas generuoti kitą seką. Dėl šios priežasties vaizdo įrašams generuoti galima naudoti automatinį kodavimo įrenginį. Galiausiai, gilieji automatiniai koduotuvai gali būti naudojami kuriant rekomendacijų sistemas, renkant šablonus, susijusius su naudotojų susidomėjimu, o koduotuvas analizuoja vartotojo įtraukimo duomenis, o dekoderis sukuria rekomendacijas, kurios atitinka nustatytus modelius.

Tinklaraštininkas ir programuotojas, turintis specialybių Mašininis mokymasis ir Gilus mokymasis temomis. Danielis tikisi padėti kitiems panaudoti AI galią socialinei gerovei.