¿Es posible entrenar una red neuronal de forma incremental?

23

Me gustaría entrenar una red neuronal donde las clases de salida no están (todas) definidas desde el principio. Más y más clases se introducirán más tarde en función de los datos entrantes. Esto significa que, cada vez que presento una nueva clase, tendría que volver a entrenar el NN.

¿Cómo puedo entrenar un NN de forma incremental, es decir, sin olvidar la información previamente adquirida durante las fases de entrenamiento anteriores?

Fr_nkenstien
fuente

Respuestas:

10

Me gustaría agregar a lo que ya se ha dicho que su pregunta toca una noción importante en el aprendizaje automático llamada aprendizaje de transferencia . En la práctica, muy pocas personas entrenan una red convolucional completa desde cero (con inicialización aleatoria), porque es lento y relativamente raro tener un conjunto de datos de tamaño suficiente.

Las ConvNets modernas tardan de 2 a 3 semanas en entrenarse en múltiples GPU en ImageNet. Por lo tanto, es común ver a las personas liberar sus puntos de control finales de ConvNet en beneficio de otros que pueden usar las redes para realizar ajustes. Por ejemplo, la biblioteca Caffe tiene un zoológico modelo donde las personas comparten sus pesos de red.

Cuando necesite un ConvNet para el reconocimiento de imágenes, sin importar cuál sea el dominio de su aplicación, debería considerar tomar una red existente, por ejemplo, VGGNet es una opción común.

Hay algunas cosas a tener en cuenta al realizar el aprendizaje de transferencia :

  • Restricciones de modelos preentrenados. Tenga en cuenta que si desea utilizar una red previamente capacitada, puede estar un poco limitado en términos de la arquitectura que puede utilizar para su nuevo conjunto de datos. Por ejemplo, no puede eliminar arbitrariamente las capas Conv de la red previamente entrenada. Sin embargo, algunos cambios son directos: debido al uso compartido de parámetros, puede ejecutar fácilmente una red previamente entrenada en imágenes de diferente tamaño espacial. Esto es claramente evidente en el caso de las capas Conv / Pool porque su función de avance es independiente del tamaño espacial del volumen de entrada (siempre y cuando las zancadas "encajen").

  • Tasas de aprendizaje. Es común usar una tasa de aprendizaje más pequeña para los pesos de ConvNet que se están ajustando, en comparación con los pesos (inicializados aleatoriamente) para el nuevo clasificador lineal que calcula los puntajes de clase de su nuevo conjunto de datos. Esto se debe a que esperamos que los pesos de ConvNet sean relativamente buenos, por lo que no deseamos distorsionarlos demasiado rápido y demasiado (especialmente mientras el nuevo Clasificador lineal por encima de ellos se está entrenando desde la inicialización aleatoria).

Referencia adicional si está interesado en este tema: ¿Qué tan transferibles son las características en las redes neuronales profundas?

Máxima
fuente
El aprendizaje por transferencia no es la única forma de realizar un aprendizaje incremental.
nbro
7

Aquí hay una manera de hacer eso.

Después de entrenar su red, puede guardar sus pesos en el disco. Esto le permite cargar estos pesos cuando haya nuevos datos disponibles y continuar entrenando prácticamente desde donde dejó su último entrenamiento. Sin embargo, dado que estos nuevos datos pueden venir con clases adicionales, ahora realiza un entrenamiento previo o un ajuste fino en la red con pesos previamente guardados. Lo único que tiene que hacer, en este punto, es hacer que las últimas capas se adapten a las nuevas clases que se han introducido con la llegada de su nuevo conjunto de datos, lo más importante es incluir las clases adicionales (por ejemplo, si su última capa inicialmente tenía 10 clases, y ahora ha encontrado 2 clases más, como parte de su entrenamiento previo / ajuste, lo reemplaza con 12 clases). En resumen, repita este círculo:

Repetir

Tshilidzi Mudau
fuente
si solo acomoda las nuevas clases en la última capa (clases de entrenamiento + nuevas clases), el modelo no puede ajustarse porque queremos entrenar con las nuevas clases (solo) y el modelo espera una matriz con la forma de (entrenamiento + el nuevo clases,).
Joel Carneiro