Skip to content

Archives

  • styczeń 2022
  • grudzień 2021
  • listopad 2021
  • październik 2021
  • wrzesień 2021

Categories

  • Brak kategorii
Trend RepositoryArticles and guides
Articles

Co to są Autoenkodery?

On 11 listopada, 2021 by admin
  • Łagodne wprowadzenie do Autoenkodera i jego różnych zastosowań. Ponadto, te tutoriale używają tf.keras,wysokopoziomowe API TensorFlow w Pythonie do budowania i trenowania modeli głębokiego uczenia.
  • Trudność: ★ ★ ☆ ☆
  • Co to jest Autoencoder?
  • .Koder:
  • Dekoder:
  • Funkcja straty:
  • Typy AutoEncodera
  • 2-1. Unet:
  • 2-2. autokodery rekursywne:
  • 2-Seq2Seq:
  • Aplikacje Autoencodera
  • 3-1. Model pretrained weight
  • 3-2. segmentacja obrazu
  • 3-4. Image Retrieval
  • 3-5. wykrywanie anomalii
  • .Implementacja
  • 4-1. Utwórz model – Vallina_AE:
  • Load data &model preprocess
  • Create a Model – Vallina_AE:
  • Kompilacja modelu & trening
  • 4-2. Tworzenie modelu- Conv_AE:
  • 4-3. Utwórz model – denoise_AE:
  • Wspaniałe przykłady
  • Zakończenie

Łagodne wprowadzenie do Autoenkodera i jego różnych zastosowań. Ponadto, te tutoriale używają tf.keras,wysokopoziomowe API TensorFlow w Pythonie do budowania i trenowania modeli głębokiego uczenia.

.1478>

Evans Tsai

Follow

Mar 9, 2019 – 16 min read

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

  1. Co to jest Autoencoder
  2. Typy Autoencodera
  3. Zastosowanie Autoencodera
  4. Implementacja
  5. Wspaniałe przykłady
  6. Wnioski

Trudność: ★ ★ ☆ ☆

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

Co to jest Autoencoder?

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

źródło : Julien Despois

.Oryginalna koncepcja Autoencodera jest bardzo prosta, polega na wrzuceniu danych wejściowych i otrzymaniu dokładnie takich samych danych jak dane wejściowe poprzez sieć neuronową.Koder najpierw przyjmuje dane wejściowe, kompresuje je do wektora o mniejszym wymiarze Z, a następnie wprowadza Z do dekodera, aby przywrócić Z do jego oryginalnego rozmiaru.Brzmi to łatwo, ale przyjrzyjmy się temu bliżej i sprawdźmy, czy jest to takie proste.

źródło: EvansTsai

.Koder:

Enkoder jest odpowiedzialny za kompresję oryginalnych danych wejściowych do niskowymiarowego wektora C. Ten C, który zwykle nazywamy kodem, wektorem ukrytym lub wektorem cech, ale ja jestem przyzwyczajony do nazywania go przestrzenią ukrytą, ponieważ C reprezentuje ukrytą cechę.Encoder może skompresować oryginalne dane do znaczącego wektora niskowymiarowego, co oznacza, że Autoencoder ma redukcję wymiarowości, a warstwa ukryta ma nieliniową transformację aktywacji fukcji, więc ten Encoder jest jak potężna wersja PCA, ponieważ Encoder może zrobić nielinioweredukcja wymiarów!

Dekoder:

To co robi Dekoder to przywrócenie przestrzeni ukrytej z powrotem do danych wejściowych tak bardzo jak to możliwe, co jest transformacją wektorów cech z przestrzeni o niższym wymiarze do przestrzeni o wyższym wymiarze.

Więc jak mierzysz jak dobrze działa Autoencoder ! Po prostu poprzez porównanie podobieństwa dwóch oryginalnych danych wejściowych z danymi zrekonstruowanymi.Zatem nasza funkcja straty może być zapisana jako ….

Funkcja straty:

Ponieważ chcemy zminimalizować różnicę pomiędzy.AutoEncoder jest trenowany przy użyciu wstecznej propagacji do aktualizacji wag, tak jak zwykła sieć neuronowa.zaktualizować wagi.

Podsumowując, Autoencoder jest ….
1. bardzo powszechna architektura modelu, również powszechnie używana do uczenia bez nadzoru
2. może być używana jako metoda redukcji wymiaru dla nieliniowych
3. może być używana do uczenia się reprezentacji danych, z reprezentatywnymi transformacjami cech

W tym momencie, powinno być łatwo zrozumieć czym jest Autoencoder, jego architektura jest bardzo prosta, więc spójrzmy na jego transformacje!

Typy AutoEncodera

Po wyjaśnieniu podstawowych zasad działania AutoEncodera, nadszedł czas aby przyjrzeć się rozszerzonemu i zaawansowanemu użyciu AutoEncodera, tak abyś mógł zobaczyć szerokie zastosowanie Autoencodera!

2-1. Unet:

Unet może być użyty jako jeden ze sposobów segmentacji obrazu, a architektura Unet może być postrzegana jako odmiana Autoencodera.

Źródło: Unet

2-2. autokodery rekursywne:

Jest to sieć, która łączy nowy tekst wejściowy z przestrzenią ukrytą z innych wejść, celem tej sieci jest klasyfikacja sentymentu.Może to być również postrzegane jako wariant Autoencoder, który wyodrębnia nieliczbowy tekst w trakcie jego wpisywania i znajduje przestrzeń ukrytą, która jest istotna.

Źródło: https://www.youtube.com/watch?v=FSKag11y8yI

2-Seq2Seq:

Sequence to Sequence jest modelem generatywnym, który od jakiegoś czasu cieszy się dużą popularnością. Jest to wspaniałe rozwiązanie dylematu typów RNN, które nie są w stanie poradzić sobie z nieokreślonymi parami, i dobrze sprawdził się w tematach takich jak chatbot i generowanie tekstu.Może to być również postrzegane jako rodzaj architektury Autoencodera.

Aplikacje Autoencodera

Po przyjrzeniu się wielu i różnorodnym odmianom Autoencodera, zobaczmy gdzie jeszcze Autoencoder może być użyty!

3-1. Model pretrained weight

Autoencoder może być również użyty do pretrain of weight, co oznacza, że model znajduje lepszą wartość początkową.Na przykład, gdy chcemy zakończyć model docelowy, taki jak cel. ukryta warstwa jest:, więc na początku używamy koncepcji autoenkodera do wprowadzenia 784 wymiarów, a przestrzeń ukryta w środku jest 1000 wymiarów, aby zrobić wstępne szkolenie pierwszy, więc te 1000 wymiarów może dobrze zachować dane wejściowe.Następnie usuwamy oryginalne wyjście i dodajemy drugą warstwę, i tak dalej.W ten sposób cały model uzyska lepszą wartość początkową.

Huh! Jest pewna dziwna część… jeśli używasz 1000 neuronów do reprezentowania 784 wymiarów wejściowych, czy nie oznacza to, że sieć musi być po prostu skopiowana od nowa? Jaki jest sens szkolenia? Tak, dlatego w takim treningu wstępnym zazwyczaj dodajemy regularyzator normy L1, aby warstwa ukryta nie była kopiowana od nowa.

źródło: Pan Li Hongyi

Według Pana Li Hongyi.W przeszłości częściej stosowano taką metodę do szkolenia wstępnego, ale obecnie, ze względu na wzrost umiejętności szkoleniowych, nie ma już potrzeby stosowania tej metody.Ale jeśli masz bardzo mało danych z etykietami, ale dużo nieoznakowanych danych, możesz użyć tej metody do wstępnego treningu wag, ponieważ Autoencoder sam w sobie jest metodą uczenia bez nadzoru, używamy nieoznakowanych danych, aby uzyskać wstępny trening wag, a następnie używamy nieoznakowanych danych, aby uzyskać wstępny trening wag.Używamy nieoznakowanych danych, aby uzyskać wstępne wytrenowanie wag, a następnie używamy oznakowanych danych, aby dostroić wagi, tak aby uzyskać dobry model.Aby uzyskać więcej szczegółów, zobacz wideo pana Li, jest to bardzo dobrze wyjaśnione!

3-2. segmentacja obrazu

Model Unet, który właśnie widzieliśmy, spójrzmy na to jeszcze raz, ponieważ jest to w zasadzie najczęstszy problem wykrywania wad w tajwańskim przemyśle wytwórczym.

Najpierw musimy oznaczyć dane wejściowe, które będą naszym wyjściem. To co musimy zrobić, to skonstruować sieć, wprowadzić oryginalny obraz (po lewej, zdjęcia rentgenowskie zębów) i wygenerować wyjście (po prawej, klasyfikacja struktury zęba).W tym przypadku, koder & dekodera będzie warstwą konwolucji z silną oceną graficzną, wydobywając znaczące cechy i dekonwolucję z powrotem w dekoderze, aby uzyskać wynik segmentacji.

źródło: segmentacja obrazu

3-3. wideo na tekst

Dla problemu z podpisem do obrazu, takiego jak ten, używamy modelu sekwencji na sekwencję, gdzie dane wejściowe są zbiorem zdjęć, a dane wyjściowe są tekstem opisującym te zdjęcia.Model sekwencji do sekwencji używa LSTM + Conv net jako kodera & dekodera, który może opisać sekwencję sekwencyjnych działań & używając jądra CNN do ekstrakcji przestrzeni ukrytej wymaganej w obrazie.ale to zadanie jest bardzo trudne do wykonania, więc pozwolę ci spróbować, jeśli jesteś zainteresowany!

Sekwencja do sekwencji – Video toTekst

3-4. Image Retrieval

Image Retrieval Rzeczą do zrobienia jest wprowadzenie obrazu i próba znalezienia najbliższego dopasowania, ale jeśli porównasz pikselowo, to naprawdę łatwo jestJeśli użyjesz Autoencoder, aby najpierw skompresować obraz do przestrzeni ukrytej, a następnie obliczyć podobieństwo na przestrzeni ukrytej obrazu, wynik będzie znacznie lepszy.Wynik jest znacznie lepszy, ponieważ każdy wymiar w przestrzeni ukrytej może reprezentować pewną cechę.Jeśli odległość jest obliczana na przestrzeni ukrytej, rozsądnie jest znaleźć podobne obrazy.W szczególności, byłby to świetny sposób na uczenie bez nadzoru, bez etykietowania danych!

Na przestrzeni utajonej oblicz odległość

Oto one.Praca Georey E. Hinton, słynnego boga Deep Learning, pokazuje wykres, który chcemy wyszukać w lewym górnym rogu, podczas gdy pozostałe są wykresami, które autoenkoder uważa za bardzo podobne.7133>

Using Very Deep Autoencoders for
Content-BasedImage Retrieval

3-5. wykrywanie anomalii

Nie mogę znaleźć dobrego obrazu, więc musiałem użyć tego LOL
Znalezienie anomalii jest również super powszechnym problemem produkcyjnym, więc ten problem może być również próbowany z AutoencoderemMożemy spróbować tego z Autoencoderem!Po pierwsze, porozmawiajmy o faktycznym występowaniu anomalii. Anomalie zazwyczaj występują bardzo rzadko, na przykład, nietypowe sygnały z maszyny, nagłe skoki temperatury ……, itp.Jeśli dane zbierane są co 10 sekund, to miesięcznie zbieranych jest 260 000 danych, ale tylko jeden okres czasu jest anomalią, co w rzeczywistości jest bardzo niezrównoważoną ilością danych.

Tak więc najlepszym sposobem na poradzenie sobie z tą sytuacją jest sięgnięcie po oryginalne dane, które są przecież największą ilością danych, jaką mamy!Jeśli możemy wziąć dobre dane i wytrenować dobry autoenkoder, to jeśli pojawią się anomalie, to naturalnie zrekonstruowana grafika się zepsuje.W ten sposób narodził się pomysł wykorzystania autoencodera do wyszukiwania anomalii!

finding-anomalies

.Implementacja

Tutaj używamy Mnist jako zabawkowego przykładu i implementujemy Autoencoder używając wysokopoziomowego API Tensorflow.keras! Ponieważ nowy pakiet dla tf.keras został wkrótce wydany, ćwiczymy używanie metody podklasowania Model w pliku

4-1. Utwórz model – Vallina_AE:

Na początek zaimportuj tensorflow!7133>

Szybka instalacja Tensorflow 2.0 preview (* ̄▽ ̄)/‧☆*”`’*-.,_,.-*’`”*-._☆

Użycie tf.keras jest tak proste, że wystarczy wpisać tf.keras!(nie wiem o czym mówię lol)

Load data &model preprocess

Najpierw weźmiemy dane Mnist z tf.keras.dataset i zrobimy mały preprocess

.Nomalizacja: skompresuj wartości do przedziału od 0 do 1, trening będzie łatwiejszy do zbieżności

Binaryzacja: uwydatnij bardziej oczywiste obszary, trening da lepsze rezultaty.

Create a Model – Vallina_AE:

Jest to metoda przewidziana przez dokument Tensorflow do tworzenia modeli.bardziej złożone.
To, czego nauczyłem się do tej pory, to utworzenie warstwy w miejscu __init __ i zdefiniowanie przejścia do przodu w wywołaniu.

Tak więc używamy dwóch modeli sekwencyjnych do stworzenia kodera & dekodera. dwa są strukturą symetryczną, koder jest podłączony do warstwy wejściowej, która jest odpowiedzialna za przenoszenie danych wejściowych, a następnie do trzech gęstych warstw. dekoder jest taki sam.

Ponownie, pod wywołaniem, musimy konkatenować koder & dekodera, najpierw definiując przestrzeń latentną jako wyjście self.encoder.przestrzeń jako wyjście z self.encoder, a następnie rekonstrukcja jako wynik przejścia dekodera.Następnie używamy tf.keras.Model() do połączenia dwóch modeli, które zdefiniowaliśmy w __init__.AE_model = tf.keras.Model(inputs = self.encoder.input, outputs = reconstruction) określa input jako wejście kodera i output jako wyjście dekodera, i to wszystko!Następnie zwracamy AE_model i gotowe!

Kompilacja modelu & trening

Zanim Keras może wytrenować model, musi on zostać skompilowany, zanim będzie można go wrzucić do treningu.W kompilacji podajesz optymalizator, którego chcesz użyć i stratę, którą chcesz obliczyć.

Do treningu użyj VallinaAE.fit, aby wprowadzić dane, ale pamiętaj, że przywracamy siebie, więc X i Y muszą być wrzucone w te same dane.

Przyjrzyjmy się wynikom treningu 100 epok, wygląda na to, że wyniki rekonstrukcji nie są tak dobre jak myśleliśmy.

4-2. Tworzenie modelu- Conv_AE:

Jak sama nazwa wskazuje, możemy użyć warstwy Convolution jako warstwy ukrytej do uczenia się cech, które mogą być odtworzone z powrotem.

Po zmianie modelu można przyjrzeć się wynikom, aby sprawdzić, czy nastąpiła poprawa.

Wydaje się, że wyniki Reconstruction są znacznie lepsze, przy około 10 epokach treningu.

4-3. Utwórz model – denoise_AE:

Ale także, autoenkoder może być użyty do usuwania szumu, więc tutaj

Po pierwsze, możemy dodać szum do oryginalnego obrazu. Logika dodawania szumu polega na wykonaniu prostego przesunięcia na oryginalnym pikselu, a następnie dodaniu losowych liczb.Część wstępnego przetwarzania obrazu może być wykonana po prostu przez uczynienie klipu 0, jeśli jest mniejszy niż 0 i 1, jeśli jest większy niż 1. Jak pokazano poniżej, po przetworzeniu obrazu klipu, możemy sprawić, że obraz będzie ostrzejszy, a oczywiste obszary staną się bardziej widoczne.Daje nam to lepszy efekt, gdy wrzucimy Autoencoder.

Nie ma różnicy między klipem

a samym modelem i Conv_AENie ma różnicy między samym modelem a Conv_AE, z wyjątkiem tego, że podczas dopasowania musi być zmieniony na

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

, aby przywrócić oryginalny noise_data do oryginalnych danych wejściowych

.

Jak widać, na Mnist prosty Autoencoder osiąga bardzo szybki efekt denoisingu.

Wspaniałe przykłady

Jest to dobry zasób dla tych, którzy są zainteresowani dowiedzeniem się więcej na ten temat

  1. Building Autoencoders in Keras autoencoder seria jest jasno napisana.
  2. Tensorflow 2.0 oficjalna dokumentacja samouczek, coś bardzo kompletne, po prostu napisać trochę trudne, spędzić sporo czasu, aby zobaczyć (przynajmniej ja ciągnąć XD)

3. Li Hongyi nauczyciel głębokiego uczenia się jest również bardzo zalecane, mówić bardzo jasne i łatwe do zrozumienia, nie

Zakończenie

Użyj tego artykułu aby szybko ustalić podstawowe pojęcie Autoencodera, niektóre odmiany Autoencodera i zastosowaniescenariusze.4310>

Kilka następnych artykułów rozpocznie się od modeli generatywnych, rozciągając się od koncepcji autoencodera, VAE, do GAN, i dalszych rozszerzeń i morfów po drodze.

Jeśli spodobał Ci się artykuł, proszę kliknij jeszcze kilka klapsów (nie tylko raz) na zachętę!
Zapoznaj się z pełnym kodem tego artykułu:https://github.com/EvanstsaiTW/Generative_models/blob/master/AE_01_keras.ipynb

.

Dodaj komentarz Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Archiwa

  • styczeń 2022
  • grudzień 2021
  • listopad 2021
  • październik 2021
  • wrzesień 2021

Meta

  • Zaloguj się
  • Kanał wpisów
  • Kanał komentarzy
  • 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