Często słyszę, jak ludzie mówią, dlaczego splotowe sieci neuronowe są nadal słabo poznane. Czy wiadomo, dlaczego splotowe sieci neuronowe zawsze uczą się coraz bardziej wyrafinowanych funkcji w miarę wchodzenia na kolejne warstwy? Co spowodowało, że stworzyli taki zestaw cech i czy dotyczyłoby to również innych typów głębokich sieci neuronowych?
machine-learning
neural-network
deep-learning
convnet
cnn
Chwalmy Pana
źródło
źródło
Odpowiedzi:
Wydaje mi się, że pytanie jest dość szerokie! Tak czy inaczej.
Zrozumienie sieci konwolucji
Czego się nauczyłem,
ConvNets
próbuje zminimalizować funkcję kosztu, aby poprawnie kategoryzować dane wejściowe w zadaniach klasyfikacji. Wszystkie filtry zmieniające parametry i wyuczone filtry mają na celu osiągnięcie wspomnianego celu.Wyuczone funkcje w różnych warstwach
Próbują obniżyć koszty, ucząc się niskich, czasem pozbawionych znaczenia cech, takich jak poziome i pionowe linie na swoich pierwszych warstwach, a następnie układając je w stosy, aby uzyskać abstrakcyjne kształty, które często mają znaczenie na ostatnich warstwach. Dla zilustrowania tego rys. 1, który został użyty stąd , można rozważyć. Wejście to magistrala, a dźwignia pokazuje aktywacje po przejściu wejścia przez różne filtry w pierwszej warstwie. Jak widać, czerwona ramka, czyli aktywacja filtra, której parametrów nauczyliśmy się, została aktywowana dla względnie poziomych krawędzi. Niebieska ramka została aktywowana dla względnie pionowych krawędzi. Możliwie, że
ConvNets
uczymy się nieznanych filtrów, które są przydatne, a my, np. praktykujący widzenie komputerowe, nie odkryliśmy, że mogą być przydatne. Najlepszą częścią tych sieci jest to, że próbują samodzielnie znaleźć odpowiednie filtry i nie używają naszych ograniczonych odkrytych filtrów. Uczą się filtrów, aby zmniejszyć kwotę funkcji kosztów. Jak wspomniano, filtry te niekoniecznie są znane.W głębszych warstwach funkcje poznane na poprzednich warstwach łączą się i tworzą kształty, które często mają znaczenie. W niniejszym artykule omówiono, że warstwy te mogą mieć aktywacje, które są dla nas znaczące, lub pojęcia, które mają znaczenie dla nas, jako istot ludzkich, mogą być rozdzielone między inne aktywacje. Na ryc. 2 zielona ramka pokazuje aktywacje filtra w piątej warstwie a
ConvNet
. Ten filtr dba o twarze. Załóżmy, że czerwony dba o włosy. Mają znaczenie. Jak widać, istnieją inne aktywacje, które zostały aktywowane w pozycji typowych twarzy na wejściu, zielona ramka jest jedną z nich; Niebieska ramka jest kolejnym przykładem. Odpowiednio, abstrakcję kształtów można nauczyć się przez filtr lub wiele filtrów. Innymi słowy, każda koncepcja, podobnie jak twarz i jej komponenty, może być rozdzielona między filtry. W przypadkach, w których pojęcia są podzielone na różne warstwy, jeśli ktoś spojrzy na każdą z nich, mogą być wyrafinowane. Informacje są dystrybuowane między nimi i dla zrozumienia, że informacje te wszystkie filtry i ich aktywacje muszą być wzięte pod uwagę, chociaż mogą się wydawać tak skomplikowane.CNNs
nie powinny być w ogóle uważane za czarne skrzynki. Zeiler i wszyscy w tym niesamowitym artykule omawiali rozwój lepszych modeli sprowadzających się do prób i błędów, jeśli nie rozumiesz, co dzieje się w tych sieciach. Ten artykuł próbuje wizualizować mapy obiektówConvNets
.Zdolność do obsługi różnych przekształceń w celu uogólnienia
ConvNets
używajpooling
warstw nie tylko w celu zmniejszenia liczby parametrów, ale także w celu zachowania niewrażliwości na dokładne położenie każdej cechy. Ich użycie pozwala również warstwom uczyć się różnych funkcji, co oznacza, że pierwsze warstwy uczą się prostych funkcji niskiego poziomu, takich jak krawędzie lub łuki, a głębsze warstwy uczą się bardziej skomplikowanych funkcji, takich jak oczy lub brwi.Max Pooling
np. próbuje sprawdzić, czy specjalna funkcja istnieje w specjalnym regionie, czy nie. Ideapooling
warstw jest bardzo przydatna, ale jest w stanie obsłużyć przejścia między innymi transformacjami. Chociaż filtry na różnych warstwach próbują znaleźć różne wzory, np. Obróconą ścianę uczy się przy użyciu innych warstw niż zwykła twarz,CNNs
przez to nie mają żadnej warstwy do obsługi innych transformacji. Aby to zilustrować, załóżmy, że chcesz nauczyć się prostych twarzy bez żadnego obrotu z minimalną siatką. W takim przypadku Twój model może to zrobić idealnie. załóżmy, że zostałeś poproszony o nauczenie się każdego rodzaju twarzy z dowolnym obrotem twarzy. W takim przypadku Twój model musi być znacznie większy niż poprzednia wyuczona sieć. Powodem jest to, że muszą być filtry, aby nauczyć się tych obrotów na wejściu. Niestety to nie wszystkie transformacje. Twoje dane wejściowe również mogą być zniekształcone. Sprawy te rozzłościły Maxa Jaderberga i innych . Opracowali ten artykuł, aby poradzić sobie z tymi problemami, aby uspokoić nasz gniew.Konwolucyjne sieci neuronowe działają
Wreszcie, po nawiązaniu do tych punktów, działają, ponieważ próbują znaleźć wzorce w danych wejściowych. Układają je w stos, aby tworzyć abstrakcyjne koncepcje za pomocą warstw splotu. Próbują dowiedzieć się, czy dane wejściowe zawierają każdą z tych pojęć, czy nie w gęstych warstwach, aby dowiedzieć się, do której klasy należą dane wejściowe.
Dodaję przydatne linki:
ConvNets
źródło
ConvNets działają, ponieważ wykorzystują lokalizację cech. Robią to z różną szczegółowością, dzięki czemu są w stanie modelować funkcje hierarchicznie wyższego poziomu. Są niezmienne w tłumaczeniu dzięki pulom jednostek. Nie są one niezmienne obrót- per se , ale zazwyczaj są zbieżne do filtrów, które są obrócone wersje tych samych filtrów , a tym samym wspieranie wejść obracać.
Nie znam żadnej innej architektury neuronowej, która czerpałaby korzyści z lokalizacji cech w tym samym sensie, co ConvNets.
źródło
Nigdy nie należy zapominać o innych elementach typowego ConvNet. Filtry splotu wychwytują przestrzenne niezmienne cechy, takie jak krawędzie i okręgi. Te cechy są określone ilościowo w warstwie pulującej, która następuje po warstwie C. Na koniec są one zasilane (zwykle) wieloma w pełni połączonymi warstwami (fc). Należy przypisać te w pełni połączone warstwy, które są niczym więcej niż tym, co można znaleźć w zwykłym MLP.
źródło
Konwolucyjne sieci neuronowe działają, ponieważ stanowią dobre rozszerzenie standardowego algorytmu głębokiego uczenia.
Biorąc pod uwagę nieograniczone zasoby i pieniądze, nie ma potrzeby splotowego, ponieważ standardowy algorytm również będzie działał. Jednak splotowy jest bardziej wydajny, ponieważ zmniejsza liczbę parametrów . Redukcja jest możliwa, ponieważ wykorzystuje lokalizację funkcji, dokładnie tak, jak pisze @ncasas.
źródło
Czy wiadomo, dlaczego splotowe sieci neuronowe zawsze uczą się coraz bardziej wyrafinowanych funkcji w miarę wchodzenia na kolejne warstwy?
To jest czysta matematyka. Na koniec sieć neuronowa jest dużą funkcją matematyczną. Im głębsza sieć, tym większa reprezentuje funkcję. Mówiąc bardziej, mam na myśli, rzecz jasna, wymiarowość. Wyuczone funkcje są bardziej wyrafinowane, ponieważ są wynikiem bardziej wyrafinowanych funkcji.
Co spowodowało, że stworzyli taki zestaw funkcji
Co ciekawe, konwencjonalne sieci neuronowe zostały zainspirowane naszą własną, właściwie kotowską biologią. Hubel i Wiesel przeprowadzili eksperymenty na korze wzrokowej kotów i zdali sobie sprawę, że światło było postrzegane przez stosy pól optycznych. To właśnie zainspirowało warstwę splotową i głębszą architekturę.
źródło
Opierając się na odpowiedziach ncasas i horaceT , ConvNets są bardzo skuteczne, ponieważ:
Jeśli chcesz dowiedzieć się więcej o konwencjach i budujących je różnych blokach, a także o intuicjach, które leżą u ich podstaw, oto post, który niedawno napisałem na moim osobistym blogu, który zawiera szczegółowe informacje.
źródło