Dlaczego sieci neuronowe stają się głębsze, ale nie szersze?


73

W ostatnich latach splotowe sieci neuronowe (lub ogólnie głębokie sieci neuronowe) stały się coraz głębsze, a najnowocześniejsze sieci przechodzą z 7 warstw ( AlexNet ) do 1000 warstw ( sieci resztkowych) na przestrzeni 4 lat Przyczyną wzrostu wydajności z głębszej sieci jest to, że można się nauczyć bardziej złożonej, nieliniowej funkcji. Przy wystarczających danych szkoleniowych umożliwia to sieciom łatwiejsze rozróżnianie między różnymi klasami.

Wydaje się jednak, że trend nie podążył za liczbą parametrów w każdej warstwie. Na przykład liczba map obiektów w warstwach splotowych lub liczba węzłów w całkowicie połączonych warstwach pozostała w przybliżeniu taka sama i nadal jest stosunkowo niewielka, pomimo dużego wzrostu liczby warstw. Z mojej intuicji wydaje się, że zwiększenie liczby parametrów na warstwę dałoby każdej warstwie bogatsze źródło danych, z którego można by nauczyć się jej funkcji nieliniowej; ale wydaje się, że ten pomysł został pominięty na korzyść dodania kolejnych warstw, z których każda ma niewielką liczbę parametrów.

Więc chociaż sieci stały się „głębsze”, nie stały się „szersze”. Dlaczego to?


1
+1, ale szczerze mówiąc, nie jest tak, że ponad 1000 warstwowych sieci jest „najnowocześniejszych” w tym sensie, że przewyższa inne. Artykuł arxiv, który podłączyłeś do raportu, informuje o resztkowej sieci ze 152 warstwami jako aktualnym zwycięzcą w ImageNet.
ameba

3
Czy czytałeś szerokie sieci rezydualne arxiv.org/abs/1605.07146 .... być może nie ma powodu
.. optymalizacja funkcji niewypukłej

@ seanv507 Bardzo interesujące, dzięki za ten link. BTW, tutaj jest bardzo powiązany wątek: stats.stackexchange.com/questions/214360 i tam jest link do tego wątku reddit .
ameba


Bardzo, bardzo powiązane: stats.stackexchange.com/questions/182734 .
ameba

Odpowiedzi:


87

Jako zrzeczenie się, pracuję nad sieciami neuronowymi w swoich badaniach, ale generalnie używam stosunkowo małych, płytkich sieci neuronowych, a nie naprawdę głębokich sieci w najnowocześniejszych badaniach, które przytaczasz w swoim pytaniu. Nie jestem ekspertem od dziwactw i osobliwości bardzo głębokich sieci i oddam się komuś, kto jest.

Po pierwsze, zasadniczo nie ma powodu, aby w ogóle potrzebować głębokich sieci neuronowych. Wystarczająco szeroka sieć neuronowa z tylko jedną ukrytą warstwą może aproksymować dowolną (rozsądną) funkcję przy wystarczającej ilości danych treningowych. Istnieje jednak kilka trudności z użyciem wyjątkowo szerokiej, płytkiej sieci. Głównym problemem jest to, że te bardzo szerokie, płytkie sieci są bardzo dobre w zapamiętywaniu, ale nie tak dobre w uogólnieniu . Tak więc, jeśli trenujesz sieć z każdą możliwą wartością wejściową, super szeroka sieć może ostatecznie zapamiętać odpowiednią wartość wyjściową, którą chcesz. Ale to nie jest przydatne, ponieważ dla każdego praktycznego zastosowania nie będziesz miał wszystkich możliwych wartości wejściowych do trenowania.

Zaletą wielu warstw jest to, że mogą uczyć się funkcji na różnych poziomach abstrakcji . Na przykład, jeśli wytrenujesz głęboką splotową sieć neuronową do klasyfikowania obrazów, przekonasz się, że pierwsza warstwa będzie trenować się w zakresie rozpoznawania bardzo podstawowych rzeczy, takich jak krawędzie, kolejna warstwa wyszkoli się w zakresie rozpoznawania zbiorów krawędzi, takich jak kształty, następna warstwa będzie się uczyć rozpoznawania zbiorów kształtów, takich jak oczy lub nosy, a kolejna warstwa nauczy się funkcji wyższego rzędu, takich jak twarze. Wiele warstw jest znacznie lepszych w uogólnianiu, ponieważ uczą się wszystkich pośrednich cech między surowymi danymi a klasyfikacją wysokiego poziomu.

To wyjaśnia, dlaczego warto korzystać z głębokiej sieci zamiast z bardzo szerokiej, ale płytkiej sieci. Ale dlaczego nie bardzo głęboka, bardzo szeroka sieć? Myślę, że odpowiedź brzmi: chcesz, aby Twoja sieć była jak najmniejsza, aby dawać dobre wyniki. Gdy zwiększasz rozmiar sieci, tak naprawdę wprowadzasz więcej parametrów, których Twoja sieć musi się nauczyć, a tym samym zwiększasz szanse na przeregulowanie. Jeśli zbudujesz bardzo szeroką, bardzo głęboką sieć, ryzykujesz, że każda warstwa po prostu zapamięta, co chcesz, aby uzyskać dane wyjściowe, i powstanie sieć neuronowa, która nie uogólnia się na nowe dane.

Oprócz widma nadmiernego dopasowania, im szersza sieć, tym dłużej będzie trenować . Głębokie sieci już teraz mogą być bardzo kosztowne obliczeniowo, więc istnieje silna zachęta, aby uczynić je wystarczająco szerokimi, aby działały dobrze, ale nie szerszymi.


+1. Wszelkie komentarze na temat arxiv.org/abs/1605.07146 ?
ameba

2
Przeskoczyłem go tylko, więc nie mogę powiedzieć nic wiarygodnego, ale wygląda na to, że autorzy stwierdzili, że przynajmniej w przypadku sieci rezydualnych szeroka (ale nadal 16 warstwowa głębokość!) Sieć przewyższa wąską, wyjątkowo głęboką (1000 warstw) ) netto. Niewiele wiem o sieciach rezydualnych, ale zgodnie z wprowadzeniem wydaje się, że trudność w ich szkoleniu polega na tym, że warstwy mogą w ogóle nie uczyć się niczego, a tym samym nie przyczyniać się znacząco do wyniku. Wydaje się, że posiadanie mniejszej liczby, ale mocniejszych warstw pozwala tego uniknąć. Czy dotyczy to innych rodzajów NN, których nie znam.
J. O'Brien Antognini,

Jasna i zwięzła odpowiedź, dobra robota. @J
ctwardy

21

Nie sądzę, że istnieje jednoznaczna odpowiedź na twoje pytania. Ale myślę, że konwencjonalna mądrość wygląda następująco:

Zasadniczo wraz ze wzrostem przestrzeni hipotez algorytmu uczenia się algorytm może uczyć się coraz bogatszych struktur. Ale jednocześnie algorytm staje się bardziej podatny na nadmierne dopasowanie i prawdopodobnie zwiększy się błąd generalizacji.

Tak więc ostatecznie dla każdego zestawu danych wskazane jest, aby pracować z minimalnym modelem, który ma wystarczającą pojemność, aby poznać prawdziwą strukturę danych. Jest to jednak bardzo ręczna rada, ponieważ zazwyczaj „rzeczywista struktura danych” jest nieznana, a często nawet możliwości modeli kandydujących są jedynie niejasno zrozumiane.

Jeśli chodzi o sieci neuronowe, wielkość przestrzeni hipotez jest kontrolowana przez liczbę parametrów. Wydaje się, że dla określonej liczby parametrów (lub ustalonego rzędu wielkości) głębsze wchodzenie pozwala modelom uchwycić bogatsze struktury (np. Ten papier ).

Może to częściowo tłumaczyć sukces głębszych modeli o mniejszej liczbie parametrów: VGGNet (od 2014 r.) Ma 16 warstw o ​​~ 140 mln parametrów, podczas gdy ResNet (od 2015 r.) Pokonał ją przy użyciu 152 warstw, ale tylko ~ 2 mln parametrów

(z drugiej strony, mniejsze modele mogą być łatwiejsze do obliczeń, ale nie sądzę, że jest to istotny czynnik sam w sobie - ponieważ głębokość faktycznie komplikuje trening)

Zauważ, że ten trend (większa głębia, mniej parametrów) występuje głównie w zadaniach związanych ze wzrokiem i sieciach splotowych, a to wymaga wyjaśnienia dla konkretnej dziedziny. Oto kolejna perspektywa:

Każdy „neuron” w warstwie splotowej ma „pole odbiorcze”, które jest rozmiarem i kształtem danych wejściowych, które wpływają na każde wyjście. Intuicyjnie każde jądro przechwytuje pewien związek między pobliskimi danymi wejściowymi. A małe jądra (które są powszechne i preferowane) mają małe pole odbiorcze, więc mogą dostarczać informacji tylko o lokalnych relacjach.

Ale w miarę wchodzenia głębiej pole recepcyjne każdego neuronu w odniesieniu do jakiejś wcześniejszej warstwy staje się większe. Tak głębokie warstwy mogą zapewnić funkcje o globalnym znaczeniu semantycznym i abstrakcyjnych szczegółach (relacje relacji ... relacji obiektów), przy użyciu tylko małych jąder (które regulują relacje, których uczy się sieć, i pomagają jej się zjednoczyć i uogólnić).

Tak więc użyteczność głębokich sieci splotowych w wizji komputerowej można częściowo wyjaśnić przestrzenną strukturą obrazów i filmów. Możliwe, że czas pokaże, że w przypadku różnego rodzaju problemów lub w przypadku architektury niekonwolucyjnej głębokość faktycznie nie działa dobrze.


Ograniczona część maszyny głębokiej sieci Boltzmanna stanowi duży mnożnik czasu konwergencji. (afaict)
EngrStudent

4
KMS nie są nieodłącznie związane z głębokim uczeniem się. Wiele (obecnie najbardziej?) Udanych głębokich sieci nie używa RBM.
Borbei,

3
Dzięki za link do tego artykułu, nie widziałem go wcześniej i wygląda bardzo trafnie.
J. O'Brien Antognini,

@Borbei - w jaki sposób zapewniają rozdzielenie funkcji bez RBM?
EngrStudent

1
+1. Wszelkie komentarze na temat arxiv.org/abs/1605.07146 ?
ameba

10

Dodanie większej liczby funkcji pomaga, ale korzyści szybko stają się marginalne po dodaniu wielu funkcji. To jeden z powodów, dla których działają takie narzędzia, jak PCA : kilka komponentów przechwytuje największą różnorodność funkcji. Dlatego dodawanie kolejnych funkcji po pewnym czasie jest prawie bezużyteczne.

Z drugiej strony, znalezienie odpowiedniej funkcji dla tej funkcji jest zawsze dobrym pomysłem. Jednak jeśli nie masz dobrej teorii, trudno jest wymyślić prawidłową funkcję. Tak więc dodawanie warstw jest pomocne jako forma brutalnej siły.

Rozważ prosty przypadek: opór powietrza samochodu. Powiedzmy, że nie znamy równania: 2/2 gdzie - powierzchnia przekroju samochodu, - gęstość powietrza, i - prędkość samochodu. Możemy stwierdzić, że pomiary samochodu są ważne i dodać je jako cechy, włączy się też prędkość samochodu. Dlatego ciągle dodajemy funkcje, a może dodajemy ciśnienie powietrza, temperaturę, długość, szerokość samochodu, liczbę siedzeń itp.ρ V

fCρAv2/2
Aρv

się na modelu takim jak Widzisz, jak te funkcje nie się w „prawdziwe” równanie, chyba że dodamy wszystkie interakcje i wielomiany. Gdyby jednak prawdziwe równanie nie było dogodnie wielomianowe, powiedzmy, że miało wykładniki lub inne dziwne funkcje transcendentalne, wówczas nie mielibyśmy szansy naśladować go z rozszerzaniem zestawu funkcji lub rozszerzaniem sieci.

fiβixi

Jednak pogłębienie sieci z łatwością doprowadziłoby cię do powyższego równania za pomocą tylko dwóch warstw. Bardziej skomplikowane funkcje wymagałyby więcej warstw, dlatego pogłębienie liczby warstw może być rozwiązaniem wielu problemów.


5
Przyjmujesz funkcje przenoszenia liniowego. Ale istnieje wiele innych (powszechnych) wyborów i zgodnie z uniwersalnym twierdzeniem o aproksymacji ANN , nawet pojedyncza ukryta nieliniowa warstwa (jeśli jest wystarczająco szeroka) może przybliżyć dowolną ładną funkcję. Reprezentatywność nie może tak naprawdę tłumaczyć sukcesu głębokich sieci.
Borbei,

2
Mój przykład był liniowy, ale dotyczy szerszego zestawu przypadków. Przyjąłeś funkcję „fajną”, ale wiele z nich nie jest tak fajna. Na przykład, kiedy wybieram samochód do zakupu, dlaczego mój algorytm decyzyjny miałby być fajną funkcją?
Aksakal

2

W przypadku gęsto połączonej sieci neuronowej o głębokości i szerokości liczba parametrów (stąd pamięć RAM wymagana do uruchomienia lub wyszkolenia sieci) wynosi . Tak więc, jeśli masz tylko ograniczoną liczbę parametrów, często sensowne jest preferowanie dużego wzrostu głębokości nad małym wzrostem szerokości.dwO(dw2)

Dlaczego możesz próbować ograniczyć liczbę parametrów? Wiele powodów:

  • Próbujesz uniknąć przeuczenia. (Chociaż ograniczenie liczby parametrów jest bardzo tępym narzędziem do osiągnięcia tego.)
  • Twoje badania są bardziej imponujące, jeśli możesz przewyższyć czyjś model przy użyciu tej samej liczby parametrów.
  • Trenowanie modelu jest znacznie łatwiejsze, jeśli model (plus parametry momentu, jeśli używasz Adama) może zmieścić się w pamięci pojedynczego GPU.
  • W rzeczywistych aplikacjach pamięć RAM jest często droga przy obsłudze modeli. Jest to szczególnie prawdziwe w przypadku uruchamiania modeli np. Na telefonie komórkowym, ale czasami może mieć zastosowanie nawet do obsługi modeli z chmury.

Skąd pochodzi ? W przypadku dwóch sąsiednich warstw o ​​szerokości połączenia między nimi opisano za pomocą . Więc jeśli masz warstwy o szerokości (plus warstwa wejściowa i wyjściowa), liczba parametrów to Zamiast ograniczania szerokości, alternatywną strategią czasami stosowaną jest użycie rzadkich połączeń. Na przykład podczas inicjowania topologii sieci można dopuścić każde połączenie z prawdopodobieństwem więc całkowita liczba parametrów wynosiw 1 , w 2 w 1 × w 2 ( d - 2 ) w ( d - 2 ) w 2 + w ( szerokość warstwy wejściowej ) + w ( szerokość warstwy wyjściowej ) = O ( d w 2 ) . 1 / O(dw2)w1,w2w1×w2(d2)w

(d2)w2+w(input layer width)+w(output layer width)=O(dw2).
O(dw)1/wO(dw). Ale jeśli to zrobisz, nie jest jasne, że zwiększenie szerokości koniecznie zwiększy zdolność modelu do nauki.
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.