tutorial redes neuronales neuronal learning imagenes explicacion ejemplos convolucionales convolucional clasificador basicos computer-vision neural-network unsupervised-learning autoencoder

computer vision - redes - ¿Cómo se deciden los parámetros de una red neuronal convolucional para la clasificación de imágenes?



tensorflow ejemplos basicos (2)

Estoy utilizando redes neuronales convolucionales (aprendizaje de características no supervisadas para detectar características + clasificador de regresión de Softmax) para la clasificación de imágenes. He revisado todos los tutoriales de Andrew NG en esta área. ( http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial ).

La red que he desarrollado tiene:

  • Capa de entrada: tamaño 8x8 (64 neuronas)
  • Capa oculta: neuronas de tamaño 400
  • Capa de salida - tamaño 3

Aprendí los pesos que conectan la capa de entrada a la capa oculta utilizando un autoencoder escaso y, por lo tanto, tengo 400 funciones diferentes.

Al tomar parches continuos de 8x8 desde cualquier imagen de entrada (64x64) y alimentarla a la capa de entrada, obtengo 400 mapas de características de tamaño (57x57).

A continuación, utilizo la combinación máxima con una ventana de tamaño 19 x 19 para obtener 400 mapas de características de tamaño 3x3.

Doy este mapa de características a una capa de softmax para clasificarlo en 3 categorías diferentes.

Estos parámetros, como el número de capas ocultas (profundidad de la red) y el número de neuronas por capa, se sugirieron en los tutoriales, ya que se usaron con éxito en un conjunto de datos en particular donde todas las imágenes tenían un tamaño de 64x64.

Me gustaría extender esto a mi propio conjunto de datos donde las imágenes son mucho más grandes (digamos 400x400). ¿Cómo decido

  1. El número de capas

  2. La cantidad de neuronas por capa.

  3. El tamaño de la ventana de agrupación (agrupación máxima).


En pocas palabras, usted decide los posibles valores de los parámetros y con esos valores, ejecuta una serie de simulaciones de construcción de modelos y luego de predicciones para seleccionar el valor óptimo de los parámetros, dando el error de predicción más pequeño y el modelo más simple.

En términos de análisis de datos, usamos holdout, validación cruzada, bootstrapping para decidir los valores de los parámetros del modelo, ya que es importante predecir de forma imparcial.


El número de capas ocultas: el número de capas ocultas requeridas depende de la complejidad intrínseca de su conjunto de datos, esto se puede entender mirando lo que logra cada capa:

  • Cero capas ocultas permiten que la red modele solo una función lineal. Esto es inadecuado para la mayoría de las tareas de reconocimiento de imágenes.

  • Una capa oculta permite a la red modelar una función arbitrariamente compleja . Esto es adecuado para muchas tareas de reconocimiento de imágenes.

  • Teóricamente, dos capas ocultas ofrecen poco beneficio sobre una sola capa, sin embargo, en la práctica, algunas tareas pueden resultar beneficiosas para una capa adicional. Esto debe tratarse con precaución, ya que una segunda capa puede causar un ajuste excesivo. Usar más de dos capas ocultas es casi nunca beneficioso solo es beneficioso para tareas especialmente complejas, o cuando hay una gran cantidad de datos de capacitación disponibles (actualizados según el comentario de Evgeni Sergeev).

Para abreviar, si tiene tiempo, pruebe tanto una como dos capas ocultas para ver cuál logra los resultados más satisfactorios. Si no tienes tiempo, entonces debes tomar una patada en una sola capa oculta, y no te equivocarás demasiado.

El número de capas convolucionales: en mi experiencia, cuanto más capas convolucionales mejor (dentro de lo razonable, ya que cada capa convolucional reduce el número de funciones de entrada a las capas completamente conectadas), aunque después de unas dos o tres capas la precisión aumenta. por lo que debe decidir si su enfoque principal es la precisión de la generalización o el tiempo de entrenamiento. Dicho esto, todas las tareas de reconocimiento de imágenes son diferentes, por lo que el mejor método es simplemente intentar aumentar el número de capas convolucionales de a una por vez hasta que el resultado lo satisfaga.

La cantidad de nodos por capa oculta: ... Una vez más, no existe una fórmula mágica para decidir el número de nodos, es diferente para cada tarea. Una guía aproximada a seguir es usar una cantidad de nodos 2/3 del tamaño de la capa anterior, con la primera capa 2/3 del tamaño de los mapas de características finales. Sin embargo, esto es solo una guía aproximada y depende nuevamente del conjunto de datos. Otra opción de uso común es comenzar con un número excesivo de nodos, luego eliminar los nodos innecesarios mediante la poda .

Tamaño máximo de la ventana de agrupación: siempre he aplicado la agrupación máxima inmediatamente después de la convolución, por lo que quizás no estoy calificado para hacer sugerencias sobre el tamaño de la ventana que debe usar. Dicho esto, el agrupamiento máximo 19x19 parece excesivamente severo ya que literalmente arroja la mayoría de sus datos. Tal vez debería considerar un diseño de red LeNet más convencional:

http://deeplearning.net/tutorial/lenet.html

https://www.youtube.com/watch?v=n6hpQwq7Inw

En el que repetidamente realiza convolución (5x5 o 3x3 por lo general) seguido de la agrupación máxima (generalmente con una ventana de agrupamiento de 2x2, aunque puede ser necesario 4x4 para imágenes de entrada grandes).

En Conclusión La mejor manera de encontrar un diseño de red adecuado es, literalmente, realizar pruebas de prueba y error. Muchas pruebas No existe una red única para todos, y solo usted conoce la complejidad intrínseca de su conjunto de datos. La forma más efectiva de realizar la cantidad de pruebas necesarias es a través de la validación cruzada .