Jaka jest różnica między Dilated Convolution a Deconvolution?

11

Te dwie operacje splotu są obecnie bardzo powszechne w głębokim uczeniu się.

O rozszerzonej warstwie splotowej przeczytałem w tym artykule: WAVENET: GENERACYJNY MODEL SUROWEGO AUDIO

a Dekonwolucja znajduje się w tym artykule: W pełni konwolucyjne sieci dla segmentacji semantycznej

Oba wydają się próbkować obraz, ale jaka jest różnica?

Shamane Siriwardhana
źródło

Odpowiedzi:

9

W sposób mechanistyczny / obrazkowy / oparty na obrazach:

Dylatacja: ### ZOBACZ UWAGI, DZIAŁAJĄCE NA NAPRAWIENIU TEJ SEKCJI

Dylatacja jest w dużej mierze taka sama, jak konwulsja typu non-the-mill (szczerze mówiąc, dekonwolucja), z tym wyjątkiem, że wprowadza luki w jądrach, tj. Podczas gdy standardowe jądro zwykle ślizga się po sąsiadujących sekcjach danych wejściowych, jego rozszerzony odpowiednik może, na przykład „otacza” większą część obrazu - podczas gdy nadal ma tylko tyle wag / danych wejściowych, co standardowa forma.

(Uwaga: podczas gdy dylatacja wstrzykuje zera do jądra , aby szybciej zmniejszyć wymiary twarzy / rozdzielczość jego wyjścia, transpozycja splotu wstrzykuje zera do jego wejścia , aby zwiększyć rozdzielczość jego wyjścia.)

Aby uczynić to bardziej konkretnym, weźmy bardzo prosty przykład:
Załóżmy, że masz obraz 9x9, x bez wypełnienia. Jeśli weźmiesz standardowe jądro 3x3, z krokiem 2, pierwszy podzbiór z danych wejściowych będzie wynosił x [0: 2, 0: 2], a jądro weźmie pod uwagę wszystkie dziewięć punktów w tych granicach. Następnie przeciągnąłbyś po x [0: 2, 2: 4] i tak dalej.

Wyraźnie wynik będzie miał mniejsze wymiary twarzy, a konkretnie 4x4. Zatem neurony następnej warstwy mają pola recepcyjne w dokładnej wielkości tych przejść jądra. Ale jeśli potrzebujesz neuronów o większej globalnej wiedzy przestrzennej (np. Jeśli ważną cechę można zdefiniować tylko w regionach większych niż to), potrzebujesz drugiej warstwy, aby utworzyć trzecią warstwę, w której skuteczne pole odbiorcze jest jakiś związek poprzednich warstw rf.

Ale jeśli nie chcesz dodawać kolejnych warstw i / lub uważasz, że przekazywane informacje są nadmiernie zbędne (tzn. Twoje pola odbiorcze 3x3 w drugiej warstwie zawierają tylko „2x2” wyraźne informacje), możesz użyć rozszerzony filtr. Podejdźmy do tego wyjątkowo, aby uzyskać jasność i powiedzmy, że użyjemy 3-dialowego filtra 9x9. Teraz nasz filtr „otoczy” całe wejście, więc nie będziemy musieli go wcale przesuwać. Nadal będziemy jednak pobierać z wejścia tylko 3x3 = 9 punktów danych, x :

x [0,0] U x [0,4] U x [0,8] U x [4,0] U x [4,4] U x [4,8] U x [8,0] U x [8,4] U x [8,8]

Teraz neuron w naszej następnej warstwie (będziemy mieli tylko jedną) będzie miał dane „reprezentujące” znacznie większą część naszego obrazu, i ponownie, jeśli dane obrazu są bardzo redundantne dla sąsiednich danych, moglibyśmy zachować te same informacje i nauczył się równoważnej transformacji, ale z mniejszą liczbą warstw i mniejszymi parametrami. Myślę, że w ramach tego opisu jest jasne, że chociaż można to zdefiniować jako ponowne próbkowanie, jesteśmy tutaj w dół próbkowania dla każdego jądra.


Ułamkowy krok lub transpozycja lub „dekonwolucja”:

Ten rodzaj jest nadal bardzo splotem w sercu. Różnica polega na tym, że ponownie przejdziemy od mniejszej głośności wejściowej do większej głośności wyjściowej. OP nie zadał żadnych pytań na temat tego, co to jest upsampling, więc zaoszczędzę trochę czasu, tym razem i przejdę od razu do odpowiedniego przykładu.

W naszym poprzednim przypadku 9 x 9 powiedzmy, że chcemy teraz zwiększyć próbkę do 11 x 11. W tym przypadku mamy dwie typowe opcje: możemy wziąć jądro 3x3 i krokiem 1 i przeciągnąć go po naszym wejściu 3x3 za pomocą 2-padding, aby nasze pierwsze przejście było ponad regionem [left-pad-2: 1, above-pad-2: 1], a następnie [left-pad-1: 2, above-pad-2: 1] i tak dalej i tak dalej.

Alternatywnie możemy dodatkowo wstawić dopełnianie między danymi wejściowymi i przeciągać po nim jądro bez tak dużej ilości dopełniania. Najwyraźniej czasem będziemy zajmować się dokładnie tymi samymi punktami wejściowymi więcej niż jeden raz dla jednego jądra; w tym przypadku termin „ułamkowo ułożony” wydaje się bardziej uzasadniony. Myślę, że poniższa animacja (pożyczona stąd i oparta (jak sądzę) na tej pracy) pomoże wyczyścić wszystko pomimo różnych wymiarów. Dane wejściowe są niebieskie, białe wstrzyknięte zera i wypełnienie, a dane wyjściowe zielone:

transponowane konw., wejście jest niebieskie, wyjście zielone

Oczywiście zajmujemy się wszystkimi danymi wejściowymi, w przeciwieństwie do dylatacji, która może całkowicie ignorować niektóre regiony. A ponieważ mamy wyraźnie więcej danych, niż zaczęliśmy, „upsampling”.

Zachęcam do przeczytania doskonałego dokumentu, z którym się połączyłem, aby uzyskać bardziej solidną, abstrakcyjną definicję i wyjaśnienie transpozycji transpozycji, a także dowiedzieć się, dlaczego podane przykłady są ilustrującymi, ale w dużej mierze nieodpowiednimi formami do obliczenia reprezentowanej transformacji.

Doug Brummell
źródło
1
Proszę pamiętać, że nie jestem ekspertem, tylko kimś, kto ostatnio sam musiał rozróżnić te pojęcia. Daj mi znać, jeśli wystąpią jakiekolwiek bezpośrednie błędy lub nadmierne uproszczenia, które mogą podważyć ogólną poprawność odpowiedzi. Dzięki!
Doug Brummell,
Doug Brummel Wow ładnie to wyjaśnia. Miałem ten sam pomysł. Chciałbym poznać Twoją opinię na temat stosowania rozszerzonego splotu, w jaki sposób powinniśmy zacząć stosować to w CNN. Czy powinniśmy najpierw przystąpić do jakiegoś normalnego splotu, a następnie zastosować rozwodnienie rozszerzone? Kolejną rzeczą rozszerzoną splotem może być brak informacji, jeśli nie wyzerujemy padu. Więc myślę, że powinniśmy zastosować rozszerzony splot po kilku normalnych warstwach w konwencie?
Shamane Siriwardhana
Uważam, że standardowym pomysłem jest zwiększenie stopnia rozszerzania w przód, zaczynając od nierozcieńczonych, regularnych filtrów dla l = 1, w kierunku filtrów 2-, a następnie 3-rozszerzonych itd., W miarę postępów w głąb sieci. Pozwala to upewnić się, że wszystkie dane w jednej warstwie są przekazywane do następnej (w tym, co ważne, do samej sieci), jednocześnie umożliwiając wykładniczo szybsze próbkowanie w dół z każdą warstwą, ale bez parametrów zwiększania. Celem są szerokie pola odbioru bez poświęcania włączenia danych. I tak, uwaga na wypełnienie powinna być ważna na początku.
Doug Brummell,
Zobacz [ten artykuł] ( arxiv.org/pdf/1511.07122.pdf ), jest przywołany powyżej i zapewnił sporo o tym, co przeczytałem na ten temat.
Doug Brummell,
Jeszcze jedna rzecz: ten artykuł stwierdza, że ​​nie ma utraty rozdzielczości w tak rosnącym schemacie dylatacji ... Chyba po prostu uważam na inne straty, które mógłbym pokryć w ramach „rozdzielczości”. Oczywiście, jeśli możesz wymienić kilka warstw konwekcyjnych na mniej rozszerzonych i zachować dokładność, świetnie, absolutnie powinieneś. Ale dla mnie (i będę musiał wrócić do książek na ten temat) myślę o potencjalnych stratach w przypadku, gdy architekt od samego początku z dylatacją ...
Doug Brummell,
5

Chociaż oba wydają się robić to samo, czyli próbkowanie warstwy w górę, istnieje wyraźny margines między nimi.

Najpierw mówimy o Dilated Convolution

Znalazłem ten fajny blog na powyższy temat. Tak więc, jak zrozumiałem, bardziej przypomina to eksplorację punktów danych wejściowych w szeroki sposób . Lub zwiększenie pola odbiorczego operacji splotu.

Oto rozszerzony schemat splotu z artykułu .

Zdjęcie 3

Jest to bardziej normalny splot, ale pomaga uchwycić coraz więcej globalnego kontekstu z pikseli wejściowych bez zwiększania wielkości parametrów. Może to również pomóc zwiększyć przestrzenny rozmiar wydruku. Ale najważniejsze jest to, że zwiększa to wykładniczo wielkość pola odbiorczego wraz z liczbą warstw. Jest to bardzo powszechne w dziedzinie przetwarzania sygnału.

Ten blog naprawdę wyjaśnia, co nowego w rozszerzonym splotu i jak to porównać do normalnego splotu.

Blog: Rozwinięte sploty i zwoje Frontu Kroneckera

Teraz wyjaśnię, czym jest Dekonwolucja

Nazywa się to transponowanym splotem. Jest to równe funkcji, której użyliśmy do splotu w propagacji wstecznej.

Po prostu w backpropie dystrybuujemy gradienty z jednego neuronu na wyjściowej mapie cech do wszystkich elementów w polach recepcyjnych, a następnie sumujemy gradienty tam, gdzie pokrywały się z tymi samymi elementami recepcyjnymi

Oto dobry zasób ze zdjęciami .

Zatem podstawową ideą jest dekonwolucja działająca w przestrzeni wyjściowej. Brak pikseli wejściowych. Spróbuje utworzyć szersze wymiary przestrzenne na mapie wyjściowej. Jest to wykorzystywane w pełni konwergentnych sieciach neuronowych do segmentacji semantycznej .

Zatem więcej Deconvolution to możliwa do nauczenia się warstwa próbkowania w górę.

Próbuje nauczyć się próbkowania w połączeniu z ostateczną stratą

To najlepsze wytłumaczenie, jakie znalazłem dla dekonwolucji. Wykład 13 w cs231, od 21.21 r .

Shamane Siriwardhana
źródło
czy miałbyś coś przeciwko opracowaniu, w jaki sposób rozszerzony splot pomaga zwiększyć przestrzenny rozmiar wyjścia? Wydaje się, że wymaga jeszcze więcej wypełnienia niż tradycyjne zwoje, a więc gorzej pod względem wielkości wyjściowej.
wlnirvana