Jakie są różnice między PCA a autoencoderem?

56

Zarówno PCA, jak i autoencoder mogą redukować demensję, więc jaka jest między nimi różnica? W jakiej sytuacji powinienem używać jednego nad drugim?

RockTheStar
źródło

Odpowiedzi:

52

PCA jest ograniczone do mapy liniowej, podczas gdy auto kodery mogą mieć enkodery / dekodery nieliniowe.

Jednowarstwowy automatyczny koder z funkcją transferu liniowego jest prawie równoważny PCA, gdzie prawie oznacza, że W znalezione przez AE i PCA nie będą takie same - ale podprzestrzeń rozciągnięta przez odpowiednie W będzie.

bayerj
źródło
Widzę! Potrzebuję więc dwóch warstw do transformacji nieliniowej. Więc wiele warstw oznacza bardzo złożoną nieliniową?
RockTheStar
7
@RockTheStar: nie liczy się liczba warstw, ale funkcja aktywacji [funkcja transferu]. Dzięki funkcji transferu liniowego żadna liczba warstw nie doprowadzi do nieliniowego autokodera.
ameba mówi Przywróć Monikę
Tak więc, przy transformacji nieliniowej, nawet istnieje tylko 1 warstwa ukrytej jednostki. Rozwiązanie jest nadal nieliniowe?
RockTheStar
Tak. (Również w niektórych przypadkach może być nadal liniowy, np. Gdy ukryte jednostki są aktywowane w regionach blisko liniowych.)
bayerj 16.10.14
„kiedy jednostki ukryte są aktywowane w obszarach bliskich liniom”, masz na myśli część liniową w funkcji sigmoidalnej, prawda?
RockTheStar
17

Jak wskazuje Bayerj, PCA to metoda, która zakłada systemy liniowe, w których tak jak Autoencodery (AE) nie. Jeśli w AE nie zostanie użyta żadna funkcja nieliniowa, a liczba neuronów w ukrytej warstwie ma mniejszy wymiar niż wielkość wejściowa, wówczas PCA i AE mogą dać ten sam wynik. W przeciwnym razie AE może znaleźć inną podprzestrzeń.

Należy zauważyć, że warstwa ukryta w AE może mieć większą wymiarowość niż wymiar wejściowy. W takich przypadkach AE mogą nie zmniejszać wymiarów. W tym przypadku postrzegamy je jako transformację z jednej przestrzeni cech do drugiej, w której dane w nowej przestrzeni cech rozróżniają czynniki zmienności.

Jeśli chodzi o pytanie, czy wiele warstw oznacza bardzo złożoną nieliniowość w odpowiedzi na bayerj. W zależności od tego, co rozumiesz przez „bardzo złożone nieliniowe”, może to być prawda. Jednak głębia naprawdę oferuje lepsze uogólnienie. Wiele metod wymaga jednakowej liczby próbek równej liczbie regionów. Okazuje się jednak, że „bardzo dużą liczbę regionów, np. , można zdefiniować za pomocą przykładów ” według Bengio i in . Jest to wynikiem złożoności reprezentacji wynikającej z komponowania niższych elementów z niższych warstw w sieci.O(2N)O(N)

DaemonMaker
źródło
2
dzięki za ans!
RockTheStar
6

To lepiej nadaje się jako komentarz, ale ponieważ nie mam reputacji, zostanie podany jako odpowiedź.

Nieco pomyliłem się z pojęciem prawie w odpowiedzi Bayerja. Czytanie sieci neuronowych i analiza głównych elementów: uczenie się na przykładach bez lokalnych minimów, gdzie podano dowód.

„” W przypadku automatycznego asocjacyjny ... a więc lokalnie unikalne i optymalne globalnie mapę W jest prostopadły występ na przestrzeni objętej przez pierwsze wektorów własnych o „” pΣXX

Czy zatem nie jest to dokładnie taka sama przestrzeń jak w PCA?

johnblund
źródło
1
W cytowanym papierze wykorzystano liniowy autoencoder, tzn. Brak nieliniowej funkcji aktywacyjnej. Właśnie dlatego jego wagi obejmują dokładnie tę samą podprzestrzeń, która jest dokładnie regulowana przez PCA.
elliotp
6

Akceptowana obecnie odpowiedź @bayerj stwierdza, że ​​wagi liniowego autoencodera obejmują tę samą podprzestrzeń, co główne składniki znalezione przez PCA, ale nie są to te same wektory. W szczególności nie są one podstawą ortogonalną. To prawda, jednak możemy łatwo odzyskać główne składniki ładujące wektory z ciężarów autokodera. Trochę notacji: niech będzie zbiorem wymiarowych wektorów, dla których chcemy obliczyć PCA i niech będzie macierzą, której kolumnami są . Następnie zdefiniujmy liniowy autoencoder jako sieć neuronowa z jedną ukrytą warstwą zdefiniowana przez następujące równania:{xiRn}i=1NN nXx1,,xN

h1=W1x+b1x^=W2h1+b2

gdzie jest wyjściem (liniowego) autokodera, oznaczonego czapką, aby podkreślić fakt, że wyjście z autoenkodera jest „rekonstrukcją” wejścia. Zauważ, że jak to jest najczęściej w przypadku autokoderów, warstwa ukryta ma mniej jednostek niż warstwa wejściowa, tj. i pomocą .x^W1Rn×mW2Rm×nm<n

Teraz, po treningu liniowego autoencoder, obliczyć najpierw pojedynczej wektorów . Możliwe jest udowodnienie, że te pojedyncze wektory są w rzeczywistości pierwszymi głównymi składnikami , a dowód znajduje się w Plaut, E., od głównych podprzestrzeni do głównych komponentów za pomocą auto-koderów liniowych , Arxiv.org:1804.10253.mW2mX

Od SVD jest rzeczywiście powszechnie stosowany algorytm do obliczania PCA, to może wydawać się bezsensowne Pierwszy pociąg liniowy autoencoder a następnie zastosować SVD do w celu odzyskania następnie pierwszych wektorów ładowania, zamiast bezpośrednio do stosowania SVD . Chodzi o to, że jest macierzą , podczas gdy to . Teraz złożoność czasowa SVD dla wynosi , podczas gdy dla oznacza przyW2mXXn×NW2m×nW2O(m2n)XO(n2N)m<n, w ten sposób można by osiągnąć pewne oszczędności (nawet jeśli nie tak duże, jak twierdzi autor artykułu, który łączę). Oczywiście istnieją inne bardziej użyteczne podejścia do obliczania PCA dużych zbiorów danych (przychodzi na myśl losowa PCA online), ale głównym celem tej równoważności między liniowymi autoencoderami i PCA nie jest znalezienie praktycznego sposobu obliczania PCA dla dużych danych zestawy: chodzi bardziej o to, aby dać nam intuicję na temat połączeń między autoencoderami i innymi statystycznymi podejściami do redukcji wymiarów.

DeltaIV
źródło