Warstwy splotowe: do padania czy nie?

19

Architektura AlexNet korzysta z wypełnień zerowych, jak pokazano na rysunku: wprowadź opis zdjęcia tutaj W artykule nie ma jednak wyjaśnienia, dlaczego wprowadzono to wypełnienie.

Kurs Standford CS 231n uczy, że używamy paddingu, aby zachować rozmiar przestrzenny: wprowadź opis zdjęcia tutaj

Zastanawiam się, czy to jedyny powód, dla którego potrzebujemy wypełnienia? Mam na myśli, że jeśli nie muszę zachowywać wielkości przestrzennej, czy mogę po prostu usunąć wypełnienia? Wiem, że spowoduje to bardzo szybki spadek wielkości przestrzeni w miarę wchodzenia na głębsze poziomy. Jednak mogę to zmienić, usuwając pule warstw. Byłbym bardzo szczęśliwy, gdyby ktokolwiek mógł podać mi uzasadnienie dotyczące zerowania wypełnienia. Dzięki!

Jumabek Alihanov
źródło

Odpowiedzi:

20

Jest kilka powodów, dla których wypełnienie jest ważne:

  1. Łatwiej jest projektować sieci, jeśli zachowujemy heighti widthnie musimy się zbytnio przejmować wymiarami tensora podczas przechodzenia z jednej warstwy do drugiej, ponieważ wymiary będą po prostu „działać” .

  2. Pozwala nam to projektować głębsze sieci . Bez wyściółki zmniejszenie objętości zmniejszyłoby się zbyt szybko.

  3. Wypełnienie faktycznie poprawia wydajność, przechowując informacje na granicach .

Cytat z wykładów Stanforda: „Oprócz wspomnianej korzyści polegającej na utrzymywaniu stałych wymiarów przestrzennych po CONV, robienie tego w rzeczywistości poprawia wydajność. Jeśli warstwy CONV nie miałyby zerować wartości wejściowych i wykonywać tylko prawidłowe sploty, to rozmiar wolumeny zmniejszyłyby się nieznacznie po każdym CONV, a informacje na granicach zostałyby zbyt szybko „zmyte”. - źródło

  1. Jak już powiedział @dontloo, nowe architektury sieciowe muszą łączyć warstwy splotowe z filtrami 1x1, 3x3 i 5x5 i nie byłoby to możliwe, gdyby nie stosowały wypełnienia, ponieważ wymiary nie pasowałyby. Sprawdź ten obraz modułu początkowego, aby lepiej zrozumieć, dlaczego wypełnianie jest tutaj przydatne.

wprowadź opis zdjęcia tutaj

Przeciągnij0
źródło
4
Dlaczego wypełnienie zerowe jest tak wszechobecne? W przetwarzaniu obrazu stosuje się wiele różnych trybów obramowania, takich jak różne typy kopii lustrzanych lub kontynuowanie wartości na brzegu. Czyste zera mają bardzo różną strukturę w porównaniu do rzeczywistych obrazów / funkcji.
isarandi
3

Wydaje mi się, że najważniejszym powodem jest zachowanie wielkości przestrzennej. Jak już powiedziałeś, możemy skompromitować zmniejszenie wielkości przestrzennej poprzez usunięcie warstw pulujących. Jednak wiele ostatnich struktur sieciowych (takich jak sieci resztkowe , sieci początkowe , siatki fraktali ) działają na wyjściach poszczególnych warstw, co wymaga stałej wielkości przestrzenne pomiędzy nimi.

Inną rzeczą jest, jeśli brak dopełnienia, piksele w rogu wejścia wpływają tylko na piksele w odpowiednim rogu wyjścia, podczas gdy piksele w środku przyczyniają się do sąsiedztwa na wyjściu. Gdy kilka warstw bez paddingu zostanie ułożonych w stos, rodzaj sieci ignoruje piksele graniczne obrazu.

To tylko niektóre z moich zrozumienia. Sądzę, że istnieją inne dobre powody.

dontloo
źródło
2

Świetne pytanie. Drag0 wyjaśnił ładnie, ale zgadzam się, coś jest nie tak.

To jak patrzeć na fotografię i radzić sobie z granicą. W prawdziwym życiu możesz przesunąć oczy, by spojrzeć dalej; Nie istnieją żadne prawdziwe granice. Jest to więc ograniczenie medium.

Czy oprócz zachowania rozmiaru ma to znaczenie? Nie znam zadowalającej odpowiedzi, ale przypuszczam (niepotwierdzone), że dzięki eksperymentom uwagi i okluzji (obiektów cząstkowych) nie potrzebujemy informacji utraconych na granicach. Jeśli miałbyś zrobić coś mądrzejszego (powiedzmy, skopiuj piksel obok), nie zmieniłoby to odpowiedzi, chociaż sam nie eksperymentowałem. Wypełnianie zerami jest szybkie i zachowuje rozmiar, dlatego to robimy.

nieświadomy
źródło
1

to jest moje myślenie. wypełnienie zera jest ważne w początkowym czasie dla zachowania wielkości wektora cechy wyjściowej. a jego ktoś powyżej powiedział, że zero wypełnienia ma większą wydajność.

ale co powiesz na ostatni raz? rozdzielczość wektora cech obrazu jest bardzo mała, a wartość w pikselach oznacza rodzaj wektora o globalnym rozmiarze.

Wydaje mi się, że w ostatnim przypadku lepsze jest lustrzane odbicie niż zerowanie.

użytkownik225549
źródło
1

Pracując nad utrzymywaniem informacji na granicy, w zasadzie piksel w rogu (zielony zacieniowany) po wykonaniu splotu byłby użyty tylko raz, podczas gdy ten w środku, podobnie jak zacieniowany czerwony, wielokrotnie przyczyniałby się do powstania mapy obiektów. , wypełniamy obraz Zobacz rysunek: 2 .

Jatin
źródło
1

Postaram się powiedzieć na podstawie informacji, że kiedy można pad padać, a kiedy nie.

Weźmy dla przypadku podstawowego przykład funkcji wypełniania tensorflow. Udostępnia dwa scenariusze, „ważny” lub „taki sam”. To samo zachowa rozmiar danych wyjściowych i utrzyma je na tym samym poziomie co dane wejściowe poprzez dodanie odpowiedniego dopełnienia, podczas gdy ważne tego nie zrobi, a niektórzy twierdzą, że doprowadzi to do utraty informacji, ale tutaj jest haczyk .

Ta utrata informacji zależy od wielkości jądra lub używanego filtra. Załóżmy na przykład, że masz obraz 28 x 28, a rozmiar filtra to 15 x 15 (powiedzmy). Wyjście powinno mieć wymiar 16x16, ale jeśli użyjesz „tego samego” w tensorflow, będzie to 28x28. Teraz 12 wierszy i 12 kolumn same w sobie nie niosą żadnych znaczących informacji, ale nadal są formą hałasu. Wszyscy wiemy, jak bardzo podatne są modele głębokiego uczenia się na hałas. Może to znacznie pogorszyć trening. Więc jeśli używasz dużych filtrów, lepiej nie używać paddingu.

Saurabh Kumar
źródło