36 votos

Capas convolucionales: ¿Rellenar o no rellenar?

La arquitectura de AlexNet utiliza el relleno de cero como se muestra en la imagen. Sin embargo, en el documento no se explica por qué se introduce este relleno.

enter image description here

El curso Standford CS 231n enseña que usamos el relleno para preservar el tamaño espacial: enter image description here

Tengo curiosidad por saber si esa es la única razón del acolchado cero. ¿Puede alguien explicar la razón de ser del relleno cero? Gracias.

Razón por la que pregunto

Digamos que no necesito conservar el tamaño espacial. ¿Puedo eliminar el relleno sin perder rendimiento? Sé que resulta en una disminución muy rápida del tamaño espacial a medida que pasamos a capas más profundas, pero puedo compensar eso eliminando también las capas de agrupamiento.

37voto

Zanoni Puntos 8401

Hay un par de razones por las que el acolchado es importante:

  1. Es más fácil diseñar redes si conservamos la height y width y no hay que preocuparse demasiado por las dimensiones del tensor al pasar de una capa a otra porque las dimensiones sólo "funcionará" .

  2. Nos permite diseñar redes más profundas . Sin el relleno, la reducción del tamaño del volumen se reduciría demasiado rápido.

  3. Acolchado en realidad mejora el rendimiento al mantener la información en las fronteras .

Cita de las conferencias de Stanford: "Además de la mencionada ventaja de mantener constantes los tamaños espaciales después de la CONV, hacer esto realmente mejora el rendimiento. Si las capas de CONV no pusieran a cero las entradas y sólo realizaran convoluciones válidas, el tamaño de los volúmenes se reduciría en una pequeña cantidad después de cada CONV, y la información en los bordes se "lavaría" demasiado rápido." - fuente

  1. Como ya dijo @dontloo, las nuevas arquitecturas de red necesitan concatenar capas convolucionales con filtros 1x1, 3x3 y 5x5 y no sería posible si no usaran padding porque las dimensiones no coincidirían. Mira esta imagen del módulo de inicio para entender mejor por qué el padding es útil aquí.

enter image description here

4voto

carlosgg Puntos 21

Ya hay algunas respuestas muy buenas aquí. Quiero añadir algunos detalles más sobre el efectos de borde de imagen (que ya se han mencionado) que dependen del tipo de relleno utilizado.

Hay 3 tipos de relleno relevantes en el aprendizaje profundo:

  • válido (sin ningún tipo de relleno)
  • mismo (mantener el tamaño de la imagen añadiendo ceros alrededor de la imagen - de eso se trata y es lo que la mayoría de las veces se llama "zero padding" en el contexto del aprendizaje profundo)
  • completo (asegúrese de que todos los píxeles tienen la misma influencia en la salida, incluso se añaden más ceros alrededor de la imagen, la salida es mayor que la entrada)

Aquí hay un esquema de cómo funcionan estos 3 tipos de relleno, con x la entrada de tamaño 3, k el núcleo de tamaño 3 (que se desplaza a todas las ubicaciones posibles), y la salida y 0 indica un relleno cero:

valid:
xxx
kkk
 y

same:  
0xxx0
kkk
 kkk
  kkk
 yyy

full:
00xxx00
kkk
 kkk
  kkk
   kkk
    kkk
 yyyyy

Veamos la influencia (la frecuencia con la que el núcleo "toca" el píxel) que tiene un píxel de una imagen de entrada de 10x10 que es procesada por un núcleo de convolución de 3x3 en la salida (izquierda mismo , derecha válido acolchado):

enter image description here

Como puede ver, con mismo el acolchado los píxeles del borde tienen menos influencia que los píxeles centrales, por lo que no es cierto que mismo El acolchado elimina por completo los efectos de frontera (como se puede leer a veces en Internet). Para válido acolchado, este problema es aún más grave. Con completo por el contrario, todos los píxeles tienen la misma influencia en la salida.

A medida que la red se hace más profunda, el problema se intensifica, tanto para válido y mismo acolchado.

He resumido mi hallazgo en los experimentos de acolchado Lo hice, y aquí hay una interesante papel sobre este tema.

3voto

dontloo Puntos 334

Me parece que la razón más importante es preservar el tamaño espacial. Como has dicho, podemos compensar la disminución del tamaño espacial eliminando las capas de agrupación. Sin embargo, muchas estructuras de red recientes (como redes residuales , redes de inicio , redes fractales ) operan sobre las salidas de diferentes capas, lo que requiere un tamaño espacial coherente entre ellas.

Otra cosa es que, si no hay relleno, los píxeles de la esquina de la entrada sólo afectan a los píxeles de la esquina correspondiente de la salida, mientras que los píxeles del centro contribuyen a una vecindad en la salida. Cuando se apilan varias capas sin relleno, la red ignora en cierto modo los píxeles del borde de la imagen.

Son sólo algunas de mis interpretaciones, creo que hay otras buenas razones.

2voto

Carlos Puntos 1421

Gran pregunta. Drag0 lo ha explicado muy bien, pero estoy de acuerdo en que algo falla.

Es como mirar una fotografía y tener que lidiar con el borde. En la vida real, puedes mover los ojos para mirar más allá; no existen bordes reales. Así que es una limitación del medio.

Además de conservar el tamaño, ¿importa? No conozco una respuesta satisfactoria, pero conjeturo (no probado) que con los experimentos de atención y oclusión (objetos parciales), no necesitamos la información que se pierde en los bordes. Si se hiciera algo más inteligente (digamos copiar el pixel de al lado), no cambiaría la respuesta aunque no he experimentado yo mismo. El relleno con 0s es rápido y preserva el tamaño, por eso lo hacemos.

2voto

user144643 Puntos 6

En cuanto a la conservación de la información en el borde, básicamente, el píxel de la esquina (sombreado en verde), al realizar la convolución, sólo se utilizaría una vez, mientras que el del centro, sombreado en rojo, contribuiría al mapa de características resultante varias veces: 2 .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X