Ostatnio czytałem o głębokim uczeniu się i jestem zdezorientowany terminami (lub powiedzmy technologiami). Jaka jest różnica pomiędzy
- Konwolucyjne sieci neuronowe (CNN),
- Ograniczone maszyny Boltzmann (RBM) i
- Auto-enkodery?
Ostatnio czytałem o głębokim uczeniu się i jestem zdezorientowany terminami (lub powiedzmy technologiami). Jaka jest różnica pomiędzy
Odpowiedzi:
Autoencoder to prosta 3-warstwowa sieć neuronowa, w której jednostki wyjściowe są bezpośrednio podłączone z powrotem do jednostek wejściowych . Np. W sieci takiej jak ta:
output[i]
ma przewagę do input[i]
każdego i
. Zazwyczaj liczba jednostek ukrytych jest znacznie mniejsza niż liczba jednostek widocznych (wejściowych / wyjściowych). W rezultacie, kiedy przepuszczasz dane przez taką sieć, najpierw kompresuje (koduje) wektor wejściowy, aby „dopasować” się do mniejszej reprezentacji, a następnie próbuje go zrekonstruować (dekodować) z powrotem. Zadaniem szkolenia jest zminimalizowanie błędu lub rekonstrukcji, tj. Znalezienie najbardziej wydajnej kompaktowej reprezentacji (kodowania) dla danych wejściowych.
RBM podziela podobny pomysł, ale stosuje podejście stochastyczne. Zamiast deterministycznego (np. Logistycznego lub ReLU) wykorzystuje jednostki stochastyczne o szczególnym (zwykle binarnym rozkładzie Gaussa). Procedura uczenia się składa się z kilku etapów próbkowania Gibbsa (propagacja: próbki ukryte z widocznymi; rekonstrukcja: próbki widoczne z ukrytych; powtórzenie) i dostosowanie wag w celu zminimalizowania błędu rekonstrukcji.
Intuicja stojąca za RBM polega na tym, że istnieją pewne widoczne zmienne losowe (np. Recenzje filmów od różnych użytkowników) i niektóre ukryte zmienne (takie jak gatunki filmowe lub inne cechy wewnętrzne), a zadaniem szkolenia jest ustalenie, jak te dwa zestawy zmiennych są w rzeczywistości połączone ze sobą (więcej na temat tego przykładu można znaleźć tutaj ).
Konwolucyjne sieci neuronowe są nieco podobne do tych dwóch, ale zamiast uczenia się pojedynczej globalnej macierzy masy między dwiema warstwami, starają się znaleźć zestaw lokalnie połączonych neuronów. Sieci CNN są najczęściej używane do rozpoznawania obrazów. Ich nazwa pochodzi od operatora „splot” lub po prostu „filtr”. Krótko mówiąc, filtry są łatwym sposobem wykonywania złożonej operacji za pomocą prostej zmiany jądra splotu. Zastosuj gaussowskie jądro rozmycia, a wygładzisz je. Zastosuj jądro Canny, a zobaczysz wszystkie krawędzie. Zastosuj jądro Gabora, aby uzyskać funkcje gradientu.
(zdjęcie stąd )
Celem splotowych sieci neuronowych nie jest użycie jednego z predefiniowanych jąder, lecz nauka jąder specyficznych dla danych . Pomysł jest taki sam, jak w przypadku autoencoderów lub RBM - przetłumacz wiele funkcji niskiego poziomu (np. Recenzje użytkowników lub piksele obrazu) na skompresowaną reprezentację wysokiego poziomu (np. Gatunki filmowe lub krawędzie) - ale teraz wagi uczymy się tylko od neuronów, które są przestrzennie blisko siebie.
Wszystkie trzy modele mają swoje przypadki użycia, zalety i wady, ale prawdopodobnie najważniejsze właściwości to:
UPD.
Redukcja wymiarów
Kiedy reprezentujemy jakiś obiekt jako wektor elementów, mówimy, że jest to wektor w przestrzeni wymiarowej. Zatem zmniejszenie wymiarów odnosi się do procesu udoskonalania danych w taki sposób, że każdy wektor danych jest tłumaczony na inny wektor w przestrzeni wymiarowej (wektor z elementów), gdzie . Prawdopodobnie najczęstszym sposobem na to jest PCA . Z grubsza mówiąc, PCA znajduje „wewnętrzne osie” zestawu danych (zwane „komponentami”) i sortuje je według ich ważności. Pierwszynajważniejsze elementy są następnie wykorzystywane jako nowa podstawa. Każdy z tych komponentów może być uważany za cechę wysokiego poziomu, opisującą wektory danych lepiej niż oryginalne osie.
Oba - autoencodery i RBM - robią to samo. Biorąc wektor w przestrzeni wymiarowej, tłumaczą go na wymiarową, starając się zachować jak najwięcej ważnych informacji, a jednocześnie usuwać szum. Jeśli trening autoencodera / RBM się powiódł, każdy element wynikowego wektora (tj. Każda ukryta jednostka) reprezentuje coś ważnego w obiekcie - kształt brwi na obrazie, gatunek filmu, dziedzina badań w artykule naukowym itp. Ty weź dużo hałaśliwych danych jako dane wejściowe i produkuj znacznie mniej danych w znacznie bardziej wydajnej reprezentacji.
Głębokie architektury
Jeśli więc mieliśmy już PCA, dlaczego, u diabła, wymyśliliśmy autoencodery i RBM? Okazuje się, że PCA pozwala jedynie na liniową transformację wektorów danych. Oznacza to, że mając głównych składników , możesz reprezentować tylko wektory . To już całkiem dobre, ale nie zawsze wystarczające. Bez względu na to, ile razy zastosujesz PCA do danych - związek zawsze pozostanie liniowy.
Z kolei autoencodery i RBM są z natury nieliniowe, dzięki czemu mogą nauczyć się bardziej skomplikowanych relacji między jednostkami widocznymi i ukrytymi. Ponadto można je układać w stosy , co czyni je jeszcze bardziej wydajnymi. Np. Trenujesz KMS z widocznymi i ukrytymi jednostkami, następnie umieszczasz inny KMS z widocznymi i ukrytymi jednostkami na pierwszej i trenujesz również itd. I dokładnie tak samo z auto-koderami.
Ale nie dodajesz tylko nowych warstw. Na każdej warstwie próbujesz nauczyć się najlepszej możliwej reprezentacji danych z poprzedniej:
Na powyższym obrazku jest przykład takiej głębokiej sieci. Zaczynamy od zwykłych pikseli, kontynuujemy od prostych filtrów, a następnie od elementów twarzy, a na końcu kończymy na całych twarzach! To jest istota głębokiego uczenia się .
Zauważmy, że w tym przykładzie pracowaliśmy z danymi obrazu i kolejno zajmowaliśmy coraz większe obszary przestrzennie bliskich pikseli. Czy to nie brzmi podobnie? Tak, ponieważ jest to przykład głębokiej sieci splotowej . Niezależnie od tego, czy jest oparty na auto-koderach, czy RBM, wykorzystuje splot, aby podkreślić znaczenie lokalizacji. Właśnie dlatego CNN różnią się nieco od autoencoderów i RBM.
Klasyfikacja
Żaden z wymienionych tutaj modeli nie działa jako algorytmy klasyfikacji per se. Zamiast tego są używane do wstępnego szkolenia - uczenia się transformacji z reprezentacji niskiego poziomu i trudnej do konsumpcji (np. Pikseli) do reprezentacji wysokiego poziomu. Po wstępnym przeszkoleniu głębokiej (a może nie tak głębokiej) sieci wektory wejściowe są przekształcane w lepszą reprezentację, a wektory wynikowe są ostatecznie przekazywane do prawdziwego klasyfikatora (takiego jak SVM lub regresja logistyczna). Na powyższym obrazku oznacza, że na samym dole znajduje się jeszcze jeden element, który faktycznie klasyfikuje.
Wszystkie te architektury można interpretować jako sieć neuronową. Główną różnicą między AutoEncoderem a siecią konwergentną jest poziom okablowania sieci. Sieci konwergentne są dość mocno podłączone. Operacja konwolucji jest w dużej mierze lokalna w dziedzinie obrazów, co oznacza znacznie mniejszą liczbę połączeń w widoku sieci neuronowej. Operacja łączenia (podpróbkowania) w domenie obrazu jest również przewodowym zestawem połączeń neuronowych w domenie neuronowej. Takie ograniczenia topologiczne dotyczące struktury sieci. Biorąc pod uwagę takie ograniczenia, szkolenie CNN uczy się najlepszych wag dla tej operacji splotu (w praktyce istnieje wiele filtrów). Sieci CNN są zwykle używane do zadań związanych z obrazem i mową, w których dobrym założeniem są ograniczenia splotowe.
Natomiast Autoencodery prawie nie precyzują niczego na temat topologii sieci. Są znacznie bardziej ogólne. Chodzi o to, aby znaleźć dobrą transformację neuronową, aby zrekonstruować dane wejściowe. Składają się z enkodera (rzutuje wejście na ukrytą warstwę) i dekodera (ponownie rzutuje ukrytą warstwę na wyjście). Ukryta warstwa uczy się zestawu ukrytych elementów lub ukrytych czynników. Autokodery liniowe obejmują tę samą podprzestrzeń co PCA. Biorąc pod uwagę zestaw danych, uczą się wielu podstaw, aby wyjaśnić podstawowy wzorzec danych.
KMS są również siecią neuronową. Ale interpretacja sieci jest zupełnie inna. Mechanizmy RBM interpretują sieć nie jako sprzężenie zwrotne, ale dwuczęściowy wykres, na którym chodzi o poznanie wspólnego rozkładu prawdopodobieństwa zmiennych ukrytych i wejściowych. Są one postrzegane jako model graficzny. Pamiętaj, że zarówno AutoEncoder, jak i CNN uczy się funkcji deterministycznej. Z drugiej strony KMS to model generatywny. Może generować próbki z wyuczonych ukrytych reprezentacji. Istnieją różne algorytmy trenowania KMS. Jednak na koniec dnia, po nauczeniu się mechanizmów KMS, można użyć jego wag sieciowych, aby zinterpretować je jako sieć przesyłania zwrotnego.
RBM można postrzegać jako pewnego rodzaju probabilistyczny auto koder. W rzeczywistości wykazano, że pod pewnymi warunkami stają się one równoważne.
Niemniej jednak o wiele trudniej jest wykazać tę równoważność niż po prostu uwierzyć, że są to różne bestie. Rzeczywiście, trudno mi znaleźć wiele podobieństw między tymi trzema, gdy tylko zacznę się uważnie przyglądać.
Na przykład, jeśli zanotujesz funkcje zaimplementowane przez auto koder, RBM i CNN, otrzymasz trzy zupełnie różne wyrażenia matematyczne.
Nie mogę ci wiele powiedzieć o RBM, ale autoencodery i CNN to dwa różne rodzaje rzeczy. Autoencoder to sieć neuronowa, która jest szkolona w sposób nienadzorowany. Celem autoencodera jest znalezienie bardziej zwartej reprezentacji danych poprzez naukę kodera, który przekształca dane do odpowiadającej im zwartej reprezentacji, oraz dekodera, który rekonstruuje oryginalne dane. Część kodera w autoencoderach (i pierwotnie RBM) została wykorzystana do nauki dobrych początkowych wag głębszej architektury, ale są też inne aplikacje. Zasadniczo autoencoder uczy się grupowania danych. Natomiast termin CNN odnosi się do rodzaju sieci neuronowej, która używa operatora splotu (często splotu 2D, gdy jest on wykorzystywany do zadań przetwarzania obrazu) do wydobywania elementów z danych. W przetwarzaniu obrazu filtry które są złożone ze zdjęć, uczą się automatycznie, jak rozwiązać dane zadanie, np. zadanie klasyfikacyjne. To, czy kryterium szkolenia jest regresja / klasyfikacja (nadzorowana) czy rekonstrukcja (bez nadzoru), nie ma związku z ideą zwojów jako alternatywy dla przekształceń afinicznych. Możesz także mieć auto-koder CNN.