Dlaczego autokodery do redukcji wymiarów są symetryczne?

13

W żadnym wypadku nie jestem ekspertem od autoencoderów ani sieci neuronowych, więc wybacz mi, jeśli to głupie pytanie.

W celu zmniejszenia wymiarów lub wizualizacji klastrów w danych wielowymiarowych możemy użyć autoenkodera, aby utworzyć (stratną) reprezentację dwuwymiarową poprzez sprawdzenie wyniku warstwy sieci z 2 węzłami. Na przykład w poniższej architekturze sprawdzilibyśmy wynik trzeciej warstwy

[X]N1=100N2=25(N3=2)N4=25N5=100[X]

gdzie ma danych wejściowych i N L oznacza liczbę węzłów l warstwy TH.XNll

Moje pytanie brzmi: dlaczego chcemy architektury symetrycznej? Czy lustro głębokiej fazy „kompresji” nie oznacza, że ​​możemy mieć podobnie złożoną fazę „dekompresji”, co daje wynik 2-węzłowy, który nie jest zbyt intuicyjny? Innymi słowy, czy prostsza faza dekodowania nie doprowadziłaby do tego, że wyjście warstwy z 2 węzłami również musiałoby być prostsze?

Myślę tutaj, że im mniej złożona jest faza dekompresyjna, tym prostsza (bardziej liniowa?) Musi być reprezentacja 2D. Bardziej złożona faza dekompresji umożliwiłaby bardziej złożoną reprezentację 2D.

dcl
źródło

Odpowiedzi:

13

Nie ma konkretnego ograniczenia w symetrii autoencodera.

Na początku ludzie mieli tendencję do wymuszania takiej symetrii do maksimum: nie tylko warstwy były symetryczne, ale także ciężary warstw w koderze i dekoderze, o ile były wspólne . Nie jest to wymagane, ale pozwala korzystać z niektórych funkcji strat (tj. Dopasowywania wyników RBM) i może działać jako regularyzacja , ponieważ skutecznie zmniejszasz o połowę liczbę parametrów w celu optymalizacji. Jednak obecnie myślę, że nikt nie narzuca podziału masy enkodera i dekodera.

Jeśli chodzi o symetrię architektoniczną, powszechne jest znajdowanie tej samej liczby warstw, tego samego rodzaju warstw i tych samych rozmiarów warstw w koderze i dekoderze, ale nie ma takiej potrzeby .

Na przykład w autokoderach splotowych w przeszłości bardzo często znajdowano warstwy splotowe w koderze i warstwy dekonwolucyjne w dekoderze, ale teraz zwykle widzisz warstwy próbkowania w dekoderze, ponieważ mają one mniej problemów z artefaktami.

ncasas
źródło
7

Twoje pytanie jest zdecydowanie na miejscu, jednak stwierdziłem, że jakieś pytanie w formacie „powinienem wykonać X lub Y w głębokim uczeniu się?” ma tylko jedną odpowiedź.

Wypróbuj je oba

Głębokie uczenie się jest dziedziną bardzo empiryczną, a jeśli nie-symetryczny auto-koder działa w Twojej domenie, skorzystaj z niego (i opublikuj artykuł)

Ankit Suri
źródło
2

Zrobiłem obszerny eksperyment, aby odpowiedzieć na zadane pytanie. Moje eksperymenty wykazały, że ścieżka kodowania (lewa noga NN) powinna mieć mniej, ale szersze warstwy. Zwykle biorę o połowę tyle warstw, ale podwoję liczbę węzłów ścieżki kodowania. Nie mam na to wytłumaczenia, tylko te konfiguracje często prowadziły do ​​szybszej konwergencji.

JamesLi
źródło