Kodowanie rzadkie definiuje się jako uczenie się kompletnego zestawu wektorów podstawowych do reprezentowania wektorów wejściowych (<- dlaczego tego chcemy). Jakie są różnice między rzadkim kodowaniem a autoencoderem? Kiedy zastosujemy rzadkie kodowanie i autoencoder?
machine-learning
neural-networks
unsupervised-learning
deep-learning
autoencoders
RockTheStar
źródło
źródło
Odpowiedzi:
Znalezienia różnic można dokonać, patrząc na modele. Najpierw spójrzmy na rzadkie kodowanie.
Rzadkie kodowanie
Rzadkie kodowanie minimalizuje cel gdzie W jest macierzą zasad, H jest macierzą kodów, a X jest macierzą danych, które chcemy reprezentować. λ realizuje wymianę między rzadkością a rekonstrukcją. Zauważ, że jeśli otrzymamy H , oszacowanie W jest łatwe za pomocą najmniejszych kwadratów.
Na początku jednak nie mamy Jednak istnieje wiele algorytmów, które mogą rozwiązać powyższy cel względem H . Właściwie w ten sposób wnioskujemy: musimy rozwiązać problem optymalizacji, jeśli chcemy poznać h należące do niewidzialnego x .H H h x
Auto enkodery
Automatyczne enkodery to rodzina nienadzorowanych sieci neuronowych. Jest ich całkiem sporo, np. Głębokie auto kodery lub te, które mają różne sztuczki regularyzacji - np. Denoising, skurcz, rzadki. Istnieją nawet sieci probabilistyczne, takie jak generatywne sieci stochastyczne lub wariacyjny auto koder. Ich najbardziej abstrakcyjną formą jest ale na razie skorzystamy z dużo prostszej: L ae = | | W σ ( W T X )
Podobieństwa
Zauważ, że wygląda prawie jak L a e po ustawieniu H = σ ( W T X ) . Różnica polega na tym, że i) auto kodery nie zachęcają do rzadkości w swojej ogólnej formie ii) autoencoder używa modelu do wyszukiwania kodów, podczas gdy rzadkie kodowanie robi to za pomocą optymalizacji.Lsc Lae H=σ(WTX)
W odniesieniu do danych obrazu, naturalnego związku ze stałą koderów samochodowych i rzadki kodowania często są zbieżne . Auto kodery są jednak znacznie wydajniejsze i można je z łatwością uogólnić na znacznie bardziej skomplikowane modele. Np. Dekoder może być wysoce nieliniowy, np. Głęboka sieć neuronowa. Co więcej, nie ma się związku z kwadratową stratą (od której zależy oszacowanie W dla L s c .)W W Lsc
Również różne metody regularyzacji dają reprezentacje o różnej charakterystyce. Wykazano również, że automatyczne kodowanie odszumiania jest równoważne pewnej formie RBM itp.
Ale dlaczego?
Jeśli chcesz rozwiązać problem z prognozowaniem, nie będziesz potrzebował auto koderów, chyba że masz tylko mało danych oznaczonych i dużo danych nieznakowanych. Wtedy na ogół lepiej jest wyszkolić głęboki auto koder i umieścić na nim liniowy SVM zamiast trenować głęboką sieć neuronową.
Są to jednak bardzo potężne modele do przechwytywania charakterystyki dystrybucji. Jest to niejasne, ale obecnie prowadzone są badania przekształcające to w twarde fakty statystyczne. Głęboko utajone modele gaussowskie, zwane także koderami Variational Auto lub generatywnymi sieciami stochastycznymi, są dość interesującymi sposobami uzyskania auto koderów, które w wiarygodny sposób szacują podstawowy rozkład danych.
źródło
W neuronauce termin Neural Coding jest używany w odniesieniu do wzorców aktywności elektrycznej neuronów indukowanych przez bodziec. Z kolei rzadkie kodowanie jest jednym rodzajem wzoru. Mówi się, że kod jest rzadki, gdy bodziec (jak obraz) wywołuje aktywację tylko stosunkowo niewielkiej liczby neuronów, które łącznie reprezentują go w rzadki sposób. W uczeniu maszynowym można zastosować to samo ograniczenie optymalizacji, które zastosowano do stworzenia rzadkiego modelu kodu, aby zaimplementować rzadkie autokodery, które są zwykłymi autokoderami szkolonymi z ograniczeniem rzadkości. Poniżej podano bardziej szczegółowe wyjaśnienia dla każdego pytania.
Kodowanie rzadkie definiuje się jako uczenie się kompletnego zestawu wektorów podstawowych do reprezentowania wektorów wejściowych (<- dlaczego tego chcemy)
Po pierwsze, przynajmniej od tego czasu (Hubel i Wiesel, 1968) wiadomo, że w regionie V1 istnieją specyficzne komórki, które reagują maksymalnie na bodziec podobny do krawędzi (poza tym, że mają inne „przydatne” właściwości). Kodowanie rzadkie jest modelem, który dobrze wyjaśnia wiele zaobserwowanych cech tego systemu. Zobacz (Olshausen i Field, 1996), aby uzyskać więcej informacji.
Po drugie, wykazano, że model opisujący rzadkie kodowanie jest użyteczną techniką do ekstrakcji funkcji w uczeniu maszynowym i daje dobre wyniki w zadaniach uczenia transferowego. Raina i in. (2007) wykazali, że zestaw „wektorów bazowych” (cech, takich jak pociągnięcia piórem i krawędzie) wyuczony na zestawie szkoleniowym złożonym z odręcznych znaków poprawia klasyfikację w zadaniu rozpoznawania cyfr odręcznie. Później wykorzystano modele oparte na rzadkim kodowaniu do trenowania „głębokich” sieci, układając warstwy rzadkich detektorów cech w celu stworzenia „rzadkiej głębokiej sieci przekonań” (Lee i in., 2007). Niedawno zadziwiające wyniki w rozpoznawaniu obrazów uzyskano przy użyciu modeli opartych na rzadkim kodowaniu do zbudowania sieci z kilkoma warstwami (słynny „Google Brain”), który był w stanie odróżnić obraz kota w sposób całkowicie bez nadzoru (Le i in. , 2013) .
Po trzecie, prawdopodobnie możliwe jest wykorzystanie wyuczonej podstawy do kompresji. Nie widziałem jednak, żeby ktoś to robił.
Jakie są różnice między rzadkim kodowaniem a autoencoderem?
Autoencoder to model, który próbuje zrekonstruować dane wejściowe, zwykle z wykorzystaniem pewnego rodzaju ograniczenia. Według Wikipedii jest to „sztuczna sieć neuronowa używana do uczenia się efektywnego kodowania”. W definicji autoencodera nie ma nic wymagającego rzadkości. Ograniczenia oparte na rzadkim kodowaniu to jedna z dostępnych technik, ale są też inne, na przykład autoodbiorniki Denoising, autokodery Contractive i RBM. Wszystko to sprawia, że sieć uczy się dobrych reprezentacji danych wejściowych (które są często również „rzadkie”).
Kiedy zastosujemy rzadkie kodowanie i autoencoder?
Prawdopodobnie jesteś zainteresowany wykorzystaniem automatycznego kodera do ekstrakcji funkcji i / lub wstępnego szkolenia głębokich sieci. Jeśli zaimplementujesz autoencoder z ograniczeniem rzadkości, będziesz używać obu.
źródło
A sparse coder is kind of like half an auto-encoder. An auto-encoder works like:
For back-propagation, the error signal, the loss, is: input - output
If we apply a sparsity constraint on the hidden outputs, then most will be zeros, and a few will be 1s. Then the second layer is essentially a set of linear basis functions, that are added together, according to which of the hidden outputs are 1s.
W rzadkim kodowaniu mamy tylko drugą połowę:
„Kody” to kilka liczb rzeczywistych, które wybierają podstawowe funkcje reprezentowane przez wagi w warstwie sieci neuronowej. Ponieważ w artykule Olshausena stosują one ograniczenie rzadkości do kodów, kody są, podobnie jak w rzadkim auto-enkoderze, rzadkie: przeważnie zera z kilkoma zerami.
Różnica, którą widzimy teraz wyraźnie: w przypadku rzadkiego kodowania nie ma pierwszej połowy sieci neuronowej: kody nie są nam dostarczane automatycznie przez sieć neuronową.
Jak uzyskać kody w rzadkim kodowaniu? Musimy się zoptymalizować, co robimy, stosując gradient opadający lub podobny, aby znaleźć zestaw kodów, które najlepiej zapewniają wyjście pasujące do obrazu wejściowego. Musimy to zrobić dla każdego obrazu, w tym dla każdego obrazu testowego, za każdym razem.
źródło
You might want to read this recent paper, https://arxiv.org/abs/1708.03735v2 on precisely this same topic. In this paper the authors show that indeed one can set up an autoencoder such that the ground truth dictionary is a critical point of that autoencoder's squared loss function.
źródło