Co to jest autoenkoder?

Aug 17 2020

Jestem studentem i uczę się uczenia maszynowego. Skupiam się na głębokich modelach generatywnych , aw szczególności na autoenkoderach i wariacyjnych autoenkoderach (VAE) .

Próbuję zrozumieć koncepcję, ale mam pewne problemy.

Jak dotąd zrozumiałem, że autoenkoder pobiera dane wejściowe, na przykład obraz, i chce zredukować ten obraz do utajonej przestrzeni , która powinna zawierać podstawowe cechy zbioru danych, z operacją kodowania , a następnie operacją od dekodowania , to reconstrunct obraz, który stracił kilka informacji ze względu na część kodowania.

Po tym, z funkcją straty, rekonstruuje ukrytą przestrzeń i uzyskuje ukryte cechy.

jeśli chodzi o VAE, używa podejścia probabilistycznego, więc musimy nauczyć się kowariancji meand anv gaussa.

Do tej pory to właśnie zrozumiałem.

To, czego naprawdę nie wiem, to czego próbujemy się nauczyć z autoenkoderami i VAE?

Widziałem przykłady, w których obraz przechodzi od bez uśmiechu do uśmiechniętej twarzy lub z czarno-białego obrazu do kolorowego obrazu.

Ale nie rozumiem głównej koncepcji, która brzmi: co robi autoenkoder?

Dodaję tutaj źródła, z których studiowałem, aby kto potrzebował, mógł je zobaczyć:

  1. https://hackernoon.com/autoencoders-deep-learning-bits-1-11731e200694
  2. https://www.youtube.com/watch?v=yFBFl1cLYx8
  3. https://www.youtube.com/watch?v=9zKuYvjFFS8

Odpowiedzi

11 cag51 Aug 18 2020 at 07:56

co robi auto-koder?

Najprostszy auto-koder pobiera wysokowymiarowy obraz (powiedzmy, 100K pikseli) do niskowymiarowej reprezentacji (powiedzmy, wektor o długości 10), a następnie używa tylko tych 10 cech, aby spróbować zrekonstruować oryginalny obraz. Możesz sobie wyobrazić analogię z ludźmi: patrzę na kogoś, opisuję go („wysoki, ciemnowłosy…”), a potem, gdy zapomniałem, jak wyglądają, próbuję ich naszkicować, używając tylko swoich notatek.

czego próbujemy się nauczyć

Innymi słowy, po co się przejmować? Kilka powodów:

  • redukcja wymiarów: 10 funkcji jest dużo wygodniejszych niż 100K pikseli. Na przykład mogę przeprowadzić klasyfikację poprzez grupowanie w 10-wymiarowej przestrzeni (podczas gdy skupianie się w przestrzeni 100K wymiarowej byłoby niemożliwe).
  • znaczenie semantyczne: jeśli wszystko pójdzie dobrze, każda z 10 cech będzie miała jakieś oczywiste „wyjaśnienie” - np. zmiana jednej wartości sprawi, że temat będzie wyglądał na starszego (choć zwykle nie jest to takie proste). W przeciwieństwie do wartości pikseli, na które ma wpływ translacja, rotacja itp.
  • Rozpoznawanie wyjątków: jeśli uczę auto-kodera na psach, powinien on normalnie dobrze kodować i dekodować zdjęcia psów. Ale jeśli wstawię kota, prawdopodobnie wykona okropną robotę - co mogę powiedzieć, ponieważ dane wyjściowe nie przypominają danych wejściowych. Tak więc szukanie miejsc, w których auto-koder źle sobie radzi, jest typowym sposobem wyszukiwania anomalii.

Widziałem przykłady, w których obraz przechodzi od uśmiechniętej twarzy do uśmiechniętej twarzy lub czarno-białego obrazu do kolorowego obrazu.

Istnieje wiele różnych typów koderów automatycznych. To, co opisałem powyżej, jest najprostsze. Innym popularnym typem jest automatyczny koder „odszumiający” - zamiast rekonstruować oryginalny obraz, celem jest skonstruowanie obrazu, który jest powiązany z oryginalnym obrazem, ale jest inny.

Klasycznym przykładem jest odszumianie (stąd nazwa): możesz zrobić czysty obraz, dodać trochę szumu, przepuścić go przez auto-koder, a następnie nagrodzić auto-koder za wytworzenie czystego obrazu. Zatem wejście (zaszumiony obraz) różni się w rzeczywistości od pożądanego wyjścia (czysty obraz). Podane przykłady są podobne.

Wyzwaniem przy projektowaniu tego typu automatycznych koderów jest zwykle strata - potrzebujesz jakiegoś mechanizmu, który powie automatycznemu koderowi, czy zrobił to dobrze, czy nie.

jeśli chodzi o VAE, używa podejścia probabilistycznego, więc musimy nauczyć się średniej i kowariancji gaussa.

VAE to trzeci typ automatycznego kodera. Jest trochę wyjątkowy, ponieważ jest dobrze ugruntowany matematycznie; nie są potrzebne żadne dane ad hoc . Matematyka jest zbyt skomplikowana, aby ją tutaj omówić, ale kluczowe pomysły są następujące:

  • Chcemy, aby ukryta przestrzeń była ciągła. Zamiast przypisywać każdą klasę do własnego rogu ukrytej przestrzeni, chcemy, aby ukryta przestrzeń miała dobrze zdefiniowany, ciągły kształt (tj. Gaussa). Jest to miłe, ponieważ zmusza ukrytą przestrzeń do semantycznego znaczenia.
  • Odwzorowanie obrazów i przestrzeni ukrytych powinno być raczej probabilistyczne niż deterministyczne. Dzieje się tak, ponieważ ten sam obiekt może tworzyć wiele obrazów.

Tak więc przepływ pracy wygląda tak:

  • Zaczynasz od swojego obrazu jak poprzednio
  • Tak jak poprzednio, twój koder określa wektor (powiedzmy, długość 200).
  • Ale ten wektor nie jest utajoną przestrzenią. Zamiast tego używasz tego wektora jako parametrów definiujących ukrytą przestrzeń. Na przykład, może wybierzesz swoją utajoną przestrzeń, aby była 100-wymiarowym Gaussem. 100-wymiarowy Gaussian będzie wymagał średniej i odchylenia standardowego w każdym wymiarze - do tego używasz wektora długości 200.
  • Teraz masz rozkład prawdopodobieństwa. Próbkujesz jeden punkt z tej dystrybucji. To jest reprezentacja twojego obrazu w ukrytej przestrzeni.
  • Tak jak poprzednio, Twój dekoder zamieni ten wektor w nowe „wyjście” (powiedzmy, wektor o długości 200K).
  • Ale to „wyjście” nie jest obrazem wyjściowym. Zamiast tego używasz tych parametrów 200K do zdefiniowania 100K-wymiarowego Gaussa. Następnie próbkujesz jeden punkt z tej dystrybucji - to jest twój obraz wyjściowy.

Oczywiście nie ma nic specjalnego w Gaussa, równie łatwo możesz użyć innego rozkładu parametrycznego. W praktyce ludzie zwykle używają Gaussa.

Czasami daje to lepsze wyniki niż inne automatyczne kodery. Ponadto, czasami uzyskać ciekawe rezultaty, jeśli spojrzeć między klasami w utajonej przestrzeni. Odległość obrazu w ukrytej przestrzeni od centrum gromady jest czasami związana z niepewnością.

Co więcej, jest fajna własność, że te wielowymiarowe Gaussa są rozkładami prawdopodobieństwa w ścisłym matematycznym sensie. Przybliżają prawdopodobieństwo, że dany obraz należy do danej klasy. Istnieje więc pewna opinia, że ​​VAE będą w stanie przezwyciężyć „machanie rękami” głębokiego uczenia się i położyć wszystko z powrotem na solidnym probabilistycznym gruncie bayesowskim. Ale oczywiście jest to tylko przybliżenie, a przybliżenie obejmuje wiele głębokich sieci neuronowych, więc w tej chwili wciąż jest dużo machania rękami.

Nawiasem mówiąc, lubię używać tego pytania podczas wywiadów - zadziwiająca liczba osób twierdzi, że ma doświadczenie z VAE, ale w rzeczywistości nie zdaje sobie sprawy, że VAE różnią się od „zwykłych” AE.

10 hH1sG0n3 Aug 17 2020 at 22:06

Prostym sposobem myślenia o autoenkoderach jest: jak dobrze prticlarowa część infrmatonu może zostać zrekonstruowana z jej redukcji lub w inny sposób złożonej z powtórki. Jeśli dotarłeś tak daleko, oznacza to, że pomyślnie odtworzyłeś poprzednie zdanie, używając tylko 92 z oryginalnych 103 znaków.

Mówiąc dokładniej, autoenkodery to sieci neuronowe wyszkolone do uczenia się wydajnego kodowania danych w sposób nienadzorowany. Celem jest nauczenie się reprezentacji danego zbioru danych poprzez nauczenie sieci ignorowania „nieistotnych” sygnałów, takich jak szum. Zazwyczaj AE są brane pod uwagę przy redukcji wymiarowości.

Praktycznie AE

  • początkowo kompresuje dane wejściowe do reprezentacji w ukrytej przestrzeni
  • rekonstruuje dane wyjściowe z tej reprezentacji przestrzeni utajonej
  • oblicza różnicę między wejściem a wyjściem, która jest zdefiniowana jako strata rekonstrukcyjna.

W tej pętli treningowej AE minimalizuje utratę rekonstrukcji, tak aby wynik był jak najbardziej zbliżony do wejścia.

3 JoshPurtell Aug 17 2020 at 23:04

Jedną z metod, które uznałem za pomocne przy rozważaniu autoenkoderów, jest następujący wynik: podczas gdy metody takie jak PCA identyfikują osie maksymalnej zmienności w przestrzeni wejściowej, wprowadzenie nieliniowych funkcji aktywacji w autoenkoderze pozwala na identyfikację osi maksymalnego wariacja osadzona w (potencjalnie) nieliniowej transformacji przestrzeni.

Jako przykład rozważ dane w

rozproszeniu zgodnie z funkcją
, gdzie
. W tym przypadku celem jest przechowywanie danych wejściowych jako jednowymiarowych uciśnięć. Podejście PCA mogłaby wprowadzić znaczne straty (pod warunkiem, że wsparcie jest wystarczająco duży), ale autoencoder z nieliniowości będzie w stanie zidentyfikować głównej osi osadzony w przestrzeni transformacji jako jeden z pre-image grubsza na
w przestrzeni wejściowej, a zatem wprowadzi znacznie mniejsze straty. Możesz myśleć o reżimie uczenia autoenkodera jako o pracy nad przybliżeniem funktora transformacji, który tworzy przestrzeń transformacji z liniowym obrazem wstępnym w
. Autoenkoder działa wtedy, przechowując dane wejściowe pod względem tego, gdzie leżą na liniowym obrazie
.

Zauważ, że bez nieliniowych funkcji aktywacji autoenkoder staje się zasadniczo równoważny z PCA - aż do zmiany podstawy. Przydatnym ćwiczeniem może być rozważenie, dlaczego tak jest.