Jaka jest różnica między siecią neuronową a głęboką siecią neuronową i dlaczego te głębokie działają lepiej?
On 22 grudnia, 2020 by adminNie widziałem pytania wyrażonego dokładnie w tych terminach, dlatego zadaję nowe pytanie.
To, co mnie interesuje, to nie definicja sieci neuronowej, ale zrozumienie rzeczywistej różnicy między głęboką siecią neuronową.
Dla szerszego kontekstu: wiem, czym jest sieć neuronowa i jak działa propagacja wsteczna. Wiem, że DNN musi mieć wiele ukrytych warstw. Jednak 10 lat temu na zajęciach dowiedziałem się, że mając kilka warstw lub jedną warstwę (nie liczenie warstw wejściowych i wyjściowych) było równoważne pod względem funkcji, które sieć neuronowa jest w stanie reprezentować (patrz Cybenko „s Uniwersalne twierdzenie o przybliżeniu ), a posiadające więcej warstw sprawiło, że analiza bez wzrostu wydajności była bardziej złożona. Oczywiście, już tak nie jest.
Przypuszczam, być może błędnie, że różnice dotyczą raczej algorytmu uczenia i właściwości niż struktury, dlatego Byłbym bardzo wdzięczny, gdyby odpowiedź mogła podkreślić powody, dla których przejście na DNN było możliwe (np. Dowód matematyczny lub losowa gra z sieciami?) i pożądane (np. szybkość konwergencji?)
Komentarze
- Do Twojej wiadomości: Na ile prawdziwy jest ten slajd dotyczący głębokiego uczenia?
- Jeśli funkcja, którą chcesz przybliżyć, jest funkcją kompozycyjną (często stosowana w przetwarzaniu obrazów i wiele domeny naturalne ze względu na prawa fizyki). Można udowodnić, że głębokie sieci 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 pojedynczą warstwą ukrytą). Odniesienie: Poggio, Tomaso, et al. ” 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)
- Możesz rzucić okiem na ten artykuł
- Patrz 6.4 z arxiv.org/pdf/2004.06093.pdf
Odpowiedź
Zacznijmy od trywialności: głęboka sieć neuronowa to po prostu sieć przekazująca informacje z wieloma ukrytymi warstwami.
To mniej więcej wszystko, co można powiedzieć o definicji. Sieci neuronowe mogą być cykliczne lub wyprzedzające; sieci wyprzedzające nie mają żadnych pętli na swoim wykresie i mogą być zorganizowane w warstwy. Jeśli istnieje „wiele” warstw , to mówimy, że sieć jest głęboka .
Ile wielu warstw musi mieć sieć, aby kwalifikować się jako tak głęboka? ostateczna odpowiedź na to (to jest trochę jak pytanie, ile ziaren tworzy stertę ), ale zazwyczaj posiadanie dwóch lub więcej ukrytych warstw liczy się jako głębokie. Natomiast sieć z tylko jedną warstwą ukrytą jest umownie nazywana „płytką”. Podejrzewam, że będzie tu trochę inflacji, a za dziesięć lat ludzie mogą pomyśleć, że wszystko, co ma mniej niż, powiedzmy, dziesięć warstw, jest płytkie i nadaje się tylko do ćwiczeń przedszkolnych. Nieformalnie „deep” sugeruje, że sieć jest trudna w obsłudze.
Oto ilustracja, dostosowana stąd :
Ale prawdziwe pytanie, które zadajesz, brzmi oczywiście, dlaczego posiadanie wielu warstw miałoby być korzystne?
Myślę, że dość zdumiewająca odpowiedź brzmi, że tak naprawdę nikt 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 wykazane jako prawdziwe i nie można nawet być pewnym, że posiadanie wielu warstw jest naprawdę korzystne.
Mówię, że to zadziwiające, bo głębokie uczenie się jest bardzo popularne, co roku bije wszelkie rekordy (od rozpoznawania obrazu, przez grę w Go, po automatyczne tłumaczenie itp.), jest wykorzystywane przez branżę itp. itd. . I nadal nie jesteśmy całkiem pewni, dlaczego to działa tak dobrze.
Opieram swoją dyskusję na Głębokie Learning książka Goodfellow, Bengio i Courville, która ukazała się w 2017 roku i jest powszechnie uważana za książkę o głębokim uczeniu się. (Jest on ogólnie dostępny.) Odpowiednia sekcja to 6.4.1 Uniwersalne właściwości przybliżenia i głębokości .
Napisałeś, że
10 lat temu na zajęciach dowiedziałem się, że posiadanie kilku warstw lub jednej warstwy (nie licząc warstwy wejściowej i wyjściowej) było równoważne pod względem funkcji, jakie sieć neuronowa jest w stanie reprezentować […]
Musisz odnosić się do tak zwanego twierdzenia o uniwersalnym przybliżeniu , potwierdzonym przez Cybenko w 1989 roku i uogólniony przez różnych ludzi w latach 90. Zasadniczo mówi się, że płytka sieć neuronowa (z 1 ukrytą warstwą) może przybliżyć każdą funkcję, tj. Może w zasadzie nauczyć się wszystkiego . Odnosi się to do różnych nieliniowych funkcji aktywacji, w tym rektyfikowanych jednostek liniowych, których większość sieci neuronowych używa obecnie (dla tego wyniku podręcznik podaje Leshno i in. 1993 ).
Jeśli tak, to dlaczego wszyscy używają głębokich sieci?
Cóż, naiwna odpowiedź jest taka, ponieważ działają lepiej. Oto rysunek z książki Deep Learning pokazujący, że pomaga mieć więcej warstw w jednym konkretnym zadaniu, ale to samo zjawisko jest często obserwowane w różnych zadaniach i domenach:
Wiemy, że płytka sieć może działają tak samo dobrze, jak te głębsze. Ale tak nie jest; i zwykle nie. Pytanie brzmi – dlaczego? Możliwe odpowiedzi:
- Może płytka sieć potrzebowałaby więcej neuronów niż głęboka?
- Może płytka sieć jest trudniejsza do trenowania przy użyciu naszych obecnych algorytmów (np. bardziej paskudne lokalne minima, lub tempo konwergencji jest wolniejsze, czy cokolwiek innego)?
- Może płytka architektura nie pasuje do rodzaju problemów, które zwykle próbujemy rozwiązać (np. rozpoznawanie obiektów jest kwintesencją „głębokiego ”, proces hierarchiczny)?
- Coś jeszcze?
Książka Deep Learning zawiera argumenty za punktami 1 i 3. Po pierwsze, argumentuje, że liczba jednostek w płytkiej sieci rośnie wykładniczo wraz ze złożonością zadań. Tak więc, aby była użyteczna, może się okazać, że płytka sieć musi być bardzo duża; prawdopodobnie znacznie większy niż głęboka sieć. Jest to oparte na wielu artykułach udowadniających, że płytkie sieci będą w niektórych przypadkach potrzebować wykładniczo wielu neuronów; ale czy np. Klasyfikacja MNIST lub gra w Go to takie przypadki nie są do końca jasne. Po drugie, książka mówi tak:
Wybór głębokiego modelu koduje bardzo ogólne przekonanie, że funkcja, której chcemy się nauczyć, powinna obejmować zestawienie kilku prostszych funkcji. Z punktu widzenia uczenia się reprezentacji można to interpretować jako stwierdzenie, że naszym zdaniem problem z uczeniem 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 połączenie punktów 1 i 3: w przypadku rzeczywistych zadań głęboka architektura jest często korzystna i płytka byłoby nieefektywne i wymagałoby o wiele więcej neuronów dla tej samej wydajności.
Ale to jest dalekie od udowodnienia. Rozważmy 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 na rozpoznawanie obrazów. To był wielki sukces i wyglądał na przekonujący argument na rzecz głębi; oto jedna cyfra z prezentacji autorstwa pierwszego autora na pozostałym dokumencie sieciowym (zwróć uwagę, że czas myląco idzie w lewo tutaj):
Jednak w artykule, do którego link znajduje się powyżej, widać, że „szeroka „Sieć szczątkowa z„ tylko ”16 warstwami może przewyższać„ głębokie ”sieci z ponad 150 warstwami. Jeśli to prawda, cały punkt powyższego rysunku się załamuje.
Lub rozważ Ba i Caruana, 2014, Czy głębokie sieci naprawdę muszą być Głębokie? :
W tym artykule przedstawiamy empiryczne dowody na to, że płycizny są zdolne do uczenia się tej samej funkcji co sieci głębokie, aw niektórych przypadki o takiej samej liczbie parametrów jak sieci głębokie. Robimy to, najpierw trenując najnowocześniejszy głęboki model, a następnie trenując płytki model, aby naśladować głęboki model. Model naśladujący jest trenowany przy użyciu schematu kompresji modelu opisanego w następnej sekcji. Co ciekawe, dzięki kompresji modelu jesteśmy w stanie trenować płytkie sieci tak, aby były tak dokładne, jak niektóre głębokie modele, nawet jeśli nie jesteśmy w stanie wytrenować tych płytkich sieci tak, aby były tak dokładne, jak sieci głębokie, gdy płytkie sieci są trenowane bezpośrednio na oryginale oznaczone dane treningowe. Jeśli płytka sieć z taką samą liczbą parametrów jak sieć głęboka może nauczyć się naśladować sieć głęboką z dużą dokładnością, to jasne jest, że funkcja wyuczona przez tę sieć głęboką nie musi tak naprawdę być głęboka.
Jeśli prawda, oznaczałoby to, że prawidłowe wyjaśnienie to raczej mój punkt 2, a nie 1 czy 3.
Jak powiedziałem – – jeszcze nikt nie wie na pewno.
Uwagi końcowe
Postęp osiągnięty w głębokie uczenie się przez ostatnie ~ 10 lat jest naprawdę niesamowite, 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 stworzenia skutecznej głębokiej sieci, wydaje się zmieniać co kilka lat.
Renesans głębokiego uczenia się rozpoczął w 2006 roku, kiedy Geoffrey Hinton (który pracował nad neuronowym sieci przez ponad 20 lat bez większego zainteresowania ze strony nikogo) opublikował kilka przełomowych artykułów oferujących skuteczny sposób trenowania głębokich sieci ( Science paper , Papier do obliczeń neuronowych ). Sztuczka polegała na zastosowaniu nienadzorowanego treningu wstępnego przed rozpoczęciem zjazdu z gradientu. Te dokumenty zrewolucjonizowały tę dziedzinę i przez kilka lat ludzie uważali, że kluczem do tego jest szkolenie wstępne bez nadzoru.
Następnie w 2010 roku Martens wykazał, że głębokie sieci neuronowe można trenować metodami drugiego rzędu (tak zwanymi metodami bez Hesji) i mogą przewyższać sieci wytrenowane przed treningiem: Głębokie uczenie się poprzez optymalizację bez Hesji . Następnie w 2013 roku Sutskever i wsp. wykazał, że stochastyczne zejście gradientowe z kilkoma bardzo sprytnymi sztuczkami może przewyższać metody bez Hesji: O znaczeniu inicjalizacji i pędu w uczeniu głębokim . Ponadto około 2010 roku ludzie zdali sobie sprawę, że użycie rektyfikowanych jednostek liniowych zamiast jednostek sigmoidalnych ma ogromne znaczenie dla zejścia gradientowego. Porzucenie pojawiło się w 2014 r. Pozostałe sieci pojawiły się w 2015 r. Ludzie wciąż wymyślają coraz skuteczniejsze sposoby trenowania głębokich sieci i to, co wydawało się kluczowym spostrzeżeniem 10 lat temu, jest często brane pod uwagę uciążliwe dzisiaj. Wszystko to jest w dużej mierze napędzane metodą prób i błędów i niewiele jest zrozumienia tego, co sprawia, że niektóre rzeczy działają tak dobrze, a inne nie. Trenowanie głębokich sieci jest jak wielki worek sztuczek. Skuteczne sztuczki są zwykle racjonalizowane post factum.
Nie wiemy nawet, dlaczego głębokie sieci osiągają stabilny poziom wydajności; zaledwie 10 lat ludzie obwiniali lokalne minima, ale obecnie uważa się, że nie o to chodzi (kiedy osiągi się plateau, gradienty zwykle pozostają duże). To jest takie podstawowe pytanie o głębokich sieciach, a nawet nie wiemy, tego .
Aktualizacja: Jest to mniej więcej temat rozmowy Ali Rahimi z NIPS 2017 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 część poniższych komentarzy nie ma już zastosowania.]
Komentarze
- Dobra odpowiedź! 1) Jak wspomniał również @Nicolas, okazuje się, że istnieje twierdzenie ( en.wikipedia.org/wiki/Universal_approximation_theorem ), które głosi, że neuronowy n Sieć z pojedynczą ukrytą warstwą i skończoną liczbą neuronów może przybliżać dowolną ciągłą funkcję (w tym DNN) w hipersześcianie jednostkowym. Uważa 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 związek z niedawnym sukcesem DNN; Hinton dołączył do Google długo po tym, jak DNN stały się epidemią!
- Być może ' używamy tej terminologii w inny sposób. Perceptrony nie ' nie mają ukrytej warstwy – ich danymi wejściowymi są dane, a wyjściem jest klasyfikacja. Sieć wielowarstwowa składa się z wiązki perceptronów połączonych razem w taki sposób, że sygnał wyjściowy z warstwy $ n-1 $ stanowi wejście do warstwy $ n $. Sieć z pojedynczą warstwą ukrytą ma zatem trzy warstwy (wejściową, ukrytą, wyjściową). Ta ukryta warstwa jest kluczem do uniwersalnego przybliżenia: perceptrony, którym jej brakuje, mogą ' nie obliczać rzeczy takich jak XOR, ale sieci wielowarstwowe mogą.
- Liniowość wydaje się, że jest to połączenie dwóch kwestii. Perceptrony mogą obliczać tylko liniowe granice decyzyjne – mogą narysować tylko linie proste, aby podzielić dwie klasy. Sieci wielowarstwowe mogą ” wyznaczać ” bardziej skomplikowane granice. Ale ani perceptrony, ani sieci wielowarstwowe nie używają liniowych funkcji aktywacji, z wyjątkiem warstwy wyjściowej sieci wielowarstwowej. Funkcja aktywacji perceptronu to heavyiside (1 jeśli x > 0, 0 w przeciwnym razie); Sieci wielowarstwowe często używają sigmoidów, ale ograniczenia dla uniwersalnego ok. są dość łagodne: niestałe, ograniczone i monotonicznie rosnące.
- @amoeba świetna odpowiedź, zdjęcie na początku trochę zniechęciło mnie do przeczytania reszty, ale tak było najlepiej. Perceptron jest odpowiednikiem regresji liniowej do klasyfikacji, dlatego gdy ludzie używają rozwiązania w formie zamkniętej (pseudoinverse) do rozwiązania problemu zamiast metod online (sgd), ' nazywana jest regresją logistyczną, ponieważ logistyka (funkcja sigmoidalna) = perceptron. Regresja perceptronowa / logistyczna może jedynie ' rysować ' liniowe granice decyzyjne i ' s dlaczego ' nazywa się liniowym.
- Jednak wielowarstwowy perceptron (to, co narysowałeś na swoim pierwszym obrazku po lewej) może łączyć wiele takich liniowych decyzji granic i może w ten sposób podzielić przestrzeń, aby rozwiązać (nieliniowy) problem XOR, jak wspomniany @Matt. Tak więc wiele połączonych liniowych granic decyzji może utworzyć okrąg, na przykład jeśli zmrużysz oczy. To zależy od tego, jak o tym myślisz – decyzja jest nadal liniowa w większej przestrzeni, jeśli znasz jądra, to ' to coś podobnego.
Odpowiedź
Jak dotąd dobra odpowiedź, chociaż jest kilka rzeczy, o których nikt tutaj nie wspomniał, oto moje 0,02 $
Po prostu odpowiem w formie opowieści, aby wszystko było zabawniejsze i bardziej przejrzyste. Brak tldr tutaj. W trakcie procesu powinieneś być w stanie zrozumieć, jaka jest różnica.
Istnieje wiele powodów, dla których DNN zaiskrzyły, kiedy to zrobiły (gwiazdy musiały się zrównać, jak wszystko podobne, to tylko kwestia prawidłowego miejsce, właściwy czas itp.).
Jednym z powodów jest dostępność danych, dużo danych (dane oznaczone etykietami). Jeśli chcesz mieć możliwość generalizowania i uczenia się czegoś takiego jak „ogólne założenia” lub „uniwersalne priorytety „(czyli podstawowe elementy składowe, które można ponownie wykorzystać między zadaniami / aplikacjami), wtedy potrzebujesz wielu danych. I dzikich danych, dodam, nie sterylnych zestawów danych starannie zarejestrowanych w laboratorium z kontrolowanym oświetleniem i tak dalej. Mechaniczne. Turk umożliwił to (etykietowanie).
Po drugie, możliwość szybszego trenowania większych sieci przy użyciu GPU przyspieszyła eksperymenty. Jednostki ReLU również przyspieszyły obliczenia i zapewniły ich regularyzację, ponieważ trzeba było użyć więcej jednostek w jedna warstwa, aby móc skompresować te same informacje, ponieważ warstwy były teraz bardziej sparsami e, więc też poszło dobrze z porzuceniem. Pomogli również w rozwiązaniu ważnego problemu, który występuje podczas układania wielu warstw. Więcej o tym później. Wiele różnych sztuczek, które poprawiły wydajność. Na przykład używanie mini-paczek (co w rzeczywistości jest szkodliwe dla końcowego błędu) lub splotów (które w rzeczywistości nie wychwytują tak dużej wariancji jak lokalne pola receptywne), ale są obliczeniowe szybciej.
W międzyczasie ludzie debatowali jeśli podobały im się bardziej chude lub pulchne, mniejsze lub wyższe, z piegami lub bez, itp. Optymalizacja była taka, jakby musiała czy huk, więc badania zmierzały w kierunku bardziej złożonych metod treningu, takich jak gradient sprzężony i metoda niutonów, w końcu oni wszyscy zdali sobie sprawę, że nie ma darmowego lunchu. Sieci pękały.
To, co spowolniło to problem znikającego gradientu . Ludzie mówili: whoa, to „daleko, stary! W skrócie oznacza to, że trudno było dostosować błąd na warstwach bliżej wejść. Gdy dodajesz więcej warstw na torcie, robi się zbyt chwiejnie. Powróć znaczący błąd z powrotem do pierwszych warstw. Im więcej warstw, tym gorzej. Bummer.
Niektórzy doszli do wniosku, że użycie krzyżowej entropii jako funkcji straty (no cóż, znowu klasyfikacja i rozpoznawanie obrazu) zapewnia pewnego rodzaju regularyzację i pomaga zapobiegać nasycaniu się sieci, a co za tym idzie nie był w stanie tego dobrze ukryć.
Tym, co umożliwiło to również, było wstępne szkolenie dla poszczególnych warstw przy użyciu metod bez nadzoru. W zasadzie, bierzesz kilka automatycznych koderów i uczysz się coraz mniej abstrakcyjnych reprezentacji, ponieważ 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: zaczynasz już nadzorowane szkolenie z dużo lepszej pozycji początkowej. Więc wszystkie inne sieci powstały i zaczęły się buntować. Ale sieci i tak wymagały nadzoru, w przeciwnym razie niemożliwe byłoby utrzymanie dużych zbiorów danych w bezruchu.
A teraz ostatnia część, która ostatecznie prowadzi do twojej odpowiedzi, która jest zbyt złożona, aby ująć ją w skrócie: dlaczego więcej warstw, a nie tylko jedna. Ponieważ możemy! a ponieważ kontekst i niezmienne deskryptory cech. i pule.
Oto przykład: masz zbiór danych obrazów, jak zamierzasz wytrenować plan NN przy użyciu tych danych? Cóż, naiwnie, przyjmijmy, że każdy wiersz i łączysz 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ą wyglądać zupełnie inaczej, z powodu wielu różnych typów wariancji, które zawierają obiekty na obrazie, i nie jesteś w stanie odróżnić rzeczy istotnych od nieistotnych. W pewnym momencie sieć musi zapomnieć, aby móc ponownie nauczyć się nowych rzeczy. Jest więc problem z wydajnością. To bardziej nieliniowa dynamika, ale intuicja jest taka, że musisz zwiększyć liczbę neuronów, aby móc uwzględnić więcej informacji w swojej sieci.
A więc chodzi o polega na tym, że jeśli wprowadzisz obraz jako jeden element, dodanie dodatkowych warstw nie zrobi zbyt wiele, ponieważ „nie jesteś w stanie nauczyć się abstrakcji , co jest bardzo ważne. Robienie rzeczy holistycznie nie działa zatem 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 pewne właściwości globalne jako cel klasyfikacji.
Więc co tu jest do zrobienia? Spójrz na krawędź ekranu i spróbuj przeczytać ten tekst. Problem? Choć brzmi to głupio, musisz patrzeć na to, co czytasz. W przeciwnym razie jest zbyt rozmyte / nie ma wystarczającej rozdzielczości / ziarnistości. Nazwijmy obszar ostrości polem receptywnym. Sieci też muszą mieć możliwość koncentracji. Zasadniczo zamiast używać całego obrazu jako danych wejściowych, przesuwasz przesuwane okno wzdłuż obrazu, a następnie używasz tego jako danych wejściowych do sieci (nieco mniej stochastycznie niż to, co robią ludzie). Teraz masz również szansę na uchwycenie korelacji między pikselami, a tym samym obiektami, a także możesz odróżnić śpiącego kota siedzącego na sofie od odwróconego kota skaczącego na bungee. Schludnie, przywrócona wiara w ludzkość. Sieć może uczyć się lokalnych abstrakcji w obrazie na wielu poziomach. Sieć uczy się filtrów, początkowo prostych, a następnie buduje na nich, aby nauczyć się bardziej złożonych filtrów.
Podsumowując: pola recepcyjne / zwoje, inicjalizacja bez nadzoru, wyprostowane jednostki liniowe, zanik lub inna regularyzacja metody. Jeśli podchodzisz do tego bardzo poważnie, polecam przyjrzeć się artykułowi Schmidhubera Deep Learning in Neural Networks: An Overview , tutaj znajduje się adres URL wstępnego wydruku http://arxiv.org/abs/1404.7828
I pamiętaj: duże doświadczenie, głębokie dane. Słowo.
Komentarze
- Cześć Florin, dziękuję za miłą odpowiedź! Podoba mi się styl pisania. Kiedy mówisz o przesuwanych oknach, czy odnosisz się do tego, jak splotowe warstwy konwolucyjnego NN obserwują różne części obrazu i projektu ich aktywacje w przestrzeni o niższym wymiarze?
- prawie tak, zwoje nie są konieczne, ale ' są szybsze obliczeniowo, ponieważ wagi są ograniczone. sprawdź opublikuj ten artykuł, w którym nie ' nie używają konwekcji i lokalnych pól receptywnych. Ważne słowa kluczowe są lokalne / hierarchiczne: arxiv.org /pdf/1112.6209.pdf
- Myślę, że również najbliższy systematyczna odpowiedź brzmi sobi ' s. on ' dostał mój głos za. właśnie dodałem kilka rzeczy tu i ówdzie z odrobiną soli i pieprzu.
Odpowiedz
W Jeśli chodzi o laików, główna różnica w porównaniu z klasycznymi sieciami neuronowymi polega na tym, że mają one znacznie więcej ukrytych warstw.
Pomysł polega na dodaniu etykiet 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: Formy (okręgi, kwadraty)
- Warstwa n: Cały obiekt
Możesz znaleźć dobre wyjaśnienie tego pytania w Quora .
A jeśli interesuje Cię ten temat, polecam przyjrzeć się temu książka .
Komentarze
- Dziękuję David, ale nie ' nie widzę, jak po prostu dodawać etykiety, aby było inaczej. Pamiętam też, że trudno było zrozumieć i rozłożyć, w jaki sposób funkcja została zakodowana przez sieć neuronową. Musi być coś więcej niż tylko więcej warstw. Jeśli chodzi o przykład, który podałeś, uważam, że możesz trenować indywidualnie (oldschoolowe) sieci neuronowe do wykonywania każdego z zadań.
- Moc pojawia się, gdy używasz jej jak potoku, więc wejścia i wyjścia ze stosów warstw na każdej warstwie.
- Czytałem twój pierwszy link, który jest dobrym źródłem, i inne powiązane pytania dotyczące quora i se, jednak podany przykład nie wydaje się dokładny z tym, co ja czytać. ' Spróbuję odpowiedzieć na własne pytanie, podsumowując te lektury.
- Pomimo, że wskazany zasób jest interesujący, obecna odpowiedź nie daje odpowiedzi na pytanie.
- Czy możesz wskazać przykład, w którym warstwy są oznaczone (inaczej niż w czysto opisowy sposób)?Z pewnością prawdą jest, że ukryte warstwy wydają się coraz bardziej złożone w każdej ukrytej warstwie, ale ” dodanie etykiet ” wydaje się sugerować, że ' został specjalnie przeszkolony w tym zakresie.
Odpowiedź
NN:
- jedna ukryta warstwa jest wystarczająca, ale może mieć wiele warstw, jednak kolejność od lewej do prawej (model: feed forward NN)
- trenowana tylko w sposób nadzorowany (propagacja wsteczna )
- jeśli używanych jest wiele warstw, trenuj wszystkie warstwy w tym samym czasie (ten sam algorytm: wsteczna propagacja), więcej warstw utrudnia użycie, ponieważ błędy stają się zbyt małe
- trudne do zrozumieć, czego uczy się na każdej warstwie
DNN:
- potrzeba wielu warstw, niekierowane krawędzie (model: ograniczona maszyna boltzman)
- najpierw szkolono w sposób nienadzorowany, w którym sieci uczą się odpowiednich funkcji, ucząc się odtwarzania ich danych wejściowych , a następnie trenowany w nadzorowany sposób, który precyzyjnie dostraja funkcje w celu sklasyfikowania
- trenuje warstwy jedna po drugiej od warstwy wejściowej do wyjściowej (algorytm: rozbieżność kontrastowa)
- wyraźnie każda warstwa zawiera cechy rosnącej abstrakcji
Przejście do DNN jest spowodowane trzema niezależnymi przełomami, które miały miejsce w 2006 roku.
Jeśli chodzi o twierdzenia dotyczące NN, to pytanie dotyczy :
- uniwersalne twierdzenie aproksymacyjne lub twierdzenie Cybenko: sieć neuronowa typu feed-forward z pojedynczą warstwą ukrytą może aproksymować każdą ciągłą funkcję. Jednak w praktyce może wymagać znacznie więcej neuronów, jeśli używana jest pojedyncza ukryta warstwa.
Komentarze
- -1? Naprawdę? Przeczytałem to wszystko w literaturze i dokonałem punkt po punkcie porównania obu podejść! Proszę przynajmniej zaznaczyć, co jest nie tak …
- Nie głosowałem przeciw (być może przeciwnikowi nie podobało się, że odpowiadasz na swoje własne pytanie? Ale to jest oczywiście w porządku tutaj), ale oto jeden rzecz, która nie jest całkowicie poprawna. To, co wymienisz jako właściwości DNN: że krawędzie są niekierowane, że ' jest najpierw uczone w sposób nienadzorowany, że warstwy są trenowane jedna po drugiej – wszystko to dotyczy tylko do sieci głębokich przekonań zasugerowanych przez Hintona w 2006 roku. Niekoniecznie jest to prawdą w przypadku głębokich sieci neuronowych w ogóle i w rzeczywistości istnieje obecnie wiele sposobów trenowania głębokich sieci bez tego wszystkiego. Zobacz moją odpowiedź.
Odpowiedź
Na początku też byłem trochę zdezorientowany różnicą między sieci neuronowe (NN) i głębokie sieci neuronowe (DNN), jednak „głębokość” odnosi się tylko do liczby warstw parametrów &. Można to potraktować jako pewnego rodzaju re -branding w ramach tak zwanej „kanadyjskiej mafii”.
Kilka lat temu miałem również sieci neuronowe jako część klasy i wykonaliśmy rozpoznawanie cyfr, aproksymację fal i podobne aplikacje przy użyciu NN, które miał wiele ukrytych warstw i wyjść oraz cały ten jazz, który mają DNN. Jednak to, czego wtedy nie mieliśmy, to moc obliczeniowa.
Powodem, dla którego przejście na 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 więcej zrównoleglony (DNN na GPU), podczas gdy wcześniej czas był wąskim gardłem dla NN.
Jak wspomniano na stronie Wikipedii dla Deep Nauka , „głęboka” część odnosi się głównie do tego, że cechy wchodzą w interakcje w sposób nieliniowy na wielu warstwach, a zatem wykonują wyodrębnianie i przekształcanie cech. Zrobiono to również w standardowych NN, ale na mniejszą skalę.
Na tej samej stronie tutaj masz definicję „Głęboka sieć neuronowa (DNN) to sztuczna sieć neuronowa (ANN) z wieloma ukrytymi warstwami jednostek między warstwą wejściową i wyjściową”.
Komentarze
- Cześć Mttk, dziękuję za twoją odpowiedź, rzuciła 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 Wydaje się, że liczy się sposób wykorzystania tych wielu warstw i jest to znacznie mniej jasne. Dlatego skupiłem się na tym pytaniu nie na strukturze.
- Szczerze mówiąc, nie ' t zgadzają się z ostatnią definicją, do której się odwoływałem – ponieważ ANN / NN z jedną ukrytą warstwą nie są zbyt wydajne, a do bardziej złożonych prognoz potrzebne byłyby wielokrotne (I ' m mówiąc to, ponieważ myślę, że DNN było dodanym bezużytecznym hasłem do już dobrego terminu, NN). Myślę, że możesz używać NN i DNN zamiennie (ponieważ obecnie nikt nie używa jednej warstwy ukrytej NN ' s), podczas gdy użycie warstw różni się między typami DNN s (CNN, RBM, RNN, LSTM, CW-RNN, …), a nie sam pomysł DNN.
Odpowiedź
O ile wiem, to, co obecnie nazywa się Deep Neural Network (DNN), nie ma nic fundamentalnego lub filozoficznie różni się od starej standardowej sieci neuronowej (NN). Chociaż teoretycznie można przybliżyć dowolny NN za pomocą płytkiego NN z tylko jedną warstwą ukrytą, jednak nie oznacza, że obie sieci będą działać podobnie, gdy będą trenowane przy użyciu tego samego algorytmu i danych szkoleniowych. W rzeczywistości rośnie zainteresowanie szkoleniem płytkich sieci, które działają podobnie do głębokich sieci. Sposób, w jaki to się robi, polega jednak na uczeniu najpierw głębokiej sieci, a następnie uczeniu płytkiej sieci w celu naśladowania końcowego wyniku (tj. Wyjścia przedostatniej warstwy) głębokiej sieci. Widzisz, to, co sprawia, że głębokie architektury są korzystne, to fakt, że dzisiejsze techniki treningowe (propagacja wsteczna) działają lepiej, gdy neurony są ułożone w strukturze hierarchicznej.
Kolejne pytanie, które można zadać, to: Sieci (w szczególności DNN) stały się nagle tak popularne. Według mojego rozumienia, magiczne składniki, które sprawiły, że DNN stały się ostatnio tak popularne, są następujące:
A. Ulepszone zbiory danych i możliwości przetwarzania danych
1. Udostępniono duże zbiory danych z milionami różnorodnych obrazów
2. Szybka implementacja GPU została udostępniona publicznie
B. Ulepszone algorytmy szkoleniowe i architektury sieciowe
1. Rectified Linear Units (ReLU) zamiast sigmoid lub tanh
2. Głębokie architektury sieci ewoluowały przez lata
A-1) Do niedawna, przynajmniej w wizji komputerowej nie mogliśmy wytrenować modeli na milionach oznaczonych obrazów; po prostu dlatego, że nie istniały oznaczone zbiory danych o takiej wielkości. Okazuje się, że oprócz liczby obrazów, szczegółowość zestawu etykiet jest również bardzo istotnym czynnikiem sukcesu DNN (patrz Rysunek 8 w tym artykule , autorstwa Azizpour i wsp.).
A-2) Wiele prac inżynieryjnych wymagało włączył się w umożliwienie szkolenia DNN, które dobrze sprawdzają się w praktyce, w szczególności wraz z pojawieniem się implementacji GPU. Jedna z pierwszych udanych implementacji DNN na GPU, działa na dwóch równoległych GPU; jednak szkolenie DNN w zakresie 1,2 miliona obrazów z 1000 kategorii przy użyciu zaawansowanych procesorów graficznych zajmuje około tygodnia (patrz ten artykuł autorstwa Krizhevsky et al.) .
B-1) Użycie prostych rektyfikowanych jednostek liniowych (ReLU) zamiast sigmoidów i Funkcje tanh są prawdopodobnie największym budulcem umożliwiającym uczenie DNN. Zauważ, że zarówno funkcje sigmoidalne, jak i tanh mają prawie gradient zerowy 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ę skokową, która ma nachylenie zero wszędzie z wyjątkiem jednego punktu, w którym następuje przejście.
B-2) Historia o tym, jak architektury sieci neuronowych rozwinęły się przez lata, przypomina mi, jak ewolucja zmienia strukturę organizmu w naturze. Współdzielenie parametrów ( np. w warstwach konwolucyjnych), regularyzacja porzucania, inicjalizacja, harmonogram szybkości uczenia się, gromadzenie przestrzenne, próbkowanie podpróbkowe w głębszych warstwach i wiele innych sztuczek, które są obecnie uważane za standardowe w szkoleniach, opracowano, ewoluowano, koniec dostosowany przez lata, aby szkolenie głębokich sieci było możliwe tak, jak jest obecnie.
Komentarze
- +1. Pierwsza odpowiedź w ten wątek, który zawiera odpowiednią odpowiedź na pytania OP '. Wiele dobrych punktów tutaj. Moim jedynym głównym komentarzem jest to, że oprócz twoich A i B, th Istnieje również C: Ogromny wzrost rozmiaru dostępnych zestawów danych szkoleniowych. Wydaje się, że jest to co najmniej tak samo ważne jak A i B.
- Nie ' nie sądzę, że relu jest tak ważny: gazeta Alexa Krizhevskyego twierdziła, że sprawiło, że nn się uczę do 6 razy szybciej. Większość innych zmian struktury sieci, o których wspomniałeś, dotyczy konwolucyjnych nns, które po prostu kopiują standardowe potoki przetwarzania obrazu (dobrze, ale nie ma nowych spostrzeżeń)
- @amoeba: rozmiar zbioru danych jest poniżej A. I zaktualizowałem tekst, aby go wyróżnić.
- @ seanv507: rzeczywiście, pisząc odpowiedź, miałem na myśli sieci konwolucyjne (ConvNets). Jeśli są inne ważne czynniki (niezwiązane z ConvNets), które przegapiłem, byłbym wdzięczny, gdybyś o nich wspomniał. Z przyjemnością zaktualizuję odpowiednio moją odpowiedź.Jeśli chodzi o ReLU, trening nns z tanh i sigmoidą jest znacznie trudniejszy niż w przypadku ReLU ze względu na problem znikających gradientów: jednostki łatwo się nasycają, a kiedy to się stanie, zajmuje im dużo czasu, zanim ponownie staną się nienasycone (gradienty są bardzo małe, gdy jednostka jest nasycony)
Odpowiedź
Różnica między „głębokim” NN a standardowym NN jest czysto jakościowa: nie ma definicji tego, co oznacza to „Głębokie”. „Głębokie” może oznaczać wszystko, od niezwykle wyrafinowanych architektur, które są używane przez Google, Facebook i inne, które mają 50-80 lub nawet więcej warstw, do 2 ukrytych warstw (łącznie 4 warstwy). Nie zdziwiłbym się, gdybyś znalazł nawet artykuły, w których mówi się o głębokim uczeniu się z pojedynczą ukrytą warstwą, ponieważ „głębokie” niewiele znaczy.
„Sieć neuronowa” to również słowo, które nie „nie ma bardzo precyzyjnego znaczenia. Obejmuje niezwykle duży zbiór modeli, od przypadkowych maszyn boltzmanów (które są niekierowanymi wykresami) do architektur z wyprzedzeniem z różnymi funkcjami aktywacji. Większość NN będzie trenowana przy użyciu backprop, ale nie musi być tak, że nawet algorytmy uczące nie są zbyt jednorodne.
Ogólnie rzecz biorąc, głębokie uczenie, głębokie NN i NN stały się słowami chwytającymi za wszystkie, które obejmują wiele podejść.
Dobre odniesienia wprowadzające do „tego, co się zmieniło”: Deep Learning of Representations: Looking Forward , Bengio, 2013 to dobra recenzja + perspektywa na przyszłość. Zobacz też Czy głębokie sieci naprawdę muszą być głębokie? Ba & Caruana, 2013, które ilustrują bycie głębokim może nie być przydatne do reprezentacji, ale do nauki.
Komentarze
- Podane referencje są bardzo pomocne , ale reszta odpowiedzi w aktualnej formie (czyli ” NN nic nie znaczy, DNN nic nie znaczy, NN i DNN mogą zrobić wiele rzeczy „) niewiele, czy rozważałbyś jego poprawienie?
Odpowiedź
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 tylko propagacji wstecznej dla głębokich sieci neuronowych.
Dlaczego? Ponieważ propagacja wsteczna uczy późniejsze warstwy efektywniej niż wcześniejszych warstw – w miarę jak przechodzisz coraz wcześniej w sieci, błędy stają się mniejsze i bardziej rozproszone. Zatem sieć dziesięciowarstwowa będzie zasadniczo składać się z siedmiu warstw losowych wag, po których następują trzy warstwy o dopasowanych wagach, i będzie równie dobrze działać jak sieć trójwarstwowa. Zobacz tutaj , aby uzyskać więcej informacji.
Zatem koncepcyjnym przełomem jest traktowanie oddzielnych problemów (oznaczonych warstw) jako osobnych problemów – jeśli najpierw spróbuj rozwiązać problem budowania ogólnie dobrej pierwszej warstwy, a następnie spróbuj rozwiązać problem budowania ogólnie dobrej drugiej warstwy, w końcu będziemy mieć głęboką przestrzeń funkcji, którą możemy wprowadzić do naszego rzeczywistego problemu.
Odpowiedź
Nie powiedziałbym, że jest jakakolwiek duża filozoficzna różnica między NN i DNN (w rzeczywistości powiedziałbym, że DNN to tylko marketing termin odróżniający od „nieudanego” NN). To, co się zmieniło, to rozmiar zbiorów danych. Zasadniczo sieci neuronowe są obecnie najlepszymi estymatorami statystycznymi $ O (n) $, działającymi dobrze w przypadku dużych zbiorów danych o dużych wymiarach (np. Imagenet).
Myślę, że powinieneś cofnąć się i zobaczyć, że spowodowało to odrodzenie w płytkie AI – np worek słów do analizy sentymentów i innych aplikacji językowych oraz wizualny worek słów przewodził podejściu 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. Więc powiedziałbym, że DNN są lepszym „wizualnym workiem słów” – patrz np. Szegedy i in. 2013 Intrygujące właściwości sieci neuronowych i Nguyen et al. Głębokie sieci neuronowe są łatwe do oszukania: prognozy wysokiego zaufania dla nierozpoznawalnych obrazów , gdzie jest jasne, że nie są uczone żadne struktury wyższego rzędu itp. DNN).
Komentarze
- @amoeba ten drugi artykuł jest prawie towarzyszeniem pierwszego (znowu z dużą ilością obrazów!)
Odpowiedź
Aby odpowiedzieć na to drugie pytanie, spójrz na ten artykuł z Telgarsky który mówi, że dla pewnego problemu klasyfikacyjnego „wszystkie płytkie sieci z mniejszą liczbą węzłów niż wykładniczo (w k) wykazuje błąd co najmniej 1/6, podczas gdy sieć głęboka z 2 węzłami w każdej z 2k warstw osiąga błąd zerowy.”
Problem klasyfikacji, o którym mowa, to problem zmiennoprzecinkowy n, w którym rozważamy przedział $ [0,1-2 ^ {- k}] $ , aby dane wejściowe $ x_i $ były $ 2 ^ k $ równomiernie rozłożonymi punktami w ten interwał i odpowiadający mu $ y_i $ są podane przez $ y_i = 1 $ if $ i $ jest nieparzysty, a $ y_i = 0 $ , jeśli $ i $ jest równy. Następnie pytamy, jak dobrze płytkie sieci bez wykładniczych szerokości mogą uchwycić tę zależność w porównaniu z głębokimi sieciami z zaledwie dwoma węzłami w każdej warstwie? Zasadniczo możemy lepiej przybliżać dane (dokładnie równe) za pomocą liniowego ( w $ k $ ) liczbie warstw z zaledwie dwoma węzłami w każdej warstwie, podczas gdy potrzebowalibyśmy wykładniczo wielu (w $ k $ ), aby uzyskać ten sam wynik w płytkiej sieci.
Dowód cytatu polega na zauważeniu, że kompozycja nieliniowych aktywacji zastosowanych do transformacji afinicznych (tj. z większą liczbą warstw) jest w stanie uchwycić większą zmienność danych niż sumowanie tych samych funkcji (jak gdy dodajemy węzły do warstw).
Odpowiedź
Deep Learning to zestaw algorytmów w uczeniu maszynowym, próba modelowania abstrakcji wysokiego poziomu w danych przy użyciu architektur składających się z wielu nieliniowych przekształceń .
Źródło: Arno Candel
Dodaj komentarz