En CNN, ¿son iguales el muestreo ascendente y la convolución de transposición?

12

Los términos "muestreo ascendente" y "convolución de transposición" se usan cuando se está haciendo "deconvolución" (<- no es un buen término, pero déjenme usarlo aquí). Originalmente, pensé que significaban lo mismo, pero me parece que son diferentes después de leer estos artículos. alguien puede por favor aclarar?

  1. Transvolución de convolución : parece que podemos usarla cuando propongamos la pérdida a través de la red neuronal convolutonal.

    http://andrew.gibiansky.com/blog/machine-learning/convolutional-neural-networks/#Backward-Propagation

    https://github.com/vdumoulin/conv_arithmetic

    https://arxiv.org/pdf/1312.6034v2.pdf , sección 4 "Para la capa convolucional ..."

  2. Upsampling : parece que lo usamos cuando queremos aumentar la muestra de una entrada más pequeña a una entrada más grande en la estructura convnet-decovnet.

    https://www.youtube.com/watch?v=ByjaPdWXKJ4&feature=youtu.be&t=22m

RockTheStar
fuente
1
Publicación cruzada en datascience.stackexchange.com/questions/15863/… . No publique mensajes cruzados, pero decida en qué sitio desea hacer su pregunta.
Scortchi - Restablece a Monica
@Scortchi Oh, ¿están vinculados? Lo siento, elimino el de ciencia de datos.
RockTheStar
Una publicación interesante sobre las llamadas deconvoluciones
Hans

Respuestas:

9

Como no hay una respuesta detallada y marcada, haré lo mejor que pueda.

Primero comprendamos de dónde proviene la motivación para tales capas: por ejemplo, un autoencoder convolucional. Puede usar un autoencoder convolucional para extraer características de imágenes mientras entrena al autoencoder para reconstruir la imagen original. (Es un método no supervisado).

Tal codificador automático tiene dos partes: el codificador que extrae las características de la imagen y el decodificador que reconstruye la imagen original a partir de estas características. La arquitectura del codificador y el decodificador generalmente se reflejan.

En un autoencoder convolucional, el codificador funciona con capas de convolución y agrupación. Supongo que sabes cómo funcionan. El decodificador intenta reflejar el codificador pero en lugar de "hacer que todo sea más pequeño" tiene el objetivo de "hacer que todo sea más grande" para que coincida con el tamaño original de la imagen.

Lo opuesto a las capas convolucionales son las capas de convolución transpuestas (también conocidas como deconvolución , pero matemáticamente hablando correctamente, esto es algo diferente). Trabajan con filtros, núcleos, zancadas al igual que las capas de convolución, pero en lugar de mapear, por ejemplo, de 3x3 píxeles de entrada a 1 salida, mapean de 1 píxel de entrada a 3x3 píxeles. Por supuesto, también la retropropagación funciona un poco diferente.

Lo opuesto a las capas de agrupación son las capas de muestreo ascendente que en su forma más pura solo cambian el tamaño de la imagen (o copian el píxel tantas veces como sea necesario). Una técnica más avanzada es la eliminación de la agrupación, que revierte la agrupación máxima al recordar la ubicación de los máximos en las capas de agrupación máxima y en las capas de la agrupación, copie el valor exactamente en esta ubicación. Para citar este documento ( https://arxiv.org/pdf/1311.2901v3.pdf ):

En el convnet, la operación de agrupación máxima no es invertible, sin embargo, podemos obtener un inverso aproximado registrando las ubicaciones de los máximos dentro de cada región de agrupación en un conjunto de variables de conmutación. En la descontaminación, la operación de desenrollado utiliza estos interruptores para colocar las reconstrucciones desde la capa superior en ubicaciones apropiadas, preservando la estructura del estímulo.

Para obtener más información técnica y contexto, eche un vistazo a esta explicación realmente buena, demostrativa y profunda: http://deeplearning.net/software/theano/tutorial/conv_arithmetic.html

Y eche un vistazo a https://www.quora.com/What-is-the-difference-between-Deconvolution-Upsampling-Unpooling-and-Convolutional-Sparse-Coding

Maikefer
fuente
F. Chollet (creador de Keras) argumentaría que esta es una técnica auto supervisada .
Hans
6

Puede depender del paquete que esté utilizando.

En keras son diferentes. El muestreo ascendente se define aquí https://github.com/fchollet/keras/blob/master/keras/layers/convolutional.py Siempre que use el backend de tensorflow, lo que realmente sucede es que Keras llama a la función resize_images de tensorflow , que esencialmente es una interpolación y no entrenable

La convolución transpuesta está más involucrada. Se define en la misma secuencia de comandos de Python enumerada anteriormente. Llama a la función tensorflow conv2d_transpose y tiene el núcleo y es entrenable.

Espero que esto ayude.

Jian
fuente
1

Desconvolución en el contexto de redes neuronales convolucionales es sinónimo de transposición de convolución. La desconvolución puede tener otros significados en otros campos.

La convolución de transposición es una estrategia entre otras para realizar el muestreo ascendente.

Franck Dernoncourt
fuente
Sí estoy de acuerdo. pero parece que la forma en que las referencias los explican es diferente. Eche un vistazo al video en el No.2 y luego mire las referencias en el No.1 (Personalmente, voy por la explicación No.1)
RockTheStar
@RockTheStar ¿Qué concepto se explica de manera diferente? ¿Transponer convolución o muestreo?
Franck Dernoncourt
1
El concepto de muestreo / desconvolución explicado en el video en No.2. Son unos pocos minutos.
RockTheStar
0

Aquí hay una buena ilustración de la diferencia entre 1) transposición de convolución y 2) muestreo superior + convolución. https://distill.pub/2016/deconv-checkerboard/

Si bien la convolución de transposición es más eficiente, el artículo aboga por el muestreo ascendente + convolución ya que no sufre el artefacto del tablero de ajedrez.

Shaobo Guan
fuente