Jaka jest różnica między siecią neuronową a głęboką siecią neuronową i dlaczego głębokie działają lepiej?

113

Nie widziałem dokładnie takiego pytania i dlatego zadaję nowe pytanie.

To, co mnie interesuje, to nie definicja sieci neuronowej, ale zrozumienie faktycznej różnicy z głęboką siecią neuronową.

Więcej kontekstu: wiem, czym jest sieć neuronowa i jak działa propagacja wsteczna. Wiem, że DNN musi mieć wiele ukrytych warstw. Jednak 10 lat temu w klasie dowiedziałem się, że posiadanie kilku warstw lub jednej warstwy (nie licząc warstw wejściowych i wyjściowych) było równoważne pod względem funkcji, które sieć neuronowa jest w stanie reprezentować (patrz uniwersalne twierdzenie aproksymacyjne Cybenko ) i że posiadanie im więcej warstw, tym bardziej skomplikowana jest analiza bez wzrostu wydajności. Oczywiście tak już nie jest.

Przypuszczam, że może niesłusznie, że różnice dotyczą raczej algorytmu uczenia i właściwości niż struktury, dlatego naprawdę doceniłbym, gdyby odpowiedź mogła podkreślić przyczyny, które umożliwiły przejście do DNN (np. Dowód matematyczny lub losowa gra z sieciami) ?) i pożądane (np. szybkość konwergencji?)

Nicolas
źródło
Jeśli funkcja, którą chcesz przybliżyć, jest funkcją kompozycyjną (powszechną w przetwarzaniu obrazu i wielu domenach naturalnych ze względu na prawo fizyki). Można udowodnić, że sieci głębokie mogą wykorzystać tę kompozycję i osiągnąć ten sam poziom błędu aproksymacji przy wykładniczo mniejszej liczbie neuronów (w porównaniu do sieci z jedną warstwą ukrytą). Ref: Poggio, Tomaso i in. „Dlaczego i kiedy głębokie, ale nie płytkie sieci mogą uniknąć przekleństwa wymiarowości: przegląd”. International Journal of Automation and Computing (2017)
DataHungry
Możesz
rzucić

Odpowiedzi:

151

Zacznijmy od trywialnej: Głęboka sieć neuronowa jest po prostu siecią przekazującą z wieloma ukrytymi warstwami.

To mniej więcej wszystko, co można powiedzieć o definicji. Sieci neuronowe mogą być cykliczne lub sprzężone zwrotnie; te z wyprzedzeniem nie mają żadnych pętli na wykresie i można je układać w warstwach. Jeśli istnieje „wiele” warstw, to mówimy, że sieć jest głęboka .

Jak wiele warstw ma sieć mieć w celu zakwalifikowania się jako głęboko? Nie ma jednoznacznej odpowiedzi na to pytanie (to trochę tak, jakby zapytać, ile ziaren tworzy stos ), ale zwykle posiadanie dwóch lub więcej ukrytych warstw liczy się jako głębokie. Natomiast sieć z tylko jedną ukrytą warstwą jest tradycyjnie nazywana „płytką”. Podejrzewam, że nastąpi tu inflacja, a za dziesięć lat ludzie mogą pomyśleć, że wszystko z mniej niż, powiedzmy, dziesięcioma warstwami jest płytkie i nadaje się tylko do ćwiczeń w przedszkolu. Nieformalnie „głęboka” sugeruje, że sieć jest trudna w obsłudze.

Oto dostosowana stąd ilustracja :

Głęboka vs niegłębna sieć neuronowa

Ale prawdziwym pytaniem, które zadajesz, jest oczywiście: dlaczego posiadanie wielu warstw byłoby korzystne?

Myślę, że dość zadziwiającą odpowiedzią jest to, że nikt tak naprawdę nie wie. Istnieje kilka typowych wyjaśnień, które pokrótce omówię poniżej, ale żadne z nich nie zostało w przekonujący sposób udowodnione, że jest prawdziwe i nie można nawet być pewnym, że posiadanie wielu warstw jest naprawdę korzystne.

Mówię, że jest to zdumiewające, ponieważ głębokie uczenie się jest bardzo popularne, co roku bije wszelkie rekordy (od rozpoznawania obrazów, przez grę Go, po automatyczne tłumaczenie itp.), Jest wykorzystywane przez przemysł itp. Itd. I nadal nie jesteśmy całkiem pewni, dlaczego to działa tak dobrze.

Swoją dyskusji na temat głębokiego Uczenie książki Goodfellow, Bengio i Courville który wyszedł w 2017 roku i jest powszechnie uważany za książka o głębokiej nauki. (Jest dostępny bezpłatnie online.) Odpowiednia sekcja to 6.4.1 Uniwersalne właściwości i głębokość aproksymacji .

Ty to napisałeś

10 lat temu w klasie dowiedziałem się, że posiadanie kilku warstw lub jednej warstwy (nie licząc warstw wejściowych i wyjściowych) było równoważne pod względem funkcji, które sieć neuronowa może reprezentować [...]

Musisz odwoływać się do tak zwanego uniwersalnego twierdzenia aproksymacyjnego , udowodnionego przez Cybenko w 1989 r. I uogólnionego przez różnych ludzi w latach 90. Mówi w zasadzie, że płytka sieć neuronowa (z 1 ukrytą warstwą) może aproksymować dowolną funkcję, czyli w zasadzie może się wszystkiego nauczyć . Dotyczy to różnych nieliniowych funkcji aktywacyjnych, w tym rektyfikowanych jednostek liniowych, z których korzysta obecnie większość sieci neuronowych (w tym podręczniku Leshno i in. 1993 ).

Jeśli tak, to dlaczego wszyscy używają sieci głębokich?

Naiwna odpowiedź brzmi: ponieważ działają lepiej. Oto rysunek z książki Deep Learning, który pokazuje, że pomaga mieć więcej warstw w jednym konkretnym zadaniu, ale to samo zjawisko często obserwuje się w różnych zadaniach i domenach:

Więcej warstw jest dobre

Wiemy, że płytka sieć może działać równie dobrze, jak te głębsze. Ale tak nie jest; i zwykle nie. Pytanie brzmi --- dlaczego? Możliwe odpowiedzi:

  1. Może płytka sieć potrzebowałaby więcej neuronów niż głęboka?
  2. Może płytka sieć jest trudniejsza do wyszkolenia przy użyciu naszych obecnych algorytmów (np. Ma bardziej nieprzyjemne lokalne minima lub szybkość konwergencji jest wolniejsza, czy cokolwiek innego)?
  3. Może płytka architektura nie pasuje do problemów, które zwykle próbujemy rozwiązać (np. Rozpoznawanie obiektów jest kwintesencją „głębokiego”, hierarchicznego procesu)?
  4. Coś innego?

Książka Deep Learning opowiada się za punktorem nr 1 i nr 3. Po pierwsze, argumentuje, że liczba jednostek w płytkiej sieci rośnie wykładniczo wraz ze złożonością zadań. Aby płytka sieć była użyteczna, może być bardzo duża; być może znacznie większy niż głęboka sieć. Opiera się to na wielu dokumentach wykazujących, że płytkie sieci w niektórych przypadkach potrzebują wykładniczo wielu neuronów; ale to, czy np. klasyfikacja MNIST czy gra Go to takie przypadki, nie jest do końca jasne. Po drugie, książka mówi:

Wybór modelu głębokiego koduje bardzo ogólne przekonanie, że funkcja, której chcemy się nauczyć, powinna obejmować zestaw kilku prostszych funkcji. Z interpretacyjnego punktu widzenia można to interpretować jako powiedzenie, że naszym zdaniem problem uczenia się polega na odkryciu zestawu podstawowych czynników zmienności, które z kolei można opisać w kategoriach innych, prostszych podstawowych czynników zmienności.

Myślę, że obecny „konsensus” jest taki, że jest to kombinacja punktów 1 i 3: w rzeczywistych zadaniach głęboka architektura jest często korzystna, a płytka architektura byłaby nieefektywna i wymagałaby znacznie większej liczby neuronów dla tej samej wydajności.

Ale nie jest to udowodnione. Rozważ np. Zagoruyko i Komodakis, 2016, Wide Residual Networks . Pozostałe sieci z ponad 150 warstwami pojawiły się w 2015 roku i wygrały różne konkursy rozpoznawania obrazów. Był to duży sukces i wyglądał jak przekonujący argument na rzecz głębi; oto jedna postać z prezentacji pierwszego autora na resztkowym papierze sieciowym (zauważ, że czas mylnie idzie tutaj w lewo):

głębokie sieci resztkowe

Ale powyższy dokument pokazuje, że „szeroka” sieć resztkowa z „tylko” 16 warstwami może przewyższać „głęboką” sieć z ponad 150 warstwami. Jeśli to prawda, wówczas cały punkt powyższej figury załamuje się.

A może Ba i Caruana, 2014: Czy sieci głębokie naprawdę muszą być głębokie? :

W tym artykule przedstawiamy empiryczne dowody, że płytkie sieci są w stanie nauczyć się tej samej funkcji co sieci głębokie, a w niektórych przypadkach mają tę samą liczbę parametrów co sieci głębokie. Robimy to, najpierw szkoląc najnowocześniejszy model głęboki, a następnie trenując model płytki, aby naśladować model głęboki. Model mimiczny jest trenowany przy użyciu schematu kompresji modelu opisanego w następnym rozdziale. Co ciekawe, dzięki kompresji modelu jesteśmy w stanie trenować płytki sieci tak, aby był tak dokładny jak niektóre modele głębokie, nawet jeśli nie jesteśmy w stanie trenować tych płytkich sieci, aby były tak dokładne, jak sieci głębokie, gdy płytki sieci są trenowane bezpośrednio na oryginale oznaczone dane treningowe. Jeśli płytka sieć o takiej samej liczbie parametrów jak sieć głęboka może nauczyć się naśladować sieć głęboką o wysokiej wierności,

Jeśli to prawda, oznaczałoby to, że prawidłowe wyjaśnienie jest raczej moją kulą # 2, a nie # 1 lub # 3.

Jak powiedziałem - nikt tak naprawdę nie jest tego pewien.


Uwagi końcowe

Postęp osiągnięty w głębokim uczeniu się w ciągu ostatnich 10 lat jest naprawdę niesamowity, ale większość tego postępu osiągnięto metodą prób i błędów, a nadal brakuje nam bardzo podstawowego zrozumienia, co dokładnie sprawia , że sieci głębokie działają tak dobrze. Nawet lista rzeczy, które ludzie uważają za kluczowe dla ustanowienia skutecznej głębokiej sieci, wydaje się zmieniać co kilka lat.

Renesans głęboka nauka rozpoczęła się w 2006 roku, kiedy Geoffrey Hinton (który pracuje w sieciach neuronowych do 20+ lat bez większego zainteresowania ze strony innych) opublikował kilka papierów przełomowych oferuje skuteczny sposób trenowania głębokie sieci ( papier Science , Neural papier obliczeń ) . Sztuczka polegała na tym, aby przed rozpoczęciem opadania gradientu stosować bez nadzoru trening wstępny . Dokumenty te zrewolucjonizowały tę dziedzinę i przez kilka lat ludzie uważali, że kluczem jest bezobsługowy wstępny trening.

Następnie w 2010 r. Martens wykazał, że głębokie sieci neuronowe można trenować metodami drugiego rzędu (tak zwanymi metodami wolnymi od Hesji) i że mogą one przewyższać sieci szkolone przez szkolenie wstępne: Głębokie uczenie się dzięki optymalizacji wolnej od Hesji . Następnie w 2013 r. Sutskever i in. pokazał, że stochastyczne zejście gradientowe z kilkoma bardzo sprytnymi sztuczkami może przewyższyć metody wolne od Hesji: o znaczeniu inicjalizacji i rozmachu w głębokim uczeniu się . Około 2010 r. Ludzie zdali sobie sprawę, że zastosowanie rektyfikowanych jednostek liniowych zamiast jednostek sigmoidalnych stanowi ogromną różnicę dla spadku gradientu. Rezygnacja pojawiła się w 2014 r. Pozostałe sieci pojawiły się w 2015 r. Ludzie wciąż wymyślają coraz bardziej skuteczne sposoby szkolenia głębokich sieci ito, co 10 lat temu wydawało się kluczowym wglądem, dziś jest dziś często uciążliwe. Wszystko to w dużej mierze wynika z prób i błędów, a wiedza na temat tego, co sprawia, że ​​niektóre rzeczy działają tak dobrze, a niektóre nie, jest niewielka . Trening głębokich sieci jest jak wielki worek sztuczek. Udane lewy są zwykle zracjonalizowane post factum.

Nie wiemy nawet, dlaczego głębokie sieci osiągają plateau wydajności; zaledwie 10 lat ludzie obwiniali lokalne minima, ale obecnie uważa się, że nie o to chodzi (kiedy płaskowyże występów gradienty zwykle pozostają duże). To jest takie podstawowe pytanie dotyczące sieci głębokich i nawet o tym nie wiemy .

Aktualizacja: To mniej więcej temat rozmowy NIPS 2017 Ali Rahimi na temat uczenia maszynowego jako alchemii: https://www.youtube.com/watch?v=Qi1Yry33TQE .


[Ta odpowiedź została całkowicie przepisana w kwietniu 2017 r., Więc niektóre poniższe komentarze nie mają już zastosowania.]

ameba
źródło
2
Niezła odpowiedź! 1) Jak wspomniano również @Nicolas, okazuje się, że istnieje twierdzenie ( en.wikipedia.org/wiki/Universal_approximation_theorem ), które głosi, że sieć neuronowa z pojedynczą ukrytą warstwą i skończoną liczbą neuronów może być przybliżona dowolna funkcja ciągła (w tym DNN) w jednostce hypercube. Twierdzi się, że wynik ten jest niezależny od wyboru funkcji aktywacji. 2) Nie jestem pewien, czy Twoja ostatnia uwaga (tj. Że Hinton dołączył do Google) ma znaczenie dla ostatniego sukcesu DNN; Hinton dołączył do Google na długo po epidemii DNN!
Sobi
4
Może używamy terminologii w inny sposób. Perceptrony nie mają ukrytej warstwy - ich dane wejściowe to dane, a dane wyjściowe to klasyfikacja. Sieć wielowarstwowa składa się z wiązki perceptronów połączonych ze sobą tak, że wyjście z warstwy tworzy dane wejściowe do warstwy . Sieć z jedną ukrytą warstwą ma więc trzy warstwy (wejściową, ukrytą, wyjściową). Ta ukryta warstwa jest kluczem do uniwersalnego przybliżenia: perceptronów, których jej brakuje, nie można obliczyć rzeczy takich jak XOR, ale potrafią to sieci wielowarstwowe. nn1n
Matt Krause,
2
Liniowość wydaje się być połączeniem dwóch problemów. Perceptrony mogą jedynie obliczać liniowe granice decyzyjne - mogą jedynie rysować linie proste, aby podzielić dwie klasy. Sieci wielowarstwowe mogą „rysować” bardziej skomplikowane granice. Ale ani perceptrony, ani sieci wielowarstwowe nie używają liniowych funkcji aktywacyjnych, z wyjątkiem warstwy wyjściowej sieci wielowarstwowej. Funkcja aktywacji perceptronu jest ciężka (1 jeśli x> 0, w przeciwnym razie 0); sieci wielowarstwowe często używają sigmoidów, ale ograniczenia dla uniwersalnego ok. są dość łagodne: niestałe, ograniczone i monotonicznie rosnące.
Matt Krause,
2
@amoeba świetna odpowiedź, obraz na początku zniechęcił mnie do przeczytania reszty, ale tak było najlepiej. Perceptron jest odpowiednikiem regresji liniowej dla klasyfikacji, dlatego kiedy ludzie używają rozwiązania w formie zamkniętej (pseudoinwersja) do rozwiązania problemu zamiast metod online (sgd), nazywa się to regresją logistyczną, ze względu na logistykę (funkcja sigmoidalna) = perceptron. Regresja perceptronowa / logistyczna może jedynie „narysować” liniowe granice decyzyjne i dlatego nazywa się ją liniową.
shuriken x blue
2
Jednak wielowarstwowy perceptron (to, co narysowałeś na pierwszym obrazie po lewej), może łączyć wiele takich liniowych granic decyzyjnych, a zatem może dzielić przestrzeń, aby rozwiązać (nieliniowy) problem XOR, jak wspomniano @Matt. Tak więc wiele połączonych liniowych granic decyzyjnych może tworzyć koło, na przykład, jeśli zmrużysz oczy. To zależy od tego, jak o tym myślisz - decyzja jest nadal liniowa na większej przestrzeni, jeśli znasz jądra, to coś w tym samym stylu.
shuriken x blue
8

Jak dotąd dobra odpowiedź, choć jest kilka rzeczy, o których nikt tu nie wspominał, oto moje 0,02 $

Odpowiem tylko w formie opowieści, powinno sprawić, że wszystko będzie bardziej zabawne i jasne. Nie ma tutaj. W trakcie tego procesu powinieneś być w stanie zrozumieć, na czym polega różnica.

Istnieje wiele powodów, dla których DNN iskrzyły, kiedy to zrobiły (gwiazdy musiały się zrównać, podobnie jak wszystkie podobne rzeczy, to tylko kwestia właściwego miejsca, właściwego czasu itp.).

Jednym z powodów jest dostępność danych, dużo danych (dane oznaczone). Jeśli chcesz być w stanie uogólnić i nauczyć się czegoś takiego jak „ogólne priory” lub „uniwersalne priory” (zwane też podstawowymi elementami składowymi, które można ponownie wykorzystać między zadaniami / aplikacjami), potrzebujesz dużej ilości danych. I dzikie dane, dodam, nie sterylne zestawy danych starannie zapisane w laboratorium z kontrolowanym oświetleniem i tak dalej. Mechaniczny Turek umożliwił to (etykietowanie).

Po drugie, możliwość szybszego szkolenia większych sieci przy użyciu układów GPU przyspieszyła eksperymenty. Jednostki ReLU przyspieszyły obliczenia również i zapewniły ich regularyzację, ponieważ trzeba było użyć większej liczby jednostek w jednej warstwie, aby móc skompresować te same informacje, ponieważ warstwy były teraz bardziej rzadkie, więc dobrze poszło z rezygnacją. Pomogli też w ważnym problemie, który występuje, gdy układasz wiele warstw. Więcej o tym później. Różne liczne sztuczki, które poprawiły wydajność. Jak użycie mini-partii (co w rzeczywistości szkodzi końcowemu błędowi) lub zwojów (które w rzeczywistości nie wychwytują tak dużej wariancji jak lokalne pola odbiorcze), ale są obliczeniowo szybsze.

W międzyczasie ludzie zastanawiali się, czy podobają im się bardziej chude lub bardziej pucołowate, mniejsze lub wyższe, z piegami lub bez, itp. Optymalizacja była taka, że ​​syczą, czy hukają, więc badania zmierzały w kierunku bardziej złożonych metod treningu, takich jak gradient sprzężony i metoda Newtona, w końcu wszyscy zdali sobie sprawę, że nie ma darmowego lunchu. Sieci pękały.

Tym, co spowolniło, był znikający problem z gradientem . Ludzie szli jak: whoa, to daleko, stary! W skrócie oznacza to, że trudno było wyregulować błąd na warstwach bliższych wejściom. Gdy dodajesz więcej warstw do ciasta, robi się zbyt chwiejne. Nie można ponownie propagować znaczącego błędu z powrotem do pierwszych warstw. Im więcej warstw, tym gorzej. Porażka.

Niektóre osoby doszły do ​​wniosku, że zastosowanie entropii krzyżowej jako funkcji utraty (cóż, znowu, klasyfikacja i rozpoznawanie obrazów) zapewnia pewnego rodzaju regularyzację i pomaga zapobiegać nasyceniu sieci, a z kolei gradient nie był w stanie tak dobrze ukryć.

Co sprawiło, że wszystko stało się możliwe, to szkolenie wstępne dla poszczególnych warstw przy użyciu metod bez nadzoru. Zasadniczo bierzesz kilka auto-koderów i uczysz się coraz mniej abstrakcyjnych reprezentacji, gdy zwiększasz współczynnik kompresji. Wagi z tych sieci zostały użyte do zainicjowania nadzorowanej wersji. To rozwiązało problem znikającego gradientu w inny sposób: już zaczynasz nadzorowany trening z dużo lepszej pozycji początkowej. Więc wszystkie inne sieci wstały i zaczęły się buntować. Ale sieci i tak wymagały nadzoru, w przeciwnym razie nie byłoby możliwe utrzymanie dużych zbiorów danych.

Teraz ostatnia część, która w końcu prowadzi do twojej odpowiedzi, która jest zbyt złożona, aby w skrócie: dlaczego więcej warstw, a nie tylko jedna. Ponieważ możemy! oraz ponieważ deskryptory kontekstu i niezmiennika. i baseny.

Oto przykład: masz zestaw danych obrazów, jak zamierzasz trenować plan NN przy użyciu tych danych? Cóż, naiwnie, weźmy powiedzmy każdy wiersz i łączymy go w jeden długi wektor i to jest twój wkład. Czego się uczysz? Cóż, niektóre rozmyte nonsensowne funkcje, które mogą nie wyglądać niczym, z powodu wielu różnych typów wariancji zawartych w obiektach na obrazie i nie można odróżnić istotnych i nieistotnych rzeczy. W pewnym momencie sieć musi zapomnieć, aby móc ponownie nauczyć się nowych rzeczy. Więc jest problem z pojemnością. Jest to bardziej nieliniowa dynamika, ale intuicja polega na tym, że musisz zwiększyć liczbę neuronów, aby móc włączyć więcej informacji do swojej sieci.

Chodzi o to, że jeśli po prostu wprowadzisz obraz jako jeden element, dodanie dodatkowych warstw nie zrobi dla ciebie zbyt wiele, ponieważ nie jesteś w stanie nauczyć się abstrakcji , co jest bardzo ważne. Holistyczne podejście nie działa więc tak dobrze, chyba że robisz prostsze rzeczy z siecią, takie jak skupianie się na określonym typie obiektu, więc ograniczasz się do jednej klasy i wybierasz niektóre globalne właściwości jako cel klasyfikacji.

Co jest do zrobienia? Spójrz na krawędź ekranu i spróbuj przeczytać ten tekst. Problem? Choć jest to głupie, musisz spojrzeć na to, co czytasz. W przeciwnym razie jest zbyt rozmyte / rozdzielczość nie jest wystarczająca / ziarnistość. Nazwijmy obszar ostrości polem recepcyjnym. Sieci również muszą być w stanie się skupić. Zasadniczo zamiast używać całego obrazu jako danych wejściowych, przesuwasz przesuwane okno wzdłuż obrazu, a następnie używasz go jako danych wejściowych do sieci (nieco mniej stochastycznych niż to, co robią ludzie). Teraz masz również możliwość uchwycenia korelacji między pikselami, a tym samym obiektami, a także możesz odróżnić śpiącego kota siedzącego na kanapie i odwróconego skoku na bungee kota. Zgrabna, przywrócona wiara w ludzkość. Sieć może uczyć się lokalnych abstrakcji na obrazie na wielu poziomach. Sieć uczy się filtrów,

Podsumowując: pola receptywne / zwoje, nienadzorowana inicjalizacja, rektyfikowane jednostki liniowe, zanikanie lub inne metody regularyzacji. Jeśli podchodzisz do tego bardzo poważnie, polecam przyjrzeć się głębokiemu uczeniu się Schmidhubera w sieciach neuronowych: przegląd tutaj jest adres URL przedruku http://arxiv.org/abs/1404.7828

I pamiętaj: duża nauka, głębokie dane. Słowo.

shuriken x niebieski
źródło
Cześć Florin, dziękuję za miłą odpowiedź! Lubię styl pisania. Mówiąc o przesuwanych oknach, masz na myśli to, w jaki sposób splotowe warstwy splotowego NN obserwują różne części obrazu i rzutują ich aktywacje na przestrzeń o niższym wymiarze?
Nicolas
właściwie tak, zwoje nie są konieczne, ale są szybsze obliczeniowo, ponieważ wagi są ograniczone. sprawdź ten artykuł, w którym nie używają zwojów i używają lokalnych pól odbiorczych. ważne słowa kluczowe są lokalne / hierarchiczne: arxiv.org/pdf/1112.6209.pdf
shuriken x blue
myślę też, że najbliższą systematyczną odpowiedzią jest sobi. ma moje poparcie. właśnie dodałem kilka innych rzeczy tu i tam z odrobiną soli i pieprzu.
shuriken x blue
6

Mówiąc ogólnie, główna różnica w stosunku do klasycznych sieci neuronowych polega na tym, że mają one znacznie więcej ukrytych warstw.

Chodzi o to, aby dodać etykiety do warstw, aby utworzyć kilka warstw abstrakcji:

Na przykład głęboka sieć neuronowa do rozpoznawania obiektów :

  • Warstwa 1: Pojedyncze piksele
  • Warstwa 2: Krawędzie
  • Warstwa 3: Formularze (koła, kwadraty)
  • Warstwa n: Cały obiekt

Możesz znaleźć dobre wyjaśnienie tego pytania w Quora .

A jeśli jesteś zainteresowany tym tematem, chciałbym rzucić okiem na tę książkę .

David Gasquez
źródło
1
Dzięki David, ale tak naprawdę nie wiem, jak po prostu dodać etykiety, żeby było inaczej. Pamiętam również, że trudno było zrozumieć i rozłożyć sposób kodowania funkcji przez sieć neuronową. Musi być coś więcej niż tylko posiadanie większej liczby warstw. Jeśli chodzi o przykład, który podałeś, uważam, że możesz ćwiczyć indywidualnie (oldschoolowe) sieci neuronowe do wykonania każdego z zadań.
Nicolas
Moc pojawia się, gdy używasz jej jak potoku, więc wejścia i wyjścia z warstwy układają się w stosy na każdej warstwie.
David Gasquez
Czytałem twój pierwszy link, który jest dobrym zasobem, i inne powiązane pytania na temat quora i se, jednak podany przez ciebie przykład nie wydaje się trafny z tym, co przeczytałem. Spróbuję odpowiedzieć na moje własne pytanie, podsumowując te odczyty.
Nicolas
2
Pomimo, że wskazany zasób jest interesujący, obecnie odpowiedź nie odpowiada na pytanie.
Nicolas
Czy możesz wskazać przykład, w którym warstwy są oznakowane (inaczej niż w sposób czysto opisowy)? Z pewnością prawdą jest, że ukryte warstwy wydają się coraz bardziej złożone funkcje w każdej ukrytej warstwie, ale „dodawanie etykiet” wydaje się sugerować, że są specjalnie przeszkoleni w tym zakresie.
Matt Krause,
2

Na początku trochę mnie również myliła różnica między sieciami neuronowymi (NN) a głębokimi sieciami neuronowymi (DNN), jednak niestety „głębokość” odnosi się tylko do liczby parametrów i warstw. Możesz to potraktować jako zmianę marki w ramach tak zwanej „kanadyjskiej mafii”.

Kilka lat temu miałem również sieci neuronowe jako część klasy i robiliśmy rozpoznawanie cyfr, aproksymację fal i podobne aplikacje, używając NN, który miał wiele ukrytych warstw i wyjść oraz cały ten jazz, który ma DNN. Jednak wtedy nie mieliśmy mocy obliczeniowej.

Powodem, dla którego przejście do DNN było możliwe i pożądane, są postępy w rozwoju sprzętu. Mówiąc najprościej, teraz możemy obliczać więcej, szybciej i bardziej równolegle (DNN na GPU), podczas gdy wcześniej czas był wąskim gardłem dla NN.

Jak wspomniano na stronie Wikipedii poświęconej głębokiemu uczeniu się , część „głęboka” odnosi się głównie do tego, że cechy oddziałują w sposób nieliniowy na wielu warstwach, a zatem wykonuje wyodrębnianie i przekształcanie elementów. Dokonano tego również w standardowych NN, jednak w mniejszej skali.

Na tej samej stronie, tutaj masz definicja "Głęboka sieć neuronowa (DNN) jest sztuczne sieci neuronowe (ANN) z wielu warstw ukrytych jednostek między warstwami wejściowych i wyjściowych.

mttk
źródło
Cześć Mttk, dzięki za odpowiedź, rzuciło więcej światła na to pytanie. Jeśli chodzi o twój ostatni punkt, tak, strukturalnie bardzo łatwo jest wyjaśnić różnicę (1 vs wiele warstw), ale różnica w sposobie użycia tych wielu warstw wydaje się być istotna i znacznie mniej wyraźna. Dlatego skupiłem się na pytaniu nie na strukturze.
Nicolas
Szczerze mówiąc, nie zgadzam się z ostatnią definicją, do której się odwoływałem - ponieważ ANN / NN z jedną ukrytą warstwą nie są tak naprawdę wydajne, a ty potrzebowałeś wielu do jakichkolwiek bardziej skomplikowanych prognoz (mówię to, ponieważ uważam, że DNN był bezużyteczne słowo kluczowe dodane do już dobrego terminu, NN). Myślę, że możesz używać NN i DNN zamiennie (ponieważ obecnie nikt nie używa NN z jedną warstwą ukrytą), podczas gdy użycie warstw różni się między rodzajami DNN (CNN, RBM, RNN, LSTM, CW-RNN, ...) a nie sam pomysł DNN.
mttk
2

O ile mi wiadomo, tak zwana dzisiejsza Deep Neural Network (DNN) nie różni się zasadniczo ani filozoficznie od starej standardowej sieci neuronowej (NN). Chociaż teoretycznie można aproksymować dowolny NN za pomocą płytkiego NN z tylko jedną ukrytą warstwą, nie oznacza to jednak, że obie sieci będą działały podobnie, gdy będą szkolone przy użyciu tego samego algorytmu i danych treningowych. W rzeczywistości rośnie zainteresowanie szkoleniem płytkich sieci, które działają podobnie do sieci głębokich. Jest to jednak możliwe dzięki szkoleniu najpierw głębokiej sieci, a następnie szkoleniu płytkiej sieci naśladowaniakońcowy wynik (tj. wynik przedostatniej warstwy) głębokiej sieci. Widzisz, głębokie architektury sprzyjają temu, że dzisiejsze techniki treningowe (propagacja wsteczna) działają lepiej, gdy neurony są ułożone w hierarchiczną strukturę.

Kolejne pytanie, które można zadać, to: dlaczego sieci neuronowe (w szczególności DNN) stały się nagle tak popularne. Według mnie, magiczne składniki, które ostatnio stały się tak popularne w DNN, to:

A. Ulepszone zestawy danych i możliwości przetwarzania danych

1. Udostępniono zestawy danych na dużą skalę z milionami różnorodnych zdjęć

2. Szybka implementacja GPU została udostępniona publicznie

B. Ulepszone algorytmy szkoleniowe i architektury sieciowe

1. Rektyfikowane jednostki liniowe (ReLU) zamiast sigmoidu lub tanh

2. Głębokie architektury sieci ewoluowały przez lata


A-1) Do niedawna, przynajmniej w Computer Vision, nie mogliśmy trenować modeli na milionach oznaczonych obrazów; po prostu dlatego, że zestawy danych o takiej wielkości nie istniały. Okazuje się, że oprócz liczby obrazów ziarnistość zestawu etykiet jest również bardzo ważnym czynnikiem decydującym o sukcesie DNN (patrz ryc. 8 w tym artykule Azizpour i in.).

A-2) Wiele wysiłku inżynieryjnego włożono w umożliwienie szkolenia DNN, które dobrze sprawdzają się w praktyce, w szczególności nadejście implementacji GPU. Jedna z pierwszych udanych implementacji DNN GPU, działa na dwóch równoległych GPU; jednak szkolenie DNN zajmuje około tygodnia na 1,2 miliona obrazów 1000 kategorii przy użyciu wysokiej klasy procesorów graficznych (patrz ten artykuł autorstwa Kriżewskiego i in.).

B-1) Zastosowanie prostych rektyfikowanych jednostek liniowych (ReLU) zamiast funkcji sigmoidalnych i tanh jest prawdopodobnie największym elementem składowym umożliwiającym szkolenie DNN. Zauważ, że funkcje sigmoidalne i tanh mają prawie zerowy gradient prawie wszędzie, w zależności od tego, jak szybko przechodzą od niskiego poziomu aktywacji do wysokiego; w skrajnym przypadku, gdy przejście jest nagłe, otrzymujemy funkcję kroku, która ma nachylenie zero wszędzie, z wyjątkiem jednego punktu, w którym następuje przejście.

B-2) Historia rozwoju architektur sieci neuronowych na przestrzeni lat przypomina mi, w jaki sposób ewolucja zmienia strukturę organizmu w przyrodzie. Udostępnianie parametrów (np. W warstwach splotowych), regularyzacja porzucania, inicjalizacja, harmonogram tempa uczenia się, buforowanie przestrzenne, podpróbkowanie w głębszych warstwach i wiele innych sztuczek, które są obecnie uważane za standardowe w szkoleniu DNN zostały opracowane, ewoluowane, dostosowane do potrzeb lat, aby szkolenie głębokich sieci było możliwe tak, jak jest dzisiaj.

Sobi
źródło
3
+1. Pierwsza odpowiedź w tym wątku, która zapewnia odpowiednią odpowiedź na pytania PO. Wiele dobrych punktów tutaj. Moim jedynym ważnym komentarzem byłoby to, że oprócz twoich A i B, istnieje również C: Ogromny wzrost wielkości dostępnych zestawów danych szkoleniowych. Wydaje się to być co najmniej tak samo ważne jak A i B.
ameba
1
Nie sądzę, żeby relu było tak ważne: gazeta Alexa Kriżewskiego twierdziła, że ​​dzięki niej nauka uczy się nawet 6 razy szybciej. Większość innych zmian w strukturze sieci, o których wspominasz, dotyczą splotowych nns, które po prostu kopiują standardowe potoki przetwarzania obrazu (dobrze, ale nie ma nowych informacji)
seanv507
1
@amoeba: rozmiar zestawu danych jest poniżej A. Zaktualizowałem tekst, aby go podświetlić.
Sobi,
@ seanv507: Rzeczywiście, pisząc odpowiedź, miałem na myśli sieci splotowe (ConvNets). Jeśli są inne ważne czynniki (niezwiązane z ConvNets), które przeoczyłem, doceniłbym to, jeśli je wymienisz. Z przyjemnością zaktualizuję odpowiednio moją odpowiedź. Jeśli chodzi o ReLU, trening nns z tanh i sigmoidem jest znacznie trudniejszy niż w przypadku ReLU ze względu na kwestię znikania gradientów: jednostki łatwo się nasycają, a kiedy to się dzieje, zajmuje im dużo czasu, zanim ponownie stają się nienasycone (gradienty są bardzo małe, gdy jednostka jest nasycony)
Sobi,
2

Różnica między „głębokim” NN a standardowym NN jest czysto jakościowa: nie ma definicji tego, co oznacza „głęboki”. „Głębokie” może oznaczać wszystko, od bardzo wyrafinowanych architektur używanych przez Google, Facebooka i współpracowników, które mają 50-80 lub więcej warstw, po 2 architektury ukryte (łącznie 4 warstwy). Nie zdziwiłbym się, gdybyś mógł znaleźć artykuły, które twierdzą, że uczą się na głębokim poziomie za pomocą jednej ukrytej warstwy, ponieważ „głęboki” niewiele znaczy.

„Sieć neuronowa” to także słowo, które nie ma bardzo precyzyjnego znaczenia. Obejmuje niezwykle duży zestaw modeli, od losowych maszyn boltzmana (które są nieukierunkowanymi grafami) do architektur z różnymi funkcjami aktywacyjnymi. Większość NN będzie trenowana przy użyciu backprop, ale nie musi tak być, więc nawet algorytmy szkoleniowe nie są bardzo jednorodne.

Ogólnie rzecz biorąc, głębokie uczenie się, głębokie NN i NN stały się słowami kluczowymi, które wychwytują wiele podejść.

Dobre odniesienia wprowadzające do „tego, co się zmieniło”: Dogłębne uczenie się reprezentacji: Patrząc w przyszłość , Bengio, 2013 to dobra recenzja + perspektywa na przyszłość. Zobacz także: Czy głębokie sieci naprawdę muszą być głębokie? Ba i Caruana, 2013, które pokazują, że głęboka głębia może nie być przydatna do reprezentacji, ale do nauki.

Guillaume Dehaene
źródło
Odniesienia, które podajesz, są bardzo pomocne, ale reszta odpowiedzi w bieżącej formie (która brzmi: „NN nic nie znaczy, DNN nie znaczy nic, NN i DNN mogą robić wiele rzeczy”) niewiele, zastanawiasz się nad zmianą?
Nicolas
1

Aby rozwinąć odpowiedź Davida Gasqueza, jedną z głównych różnic między głębokimi sieciami neuronowymi a tradycyjnymi sieciami neuronowymi jest to, że nie używamy po prostu propagacji wstecznej dla głębokich sieci neuronowych.

Dlaczego? Ponieważ propagacja wsteczna trenuje późniejsze warstwy bardziej efektywnie niż trenuje wcześniejsze warstwy - w miarę postępów w sieci wcześniej błędy stają się mniejsze i bardziej rozproszone. Tak więc sieć dziesięciowarstwowa będzie w zasadzie składać się z siedmiu warstw losowych wag, po których następują trzy warstwy dopasowanych wag, i będzie równie dobrze jak sieć trójwarstwowa. Zobacz tutaj po więcej.

Przełomem koncepcyjnym jest więc traktowanie oddzielnych problemów (warstw oznakowanych) jako oddzielnych problemów - jeśli najpierw spróbujemy rozwiązać problem budowy ogólnie dobrej pierwszej warstwy, a następnie spróbujemy rozwiązać problem budowy ogólnie dobrej drugiej warstwy, w końcu będziemy mieli głęboką przestrzeń funkcji, którą będziemy mogli wykorzystać do rozwiązania naszego rzeczywistego problemu.

Matthew Graves
źródło
1

NN:

  • jedna ukryta warstwa wystarcza, ale może mieć wiele warstw, od lewej do prawej (model: feed forward NN)
  • przeszkolony tylko pod nadzorem (propagacja wsteczna)
  • gdy używanych jest wiele warstw, trenuj wszystkie warstwy jednocześnie (ten sam algorytm: propagacja wsteczna), więcej warstw utrudnia użycie, ponieważ błędy stają się zbyt małe
  • trudno zrozumieć, czego się nauczyłem na każdej warstwie

DNN:

  • wymaganych jest wiele warstw, nieukierunkowane krawędzie (model: ograniczona maszyna boltzman)
  • najpierw przeszkolony w sposób nienadzorowany, w którym sieci uczą się odpowiednich funkcji, ucząc się odtwarzać swoje dane wejściowe, a następnie przeszkolony w nadzorowany sposób, który dostosowuje funkcje w celu sklasyfikowania
  • trenuj warstwy jedna po drugiej od warstwy wejściowej do wyjściowej (algorytm: dywergencja kontrastowa)
  • każda warstwa wyraźnie zawiera cechy rosnącej abstrakcji

Przejście do DNN wynika z trzech niezależnych przełomów, które miały miejsce w 2006 r.

Jeśli chodzi o twierdzenia na temat NN, to pytanie odnosi się do:

  • uniwersalne twierdzenie aproksymacyjne lub twierdzenie Cybenko: sieć neuronowa z pojedynczą ukrytą warstwą może aproksymować dowolną funkcję ciągłą. Jednak w praktyce może wymagać dużo więcej neuronów, jeśli zastosowana zostanie jedna ukryta warstwa.
Nicolas
źródło
2
-1? Naprawdę? Przeczytałem to wszystko w literaturze i dokonałem punktowego porównania obu podejść! Proszę przynajmniej podać, co jest nieprawidłowe ...
Nicolas
3
Nie głosowałem (być może downvoter nie podoba ci się, że odpowiadasz na własne pytanie? Ale to oczywiście jest w porządku tutaj), ale tutaj jest jedna rzecz, która nie jest całkowicie poprawna. To, co wymieniasz jako właściwości DNN: że krawędzie nie są przekierowywane, że najpierw jest trenowane w sposób nienadzorowany, że warstwy są trenowane jedna po drugiej - wszystko to odnosi się tylko do sieci głębokich przekonań sugerowanych przez Hintona w 2006 roku. z konieczności dotyczy to ogólnie głębokich sieci neuronowych, a tak naprawdę istnieje wiele sposobów trenowania głębokiej sieci bez tego wszystkiego. Zobacz moją odpowiedź.
ameba
1

O(n)

Myślę, że powinieneś cofnąć się i zobaczyć, że spowodowało to odrodzenie się w płytkiej sztucznej inteligencji - np. Worek słów do analizy sentymentów i innych aplikacji językowych, a wizualna worek słów była wiodącym podejściem do rozpoznawania obrazów przed DNN. Nikt nie mówi, że worek słów to prawdziwy model języka, ale jest to skuteczne rozwiązanie inżynierskie. Powiedziałbym więc, że DNN to lepszy „wizualny worek słów” - patrz np. Szegedy i in. 2013 Intrygujące właściwości sieci neuronowych i Nguyen i in. Głębokie sieci neuronowe można łatwo oszukać: przewidywania o wysokim poziomie pewności dla nierozpoznawalnych obrazów, w których jasne jest, że nie uczymy się struktur wyższego rzędu itp. (Lub cokolwiek, co jest twierdzone dla DNN).

seanv507
źródło
@amoeba ten drugi artykuł jest prawie towarzyszącym pierwszym (znowu z dużą ilością zdjęć!)
seanv507
0

Głębokie uczenie się to zestaw algorytmów uczenia maszynowego, które próbują modelować abstrakcje wysokiego poziomu w danych przy użyciu architektur złożonych z wielu transformacji nieliniowych .

Źródło: Arno Candel

JimBoy
źródło