¿Elegir el tamaño del filtro, zancadas, etc. en una CNN?

12

He estado mirando las conferencias CS231N de Stanford y estoy tratando de entender algunos problemas en las arquitecturas de CNN. Lo que estoy tratando de entender es si hay algunas pautas generales para elegir el tamaño del filtro de convolución y cosas como avances o ¿es esto más un arte que una ciencia?

Entiendo que entiendo existe principalmente para inducir alguna forma de invariancia de traducción en un modelo. Por otro lado, no tengo una buena intuición de cómo se selecciona el tamaño del paso. ¿Hay otras pautas para eso, excepto tratar de comprimir el tamaño actual de la capa o tratar de lograr un campo receptivo más grande para una neurona? ¿Alguien sabe de algún buen trabajo o similar que discuta esto?

dst
fuente

Respuestas:

9

Como texto introductorio a todos los temas que usted nombre, recomendaría el libro de aprendizaje profundo . Proporciona una visión general amplia del campo. Explica el papel que desempeña cada uno de esos parámetros.

En mi opinión, es muy útil leer sobre algunas de las arquitecturas más populares (resnet, inicio, alex-net) y extraer las ideas clave que conducen a las decisiones de diseño. Después de leer el libro antes mencionado.

En el plan de estudios de las conferencias a las que se refiere, se explica con gran detalle cómo la capa de convolución agrega una gran cantidad de parámetros (pesos, sesgos) y neuronas. Esta capa, una vez entrenada, puede extraer patrones de significado de la imagen. Para las capas inferiores, esos filtros parecen extractores de bordes. Para capas superiores, esas formas primitivas se combinan para describir formas más complejas. Esos filtros implican una gran cantidad de parámetros y un gran problema del diseño de redes profundas en cómo poder describir formas complejas y aún así poder reducir la cantidad de parámetros.

Dado que los píxeles vecinos están fuertemente correlacionados (especialmente en las capas más bajas), tiene sentido reducir el tamaño de la salida submuestreando (agrupando) la respuesta del filtro. Cuanto más separados están los dos píxeles, menos correlacionados. Por lo tanto, un gran avance en la capa de agrupación conduce a una gran pérdida de información. Hablando libremente. Una zancada de 2 y un tamaño de núcleo de 2x2 para la capa de agrupación es una opción común.

Un enfoque más sofisticado es la red de inicio ( profundizando con convoluciones ) donde la idea es aumentar la dispersión pero aún así lograr una mayor precisión, intercambiando el número de parámetros en una capa convolucional frente a un módulo de inicio para redes más profundas.

Un buen artículo que proporciona pistas sobre las arquitecturas actuales y el papel de algunas de las dimensiones de diseño de una manera estructurada y sistemática es SqueezeNet: precisión de nivel AlexNet con 50 parámetros menos y un tamaño de modelo <0.5 MB . Se basa en ideas introducidas en los modelos mencionados anteriormente.

jpmuc
fuente
1

Si considera un mejor aprendizaje sobre el tiempo de aprendizaje, quiero sugerir estos tamaños de kernel y zancada;

En cuanto al tamaño del filtro, creo que depende de las características de su imagen. Por ejemplo, se necesita una gran cantidad de píxeles para que la red reconozca el objeto, puede usar filtros más grandes, por otro lado, si los objetos son características algo pequeñas o locales, considere aplicar filtros más pequeños en relación con el tamaño de la imagen de entrada.

Para el tamaño del paso, para mí, el paso pequeño sería mejor para capturar los detalles más finos de la imagen de entrada.

Para mí, el beneficio de la agrupación es que extrae las características más nítidas de una imagen. En general, las características más nítidas se parecen a la mejor representación de nivel inferior de una imagen.

Cloud Cho
fuente