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?
machine-learning
pca
neural-networks
autoencoders
RockTheStar
źródło
źródło
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)
źródło
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.
Czy zatem nie jest to dokładnie taka sama przestrzeń jak w PCA?
źródło
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:{xi∈Rn}Ni=1 N n− X x1,…,xN
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^ W1∈Rn×m W2∈Rm×n m<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.m W2 m X
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 przyW2 m X X n×N W2 m×n W2 O(m2n) X O(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.
źródło