tutorial redes reconocimiento neuronales neural network libro imagenes explicacion ejemplos convolutional convolucionales clasificador clasificacion neural-network deep-learning caffe convolution conv-neural-network

neural-network - reconocimiento - redes neuronales ejemplos



¿Cómo diseñar profundas redes neuronales convolucionales? (2)

Diseñar arquitecturas CNN para obtener un resultado óptimo es un trabajo difícil y muchas veces un trabajo empírico, sin embargo, existen trucos y técnicas específicas (también existen pruebas para algunos de ellos) que se utilizan para diseñar la red.

Lea el documento vinculado aquí titulado "Una teoría práctica para el diseño de redes neuronales convolucionales muy profundas" por un kaggler que logra resultados casi de vanguardia utilizando estas simples reglas.

Según tengo entendido, todas las CNN son bastante similares. Todos tienen capas convolucionales seguidas de capas combinadas y relu. Algunos tienen capas especializadas como FlowNet y Segnet. Mi duda es cómo debemos decidir cuántas capas usar y cómo establecer el tamaño del kernel para cada capa en la red. He buscado una respuesta a esta pregunta, pero no pude encontrar una respuesta concreta. ¿La red está diseñada utilizando prueba y error o hay algunas reglas específicas que no conozco? Si pueden aclarar esto, les estaría muy agradecido.


Respuesta corta: si hay reglas de diseño, todavía no las hemos descubierto.

Tenga en cuenta que hay preguntas comparables en informática. Por ejemplo, tenga en cuenta que solo hay un puñado de unidades lógicas electrónicas básicas, las puertas que impulsan su tecnología de fabricación. Todos los dispositivos informáticos utilizan la misma lógica booleana; algunos tienen adiciones especializadas, como la entrada fotoeléctrica o la salida mecánica.

¿Cómo decides cómo diseñar tu dispositivo informático?

El diseño depende del propósito de la CNN. Las características de entrada, la precisión, la velocidad de entrenamiento, la velocidad de puntuación, la adaptación, los recursos informáticos, ... todo esto afecta el diseño. No hay una solución generalizada, incluso para un problema dado (todavía).

Por ejemplo, considere el problema de clasificación de ImageNet. Tenga en cuenta las diferencias estructurales entre los ganadores y los contendientes hasta ahora: AlexNet, GoogleNet, ResNet, VGG, etc. Si cambia las entradas (por ejemplo, a MNIST), entonces estas son excesivas. Si cambias el paradigma, pueden ser inútiles. GoogleNet puede ser un príncipe en el procesamiento de imágenes, pero es horrible traducir el francés hablado al inglés escrito. Si desea rastrear un disco de hockey en tiempo real en su pantalla de video, olvide estas implementaciones por completo.

Hasta ahora, estamos haciendo esto de manera empírica: muchas personas intentan muchas cosas diferentes para ver qué funciona. Tenemos sentimientos por lo que mejorará la precisión, el tiempo de entrenamiento o cualquier factor que queramos ajustar. Encontramos lo que funciona bien con el tiempo total de CPU, o lo que podemos hacer en paralelo. Cambiamos los algoritmos para aprovechar las matemáticas vectoriales en longitudes con potencias de 2. Cambiamos los problemas ligeramente y vemos cómo el aprendizaje se adapta a otros lugares. Cambiamos los dominios (por ejemplo, el procesamiento de imágenes al texto escrito) y comenzamos de nuevo, pero con una vaga sensación de lo que podría ajustar un cuello de botella en particular, una vez que analicemos ciertos tipos de capas.

Recuerde, las CNN realmente no han sido populares durante tanto tiempo, apenas 6 años. En su mayor parte, todavía estamos tratando de aprender cuáles pueden ser las preguntas importantes. Bienvenido al equipo de investigación.

ACTUALIZAR

Consulte esta página para obtener algunos consejos sobre qué tácticas parecen funcionar en algunas circunstancias comunes.