Mi az Autoencoder?
On november 11, 2021 by adminEgy 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.
常常見到 Autoencoder 的變形以及應用,打算花幾篇的時間好好的研究一下,順便練習 Tensorflow.keras 的 API 使用。
- Mi az Autoencoder
- Az Autoencoder típusai
- Az Autoencoder alkalmazása
- Implementáció
- Megvalósítás
- Nagyszerű példák
- Következtetés
Nehézség: ★ ★ ☆ ☆ ☆ ☆
後記: 由於 Tensorflow 2.0 alpha 已於 3/8號釋出,但此篇是在1月底完成的,故大家可以直接使用安裝使用看看,但需要更新至相對應的 CUDA10。
Mi az Autoencoder?
首先,什麼是 Autoencoder 呢? 不囉唆,先看圖吧! 不囉唆,先看圖吧!
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.
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ő.
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.
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.
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.
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!
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!
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!
Vélemény, hozzászólás?