Skip to content

Archives

  • 2022 január
  • 2021 december
  • 2021 november
  • 2021 október
  • 2021 szeptember

Categories

  • Nincs kategória
Trend RepositoryArticles and guides
Articles

Mi az Autoencoder?

On november 11, 2021 by admin
  • Egy szelíd bevezető az Autoencoderről és annak különböző alkalmazásairól. Ezek az oktatóanyagok is a tf.keras-t használják,TensorFlow magas szintű Python API-ját a mélytanulási modellek építéséhez és képzéséhez.
  • Nehézség: ★ ★ ☆ ☆ ☆ ☆
  • Mi az Autoencoder?
  • Kódoló:
  • Decoder:
  • Veszteségfüggvény:
  • Az Autoencoder típusai
  • 2-1. Unet:
  • 2-2. Rekurzív automatikus kódolók:
  • 2-Seq2Seq:
  • Az automatikus kódoló alkalmazásai
  • 3-1. A modell előképzett súlya
  • 3-2. Képszegmentálás
  • 3-3. Video to Text
  • 3-4. Képkeresés
  • 3-5. Anomaly Detection
  • Implementáció
  • 4-1. Modell létrehozása – Vallina_AE:
  • Adatok betöltése & modell előfeldolgozás
  • Modell létrehozása – Vallina_AE:
  • Model Compile & training
  • 4-2. Modell létrehozása.- Conv_AE:
  • 4-3. Modell létrehozása – denoise_AE:
  • Nagyszerű példák
  • Következtetés

Egy szelíd bevezető az Autoencoderről és annak különböző alkalmazásairól. Ezek az oktatóanyagok is a tf.keras-t használják,TensorFlow magas szintű Python API-ját a mélytanulási modellek építéséhez és képzéséhez.

Evans Tsai

Follow

Mar 9, 2019 – 16 min read

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

  1. Mi az Autoencoder
  2. Az Autoencoder típusai
  3. Az Autoencoder alkalmazása
  4. Implementáció
  5. Megvalósítás
  6. Nagyszerű példák
  7. Következtetés

Nehézség: ★ ★ ☆ ☆ ☆ ☆

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

Mi az Autoencoder?

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

forrás : Julien Despois

Az Autoencoder eredeti koncepciója nagyon egyszerű: egy neurális hálózaton keresztül bedobunk egy bemeneti adatot, és pontosan ugyanazokat az adatokat kapjuk, mint a bemeneti adatok.A kódoló először befogadja a bemeneti adatokat, tömöríti azokat egy kisebb dimenziójú Z vektorba, majd a Z-t beviszi a dekódolóba, hogy a Z-t visszaállítsa az eredeti méretre.Ez könnyen hangzik, de nézzük meg közelebbről, hogy tényleg ilyen egyszerű-e.

forrás: EvansTsai

Kódoló:

A kódoló felelős az eredeti bemeneti adatok tömörítéséért egy alacsony dimenziós vektorba C. Ez a C, amit általában kódnak, látens vektornak vagy feature vektornak nevezünk, de én látens térnek szoktam nevezni, mert a C egy rejtett feature-t képvisel.Az Encoder képes az eredeti adatokat egy értelmes alacsony dimenziós vektorba tömöríteni, ami azt jelenti, hogy az Autoencoder dimenziócsökkentéssel rendelkezik, és a rejtett réteg nemlineáris transzformációs aktiválási funkcióval rendelkezik, így ez az Encoder olyan, mint a PCA egy hatékony változata, mivel az Encoder képes nemlineárisdimenziócsökkentés!

Decoder:

Amit a Decoder csinál, az a látens tér visszaállítása a bemeneti adatokhoz, amennyire csak lehetséges, ami a jellemzővektorok átalakítása az alacsonyabb dimenziós térből a magasabb dimenziós térbe.

Hogyan mérjük, mennyire jól működik az Autoencoder ! Egyszerűen a két eredeti bemeneti adat és a rekonstruált adatok hasonlóságának összehasonlításával.Tehát a veszteségfüggvényünk a következőképpen írható fel: ….

Veszteségfüggvény:

Mivel minimalizálni akarjuk a különbséget aAz AutoEncoder a normál neurális hálózathoz hasonlóan a súlyok frissítéséhez backpropagationt alkalmazva képződik.frissítse a súlyokat.

Összefoglalva, az Autoencoder a …. oldalon található.
1. nagyon elterjedt modellarchitektúra, gyakran használják nem felügyelt tanuláshoz is
2. nemlineáris
3. dimenziócsökkentő módszerként használható nemlineáris
3. adatreprezentáció, reprezentatív jellemző transzformáció tanulására használható

Ezen a ponton már érthetőnek kell lennie, hogy milyen az Autoencoder, az architektúra nagyon egyszerű, nézzük meg a transzformációit!

Az Autoencoder típusai

Az AutoEncoder alapelveinek ismertetése után itt az ideje, hogy megnézzük az Autoencoder kiterjesztett és haladó használatát, hogy láthassuk az Autoencoder széleskörű használatát!

2-1. Unet:

Az Unet a képszegmentálás egyik eszközeként használható, és az Unet architektúra az Autoencoder egy változatának tekinthető.

Forrás: Unet

2-2. Rekurzív automatikus kódolók:

Ez egy olyan hálózat, amely az új bemeneti szöveget más bemenetekből származó látens térrel kombinálja, a hálózat célja az érzetosztályozás.Ez az Autoencoder egy változatának is tekinthető, amely a ritkás szöveget gépelés közben kivonja, és megtalálja a fontos látens teret.

Forrás: https://www.youtube.com/watch?v=FSKag11y8yI

2-Seq2Seq:

A Sequence to Sequence egy generatív modell, amely már egy ideje nagyon népszerű. Nagyszerű megoldás arra a dilemmára, hogy az RNN típusok nem képesek kezelni a határozatlan párosításokat, és jól teljesített olyan témákban, mint a chatbot és a szöveggenerálás.Ez egyfajta Autoencoder architektúrának is tekinthető.

Az automatikus kódoló alkalmazásai

Miután megnéztük az Autoencoder sokféle változatát, lássuk, hol lehet még használni az Autoencodert!

3-1. A modell előképzett súlya

Autoencoder a súly előképzésére is használható, ami azt jelenti, hogy a modell jobb kiindulási értéket talál.Például, amikor szeretnénk befejezni a célmodellt, például a célt. rejtett réteg:, így az elején az autoencoder fogalmát használjuk a 784 dimenzió bevitelére, és a látens tér közepén 1000 dimenzió van, hogy először az előképzést végezzük, így ezek az 1000 dimenziók jól megtartják a bemenetet.Ezután eltávolítjuk az eredeti kimenetet, és hozzáadjuk a második réteget, és így tovább.Így az egész modell jobb kiindulási értéket kap.

Huh! Van egy furcsa rész… ha 1000 neuront használunk a 784 bemeneti dimenzió reprezentálására, az nem azt jelenti, hogy a hálózatot újra kell másolni? Mi értelme az edzésnek? Igen, ezért egy ilyen előzetes tréningben általában hozzáadjuk az L1 normaszabályozót, hogy a rejtett réteget ne másoljuk újra.

forrás: Li Hongyi úr

Li Hongyi úr szerintRégebben gyakrabban használtak ilyen módszert az előképzéshez, de mostanra a képzési készségek növekedése miatt már nincs szükség erre a módszerre.De ha nagyon kevés címkézett adatod van, de egy csomó címkézetlen adatod van, akkor ezt a módszert használhatod a súly-előképzéshez, mert az Autoencoder maga egy felügyelet nélküli tanulási módszer, először a címkézetlen adatokat használjuk a súly-előképzéshez, majd a címkézetlen adatokat használjuk a súly-előképzéshez.Először a címkézetlen adatokat használjuk a súlyok előtanulmányozására, majd a címkézett adatokkal finomhangoljuk a súlyokat, hogy jó modellt kapjunk.További részletekért nézze meg Li úr videóját, nagyon jól elmagyarázza!

3-2. Képszegmentálás

Az imént látott Unet-modellt nézzük meg újra, mert alapvetően ez a leggyakoribb hibafelismerési probléma a tajvani gyártóiparban.

Először meg kell címkéznünk a bemeneti adatokat, amelyek a kimenetünk lesznek. Azt kell tennünk, hogy felépítünk egy hálózatot, bemenetként az eredeti képet (balra, fogröntgenfelvételek), és létrehozzuk a kimenetet (jobbra, fogszerkezeti osztályozás).Ebben az esetben a kódoló & dekódoló egy konvolúciós réteg lesz erős grafikus megítéléssel, értelmes jellemzők kinyerésével és dekonvolúcióval vissza a dekódolóba, hogy megkapja a szegmentálás eredményét.

forrás: képszegmentálás

3-3. Video to Text

Egy ilyen képfelirat-problémához a szekvencia-szekvencia modellt használjuk, ahol a bemeneti adat egy csomó fénykép, a kimenet pedig egy, a fényképeket leíró szöveg.A szekvenciáról szekvenciára modell LSTM + Conv hálót használ kódoló & dekódolóként, amely képes leírni a szekvenciális cselekvések sorozatát & a CNN kernel segítségével a képben szükséges látens tér kinyerésére.de ez a feladat nagyon nehéz, ezért hagyom, hogy kipróbáld, ha érdekel!

Sequence to Sequence – Video toSzöveg

3-4. Képkeresés

Képkeresés A dolog lényege, hogy beviszünk egy képet, és megpróbáljuk megtalálni a legközelebbi egyezést, de ha pixelenként hasonlítjuk össze, akkor nagyon egyszerű aHa az Autoencoder segítségével először tömöríti a képet a látens térbe, majd a hasonlóságot a kép látens terében számítja ki, az eredmény sokkal jobb lesz.Az eredmény sokkal jobb, mivel a látens tér minden dimenziója egy bizonyos jellemzőt képviselhet.Ha a távolságot a látens téren számoljuk ki, akkor ésszerű a hasonló képek megtalálása.Ez különösen nagyszerű módja lenne a felügyelet nélküli tanulásnak, adatok címkézése nélkül!

A látens téren számítsuk ki a távolságot

Itt vannak.Georey E. Hinton, a híres Deep Learning-isten dolgozatában a bal felső sarokban látható a keresett gráf, míg a többi mind olyan gráf, amelyről az autoencoder azt gondolja, hogy nagyon hasonló.7133>

Using Very Deep Autoencoders for
Content-BasedImage Retrieval

3-5. Anomaly Detection

Nem találok jó képet, ezért ezt kellett használnom LOL
Az anomáliák megtalálása szintén egy szuper gyakori gyártási probléma, így ezt a problémát is meg lehet próbálni az Autoencoderrel.Kipróbálhatjuk az Autoencoderrel!Először is beszéljünk az anomáliák tényleges előfordulásáról. Az anomáliák általában nagyon ritkán fordulnak elő, például a gépből érkező rendellenes jelek, hirtelen hőmérséklet-emelkedések …… stb.Ez havonta egyszer történik (ha többször, akkor a gépet nyugdíjba kell küldeni). Ha az adatokat 10 másodpercenként gyűjtik, akkor havonta 260 000 adatot gyűjtenek, de csak egy időszakban van anomália, ami valójában nagyon kiegyensúlyozatlan adatmennyiség.

Tehát a legjobb megoldás ebben a helyzetben, ha az eredeti adatokra támaszkodunk, amelyek végül is a legnagyobb adatmennyiséget jelentik!Ha fogjuk a jó adatokat, és betanítunk egy jó autoencodert, akkor ha anomáliák jönnek be, akkor természetesen a rekonstruált grafika megszakad.Így született meg az ötlet, hogy autoencoderrel keressünk anomáliákat!

finding-anomalies

Implementáció

Itt a Mnist-et használjuk játékpéldaként, és egy Autoencoder-t implementálunk a Tensorflow.keras magas szintű API segítségével! Mivel a tf.keras új csomagja hamarosan megjelent, gyakoroljuk a Model alosztályozási módszer használatát a fájlban.

4-1. Modell létrehozása – Vallina_AE:

Először is, importáld a tensorflowt!7133>

A Tensorflow 2.0 preview gyors telepítése (* ̄▽ ̄)/‧☆*”`’*-.,_,.-*’`”*-.,_☆

A tf.keras használata ilyen egyszerű, csak írd be a tf.keras-t!(Nem tudom miről beszélek lol)

Adatok betöltése & modell előfeldolgozás

Először is vesszük a Mnist adatokat a tf.keras.dataset-ből és csinálunk egy kis előfeldolgozást

.Nomalizálás: az értékeket 0 és 1 közé tömöríti, a képzés könnyebben konvergál

Binarizálás: kiemeli a szembetűnőbb területeket, a képzés jobb eredményeket ad.

Modell létrehozása – Vallina_AE:

Ez a Tensorflow dokumentum által biztosított módszer a modellek létrehozásához.összetettebb.
Eddig azt tanultam, hogy a réteget a __init __ helyen kell létrehozni, és a hívásban kell definiálni a forward pass-t.

Tehát két szekvenciális modellt használunk az Encoder & dekóder létrehozásához. kettő szimmetrikus struktúra, a kódoló a bemeneti réteghez kapcsolódik, amely a bemeneti adatok hordozásáért felelős, majd a három sűrű réteghez. a dekóder ugyanez.

Ismét a hívás alatt a kódoló & dekódolót kell összefűznünk, először a látens teret kell definiálnunk a self.encoder kimeneteként.tér, mint a self.encoder kimenete, majd a dekóderen való áthaladás eredményeként a rekonstrukció.Ezután a tf.keras.Model() segítségével összekapcsoljuk a __init__-ben meghatározott két modellt.AE_model = tf.keras.Model(inputs = self.encoder.input, outputs = reconstruction) a bemenet a kódoló bemenete, a kimenet pedig a dekóder kimenete, és ennyi!Ezután visszaadjuk az AE_modelt és kész is vagyunk!

Model Compile & training

Mielőtt a Keras betanítana egy modellt, azt le kell fordítani, mielőtt a képzésbe dobható lenne.A fordításban megadjuk a használni kívánt optimalizálót és a kiszámítandó veszteséget.

A képzéshez használjuk a VallinaAE.fit adatbevitelt, de ne feledjük, hogy magunkat állítjuk vissza, tehát X és Y adatokat kell bedobni.

Nézzük meg a 100 epochás tréning eredményeit, úgy tűnik, hogy a rekonstrukciós eredmények nem olyan jók, mint gondoltuk.

4-2. Modell létrehozása.- Conv_AE:

Ahogy a neve is mutatja, a konvolúciós réteget rejtett rétegként használhatjuk a visszaalakítható jellemzők megtanulására.

A modell módosítása után megnézheti az eredményeket, hogy van-e javulás.

Úgy tűnik, hogy a rekonstrukció eredményei sokkal jobbak, körülbelül 10 epocha gyakorlással.

4-3. Modell létrehozása – denoise_AE:

Az autoencoder használható a zaj eltávolítására is, így itt a következőkben

Először is hozzáadhatunk zajt az eredeti képhez. A zaj hozzáadásának logikája az, hogy az eredeti pixeleken egyszerű eltolást végzünk, majd véletlen számokat adunk hozzá.A kép előfeldolgozási része egyszerűen úgy végezhető el, hogy a klip 0, ha 0-nál kisebb, és 1, ha 1-nél nagyobb. Mint az alábbiakban látható, a klip képfeldolgozása után a képet élesebbé és a nyilvánvaló területeket láthatóbbá tehetjük.Ez jobb eredményt ad, ha bedobjuk az Autoencodert.

Nincs különbség a klip

és maga a modell és a Conv_AE között.Nincs különbség maga a modell és a Conv_AE között, kivéve, hogy az illesztés során a

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

-ra kell módosítani, hogy az eredeti noise_data visszaálljon az eredeti bemeneti adatokra

.

Mint látható, a Mnist-en egy egyszerű Autoencoderrel nagyon gyors denoising hatást érhetünk el.

Nagyszerű példák

Ez egy jó forrás azoknak, akik többet szeretnének megtudni róla

  1. Building Autoencoders in Keras autoencoder series is clearly written.
  2. Tensorflow 2.0 hivatalos dokumentáció tutorial, valami nagyon teljes, csak írni egy kicsit nehéz, tölteni elég sok időt látni (legalábbis én húzom XD)

3. Li Hongyi tanár mélytanulás is nagyon ajánlott, beszélni nagyon világos és könnyen érthető, nem-

Következtetés

Ezzel a cikkel gyorsan megismerhetjük az automatikus kódoló alapfogalmát, az automatikus kódoló néhány változatát és alkalmazását.forgatókönyvek.4310>

A következő cikkek a generatív modellekkel kezdenek, az autoencoder, a VAE és a GAN fogalmától kezdve a GAN-ig, és az út során további bővítésekkel és morfológiákkal.

Ha tetszett a cikk, kérem, bátorításként kattintson még néhányszor (nem csak egyszer) a tapsra!
A cikk teljes kódjának elolvasása:https://github.com/EvanstsaiTW/Generative_models/blob/master/AE_01_keras.ipynb

Vélemény, hozzászólás? Kilépés a válaszból

Az e-mail-címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Archívum

  • 2022 január
  • 2021 december
  • 2021 november
  • 2021 október
  • 2021 szeptember

Meta

  • Bejelentkezés
  • Bejegyzések hírcsatorna
  • Hozzászólások hírcsatorna
  • WordPress Magyarország
  • 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