Skip to content

Archives

  • tammikuu 2022
  • joulukuu 2021
  • marraskuu 2021
  • lokakuu 2021
  • syyskuu 2021

Categories

  • Ei kategorioita
Trend RepositoryArticles and guides
Articles

Mitä ovat autokooderit?

On 11 marraskuun, 2021 by admin
  • Helppo johdatus autokooderiin ja sen eri sovelluksiin. Myös näissä opetusohjelmissa käytetään tf.keras,TensorFlow’n korkean tason Python API:ta syväoppimismallien rakentamiseen ja kouluttamiseen.
  • Vaikeusaste: ★ ★ ☆ ☆ ☆ ☆
  • Mikä on Autoencoder?
  • Encoder:
  • Decoder:
  • Autokooderin tyypit
  • 2-1. Unet:
  • 2-2. Rekursiiviset autokooderit:
  • 2-Seq2Seq:
  • Autokooderin sovellukset
  • 3-1. Mallin esivalmennettu paino
  • 3-2. Kuvan segmentointi
  • 3-3. Video tekstiksi
  • 3-4. Kuvanhaku
  • 3-5. Anomalian havaitseminen
  • Toteutus
  • 4-1. Luo malli – Vallina_AE:
  • Load data & model preprocess
  • Luo malli – Vallina_AE:
  • Mallin kääntäminen & training
  • 4-2. Luo malli.- Conv_AE:
  • 4-3. Luo malli – denoise_AE:
  • Hyviä esimerkkejä
  • Johtopäätökset

Helppo johdatus autokooderiin ja sen eri sovelluksiin. Myös näissä opetusohjelmissa käytetään tf.keras,TensorFlow’n korkean tason Python API:ta syväoppimismallien rakentamiseen ja kouluttamiseen.

Evans Tsai

Follow

Mar 9, 2019 – 16 min read

常常見到 Autoencoder 的變形以及應用,打算花幾篇的時間好好的研究一下,順便練習 Tensorflow.keras 的 API 使用。

  1. Mikä on autokooderi
  2. Autokooderin tyypit
  3. Autokooderin sovellus
  4. Toteutus
  5. Toteutus
  6. Suuret esimerkit
  7. Johtopäätös

Vaikeusaste: ★ ★ ☆ ☆ ☆ ☆

後記: 由於 Tensorflow 2.0 alpha 已於 3/8號釋出,但此篇是在1月底完成的,故大家可以直接使用安裝使用看看,但需要更新至相對應的 CUDA10。

Mikä on Autoencoder?

首先,什麼是 Autoencoder 呢? 不囉唆,先看圖吧! 不囉唆,先看圖吧!

lähde : Julien Despois

Autokooderin alkuperäinen konsepti on hyvin yksinkertainen, se on syöttää syöttötiedot ja saada täsmälleen samat tiedot kuin syöttötiedot neuraalisen verkon avulla.Kooderi ottaa ensin vastaan syötetyn datan, pakkaa sen pienemmän ulottuvuuden vektoriksi Z ja syöttää sitten Z:n dekooderiin, joka palauttaa Z:n alkuperäiseen kokoonsa.Tämä kuulostaa helpolta, mutta katsotaanpa tarkemmin, onko se todella niin helppoa.

lähde: EvansTsai

Encoder:

Encoder on vastuussa alkuperäisen syöttötiedon pakkaamisesta matalaulotteiseksi vektoriksi C. Tätä C:tä, jota kutsumme yleensä koodiksi, latentiksi vektoriksi tai ominaisuusvektoriksi, mutta olen tottunut kutsumaan sitä latentiksi avaruudeksi, koska C edustaa piilotettua ominaisuutta.Kooderi voi pakata alkuperäisen datan mielekkääksi matalaulotteiseksi vektoriksi, mikä tarkoittaa, että Autoencoderilla on ulottuvuuden vähentäminen, ja piilokerroksessa on epälineaarinen muunnosaktivointi, joten tämä kooderi on kuin tehokas versio PCA:sta, koska kooderi voi tehdä epälineaarisen muunnoksen.ulottuvuuden vähentäminen!

Decoder:

Decoder palauttaa latenttiavaruuden takaisin syöttöaineistoon niin pitkälle kuin mahdollista, mikä on ominaisvektoreiden muunnos alempiulotteisesta avaruudesta korkeampiulotteiseen avaruuteen.

Miten siis mitataan kuinka hyvin Autoencoder toimii ! Yksinkertaisesti vertaamalla kahden alkuperäisen syöttötiedon ja rekonstruoidun tiedon samankaltaisuutta.Joten tappiofunktiomme voidaan kirjoittaa seuraavasti: ….AutoEncoder koulutetaan käyttämällä backpropagation-menetelmää painojen päivittämiseksi, aivan kuten tavallisessa neuroverkossa.päivittää painot.

Yhteenvetona voidaan todeta, että Autoencoder on osoitteessa …..
1. hyvin yleinen malliarkkitehtuuri, jota käytetään yleisesti myös valvomattomaan oppimiseen
2. voidaan käyttää dimensioiden pienentämismenetelmänä epälineaarisessa
3. voidaan käyttää datan representaation oppimiseen, edustavien ominaisuuksien muuntamiseen

Tässä vaiheessa pitäisi olla helppo ymmärtää, millainen Autoencoder on, arkkitehtuuri on hyvin yksinkertainen, joten katsotaanpa sen muunnoksia!

Autokooderin tyypit

Autokooderin perusperiaatteiden selittämisen jälkeen on aika tarkastella autokooderin laajennettua ja edistynyttä käyttöä, jotta näet autokooderin laajan käytön!

2-1. Unet:

Unet-arkkitehtuuria voidaan käyttää yhtenä kuvan segmentointikeinona, ja Unet-arkkitehtuuria voidaan pitää muunnelmana Autoencoderista.

Lähde: Unet

2-2. Rekursiiviset autokooderit:

Kyseessä on verkko, joka yhdistää uuden syötetekstin latenttiin tilaan muista syötteistä, tämän verkon tarkoituksena on sentimenttien luokittelu.Tämä voidaan nähdä myös muunnelmana automaattisesta koodauksesta, joka poimii harvan tekstin sitä mukaa, kun sitä kirjoitetaan, ja löytää tärkeän latentin tilan.

Lähde: https://www.youtube.com/watch?v=FSKag11y8yI

2-Seq2Seq:

Sequence to Sequence on generatiivinen malli, joka on ollut hyvin suosittu jo jonkin aikaa. Se on loistava ratkaisu siihen dilemmaan, että RNN-tyypit eivät pysty käsittelemään epämääräisiä pareja, ja se on toiminut hyvin esimerkiksi chatbottien ja tekstien generoinnissa.Tämä voidaan nähdä myös eräänlaisena autokooderiarkkitehtuurina.

Autokooderin sovellukset

Kun olemme tutustuneet Autoencoderin moniin ja erilaisiin variaatioihin, katsotaanpa, missä muualla Autoencoderia voidaan käyttää!

3-1. Mallin esivalmennettu paino

Painon esivalmennukseen voidaan käyttää myös automaattikooderia, jolloin malli löytää paremman lähtöarvon.Esimerkiksi kun haluamme täydentää kohdemallia, kuten tavoite. piilotettu kerros on:, joten alussa käytämme automaattisen kooderin käsitettä 784 ulottuvuuden syöttämiseen, ja latentti tila keskellä on 1000 ulottuvuutta, jotta voimme tehdä esivalmennuksen ensin, joten nämä 1000 ulottuvuutta voivat hyvin säilyttää syötteen.Sitten poistamme alkuperäisen ulostulon ja lisäämme toisen kerroksen, ja niin edelleen.Näin koko malli saa paremman lähtöarvon.

Huh! Jos käytät 1000 neuronia edustamaan 784 tuloulottuvuutta, eikö se tarkoita, että verkko on kopioitava uudestaan? Mitä hyötyä koulutuksesta on? Kyllä, siksi tällaisessa esivalmennuksessa lisätään yleensä L1-normin tasoittaja, jotta piilokerrosta ei kopioida uudestaan.

lähde: Li Hongyi

Lähde: Li Hongyi

Li Hongyin mukaan -Aikaisemmin oli yleisempää käyttää tällaista menetelmää esivalmennuksessa, mutta nykyään, kun valmennustaidot ovat lisääntyneet, tätä menetelmää ei enää tarvita.Mutta jos sinulla on hyvin vähän etiketöityä dataa mutta paljon etiketöimätöntä dataa, voit käyttää tätä menetelmää painon esivalmennukseen, koska Autoencoder itsessään on valvomaton oppimismenetelmä, käytämme ensin etiketöimätöntä dataa painon esivalmennukseen ja sitten etiketöimätöntä dataa painon esivalmennukseen.Käytämme merkitsemätöntä dataa ensin painojen esiharjoitteluun ja sitten merkityn datan avulla painojen hienosäätöön, jotta saamme hyvän mallin.Jos haluat lisätietoja, katso herra Li:n video, se on hyvin selitetty!

3-2. Kuvan segmentointi

Äsken näkemäämme Unet-mallia tarkastellaan vielä kerran, koska se on periaatteessa yleisin vikojen havaitsemisongelma Taiwanin valmistusteollisuudessa.

Ensin meidän täytyy merkitä syöttötieto, josta tulee tuotoksemme. Meidän täytyy rakentaa verkko, syöttää alkuperäinen kuva (vasen, hampaan röntgenkuvat) ja tuottaa tuotos (oikea, hampaan rakenteen luokittelu).Tässä tapauksessa kooderi & dekooderi on konvoluutiokerros, jossa on vahva graafinen arviointi, mielekkäiden piirteiden poimiminen ja dekonvoluutio takaisin dekooderissa segmentointituloksen saamiseksi.

lähde: kuvan segmentointi

3-3. Video tekstiksi

Tämänkaltaisessa kuvatekstiongelmassa käytämme sekvenssistä sekvenssiin -mallia, jossa lähtötietona on joukko valokuvia ja tuloksena valokuvia kuvaava teksti.Sekvenssistä sekvenssiin -mallissa käytetään kooderina LSTM + Conv-verkkoa & dekooderina, joka voi kuvata peräkkäisten toimintojen sekvenssiä & CNN-ytimen avulla poimimaan kuvassa tarvittavan latentin tilan.mutta tämä tehtävä on hyvin vaikea, joten annan sinun kokeilla sitä, jos olet kiinnostunut!

Sequence to Sequence – Video toTeksti

3-4. Kuvanhaku

Kuvanhaku Asia on niin, että syötetään kuva ja yritetään löytää lähin vastaavuus, mutta jos verrataan pikseleittäin, niin on todella helppoJos käytät Autoencoderia pakkaamaan kuvan ensin latenttiavaruuteen ja lasket sitten samankaltaisuuden kuvan latenttiavaruudesta, tulos on paljon parempi.Tulos on paljon parempi, koska jokainen latenttiavaruuden ulottuvuus voi edustaa tiettyä ominaisuutta.Jos etäisyys lasketaan latentista avaruudesta, on järkevää löytää samankaltaisia kuvia.Erityisesti tämä olisi loistava tapa valvomattomaan oppimiseen ilman datan merkitsemistä!

Lasketaan latenttiavaruudessa etäisyys

Tässä ovat.Kuuluisan Deep Learning -jumalan Georey E. Hintonin paperissa vasemmassa yläkulmassa näkyy graafi, jota haluat etsiä, kun taas muut ovat kaikki graafit, joita autokooderi pitää hyvin samankaltaisina.7133>

Using Very Deep Autoencoders for
Content-BasedImage Retrieval

3-5. Anomalian havaitseminen

Ei löydy hyvää kuvaa, joten jouduin käyttämään tätä LOL
Anomalioiden havaitseminen on myös super yleinen valmistusongelma, joten tätä ongelmaa voi kokeilla myös AutoencoderillaVoimme kokeilla sitä Autoencoderilla!Puhutaan ensin poikkeamien todellisesta esiintymisestä. Poikkeamia esiintyy yleensä hyvin harvoin, esimerkiksi epänormaaleja signaaleja koneessa, äkillisiä lämpötilapiikkejä …… jne.Tämä tapahtuu kerran kuukaudessa (jos useammin, kone pitäisi pakottaa eläkkeelle). Jos tietoja kerätään 10 sekunnin välein, joka kuukausi kerätään 260 000 dataa, mutta vain yksi ajanjakso on poikkeava, mikä on itse asiassa hyvin epätasapainoinen määrä tietoja.

Paras tapa käsitellä tätä tilannetta on siis hakea alkuperäistä dataa, joka on loppujen lopuksi suurin datamäärä, joka meillä on!Jos voimme ottaa hyvän datan ja kouluttaa hyvän autokooderin, niin jos siihen tulee poikkeamia, rekonstruoitu grafiikka luonnollisesti rikkoutuu.Näin saimme alkusysäyksen ajatukselle käyttää autokooderia poikkeamien löytämiseen!

löytää-anomalioita

Toteutus

Tässä käytämme Mnistiä leluesimerkkinä ja toteutamme autokooderin käyttäen Tensorflow.keras korkean tason API:ta! Koska uusi paketti tf.kerasille julkaistiin lähiaikoina, harjoittelemme Model-alaluokittelumenetelmän käyttöä tiedostossa

4-1. Luo malli – Vallina_AE:

Ensin tuota tensorflow!7133>

Pika-asennus Tensorflow 2.0:n esikatseluversiosta (* ̄▽ ̄)/‧☆*”`’*-.,_,.-*’`”*-.,_☆

Tf.kerasin käyttö on näin yksinkertaista, kirjoita vain tf.keras!(En tiedä mistä puhun lol)

Load data & model preprocess

Ensin otamme Mnist-datan tf.keras.datasetista ja teemme pienen esikäsittelyn

Nomalize: pakkaa arvot 0:n ja 1:n välille, harjoittelu on helpompaa

Binarization: korosta selvemmät alueet, harjoittelu antaa parempia tuloksia.

Luo malli – Vallina_AE:

Tämä on Tensorflow-dokumentin tarjoama menetelmä mallien luomiseen.monimutkaisempi.
Mitä olen tähän mennessä oppinut, on luoda kerros __init __-paikassa ja määritellä eteenpäin kulku kutsussa.

Käytämme siis kahta peräkkäistä mallia luodaksemme kooderin & dekooderin. kaksi on symmetrinen rakenne, kooderi on kytketty sisääntulokerrokseen, joka on vastuussa syöttötietojen kuljettamisesta, ja sitten kolmeen tiheään kerrokseen. dekooderi on sama.

Jälleen kutsun alla on ketjutettava kooderi & dekooderi, määrittelemällä ensin latentti tila self.encoder:n ulostuloksi.tila self.encoder:n ulostulona ja sitten rekonstruktio dekooderin läpäisyn tuloksena.Tämän jälkeen yhdistämme tf.keras.Model():n avulla kaksi mallia, jotka määrittelimme __init__:ssä.AE_model = tf.keras.Model(inputs = self.encoder.input, outputs = reconstruction) määrittää input kooderin inputiksi ja output dekooderin outputiksi, ja siinä kaikki!Sitten palautamme AE_modelin ja olet valmis!

Mallin kääntäminen & training

Ennen kuin Keras voi kouluttaa mallin, se on käännettävä ennen kuin se voidaan pudottaa koulutukseen.Kokoonpanossa määrittelet optimoijan, jota haluat käyttää ja tappion, jonka haluat laskea.

Harjoittelussa käytä VallinaAE.fit datan syöttämiseen, mutta muista, että palautamme itseämme, joten X ja Y on heitettävä samaan dataan.

Katsotaanpa 100 epookin harjoittelun tuloksia, näyttää siltä, että rekonstruointitulokset eivät ole niin hyviä kuin luulimme.

4-2. Luo malli.- Conv_AE:

Kuten nimestä käy ilmi, voimme käyttää konvoluutiokerrosta piilokerroksena oppiaksemme ominaisuuksia, jotka voidaan rekonstruoida takaisin.

Mallin muuttamisen jälkeen voit tarkastella tuloksia ja nähdä, onko parannusta tapahtunut.

Näyttää siltä, että rekonstruktiolla saadaan paljon parempia tuloksia, kun harjoittelua on suoritettu noin 10 epokkaa.

4-3. Luo malli – denoise_AE:

Autokooderia voidaan käyttää myös kohinanpoistoon, joten tässä tapauksessa me

Aluksi voimme lisätä alkuperäiseen kuvaan kohinaa. Kohinan lisäämisen logiikka on tehdä yksinkertainen siirto alkuperäiselle pikselille ja lisätä sitten satunnaislukuja.Kuvan esikäsittelyn voi tehdä yksinkertaisesti muuttamalla leikkeen arvoksi 0, jos se on pienempi kuin 0, ja arvoksi 1, jos se on suurempi kuin 1. Kuten alla näkyy, leikkeen kuvankäsittelyn jälkeen voimme tehdä kuvasta terävämmän ja näkyvistä alueista näkyvämpiä.Tämä antaa meille paremman tuloksen, kun käytämme Autoencoderia.

Leikkeen

ja itse mallin ja Conv_AE välillä ei ole eroa.Itse mallin ja Conv_AE:n välillä ei ole eroa, paitsi että sovituksen aikana se on muutettava muotoon

denoise_AE.fit(train_images_noise, train_images, epochs=100, batch_size=128, shuffle=True)

, jotta alkuperäinen noise_data palautuu alkuperäiseen input-dataan

.

Kuten näet, Mnistissä yksinkertaisella autokooderilla saavutetaan hyvin nopea denoising-vaikutus.

Hyviä esimerkkejä

Tämä on hyvä resurssi niille, jotka ovat kiinnostuneita oppimaan lisää

  1. Autoencodereiden rakentaminen Kerasissa autoencoder-sarja on selkeästi kirjoitettu.
  2. Tensorflow 2.0 virallinen dokumentaatio opetusohjelma, jotain hyvin täydellinen, vain kirjoittaa hieman vaikea, viettää melko paljon aikaa nähdä (ainakin minä vetää XD)

3. Li Hongyi opettaja syväoppimisen on myös erittäin suositeltavaa, puhua hyvin selkeä ja helppo ymmärtää, ei-

Johtopäätökset

Tämän artikkelin avulla voit nopeasti selvittää autokooderin peruskäsitteen, eräitä autokooderin muunnelmia ja sovelluksia.skenaarioita.4310>

Seuraavissa artikkeleissa aloitetaan generatiivisista malleista, jotka ulottuvat autokooderin, VAE:n ja GAN:n käsitteistä, ja matkan varrella tehdään myös muita laajennuksia ja muunnoksia.

Jos pidit artikkelista, klikkaa vielä muutama taputus (ei vain kerran) kannustukseksi!
Lue tämän artikkelin koodi kokonaisuudessaan:https://github.com/EvanstsaiTW/Generative_models/blob/master/AE_01_keras.ipynb

Vastaa Peruuta vastaus

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

Arkistot

  • tammikuu 2022
  • joulukuu 2021
  • marraskuu 2021
  • lokakuu 2021
  • syyskuu 2021

Meta

  • Kirjaudu sisään
  • Sisältösyöte
  • Kommenttisyöte
  • WordPress.org
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語

Copyright Trend Repository 2022 | Theme by ThemeinProgress | Proudly powered by WordPress