Transfer learning

Transfer learning para entrenar modelos de Deep Learning

Transfer learning, o transferencia del aprendizaje, es una metodología de Deep Learning en la que un modelo que se ha entrenado para una tarea se utiliza como punto de partida para un modelo que realiza otra tarea similar. Suele ser mucho más fácil y rápido actualizar y volver a entrenar una red con transferencia del aprendizaje que entrenarla desde cero. Esta metodología se utiliza con frecuencia en aplicaciones de detección de objetos, reconocimiento de imágenes y reconocimiento de voz, entre otras.

La transferencia del aprendizaje es una técnica de uso habitual ya que:

  • Permite entrenar modelos con menos datos etiquetados reutilizando modelos de uso habitual que ya se han entrenado con conjuntos de datos de gran tamaño.
  • Ayuda a reducir el tiempo de entrenamiento y los recursos informáticos. Los pesos no se aprenden desde cero, dado que el modelo previamente entrenado ya ha aprendido los pesos a partir de los aprendizajes anteriores.
  • Permite aprovechar arquitecturas de modelos desarrolladas por la comunidad de investigadores de Deep Learning, incluidas arquitecturas de uso habitual como GoogLeNet y ResNet.

Modelos previamente entrenados para transfer learning

La transferencia del aprendizaje se centra en un modelo de Deep Learning previamente entrenado, creado por investigadores en Deep Learning y entrenado con miles o millones de imágenes de muestra.

Hay muchos modelos previamente entrenados disponibles, cada uno con sus ventajas y desventajas:

  • Tamaño: ¿Cuál es la superficie de memoria deseada para el modelo? La importancia del tamaño del modelo varía en función de dónde y cómo desee desplegarlo. ¿Se va a ejecutar en hardware integrado o en un equipo de escritorio? El tamaño de la red es especialmente importante cuando el despliegue se realiza en un sistema con poca memoria.
  • Precisión: ¿Cuán bien funciona el modelo antes de volver a entrenarlo? Por lo general, un modelo que funciona bien en ImageNet, un conjunto de datos de uso habitual que contiene un millón de imágenes y mil clases de imágenes, suele funcionar bien en tareas nuevas similares. No obstante, una baja puntuación de precisión en ImageNet no significa necesariamente que el modelo funcionará mal en todas las tareas.
  • Velocidad de predicción: ¿Con qué rapidez puede realizar predicciones el modelo a partir de nuevas entradas? Aunque la velocidad de predicción puede variar en función de otros parámetros de Deep Learning, tales como el hardware y el tamaño de los lotes, también puede variar según el tamaño y la arquitectura del modelo elegido.
Comparación del tamaño del modelo, la velocidad y la precisión en redes previamente entrenadas de uso habitual.

Comparación del tamaño del modelo, la velocidad y la precisión entre redes previamente entrenadas de uso habitual.

Puede utilizar MATLAB y Deep Learning Toolbox para acceder a redes más recientemente entrenadas por la comunidad de investigadores con una sola línea de código.  Esta toolbox también ofrece orientación para seleccionar la red adecuada para proyectos de transferencia del aprendizaje.

¿Cuál es el mejor modelo para una aplicación de transfer learning?

Dada la gran cantidad de modelos de transferencia del aprendizaje existentes, es importante no perder de vista los tradeoffs implicados y los objetivos generales de cada proyecto concreto. Por ejemplo, una red cuya precisión sea relativamente baja puede ser perfectamente válida para una nueva tarea de Deep Learning. Una buena forma de enfocarlo es probar varios modelos para encontrar el que mejor se adapte a la aplicación.

Modelos sencillos para comenzar rápidamente. Con modelos sencillos, tales como AlexNet, GoogLeNet, VGG-16 y VGG-19, puede realizar iteraciones rápidamente y experimentar con diferentes pasos de preprocesamiento de datos y opciones de entrenamiento. Una vez que descubra las configuraciones que funcionan bien, puede probar una red más precisa para ver si mejoran los resultados.

Modelos ligeros y eficientes en términos computacionales. SqueezeNet, MobileNet-v2 y ShuffleNet son buenas opciones cuando el entorno de despliegue impone limitaciones al tamaño del modelo.

Puede utilizar Deep Network Designer para evaluar rápidamente varios modelos previamente entrenados y comprender mejor los tradeoffs que implican las diferentes arquitecturas de modelos.

Flujo de trabajo de transfer learning

Aunque existe una gran variedad de arquitecturas y aplicaciones de transferencia del aprendizaje, la mayoría de los flujos de trabajo siguen una serie de pasos en común.

  1. Seleccione un modelo previamente entrenado. Al principio, puede resultar útil seleccionar un modelo relativamente sencillo. Este ejemplo utiliza GoogLeNet, una red de uso habitual con 22 capas de profundidad que se ha entrenado para clasificar 1000 categorías de objetos.
Flujo de trabajo de transfer learning: selección de un modelo previamente entrenado
  1. Reemplace las últimas capas. Para volver a entrenar la red para clasificar un nuevo conjunto de imágenes y clases, debe reemplazar las últimas capas del modelo GoogLeNet. La última capa totalmente conectada se modifica para que contenga la misma cantidad de nodos que la cantidad de clases nuevas, además de una nueva capa de clasificación que generará una salida basada en las probabilidades calculadas por la capa softmax.
Flujo de trabajo de transfer learning: reemplazo de últimas capas
  • Después de modificar las capas, la última capa totalmente conectada indicará el nuevo número de clases que la red aprenderá, y la capa de clasificación determinará los resultados de las nuevas categorías de salida disponibles.  Por ejemplo, GoogLeNet se entrenó originalmente para 1000 categorías, pero si reemplaza las últimas capas podrá volver a entrenarla para que clasifique solo las cinco (o cualquier otro número) categorías de objetos que le interesen.
  1. Congele los pesos (opcional). Puede congelar los pesos de las capas anteriores de la red estableciendo sus tasas de aprendizaje en cero. Durante el entrenamiento, los parámetros de las capas congeladas no se actualizan, lo que puede acelerar significativamente el entrenamiento de la red. Si el nuevo conjunto de datos es pequeño, congelar los pesos ayuda a evitar que la red se sobreajuste al nuevo conjunto de datos.
  2. Vuelva a entrenar el modelo. Realizar un nuevo entrenamiento actualizará la red para que aprenda e identifique las características relacionadas con las nuevas imágenes y categorías. En la mayoría de los casos, para realizar un nuevo entrenamiento se necesitan menos datos que para entrenar un modelo desde cero.
  3. Realice predicciones y evalúe la precisión de la red. Una vez que se ha vuelto a entrenar el modelo, puede clasificar nuevas imágenes y evaluar cuán bien funciona la red.

    ¿Entrenamiento desde cero o transfer learning?

    Los dos enfoques que se utilizan con frecuencia en Deep Learning son el entrenamiento desde cero y la transferencia del aprendizaje.

    Desarrollar y entrenar un modelo desde cero funciona mejor para tareas muy específicas en las que no se puedan utilizar modelos preexistentes. La desventaja de este enfoque es que generalmente requiere una gran cantidad de datos para producir resultados precisos. Por ejemplo, si está realizando análisis de texto y no tiene acceso a un modelo previamente entrenado de análisis de texto, pero sí puede acceder a un gran número de muestras de datos, desarrollar un modelo desde cero es probablemente la mejor opción.

    Por otra parte, la transferencia del aprendizaje es útil en tareas tales como el reconocimiento de objetos, para el que existen diversos modelos previamente entrenados de uso habitual. Por ejemplo, si necesita clasificar imágenes de flores y tiene pocas imágenes de flores, puede transferir los pesos y las capas de una red AlexNet, reemplazar la última capa de clasificación y volver a entrenar el modelo con las imágenes que tenga.

Flujo de trabajo de transfer learning: carga de red, reemplazo de capas, entrenamiento de red y evaluación de precisión.

Flujo de trabajo de transfer learning: carga de red, reemplazo de capas, entrenamiento de red y evaluación de precisión.

En estos casos, se puede lograr mayor precisión en menos tiempo con la transferencia del aprendizaje.

Comparación del rendimiento de la red (precisión) con entrenamiento desde cero y con transfer learning.

Comparación del rendimiento de la red (precisión) con entrenamiento desde cero y con transfer learning.

Método de transfer learning interactivo

Con Deep Network Designer, puede completar de manera interactiva todo el flujo de trabajo de transferencia del aprendizaje, es decir, importar un modelo previamente entrenado, modificar las últimas capas y volver a entrenar la red con nuevos datos, sin necesidad de escribir código.

Deep Network Designer es una herramienta de estilo point-and-click que permite crear o modificar redes neuronales profundas en MATLAB. Este vídeo muestra cómo utilizar la app en un flujo de trabajo de transferencia del aprendizaje.

Para obtener más información, consulte Deep Learning Toolbox y Computer Vision Toolbox™.

También puede consultar estos temas: deep learning, convolutional neural networks, GPU Coder, artificial intelligence, biomedical signal processing