En una especie de términos mecanicistas / pictóricos / basados en imágenes:
Dilatación: ### VER COMENTARIOS, TRABAJANDO EN LA CORRECCIÓN DE ESTA SECCIÓN
La dilatación es en gran medida lo mismo que la convolución común (francamente, también lo es la deconvolución), excepto que introduce huecos en sus núcleos, es decir, mientras que un núcleo estándar normalmente se deslizaría sobre secciones contiguas de la entrada, su contraparte dilatada puede, por ejemplo, "encierra" una sección más grande de la imagen, mientras que solo tiene tantos pesos / entradas como la forma estándar.
(Tenga en cuenta bien, mientras que la dilatación inyecta ceros en su núcleo para disminuir más rápidamente las dimensiones faciales / resolución de su salida, transponer convolución inyecta ceros en su entrada para aumentar la resolución de su salida).
Para hacer esto más concreto, tomemos un ejemplo muy simple:
Digamos que tiene una imagen de 9x9, x sin relleno. Si toma un núcleo estándar de 3x3, con zancada 2, el primer subconjunto de interés de la entrada será x [0: 2, 0: 2], y el núcleo considerará los nueve puntos dentro de estos límites. Luego barrería sobre x [0: 2, 2: 4] y así sucesivamente.
Claramente, la salida tendrá dimensiones faciales más pequeñas, específicamente 4x4. Por lo tanto, las neuronas de la siguiente capa tienen campos receptivos en el tamaño exacto de estos pases de granos. Pero si necesita o desea neuronas con más conocimiento espacial global (p. Ej., Si una característica importante solo se puede definir en regiones más grandes que esta), necesitará convolver esta capa por segunda vez para crear una tercera capa en la que el campo receptivo efectivo sea alguna unión de las capas anteriores rf.
Pero si no desea agregar más capas y / o siente que la información que se transmite es excesivamente redundante (es decir, sus campos receptivos de 3x3 en la segunda capa solo llevan una cantidad "2x2" de información distinta), puede usar Un filtro dilatado. Seamos extremos acerca de esto por claridad y digamos que usaremos un filtro 9x9 3-dialated. Ahora, nuestro filtro "rodeará" toda la entrada, por lo que no tendremos que deslizarla en absoluto. Sin embargo, solo tomaremos 3x3 = 9 puntos de datos de la entrada, x , típicamente:
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]
Ahora, la neurona en nuestra próxima capa (solo tendremos una) tendrá datos que "representan" una porción mucho más grande de nuestra imagen, y nuevamente, si los datos de la imagen son altamente redundantes para los datos adyacentes, bien podríamos haber preservado el misma información y aprendí una transformación equivalente, pero con menos capas y menos parámetros. Creo que, dentro de los límites de esta descripción, está claro que, aunque puede definirse como remuestreo, estamos aquí reduciendo la muestra para cada núcleo.
Zancada fraccionada o transpuesta o "deconvolución":
Este tipo sigue siendo una convolución en el fondo. La diferencia es, nuevamente, que nos moveremos de un volumen de entrada más pequeño a un volumen de salida más grande. OP no planteó preguntas sobre qué es el muestreo ascendente, por lo que ahorraré un poco de amplitud, esta vez y pasaré directamente al ejemplo relevante.
En nuestro caso de 9x9 de antes, digamos que ahora queremos aumentar la muestra a 11x11. En este caso, tenemos dos opciones comunes: podemos tomar un kernel 3x3 y con zancada 1 y barrerlo sobre nuestra entrada 3x3 con 2 rellenos para que nuestro primer pase esté sobre la región [left-pad-2: 1, above-pad-2: 1] luego [left-pad-1: 2, above-pad-2: 1] y así sucesivamente.
Alternativamente, también podemos insertar relleno entre los datos de entrada y barrer el núcleo sobre él sin tanto relleno. Claramente, a veces nos preocuparemos con los mismos puntos de entrada más de una vez para un solo núcleo; Aquí es donde el término "zancada fraccional" parece más razonado. Creo que la siguiente animación (tomada de aquí y basada (creo) fuera de este trabajo ayudará a aclarar las cosas a pesar de ser de diferentes dimensiones. La entrada es azul, los ceros y el relleno inyectados en blanco, y la salida en verde:
Por supuesto, nos ocupamos de todos los datos de entrada en lugar de la dilatación que puede o no ignorar algunas regiones por completo. Y dado que claramente estamos terminando con más datos de los que comenzamos, "muestreo".
Le animo a leer el excelente documento al que me vinculé para obtener una definición y explicación más abstracta y sólida de la convolución de transposición, así como para aprender por qué los ejemplos compartidos son formas ilustrativas pero en gran medida inapropiadas para calcular realmente la transformación representada.
Aunque ambos parecen estar haciendo lo mismo, que consiste en muestrear una capa, hay un margen claro entre ellos.
Primero hablamos de convolución dilatada
Encontré este bonito blog sobre el tema anterior. Entonces, como entendí, esto es más como explorar los puntos de datos de entrada de una manera amplia . O aumentar el campo receptivo de la operación de convolución.
Aquí hay un diagrama de convolución dilatada del artículo .
Esto es más una convolución normal, pero ayuda a capturar más y más contexto global de los píxeles de entrada sin aumentar el tamaño de los parámetros. Esto también puede ayudar a aumentar el tamaño espacial de la salida. Pero lo principal aquí es que esto aumenta el tamaño del campo receptivo exponencialmente con el número de capas. Esto es muy común en el campo de procesamiento de señales.
Este blog realmente explica qué hay de nuevo en la convolución dilatada y cómo se compara con la convolución normal.
Blog: Convoluciones dilatadas y convoluciones factorizadas de Kronecker
Ahora explicaré qué es la deconvolución
Esto se llama convolución transpuesta. Esto es igual a la función que utilizamos para la convolución en la retropropagación.
Simplemente en backprop distribuimos gradientes de una neurona en el mapa de características de salida a todos los elementos en los campos receptivos, luego también sumamos los gradientes donde coincidieron con los mismos elementos receptivos
Aquí hay un buen recurso con fotos .
Entonces, la idea básica es que la deconvolución funciona en el espacio de salida. No ingresa píxeles. Intentará crear dimensiones espaciales más amplias en el mapa de salida. Esto se utiliza en redes neuronales totalmente convolucionales para la segmentación semántica .
Entonces, más de la deconvolución es una capa de muestreo ascendente que se puede aprender.
Intenta aprender a muestrear mientras se combina con la pérdida final
Esta es la mejor explicación que encontré para la deconvolución. Conferencia 13 en cs231, de 21.21 en adelante .
fuente