Jak korzystać z RBM do klasyfikacji?

12

W tej chwili gram z Restricted Boltzmann Machines i skoro już to robię, chciałbym spróbować sklasyfikować za nim ręcznie pisane cyfry.

Model, który stworzyłem, jest teraz dość fantazyjnym modelem generatywnym, ale nie wiem, jak dalej z nim iść.

W tym artykule autor mówi, że po stworzeniu dobrego modelu generatywnego, jeden „ trenuje dyskryminujący klasyfikator (tj. Klasyfikator liniowy, maszynę wektorową wspomagającą) na podstawie RBM za pomocą oznaczonych próbek ”, a ponadto stwierdza „ odkąd propagujesz wektory danych do ukrytych jednostek modelu RBM w celu uzyskania wektorów ukrytych jednostek lub reprezentacji danych na wyższym poziomie ". Problem polega na tym, że nie jestem pewien, czy dobrze to zrozumiem.

Czy to oznacza, że ​​wszystko, co muszę zrobić, to propagować dane wejściowe do ukrytych jednostek i tam mam swoją funkcję RBM do klasyfikacji?

Czy ktoś może mi wyjaśnić ten proces?

wyświetlana nazwa
źródło
Ograniczona maszyna Boltzmann jest jednym z pierwszych elementów wykorzystywanych do głębokiego uczenia się. W rzeczywistości, pierwsza ważna praca w DNN została wykonana przez Hintona. Sieć głębokich przekonań została oparta na RBM. Poszukaj tego artykułu (sieć głębokich przekonań, 2007, dla Hintona), aby uzyskać więcej informacji. Na jego stronie internetowej można znaleźć bardzo ważne zasoby, a także eksperyment demonstracyjny cs.toronto.edu/~hinton/digits.html
Bashar Haddad
@hbaderts Zacząłem się bawić z RBM. Przyjęta odpowiedź była łatwa do odczytania. Chciałem prosić o wyjaśnienie, ukryta warstwa RBM jest losowa po próbkowaniu z dystrybucji binarnej. Czy do celów klasyfikacji wykorzystywane są prawdopodobieństwa jednostek ukrytych lub próbki ukryte są próbkowane z rozkładu binarnego (1 i 0) przekazywane do klasyfikatora?
M3tho5,

Odpowiedzi:

15

Przegląd ograniczonych maszyn Boltzmann

Ograniczona maszyna Boltzmanna (RBM) jest modelem generatywnym , który uczy się rozkładu prawdopodobieństwa na wejściu. Oznacza to, że po przeszkoleniu RBM może generować nowe próbki na podstawie wyuczonego rozkładu prawdopodobieństwa. Rozkład prawdopodobieństwa w obrębie widocznych jednostek jest określony przez gdzie a jest funkcją sigmoid, jest odchylenie dla widocznego węzła , a to waga od dov

p(vh)=i=0Vp(vih),
p(vih)=σ(ai+j=0Hwjihj)
σaiiwjihjvi. Z tych dwóch równań wynika, że zależy tylko od ukrytych stanów . Oznacza to, że informacja o tym, jak generowana jest widoczna próbka , musi być przechowywana w ukrytych jednostkach, wagach i błędach.p(vh)hv

Używanie KMS do klasyfikacji

Korzystając z KMS do zadań klasyfikacyjnych, korzystasz z następującego pomysłu: ponieważ informacje o tym, jak wygenerowano dane treningowe lub testowe, są zapisywane w ukrytych jednostkach , możesz wyodrębnić te podstawowe czynniki, wprowadzając próbkę szkoleniową do widoczne jednostki RBM, propaguj je do jednostek ukrytych i użyj tego wektora jednostek ukrytych jako wektora cech. Nie wykonujesz już żadnego przejścia do widocznych jednostek.h

Ten ukryty wektor jest tylko przekształconą wersją danych wejściowych - nie jest w stanie samodzielnie sklasyfikować niczego. Aby dokonać klasyfikacji, trenowałbyś dowolny klasyfikator (klasyfikator liniowy, SVM, sieć neuronowa ze sprzężeniem zwrotnym lub cokolwiek innego) z ukrytym wektorem zamiast „surowych” danych treningowych jako danych wejściowych.

Jeśli budujesz sieć głębokiej wiary (DBN) - która była używana do wstępnego trenowania głębokich sieci neuronowych ze sprzężeniem zwrotnym w sposób nienadzorowany - wziąłbyś ten ukryty wektor i wykorzystał go jako dane wejściowe do nowego RBM, który układasz w stos na górze tego. W ten sposób możesz trenować sieć warstwa po warstwie, aż osiągnie pożądany rozmiar, bez potrzeby oznaczania danych. Na koniec dodasz np. Warstwę softmax na górę i wyszkolisz całą sieć z propagacją wsteczną w zadaniu klasyfikacyjnym.

hbaderts
źródło
Dziękujemy za edycję @ Seanny123, dzięki czemu jest o wiele łatwiejszy do odczytania.
hbaderts
5

@hbaderts doskonale opisał cały przepływ pracy. Jednak może to nie mieć sensu, jeśli jesteś zupełnie nowy w tym pomyśle. Dlatego wyjaśnię to laikowi (dlatego pominę szczegóły):

Pomyśl o głębokich sieciach jako o funkcji przekształcania danych. Przykładem transformacji jest normalizacja, rejestr danych itp. Głębokie sieci, które trenujesz, składają się z wielu warstw. Każda z tych warstw jest szkolona przy użyciu pewnego rodzaju algorytmu uczenia się. W przypadku pierwszej warstwy przekazujesz oryginalne dane jako dane wejściowe i próbujesz uzyskać funkcję, która zwróci te „te same oryginalne dane”, co dane wyjściowe. Jednak nie uzyskasz idealnej wydajności. Dlatego otrzymujesz przekształconą wersję danych wejściowych jako danych wyjściowych pierwszej warstwy.

Teraz, dla drugiej warstwy, bierzesz te „przekształcone dane” i przekazujesz je jako dane wejściowe i powtarzasz cały proces uczenia się. Robisz to dla wszystkich warstw w swojej głębokiej sieci.

Na ostatniej warstwie otrzymujesz „przekształconą wersję” oryginalnych danych wejściowych. Można to pomyśleć o wyższym poziomie abstrakcji oryginalnych danych wejściowych. Pamiętaj, że nie korzystałeś jeszcze z etykiet / danych wyjściowych w swojej głębokiej sieci. Dlatego wszystko do tego momentu to nauka bez nadzoru. Nazywa się to treningiem warstwowym.

Teraz chcesz wytrenować model klasyfikatora / regresji i jest to nadzorowany problem uczenia się. Sposób, w jaki osiągasz ten cel, polega na pobraniu „ostatecznej przekształconej wersji” oryginalnego wejścia z ostatniej warstwy w głębokiej sieci i wykorzystaniu ich jako danych wejściowych do dowolnego klasyfikatora (np. Klasyfikatora knn / klasyfikatora softmax / regresji logistycznej itp.). Nazywa się to układaniem w stosy.

Kiedy trenujesz tego klasyfikatora / ucznia ostatniego kroku, propagujesz całą swoją naukę w całej sieci. Zapewnia to, że możesz uczyć się na podstawie etykiet / wyników i odpowiednio modyfikować wyuczone parametry warstwowe.

Po wyszkoleniu modelu generatywnego weź wyniki modelu generalnego i wykorzystaj je jako dane wejściowe do klasyfikatora / ucznia. Niech błąd przepływa przez całą sieć, gdy uczenie się trwa, abyś mógł zmodyfikować parametr warstwowy nauczony we wcześniejszych krokach.

Sal
źródło