Cómo entrenar una red neuronal

Si está buscando el tipo / lista de algoritmos involucrados en el proceso de capacitación, aquí hay algunas publicaciones de blog para ver:

  • Cómo entrenar tu red neuronal profunda
  • Entrenamiento de una red neuronal artificial

Si desea saber cómo configurar y entrenar una red neuronal para un propósito de detección, por ejemplo, esto depende del marco de aprendizaje profundo que esté utilizando para este tipo de tarea, como Tenserflow o Torch, pero los pasos a seguir son siempre los mismos ( al menos para fines de detección de objetos), así que permítanme explicar un poco la descripción general:

Supongamos que quiere entrenar un detector de automóviles . Es decir, un programa que recibe una imagen de entrada o un cuadro de video generará las coordenadas (es decir, el cuadro delimitador) para cada automóvil presente en esa imagen. La fase de entrenamiento requiere:

  1. Unos pocos miles de muestras positivas : es decir, imágenes de diferentes escalas , colores , formas , etc. que contienen solo y solo el objeto objetivo a detectar, como el automóvil en nuestro caso. Afortunadamente, la web está llena de conjuntos de datos de cualquier tipo. Todo lo que tienes que hacer es buscar en Google el objetivo. En mi caso, utilicé el conjunto de datos de Stanford para mi detector de automóviles.
  2. Unos cientos de muestras negativas o de fondo : imágenes que no contienen en ninguna región el objeto de destino que queremos detectar (es decir, el automóvil en nuestro caso). Las imágenes de paisajes funcionarán bien aquí.
  3. Configure la red neuronal : esta es la parte más complicada y depende del marco de destino que esté utilizando como se dijo anteriormente, pero algunas configuraciones siempre deben estar presentes como:
    • El tamaño de la ventana que el tamaño en píxeles de la ventana deslizante del detector.
    • caminos donde residen sus muestras negativas y positivas.
    • Umbral de detección, supresión no máxima, tamaño de paso, etc.

Aquí hay un repositorio de Github que le permite entrenar su propio detector de objetos con bastante facilidad. Todo lo que necesita hacer es proporcionar sus muestras positivas y negativas:

  1. Symisc / detector de objetos

Finalmente, si está buscando API Restful de última generación para sus tareas de procesamiento de visión y medios informáticos, puede encontrar que PixLab, donde solía trabajar, es muy útil. (Consulte esta introducción de 5 minutos a la API para obtener información adicional).

Espero que esto ayude,

Podemos entrenar un modelo de red neuronal con la ayuda de bibliotecas, TI depende de los conjuntos de datos que la biblioteca usó para entrenar el modelo.

Aquí está la lista de bibliotecas que se utiliza principalmente:

  1. Redes neuronales convolucionales (CNN): – Las redes neuronales convolucionales son variantes biológicamente inspiradas de la red neuronal artificial de alimentación en la cual el patrón de conectividad entre sus neuronas está inspirado en la organización de la corteza visual animal. Está compuesto por una o más capas convolucionales y luego seguido por una o más capas completamente conectadas como en una red neuronal multicapa estándar.
  2. kNN: K vecinos más cercanos es un algoritmo simple que almacena todos los casos disponibles y clasifica los nuevos casos en función de una medida de similitud (por ejemplo, funciones de distancia). KNN se ha utilizado en la estimación estadística y el reconocimiento de patrones ya a principios de la década de 1970 como una técnica no paramétrica
  3. SVM: – Una máquina de vectores de soporte (SVM) es un clasificador discriminativo definido formalmente por un hiperplano de separación. En otras palabras, dados los datos de entrenamiento etiquetados (aprendizaje supervisado), el algoritmo genera un hiperplano óptimo que categoriza nuevos ejemplos.

Lee mas…

Permítanme dar una visión general de alto nivel de los modelos de aprendizaje automático de formación. En general, tiene un conjunto de puntos de entrenamiento [matemáticas] (x_1, y_1), \ ldots, (x_n, y_n) [/ matemáticas], y desea encontrar una función [matemáticas] f (x) [/ matemáticas] que satisface [math] f (x_i) \ approx y_i \ forall i \ in \ {1, \ ldots, n \} [/ math].

El primer paso es parametrizar esta función; es decir, en lugar de buscar el espacio de todas las funciones posibles, restringe su espacio a un subconjunto de funciones, por ejemplo, de la forma [matemáticas] f (x) = w ^ Tx + b [ / math], donde [math] w [/ math] y [math] b [/ math] son ​​parámetros que debe determinar. Podría tener subconjuntos de funciones más complejos, como es el caso de las redes neuronales.

El objetivo del entrenamiento es aprender estos parámetros como [matemática] w [/ matemática] y [matemática] b [/ matemática], o en otras palabras, para encontrar valores óptimos de estos parámetros tales que [matemática] f (x_i) \ aproximadamente y_i \ forall i \ in \ {1, \ ldots, n \} [/ math].

Para hacer esto, utiliza el descenso de gradiente estocástico, cuyo principio básico es el siguiente: para un punto de entrenamiento [matemático] (x_i, y_i) [/ matemático], encuentre el gradiente del error [matemático] [f (x_i) – y_i] ^ 2 [/ math] wrt [math] w [/ math]. Esto nos dice cómo cambiaría el error a medida que modificamos [math] w [/ math]. Luego, cambie [math] w [/ math] ligeramente para que se reduzca el error. Idealmente, queremos que el error sea cero. Repitiendo este proceso para todos los puntos y parámetros de entrenamiento, actualizando los parámetros [matemática] w [/ matemática] y [matemática] b [/ matemática], luego nos da los valores (cercanos) óptimos de los parámetros. Esta actualización repetida de los parámetros es el proceso de capacitación.

Ahora, en las redes neuronales, resulta que hay muchos parámetros (a menudo unos pocos millones o más) y, por lo tanto, tiene una forma de principios para encontrar los gradientes de todos estos parámetros. Este método se llama retropropagación. Para más detalles, vea la respuesta de Prasoon Goyal a En redes neuronales, ¿qué tan importante es la propagación hacia atrás? ¿Cuál es su significado? Una vez que tenga los gradientes, actualice los parámetros como se indica arriba, para minimizar el error promedio.

Creo que es mejor comenzar con un curso. Los maestros como Andrew Ng ya han pasado innumerables horas destilando sus años de experiencia para explicar las redes neuronales. No voy a hacerlo tan bien en los cinco minutos que me lleva responder esta pregunta.

Para proporcionar una respuesta muy simplificada a su pregunta … Usted coloca sus datos de entrada en los nodos de entrada de la red. Esto avanzará para poner la salida en los nodos de salida de la red. Esto hace que la red produzca un error menor la próxima vez que vea esta entrada.

Cada vez alrededor de sus datos de entrenamiento, mide el error general de la red. Cuando esto ya no se reduce, significa que la mejora que obtiene la red en un problema hace que empeore en otro problema. En este punto decimos que ha terminado el entrenamiento.