Jak zacząć korzystać z sieci neuronowych


32

Jestem zupełnie nowy w sieciach neuronowych, ale bardzo zainteresowany ich zrozumieniem. Jednak nie jest łatwo zacząć.
Czy ktoś mógłby polecić dobrą książkę lub inny rodzaj zasobów? Czy jest coś, co musisz przeczytać?
Jestem wdzięczny za jakąkolwiek wskazówkę.


11
Istnieje również kurs, który Goeff Hinton prowadzi przez Coursera w sieciach neuronowych, który rozpocznie się w przyszłym tygodniu: coursera.org/course/neuralnets
Marc Shivers,

Ten kurs wygląda interesująco, ale sądzę, że na podstawie wideo i strony internetowej nie został on zaprojektowany jako wprowadzenie.
Douglas Zare

@DouglasZare: Kończę kurs Hintona, a w niektórych częściach cieszyłem się, że po raz pierwszy wziąłem kurs ML przez Andrew Ng.
Andrew

1
Tak, też to wziąłem. To był świetny kurs i bez wstępu.
Douglas Zare

Blogi i samouczki na temat sieci neuronowych dla początkujących learn-neural-networks.com
Фаиль Гафаров

Odpowiedzi:


33

Sieci neuronowe istnieją już od jakiegoś czasu i zmieniły się dramatycznie na przestrzeni lat. Jeśli tylko grzebiesz w Internecie, możesz odnieść wrażenie, że „sieć neuronowa” oznacza wielowarstwową sieć przesyłania z wyprzedzeniem, przeszkoloną w zakresie wstecznej propagacji. Lub możesz natknąć się na jeden z dziesiątek rzadko używanych, dziwnie nazwanych modeli i dojść do wniosku, że sieci neuronowe są bardziej zoo, niż projektem badawczym. Lub że są nowością. Lub...

Mógłbym kontynuować. Jeśli chcesz jasnego wyjaśnienia, posłuchałbym Geoffreya Hintona . Jest już od zawsze i (dlatego?) Wykonuje świetną robotę, łącząc wszystkie odmienne modele, nad którymi pracował, w spójną, intuicyjną (a czasem teoretyczną) narrację historyczną. Na jego stronie głównej znajdują się linki do wykładów Google Tech Talks i wykładów Videolectures.net ( między innymi w RBM i Deep Learning ).

Z tego, co widzę, oto historyczna i pedagogiczna mapa drogowa do zrozumienia sieci neuronowych, od ich powstania do najnowocześniejszych:

  • Perceptrony
    • Łatwy do zrozumienia
    • Poważnie ograniczone
  • Wielowarstwowy, przeszkolony przez propagację wsteczną
    • Wiele zasobów, aby się tego nauczyć
    • Ogólnie nie radzą sobie tak dobrze, jak SVM
  • Maszyny Boltzmann
    • Ciekawy sposób myślenia o stabilności powtarzającej się sieci w kategoriach „energii”
    • Spójrz na sieci Hopfield, jeśli chcesz łatwy do zrozumienia (ale niezbyt praktyczny) przykład sieci powtarzających się z „energią”.
    • Teoretycznie interesujące, bezużyteczne w praktyce (trening o takiej samej prędkości jak dryf kontynentalny)
  • Ograniczone maszyny Boltzmann
    • Przydatny!
    • Opierając się na teorii maszyn Boltzmanna
    • Kilka dobrych prezentacji w Internecie
  • Sieci głębokiej wiary
    • O ile mogę stwierdzić, jest to klasa wielowarstwowych KMS do wykonywania częściowo nadzorowanego uczenia.
    • Niektóre zasoby

1
Dziękuję bardzo za ten przegląd i tyle zasobów!
Claudio Albertin,

2
Bez problemu. Życzymy powodzenia w twoich sieciach neuronowych.
Stumpy Joe Pete,


5

Są to, moim zdaniem, bardzo dobre książki.

  • R. Rojas: Sieci neuronowe
  • CM Bishop: Sieci neuronowe do rozpoznawania wzorców

Książki mają pewne podobieństwa: obie mają około 500 stron i są dość stare, od 1995 roku. Niemniej jednak pozostają bardzo przydatne. Obie książki zaczynają od zera, wyjaśniając, czym są sieci neuronowe. Zapewniają jasne objaśnienia, dobre przykłady i dobre wykresy ułatwiające zrozumienie. Dokładnie wyjaśniają problemy szkolenia sieci neuronowych, w ich wielu kształtach i formach oraz co mogą, a czego nie mogą zrobić. Obie książki bardzo ładnie się uzupełniają, ponieważ jednej książki nie da się zrozumieć, jedna znajduje się w drugiej.

Rojas ma sekcję, która szczególnie mi się podoba, dotyczącą implementacji propagacji wstecznej na wielu warstwach w postaci macierzy. Ma także przyjemną sekcję o logice rozmytej i jedną o teorii złożoności. Ale potem Bishop ma wiele innych fajnych części.

Rojas jest, powiedziałbym, najbardziej dostępny. Bishop jest bardziej matematyczny i być może bardziej wyrafinowany. W obu książkach matematyka to głównie algebra liniowa i rachunek funkcji wielu zmiennych (pochodne cząstkowe i tak dalej). Bez znajomości tych tematów prawdopodobnie żadna z tych książek nie byłaby bardzo pouczająca.

Najpierw poleciłbym przeczytać Rojas.

Obie książki mają oczywiście wiele do powiedzenia na temat algorytmów, ale żadna z nich nie mówi o konkretnych implementacjach w kodzie.

Dla mnie te książki stanowią tło, które sprawiają, że kurs on-line (taki jak Hinton, na Coursera) jest zrozumiały. Książki obejmują także znacznie więcej gruntów i są o wiele bardziej szczegółowe niż można to zrobić w Internecie.

Mam nadzieję, że to pomoże i chętnie odpowiem na wszelkie pytania dotyczące książek.


3
Witamy na stronie, @Old_Mortality. Czy możesz coś powiedzieć o tych książkach? Co jest w nich dobrego? Czy są odpowiednie dla osób z pewnym poziomem zaawansowania matematycznego i / lub kodowania? Który z polecanych PO powinien przeczytać 1.? Itd.
gung - Przywróć Monikę

1
Dziękuję za sugestię. Zredagowałem moją odpowiedź powyżej.
Old_Mortality

3

Jak zauważyli inni, istnieje wiele (dobrych) zasobów online, a ja osobiście wykonałem niektóre z nich:

  • Ng's Intro to ML class on Coursera
  • Klasa Neuronowych sieci Hintona na Coursera
  • Samouczek głębokiego uczenia się Ng
  • czytanie odpowiednich rozdziałów w oryginalnym równoległym przetwarzaniu rozproszonym

Chciałbym zwrócić uwagę na fakt, że te ekspozycje były w większości zgodne z klasycznym traktowaniem, w którym warstwy (suma i nieliniowość razem) są podstawowymi jednostkami. Bardziej popularne i bardziej elastyczne leczenie zaimplementowane w większości bibliotek, takich jak torch-nn i tensorflow, wykorzystuje teraz wykres obliczeniowy z automatycznym różnicowaniem w celu osiągnięcia wysokiej modułowości. Koncepcyjnie jest to prostsze i bardziej wyzwalające. Gorąco polecam doskonały kurs otwarty Stanford CS231n do tego leczenia.

Aby uzyskać rygorystyczne leczenie oparte na nauce, możesz skonsultować się z Neural Networks autorstwa Anthony'ego i Bartletta.



0

Stworzyłem aplikację internetową, która wspiera proces uczenia się w dziedzinie sieci neuronowych.

https://blueneurons.ch/nn

Możesz bawić się ustawieniami (architektura, funkcje aktywacji, ustawienia treningu) i obserwować, jak ustawienia wpływają na prognozy. Wszystkie zestawy danych mają wstępnie skonfigurowane wartości, które można przyjąć. Możliwe jest również tworzenie własnych zestawów danych.

Instrukcje i objaśnienia do wdrożonych elementów:

Podręcznik użytkownika

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.