Kiedy powinienem używać wariacyjnego autoencodera w przeciwieństwie do autoencodera?

20

Rozumiem podstawową strukturę wariacyjnego autoencodera i normalnego (deterministycznego) autoencodera oraz matematykę za nimi, ale kiedy i dlaczego wolałbym jeden typ autoencodera od drugiego? Mogę tylko pomyśleć o wcześniejszym rozkładzie ukrytych zmiennych autoencodera wariacyjnego, który pozwala nam próbkować ukryte zmienne, a następnie konstruować nowy obraz. Jaką przewagę ma stochastyczność autokodera wariacyjnego w stosunku do autokodera deterministycznego?

DiveIntoML
źródło

Odpowiedzi:

14

VAE to framework, który został zaproponowany jako skalowalny sposób wykonywania wariacyjnego EM (lub wnioskowania wariacyjnego ogólnie) na dużych zestawach danych. Chociaż ma strukturę podobną do AE, służy znacznie większemu celowi.

To powiedziawszy, można oczywiście użyć VAE do nauki ukrytych reprezentacji. Wiadomo, że VAE reprezentują czynniki rozplątane [1] Dzieje się tak z powodu izotropowych pierwiastków Gaussa w zmiennych utajonych. Modelowanie ich jako Gaussa pozwala każdemu wymiarowi w reprezentacji przesuwać się jak najdalej od innych czynników. Ponadto [1] dodał współczynnik regularyzacji, który kontroluje wpływ przeora.

Podczas gdy izotropowe gaussowie są wystarczające w większości przypadków, w konkretnych przypadkach można chcieć inaczej modelować priory. Na przykład w przypadku sekwencji można chcieć zdefiniować priory jako modele sekwencyjne [2].

Wracając do pytania, jak widać, wcześniej daje znaczącą kontrolę nad tym, jak chcemy modelować nasz utajony rozkład. Ten rodzaj kontroli nie istnieje w zwykłych ramach AE. Jest to w rzeczywistości moc samych modeli Bayesian, VAE po prostu sprawiają, że jest bardziej praktyczny i wykonalny dla zestawów danych na dużą skalę. Podsumowując, jeśli chcesz precyzyjnej kontroli nad ukrytymi reprezentacjami i tym, co chcesz, aby reprezentowały, wybierz VAE. Czasami precyzyjne modelowanie może uchwycić lepsze odwzorowania, jak w [2]. Jeśli jednak AE wystarczy do pracy, którą wykonujesz, po prostu skorzystaj z AE, jest to proste i nieskomplikowane. W końcu z AE robimy po prostu nieliniowe PCA.

[1] Wczesne wizualne uczenie się koncepcji bez
głębszego uczenia bez nadzoru, 2016 Irina Higgins, Loic Matthey, Xavier Glorot, Arka Pal, Benigno Uria, Charles Blundell, Shakir Mohamed, Alexander Lerchner
https://arxiv.org/abs/1606.05579

[2] Recurrent Latent Variable Variable Model for Sequential Data, 2015
Junyoung Chung, Kyle Kastner, Laurent Dinh, Kratarth Goel, Aaron Courville, Yoshua Bengio
https://arxiv.org/abs/1506.02216

TenaliRaman
źródło
6

TenaliRaman miał kilka dobrych punktów, ale brakowało mu również wielu podstawowych pojęć. Po pierwsze, należy zauważyć, że głównym powodem korzystania ze struktury podobnej do AE jest ukryta przestrzeń, która pozwala nam kompresować informacje i, mam nadzieję, uzyskać z niej niezależne czynniki reprezentujące cechy wysokiego poziomu danych. Ważną kwestią jest to, że o ile AE można interpretować jako nieliniowe rozszerzenie PCA, ponieważ jednostki ukryte „X” obejmowałyby tę samą przestrzeń co pierwsza liczba „X” głównych elementów, AE niekoniecznie wytwarza elementy ortogonalne w utajonym przestrzeń (która stanowiłaby formę rozplątywania). Dodatkowo z VAE możesz uzyskać pozory prawdopodobieństwa danych (choć przybliżone), a także próbki z nich (co może być przydatne do różnych różnych zadań). Jednak,

Wcześniejszy rozkład nałożony na jednostki utajone w VAE przyczynia się tylko do dopasowania modelu ze względu na warunek dywergencji KL, do którego odniesienie [1] po prostu dodało mnożnik hiperparametrów dla tego terminu i uzyskał z niego pełny papier (większość z nich to dosyć oczywiste). Zasadniczo „nieinformacyjny” przeor to taki, który indywidualnie ma rozbieżność KL zbliżoną do zera i nie przyczynia się znacząco do strat, co oznacza, że ​​konkretna jednostka nie jest używana do rekonstrukcji w dekoderze. Rozplątanie wchodzi w grę na VAE naturalnie, ponieważ w najprostszym przypadku danych multimodalnych koszt dywergencji KL jest niższy dzięki unikalnemu utajonemu gaussowskiemu dla każdego trybu niż w przypadku, gdy model próbuje uchwycić wiele trybów za pomocą pojedynczego gaussa (co odbiega bardziej od poprzedniej, ponieważ jest silnie karane kosztem dywergencji KL), co prowadzi do do wyplątania w utajonych jednostkach. Dlatego VAE nadaje się również naturalnie do większości źródeł danych ze względu na związane z tym implikacje statystyczne.

Istnieją również ramy nakładające rzadkość dla AE, ale niestety nie znam żadnego dokumentu porównującego VAE vs AE ściśle na podstawie utajonej reprezentacji przestrzeni i rozplątywania. Naprawdę chciałbym zobaczyć coś na tej arenie - ponieważ AE są znacznie łatwiejsze do trenowania i jeśli mogłyby osiągnąć tak dobre rozplątanie jak VAE w utajonej przestrzeni, to oczywiście byłyby preferowane. W powiązanej notatce widziałem również pewne obietnice metod ICA (i nieliniowych ICA), ale te, które widziałem, zmusiły przestrzeń utajoną do tego samego wymiaru co dane, co nie jest tak przydatne jak AE do wyodrębniania funkcji wysokiego poziomu.

JPJ
źródło
3

Standardowy autoencoder można zilustrować za pomocą następującego wykresu: wprowadź opis zdjęcia tutaj

Jak stwierdzono w poprzednich odpowiedziach, można to postrzegać jedynie jako nieliniowe rozszerzenie PCA.

Ale w porównaniu z auto-dekoderem wariacyjnym autoencoder waniliowy ma następującą wadę:

Podstawowym problemem związanym z generowaniem autokoderów jest to, że utajona przestrzeń, na którą przekształcają dane wejściowe i gdzie znajdują się ich zakodowane wektory, może nie być ciągła lub umożliwiać łatwą interpolację.

Oznacza to, że część kodująca na powyższym wykresie nie może poradzić sobie z danymi wejściowymi, których koder nigdy wcześniej nie widział, ponieważ różne klasy są tępo grupowane, a te niewidoczne dane wejściowe są kodowane w miejscu znajdującym się gdzieś w pustym miejscu:

wprowadź opis zdjęcia tutaj

Aby rozwiązać ten problem, utworzono wariacyjny autoencoder, dodając warstwę zawierającą średnią i odchylenie standardowe dla każdej ukrytej zmiennej w środkowej warstwie:

wprowadź opis zdjęcia tutaj

Wtedy nawet dla tego samego wejścia dekodowane dane wyjściowe mogą się różnić, a kodowane i klastrowane dane wejściowe stają się płynne:

wprowadź opis zdjęcia tutaj

Aby zrezygnować lub sklasyfikować (odfiltrować odmienne dane) dane, wystarczy standardowy autoencoder, podczas gdy do generowania lepiej zastosować autoencoder wariacyjny.

Odniesienie:
intuicyjne zrozumienie wariacyjnych autokoderów

Lerner Zhang
źródło
1

Wybór dystrybucji kodu w VAE pozwala na lepsze uczenie się reprezentacji bez nadzoru, w której próbki tej samej klasy znajdują się blisko siebie w przestrzeni kodu. Również w ten sposób znalezienie semantycznego dla regionów w przestrzeni kodu staje się łatwiejsze. Np. Z każdego obszaru wiedziałbyś, jaką klasę można wygenerować.

Jeśli potrzebujesz bardziej dogłębnej analizy, spójrz na tezę Durka Kingmy . To świetne źródło wnioskowania wariacyjnego.

PickleRick
źródło
Kiedy mówisz o „wyborze dystrybucji”, o której dystrybucji mówisz? p (z), p (z | x), p (x | z) czy wszystkie z nich? Widziałem tylko użycie rozkładu normalnego lub rozkładu Bernoulliego, czy wiesz o pracy porównującej wydajność przy użyciu innej dystrybucji? Co do drugiej kwestii, nie rozumiem, dlaczego autoencoder wariacyjny będzie działał lepiej niż zwykły autoencoder, czy mógłbyś to rozwinąć? Dzięki.
DiveIntoML