Jak działają architektury wąskiego gardła w sieciach neuronowych?

21

Architekturę wąskiego gardła definiujemy jako typ znaleziony w dokumencie ResNet, w którym [dwie warstwy konwekcyjne 3x3] są zastępowane przez [jedna konwekcja 1x1, jedna konwekcja 3x3 i kolejna warstwa konwekcyjna 1x1].wprowadź opis zdjęcia tutaj

Rozumiem, że warstwy konwekcji 1x1 są używane jako forma redukcji wymiarów (i przywracania), co wyjaśniono w innym poście . Nie jestem jednak pewien, dlaczego ta struktura jest tak skuteczna jak oryginalny układ.

Niektóre dobre wyjaśnienia mogą obejmować: Jaką długość kroku stosuje się i na jakich warstwach? Jakie są przykładowe wymiary wejściowe i wyjściowe każdego modułu? W jaki sposób mapy obiektów 56x56 są przedstawione na powyższym schemacie? Czy 64-d odnosi się do liczby filtrów, dlaczego to się różni od filtrów 256-d? Ile wag lub FLOP używa się na każdej warstwie?

Każda dyskusja jest bardzo mile widziana!

derekchen14
źródło
Myślę, że może to pomóc w uogólnieniu i zapobieganiu nadmiernemu dopasowaniu. Ale to tylko niejasne wspomnienie.
Chris

Odpowiedzi:

5

Architektura wąskiego gardła jest stosowana w bardzo głębokich sieciach ze względów obliczeniowych.

Aby odpowiedzieć na pytania:

  1. Mapy obiektów 56x56 nie są przedstawione na powyższym obrazku. Ten blok jest pobierany z ResNet o wielkości wejściowej 224 x 224. 56x56 to próbkowana wersja wejścia na niektórych warstwach pośrednich.

  2. 64-d odnosi się do liczby map obiektów (filtrów). Architektura wąskiego gardła ma 256-d, po prostu dlatego, że jest przeznaczona dla znacznie głębszej sieci, która prawdopodobnie przyjmuje obraz o wyższej rozdzielczości jako dane wejściowe, a zatem wymaga większej liczby map obiektów.

  3. Patrz tej wartości dla parametrów każdej warstwy gardła w ResNet 50.

Newstein
źródło
1
Dla przyszłych czytelników powinienem wspomnieć, że myślę, że konwektory 1x1 mają krok = 1 i pad = 0, aby zachować (WxH) 56x56. Podobnie konwektory 3x3 mają krok = 1 i pad = 1, aby zachować również rozmiar.
derekchen14
Nadal nie rozumiem. Wygląda na to, że oba mają podobną liczbę parametrów, w takim przypadku nadal nie rozumiem celu warstwy bootleneck.
user570593
-1

Naprawdę uważam, że drugi punkt odpowiedzi Newsteina jest mylący.

64-dLub 256-dpowinien odnosić się do liczby kanałów na mapie fabularnego wejście - nie liczba funkcji wejściowej mapy.

Rozważ blok „wąskiego gardła” (po prawej stronie rysunku) w pytaniu PO jako przykład:

  • 256-doznacza, że ​​mamy pojedynczą wejściową mapę obiektów z wymiarem n x n x 256. Na 1x1, 64rysunku oznacza 64 filtry , każdy ma 1x1i ma 256kanały ( 1x1x256).
  • Widzimy więc, że splot pojedynczego filtra ( 1x1x256) z wejściową mapą funkcji ( n x n x 256) daje nam n x ndane wyjściowe.
  • Teraz mamy 64filtry, dlatego układając dane wyjściowe, wymiar mapy obiektów wyjściowych wynosi n x n x 64.

Edytowane:

  • @Michael Chernick: Ok, to byłaby częściowa odpowiedź, ponieważ próbowałem skorygować przyjętą odpowiedź. Czy możesz poświęcić trochę czasu, aby spojrzeć na moją częściową odpowiedź i dać mi znać, jeśli dobrze rozumiem?
Zapalać
źródło
Niezależnie od reputacji nie powinieneś używać odpowiedzi na komentarze.
Michael R. Chernick