[Esta pregunta también se planteó en el desbordamiento de la pila]
La pregunta en resumen
Estoy estudiando redes neuronales convolucionales, y creo que estas redes no tratan a cada neurona de entrada (píxel / parámetro) de manera equivalente. Imagine que tenemos una red profunda (muchas capas) que aplica convolución en alguna imagen de entrada. Las neuronas en el "medio" de la imagen tienen muchas vías únicas hacia muchas neuronas de capa más profunda, lo que significa que una pequeña variación en las neuronas medias tiene un fuerte efecto en la salida. Sin embargo, las neuronas en el borde de la imagen tienen solo vía (o, dependiendo de la implementación exacta, del orden de 1 ) vías en las que su información fluye a través del gráfico. Parece que estos están "subrepresentados".
Estoy preocupado por esto, ya que esta discriminación de las neuronas del borde aumenta exponencialmente con la profundidad (número de capas) de la red. Incluso agregar una capa de agrupación máxima no detendrá el aumento exponencial, solo una conexión completa pone a todas las neuronas en pie de igualdad. Sin embargo, no estoy convencido de que mi razonamiento sea correcto, así que mis preguntas son:
- ¿Tengo razón en que este efecto tiene lugar en redes convolucionales profundas?
- ¿Hay alguna teoría sobre esto? ¿Se ha mencionado alguna vez en la literatura?
- ¿Hay formas de superar este efecto?
Debido a que no estoy seguro de si esto proporciona suficiente información, elaboraré un poco más sobre el enunciado del problema y por qué creo que esto es una preocupación.
Explicación más detallada
Imagine que tenemos una red neuronal profunda que toma una imagen como entrada. Supongamos que aplicamos un filtro convolucional de píxeles sobre la imagen, donde cambiamos la ventana de convolución en píxeles cada vez. Esto significa que cada neurona en la entrada envía su activación a neuronas en la capa . Cada una de estas neuronas puede enviar su activación a otras , de modo que nuestra neurona superior esté representada en neuronas de salida, y así sucesivamente.2 265 265 2
Sin embargo, esto no es cierto para las neuronas en los bordes: estas pueden representarse en solo un pequeño número de ventanas de convolución, lo que hace que activen (del orden de) solo neurona en la siguiente capa. El uso de trucos como el reflejo a lo largo de los bordes no ayudará a esto: las neuronas de la segunda capa que se proyectarán todavía están en los bordes, lo que significa que las neuronas de la segunda capa estarán subrepresentadas (lo que limita la importancia de nuestras neuronas de borde también). Como se puede ver, esta discrepancia escala exponencialmente con el número de capas.
He creado una imagen para visualizar el problema, que se puede encontrar aquí (no se me permite incluir imágenes en la publicación). Esta red tiene una ventana de convolución de tamaño . Los números al lado de las neuronas indican el número de vías hacia la neurona más profunda. La imagen recuerda al Triángulo de Pascal .
https://www.dropbox.com/s/7rbwv7z14j4h0jr/deep_conv_problem_stackxchange.png?dl=0
¿Por qué es esto un problema?
Este efecto no parece ser un problema a primera vista: en principio, los pesos deberían ajustarse automáticamente de tal manera que la red haga su trabajo. Además, los bordes de una imagen no son tan importantes de todos modos en el reconocimiento de imágenes. Este efecto puede no ser notable en las pruebas de reconocimiento de imágenes cotidianas, pero todavía me preocupa por dos razones: 1. generalización a otras aplicaciones, y 2. problemas que surgen en el caso de redes muy profundas.
1. Puede haber otras aplicaciones, como reconocimiento de voz o sonido, donde no es cierto que las neuronas más medias sean las más importantes. La aplicación de convolución a menudo se realiza en este campo, pero no he podido encontrar ningún documento que mencione el efecto que me preocupa.
Ahora imagine que perturbamos todas las neuronas en una pequeña cantidad. Las neuronas centrales harán que la salida cambie más fuertemente en varios órdenes de magnitud, en comparación con las neuronas de borde. Creo que para aplicaciones generales, y para redes muy profundas, ¿deberían encontrarse formas de solucionar mi problema?