Ograniczone maszyny Boltzmanna a wielowarstwowe sieci neuronowe

22

Chciałem eksperymentować z siecią neuronową w związku z problemem klasyfikacji, przed którym stoję. Natknąłem się na dokumenty, które mówią o KMS. Ale z tego, co rozumiem, nie różnią się niczym od posiadania wielowarstwowej sieci neuronowej. Czy to jest dokładne?

Ponadto pracuję z R i nie widzę żadnych puszkowanych pakietów dla RBM. Natknąłem się na literaturę, która mówi o sieciach głębokiego uczenia się, które są w zasadzie ułożone RBM, ale nie jestem pewien, czy warto je wdrożyć w R. Czy ktoś miałby jakieś wskazówki? Dzięki

brokuły
źródło
3
Różnią się od sieci wielowarstwowych przeszkolonych z backprop. Oto niektóre zasoby dla wszystkich rodzajów sieci neuronowych: stats.stackexchange.com/a/36257/13669
Stumpy Joe Pete

Odpowiedzi:

21

Przede wszystkim RBM z pewnością różnią się od normalnych sieci neuronowych, a przy odpowiednim zastosowaniu osiągają znacznie lepszą wydajność. Ponadto, szkolenie kilku warstw RBM, a następnie użycie znalezionych ciężarów jako punktu wyjścia dla Mulitlayer NN często daje lepsze wyniki niż po prostu użycie Wielowarstwowej NN.

Najlepszy wskaźnik, jaki mogę wymyślić, to kurs Coursera, prowadzony przez Geoffreya Hintona, który jest jedną z osób odpowiedzialnych za KMS:

https://class.coursera.org/neuralnets-2012-001/class/index

filmy na temat RBM i Denoising Autoencoders są cennym źródłem wiedzy dla wszystkich zainteresowanych tematem.

Jeśli chodzi o implementację w języku R, ja też nie znam żadnej, ale jeśli chcesz ją wdrożyć, lepiej nie używać czystego języka R (chyba że twoje dane nie są zbyt duże). Trening RBM zajmuje dość dużo czasu, a jeśli użyjesz czystego R zamiast R z C, może znacznie wzrosnąć.

sjm.majewski
źródło
1
Potrafię porozmawiać o problemach z wydajnością R. Napisałem w niej kilka KMS. Zdecydowana większość czasu obliczeniowego jest poświęcana na mnożenie macierzy, które zwykle są wolniejsze w R niż w innych językach (być może 3 lub 5 razy). Ponowna kompilacja R dla własnego systemu z dostosowanym BLAS (biblioteka algebry liniowej) może bardzo pomóc, podobnie jak tłumaczenie powolnych części na C ++ za pomocą Rcpp. Napisanie RBM z jedną warstwą ukrytą jest w rzeczywistości na tyle szybkie, że prawdopodobnie warto go zakodować w dowolnym języku, w którym czujesz się najlepiej, zanim spróbujesz zoptymalizować szybkość.
David J. Harris
@David J. Harris Czy podzieliłeś się którymś z wdrożeń w języku R? Chciałbym na nie spojrzeć.
Zach
1
@Zach W tej chwili jestem dość zajęty, ale zobaczę, co mogę zrobić z open-sourcingiem w przyszłości. Możesz również wysłać mi wiadomość e-mail na adres w moim profilu, aby otrzymać kopię tego, co mam, jeśli nie masz nic przeciwko sortowaniu według nieudokumentowanego / w połowie ukończonego projektu.
David J. Harris
8

W R możesz używać sieci neuronowej i RSNNS (która zapewnia interfejs do symulatora sieci neuronowej w Stuttgarcie ), aby dopasować standardowe wielowarstwowe sieci neuronowe, ale istnieją różnice w RBM.

Jeśli chodzi o wdrażanie głębokich sieci neuronowych w R, myślę, że jedyną sensowną strategią byłoby połączenie istniejących implementacji FOSS, co zwykle jest znacznie lepszym rozwiązaniem niż po prostu samodzielne ponowne wdrażanie rzeczy (nigdy nie do końca rozumiałem, dlaczego wszyscy muszą wynaleźć koło na nowo). R oferuje do tego wiele funkcji, a Ty możesz wykorzystać przetwarzanie danych R dzięki szybkości i gotowym aspektom istniejących rozwiązań. Na przykład można połączyć MDP z funkcjami interfejsu Python / R, patrz np. Ten artykuł .

Edycja: Andrew Landgraf ze Statystycznie znaczący zapewnia trochę kodu R dla RBM .

Momo
źródło