cung Çfarë është një kodues automatik? - Bashkohu.AI
Lidhu me ne
Masterclass i AI:

UA 101

Çfarë është një kodues automatik?

mm
Përditësuar on

Nëse keni lexuar më parë për teknikat e të mësuarit të pambikëqyrur, mund të keni hasur në termin "kodim automatik“. Autoenkoderët janë një nga mënyrat kryesore për zhvillimin e modeleve të mësimit të pambikëqyrur. Megjithatë, çfarë është saktësisht një autoencoder?

Shkurtimisht, autoenkoderët funksionojnë duke marrë të dhëna, duke kompresuar dhe koduar të dhënat dhe më pas duke rindërtuar të dhënat nga përfaqësimi i kodimit. Modeli trajnohet derisa humbja të minimizohet dhe të dhënat të riprodhohen sa më afër që të jetë e mundur. Nëpërmjet këtij procesi, një kodues automatik mund të mësojë veçoritë e rëndësishme të të dhënave. Ndërsa ky është një përkufizim i shpejtë i një kodifikuesi automatik, do të ishte e dobishme t'i hidhnim një vështrim më të afërt koduesve automatikë dhe të kuptoni më mirë se si funksionojnë ata. Ky artikull do të përpiqet të çmitizojë koduesit automatikë, duke shpjeguar arkitekturën e autoenkoderëve dhe aplikimet e tyre.

Çfarë është një kodues automatik?

Autoenkoder janë rrjete nervore. Rrjetet nervore përbëhen nga shtresa të shumta, dhe aspekti përcaktues i një autoenkoderi është se shtresat hyrëse përmbajnë saktësisht po aq informacion sa shtresa e daljes. Arsyeja që shtresa hyrëse dhe shtresa e daljes kanë të njëjtin numër njësish është se një kodues automatik synon të kopjojë të dhënat hyrëse. Ai nxjerr një kopje të të dhënave pasi i analizon dhe rindërton në një mënyrë të pambikëqyrur.

Të dhënat që lëvizin përmes një kodifikuesi automatik nuk hartohen thjesht nga hyrja në dalje, që do të thotë se rrjeti nuk kopjon vetëm të dhënat hyrëse. Ekzistojnë tre komponentë për një kodues automatik: një pjesë e kodimit (hyrje) që kompreson të dhënat, një komponent që trajton të dhënat e ngjeshur (ose bllokimin) dhe një pjesë e dekoderit (daljes). Kur të dhënat futen në një kodues automatik, ato kodohen dhe më pas kompresohen në një madhësi më të vogël. Rrjeti më pas trajnohet mbi të dhënat e koduara/të ngjeshura dhe nxjerr një rikrijim të atyre të dhënave.

Pra, pse dëshironi të trajnoni një rrjet për të rindërtuar të dhënat që i janë dhënë? Arsyeja është se rrjeti mëson "esencën", ose veçoritë më të rëndësishme të të dhënave hyrëse. Pasi të keni trajnuar rrjetin, mund të krijohet një model që mund të sintetizojë të dhëna të ngjashme, me shtimin ose zbritjen e disa veçorive të synuara. Për shembull, mund të stërvitni një kodues automatik në imazhe me kokrra dhe më pas të përdorni modelin e trajnuar për të hequr kokrrën/zhurmën nga imazhi.

Arkitektura e koduesit automatik

Le të hedhim një vështrim në arkitektura e një autoenkoderi. Këtu do të diskutojmë arkitekturën kryesore të një koduesi automatik. Ka variacione në këtë arkitekturë të përgjithshme që do t'i diskutojmë në seksionin më poshtë.

Foto: Michela Massi nëpërmjet Wikimedia Commons, (https://commons.wikimedia.org/wiki/File:Autoencoder_schema.png)

Siç u përmend më parë, një autoenkoder në thelb mund të ndahet në tre komponentë të ndryshëm: koduesi, një bllokim i ngushtë dhe dekoderi.

Pjesa e koduesit të autoenkoderit është zakonisht një rrjet i lidhjes dendur, me prirje. Qëllimi i shtresave të kodimit është të marrin të dhënat hyrëse dhe t'i kompresojnë ato në një paraqitje latente të hapësirës, ​​duke gjeneruar një paraqitje të re të të dhënave që ka reduktuar dimensionalitetin.

Shtresat e kodit, ose ngushtica, merren me paraqitjen e ngjeshur të të dhënave. Kodi i bllokimit është projektuar me kujdes për të përcaktuar pjesët më të rëndësishme të të dhënave të vëzhguara, ose për të vendosur në atë mënyrë tiparet e të dhënave që janë më të rëndësishme për rindërtimin e të dhënave. Qëllimi këtu është të përcaktohet se cilat aspekte të të dhënave duhet të ruhen dhe cilat mund të hidhen poshtë. Kodi i ngushticës duhet të balancojë dy konsiderata të ndryshme: madhësinë e përfaqësimit (sa kompakte është përfaqësimi) dhe rëndësinë e variablave/tipareve. Gryka e ngushtë kryen aktivizimin sipas elementeve mbi peshat dhe paragjykimet e rrjetit. Shtresa e ngushticës nganjëherë quhet edhe një paraqitje latente ose variabla latente.

Shtresa e dekoderit është ajo që është përgjegjëse për marrjen e të dhënave të ngjeshur dhe konvertimin e tyre në një paraqitje me të njëjtat dimensione si të dhënat origjinale, të pandryshuara. Konvertimi bëhet me paraqitjen e hapësirës latente që është krijuar nga koduesi.

Arkitektura më themelore e një autoenkoderi është një arkitekturë e kthimit përpara, me një strukturë shumë të ngjashme me një perceptron me një shtresë të vetme që përdoret në perceptronet me shumë shtresa. Ashtu si rrjetet e rregullta nervore të furnizimit përpara, koduesi automatik është trajnuar përmes përdorimit të përhapjes së pasme.

Atributet e një kodifikuesi automatik

Ka lloje të ndryshme autoenkoderësh, por të gjithë kanë veti të caktuara që i bashkojnë.

Autoenkoderët mësojnë automatikisht. Ata nuk kërkojnë etiketa dhe nëse u jepen të dhëna të mjaftueshme, është e lehtë të marrësh një kodues automatik për të arritur performancë të lartë në një lloj specifik të dhënash hyrëse.

Autoencoders janë specifike për të dhënat. Kjo do të thotë që ata mund të kompresojnë vetëm të dhëna që janë shumë të ngjashme me të dhënat për të cilat koduesi automatik është trajnuar tashmë. Autoenkoderët janë gjithashtu me humbje, që do të thotë se rezultatet e modelit do të degradohen në krahasim me të dhënat hyrëse.

Kur dizajnojnë një kodues automatik, inxhinierët e mësimit të makinerive duhet t'u kushtojnë vëmendje katër hiperparametrave të ndryshëm të modelit: madhësia e kodit, numri i shtresës, nyjet për shtresë dhe funksioni i humbjes.

Madhësia e kodit vendos se sa nyje fillojnë pjesën e mesme të rrjetit dhe më pak nyje i kompresojnë të dhënat më shumë. Në një autoenkoder të thellë, ndërsa numri i shtresave mund të jetë çdo numër që inxhinieri e sheh të përshtatshëm, numri i nyjeve në një shtresë duhet të ulet ndërsa koduesi vazhdon. Ndërkohë, e kundërta është e vërtetë në dekoder, që do të thotë se numri i nyjeve për shtresë duhet të rritet ndërsa shtresat e dekoderit i afrohen shtresës përfundimtare. Së fundi, funksioni i humbjes së një autoenkoder është zakonisht ose binar-entropi ose gabim mesatar në katror. Entropia e kryqëzuar binare është e përshtatshme për rastet kur vlerat hyrëse të të dhënave janë në intervalin 0 – 1.

Llojet e koduesit automatik

Siç u përmend më lart, ekzistojnë variacione në arkitekturën klasike të autoenkoderit. Le të shqyrtojmë arkitekturat e ndryshme të autoenkoderit.

I rrallë

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

Ndërsa autoenkoderët zakonisht kanë një pengesë që ngjesh të dhënat përmes një reduktimi të nyjeve, autoenkoder i rrallës janë një alternativë ndaj atij formati tipik operacional. Në një rrjet të rrallë, shtresat e fshehura mbajnë të njëjtën madhësi si shtresat e koduesit dhe dekoderit. Në vend të kësaj, aktivizimet brenda një shtrese të caktuar penalizohen, duke e vendosur atë në mënyrë që funksioni i humbjes të kap më mirë tiparet statistikore të të dhënave hyrëse. Për ta thënë ndryshe, ndërsa shtresat e fshehura të një kodifikuesi automatik të rrallë kanë më shumë njësi se një autoenkoder tradicional, vetëm një përqindje e caktuar e tyre janë aktive në çdo kohë të caktuar. Funksionet më me ndikim të aktivizimit ruhen dhe të tjerat shpërfillen, dhe ky kufizim ndihmon rrjetin të përcaktojë vetëm veçoritë më të spikatura të të dhënave hyrëse.

Kontraktuese

Autoenkoderë kontraktues janë të dizajnuara për të qenë elastike ndaj variacioneve të vogla të të dhënave, duke ruajtur një paraqitje të qëndrueshme të të dhënave. Kjo realizohet duke aplikuar një penalitet për funksionin e humbjes. Kjo teknikë rregullimi bazohet në normën Frobenius të matricës Jacobian për aktivizimet e koduesit të hyrjes. Efekti i kësaj teknike rregullimi është se modeli detyrohet të ndërtojë një kodim ku inputet e ngjashme do të kenë kodime të ngjashme.

Convolutional

Autoenkodues konvolucional kodoni të dhënat hyrëse duke i ndarë të dhënat në nënseksione dhe më pas duke i konvertuar këto nënseksione në sinjale të thjeshta që përmblidhen së bashku për të krijuar një paraqitje të re të të dhënave. Ngjashëm me rrjetet nervore të konvolucionit, një autoenkoder konvolucional specializohet në mësimin e të dhënave të imazhit dhe përdor një filtër që zhvendoset në të gjithë imazhin seksion pas seksioni. Kodimet e krijuara nga shtresa e kodimit mund të përdoren për të rindërtuar imazhin, për të pasqyruar imazhin ose për të modifikuar gjeometrinë e figurës. Pasi filtrat të jenë mësuar nga rrjeti, ato mund të përdoren në çdo hyrje mjaft të ngjashme për të nxjerrë veçoritë e imazhit.

Denoising

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

Denoising autoencoders futni zhurmë në kodim, duke rezultuar në një kodim që është një version i korruptuar i të dhënave hyrëse origjinale. Ky version i korruptuar i të dhënave përdoret për të trajnuar modelin, por funksioni i humbjes krahason vlerat e daljes me hyrjen origjinale dhe jo me hyrjen e dëmtuar. Qëllimi është që rrjeti të jetë në gjendje të riprodhojë versionin origjinal, jo të korruptuar të imazhit. Duke krahasuar të dhënat e dëmtuara me të dhënat origjinale, rrjeti mëson se cilat veçori të të dhënave janë më të rëndësishme dhe cilat veçori janë të parëndësishme/korruptime. Me fjalë të tjera, në mënyrë që një model të denoise imazhet e korruptuara, duhet të ketë nxjerrë veçoritë e rëndësishme të të dhënave të imazhit.

Variacionale

Autoenkoder variacional veprojnë duke bërë supozime se si shpërndahen variablat latente të të dhënave. Një kodues automatik variacional prodhon një shpërndarje probabiliteti për veçoritë e ndryshme të imazheve të trajnimit/atributet latente. Gjatë stërvitjes, koduesi krijon shpërndarje latente për veçoritë e ndryshme të imazheve hyrëse.

 

Për shkak se modeli mëson veçoritë ose imazhet si shpërndarje Gaussian në vend të vlerave diskrete, ai mund të përdoret për të gjeneruar imazhe të reja. Shpërndarja Gaussian është kampionuar për të krijuar një vektor, i cili futet në rrjetin e dekodimit, i cili jep një imazh të bazuar në këtë vektor të mostrave. Në thelb, modeli mëson tiparet e përbashkëta të imazheve të trajnimit dhe u cakton atyre disa probabilitete që ato të ndodhin. Shpërndarja e probabilitetit mund të përdoret më pas për të rindërtuar një imazh, duke gjeneruar imazhe të reja që ngjajnë me imazhet origjinale të trajnimit.

Gjatë trajnimit të rrjetit, të dhënat e koduara analizohen dhe modeli i njohjes nxjerr dy vektorë, duke nxjerrë mesataren dhe devijimin standard të imazheve. Një shpërndarje krijohet bazuar në këto vlera. Kjo bëhet për gjendje të ndryshme latente. Më pas, dekoderi merr mostra të rastësishme nga shpërndarja përkatëse dhe i përdor ato për të rindërtuar hyrjet fillestare në rrjet.

Aplikacionet e kodifikuesit automatik

Autoencoders mund të përdoren për një të gjerë shumëllojshmëri aplikimesh, por ato zakonisht përdoren për detyra të tilla si zvogëlimi i dimensioneve, denoising i të dhënave, nxjerrja e veçorive, gjenerimi i imazhit, parashikimi sekuencë në sekuencë dhe sistemet e rekomandimit.

Denoisimi i të dhënave është përdorimi i autoenkoderëve për të hequr kokrrat/zhurmat nga imazhet. Në mënyrë të ngjashme, koduesit automatikë mund të përdoren për të riparuar lloje të tjera të dëmtimit të imazhit, si imazhe të paqarta ose imazhe që mungojnë seksione. Reduktimi i dimensioneve mund të ndihmojë rrjetet me kapacitet të lartë të mësojnë veçori të dobishme të imazheve, që do të thotë se kodifikuesit automatikë mund të përdoren për të rritur trajnimin e llojeve të tjera të rrjeteve nervore. Kjo është gjithashtu e vërtetë për përdorimin e kodifikuesve automatikë për nxjerrjen e veçorive, pasi kodifikuesit automatikë mund të përdoren për të identifikuar veçoritë e grupeve të të dhënave të tjera të trajnimit për të trajnuar modele të tjera.

Për sa i përket gjenerimit të imazheve, kodifikuesit automatikë mund të përdoren për të gjeneruar imazhe të rreme njerëzore ose karaktere të animuara, të cilat kanë aplikime në dizajnimin e sistemeve të njohjes së fytyrës ose automatizimin e aspekteve të caktuara të animacionit.

Modelet e parashikimit nga sekuenca në sekuencë mund të përdoren për të përcaktuar strukturën kohore të të dhënave, që do të thotë se një kodues automatik mund të përdoret për të gjeneruar tjetrin edhe në një sekuencë. Për këtë arsye, një kodues automatik mund të përdoret për të gjeneruar video. Së fundi, kodifikuesit automatikë të thellë mund të përdoren për të krijuar sisteme rekomandimi duke zgjedhur modele që lidhen me interesin e përdoruesit, me koduesin që analizon të dhënat e angazhimit të përdoruesit dhe dekoderi krijon rekomandime që përshtaten me modelet e vendosura.

Bloger dhe programues me specialitete në Mësim Machine Mësim i thellë temave. Daniel shpreson të ndihmojë të tjerët të përdorin fuqinë e AI për të mirën sociale.