Transfer Learning

Introducción a Transfer Learning

Transfer Learning es un enfoque de Deep Learning que utiliza un modelo entrenado para una tarea como punto de partida para otro modelo que realiza una tarea similar. Actualizar y volver a entrenar una red con Transfer Learning es más fácil y rápido que entrenarla desde cero. Transfer Learning se utiliza para clasificación de imágenes, detección de objetos, reconocimiento de voz, y otras aplicaciones.

Importancia de Transfer Learning

Transfer Learning permite aprovechar la experiencia de la comunidad de usuarios de Deep Learning. Modelos populares previamente entrenados ofrecen una arquitectura sólida y evitan la necesidad de empezar desde cero. Transfer Learning es una técnica común de aprendizaje supervisado, ya que:

  • Permite entrenar modelos con menos datos etiquetados reutilizando modelos populares ya entrenados con conjuntos de datos de gran tamaño.
  • Ayuda a reducir el tiempo de entrenamiento y los recursos informáticos. Con Transfer Learning, los pesos de la red neuronal no se aprenden desde cero, dado que el modelo previamente entrenado ya los ha aprendido con los aprendizajes anteriores.
  • Puede utilizar arquitecturas de modelos desarrolladas por la comunidad de investigadores de Deep Learning, incluidas arquitecturas populares tales como GoogLeNet y YOLO.
Diagrama de Transfer Learning que muestra cómo se transfiere conocimiento del modelo 1 (entrenado con el conjunto de datos 1) al modelo 2 (entrenado con el conjunto de datos 2). El conjunto de datos 1 es más amplio que el conjunto de datos 2.

Transferencia de conocimiento de un modelo previamente entrenado a otro modelo que se puede entrenar con menos datos etiquetados.

¿Entrenamiento desde cero o Transfer Learning?

Para crear un modelo de Deep Learning, puede entrenar un modelo desde cero o realizar Transfer Learning con un modelo previamente entrenado.

Desarrollar y entrenar un modelo desde cero funciona mejor para tareas muy específicas donde no se puedan utilizar modelos preexistentes. La desventaja de este enfoque es que generalmente requiere una gran cantidad de datos para obtener resultados precisos. Crear un modelo desde cero también funciona bien en casos donde redes más pequeñas pueden lograr la precisión deseada. Por ejemplo, las redes neuronales recurrentes (RNN) y las redes de memoria a corto-largo plazo (LSTM) son particularmente efectivas con datos secuenciales que varían en longitud, y resuelven problemas tales como clasificación de señales y predicción de series temporales.

Transfer Learning es útil en tareas para las que existen diversos modelos previamente entrenados. Por ejemplo, muchas redes neuronales convolucionales (CNN) populares se entrenan previamente con el conjunto de datos ImageNet, que contiene más de 14 millones de imágenes y mil clases de imágenes. Si necesita clasificar imágenes de flores (o cualquier imagen no incluida en el conjunto de datos ImageNet) y tiene un número limitado de imágenes de flores, puede transferir las capas y pesos de una red SqueezeNet, reemplazar las capas finales y volver a entrenar el modelo con las imágenes que tiene.

Este enfoque de Transfer Learning ayuda a lograr mayor precisión en menos tiempo.

Comparación del rendimiento de una red con entrenamiento con y sin Transfer Learning. La curva de rendimiento de Transfer Learning muestra un inicio, pendiente y asíntota más altos.

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

Aplicaciones de Transfer Learning

Transfer Learning es popular en muchas aplicaciones de Deep Learning, tales como:

Procesamiento de voz y audio

Consulte el ejemplo de MATLAB Transfer Learning con redes de audio previamente entrenadas en Deep Network Designer.

Análisis de texto

Consulte el ejemplo de MATLAB en GitHub Fine Tune BERT Model for Japanese Text.

Modelos previamente entrenados para Transfer Learning

Transfer Learning se centra en un modelo de Deep Learning previamente entrenado, creado por profesionales de investigación de Deep Learning y entrenado con miles o millones de puntos de datos de muestra.

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

  1. Velocidad de predicción: ¿Con qué rapidez puede el modelo predecir nuevos datos de entrada? Aunque la velocidad de predicción puede variar en función de otros factores, tales como hardware y tamaño de lote, también depende de la arquitectura y tamaño del modelo.
  2. Tamaño: ¿Qué superficie de memoria se desea para el modelo? La importancia del tamaño del modelo varía en función de dónde y cómo desea desplegarlo. ¿Se va a ejecutar en hardware integrado o en un equipo de escritorio? El tamaño de la red es importante cuando el despliegue se realiza en objetivos con recursos limitados.
  3. Precisión: ¿Qué rendimiento tiene el modelo antes de volver a entrenarlo? Un modelo que funciona bien con el conjunto de datos ImageNet probablemente funcionará bien con 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.
Comparación de tamaño, velocidad de predicción y precisión de modelos de CNN previamente entrenados, que se pueden emplear para Transfer Learning.

Comparación de tamaño, velocidad de predicción y precisión de modelos de redes previamente entrenadas populares.

¿Qué modelo es mejor para un flujo de trabajo de Transfer Learning?

Puesto que existen muchos modelos de Transfer Learning entre los que seleccionar, es importante tener presentes los tradeoffs y los objetivos generales de cada proyecto. Una buena forma de enfocarlo es probar varios modelos para encontrar el que mejor se adapte a la aplicación.

Modelos sencillos para comenzar, tales como GoogLeNet, VGG-16 y VGG-19, permiten 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 comprobar si mejoran los resultados.

Modelos ligeros y computacionalmente eficientes, tales como SqueezeNet, MobileNet-v2 y ShuffleNet, son buenas opciones cuando el entorno de despliegue limita el tamaño del modelo.

¿Cómo obtener modelos previamente entrenados en MATLAB?

Puede explorar MATLAB Deep Learning Model Hub en GitHub para acceder a los modelos más recientes por categoría y obtener sugerencias sobre cómo seleccionar modelos. Puede cargar la mayoría de los modelos con una sola función de MATLAB, como darknet19.

También puede obtener redes previamente entrenadas desde plataformas externas. Puede convertir un modelo de TensorFlow™, PyTorch® u ONNX™ en un modelo de MATLAB utilizando una función de importación, como importNetworkFromTensorFlow.

Obtenga modelos de Deep Learning previamente entrenados directamente desde MATLAB o plataformas externas de Deep Learning (PyTorch, TensorFlow y ONNX).

Aplicación de Transfer Learning al diseño de sensores virtuales

Descubra cómo Poclain Hydraulics aprovechó redes previamente entrenadas en MATLAB para acelerar el diseño de sensores virtuales.

“Identificamos dos redes neuronales ya implementadas en MATLAB que nos ayudaron a integrar los códigos en hardware para efectuar predicciones de temperatura en tiempo real”.

Bruno Dandine, Poclain Hydraulics

Transfer Learning con MATLAB

Utilizar MATLAB con Deep Learning Toolbox™ permite acceder a cientos de modelos previamente entrenados y realizar Transfer Learning con funciones integradas o apps interactivas. Para diferentes aplicaciones de Transfer Learning, es posible que también necesite utilizar otras toolboxes, tales como Computer Vision Toolbox™, Audio Toolbox™, Lidar Toolbox™ o Text Analytics Toolbox™.

Flujo de trabajo de Transfer Learning

El flujo de trabajo de Transfer Learning consiste en obtener una red previamente entrenada, modificarla, volver a entrenarla y luego utilizarla para realizar predicciones con datos nuevos.

Diagrama de pasos del flujo de trabajo de Transfer Learning.

Aunque existe una gran variedad de arquitecturas y aplicaciones de Transfer Learning, la mayoría de los flujos de trabajo incluyen los mismos pasos. La siguiente ilustración muestra el flujo de trabajo de Transfer Learning para clasificación de imágenes. Se realiza Transfer Learning en un modelo previamente entrenado de GoogLeNet, una red popular con 22 capas de profundidad entrenada para clasificar en 1000 categorías de objetos.

  1. Seleccione un modelo previamente entrenado. Al principio, puede resultar útil seleccionar un modelo sencillo.
Modelo de CNN previamente entrenado que se puede modificar para Transfer Learning en tareas de clasificación de imágenes.

Arquitectura del modelo de GoogLeNet, una red con 22 capas de profundidad, entrenada para clasificar 1000 categorías de objetos.

  1. Reemplace las capas finales. Para volver a entrenar la red para clasificar un nuevo conjunto de imágenes y clases, debe reemplazar la última capa entrenable y la capa de clasificación final del modelo de GoogLeNet. La capa final totalmente conectada (última capa entrenable) se modifica para que contenga la misma cantidad de nodos y de clases nuevas. La nueva capa de clasificación generará un resultado en función de las probabilidades calculadas por la capa softmax.
Sustituir las capas finales de un modelo de CNN previamente entrenado antes de volver a entrenarlo es esencial para Transfer Learning.

Reemplace la última capa entrenable y la capa de clasificación de un modelo de CNN antes de volver a entrenarlo.

Después de modificar las capas, la capa final totalmente conectada indicará el nuevo número de clases que aprenderá la red, y la capa de clasificación determinará los resultados de las nuevas categorías de salida disponibles. Por ejemplo, GoogLeNet se entrenó originalmente con 1000 categorías, pero si reemplaza las capas finales podrá volver a entrenarla para que clasifique solo las cinco (o cualquier otro número) categorías de objetos de su interés.

  1. Congele los pesos (opcional). Puede congelar los pesos de las capas anteriores de la red fijando 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 también puede ayudar a evitar el sobreajuste de la red con respecto al nuevo conjunto de datos.
  2. Vuelva a entrenar el modelo. Realizar un nuevo entrenamiento actualizará la red para que aprenda e identifique 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. Efectúe predicciones y evalúe la precisión de la red. Después de volver a entrenar el modelo, puede clasificar nuevas imágenes y evaluar lo bien que funciona la red.

Método de Transfer Learning interactivo

Con la app Deep Network Designer puede completar todo el flujo de trabajo de Transfer Learning de manera interactiva, que incluye seleccionar o importar un modelo previamente entrenado (desde MATLAB, TensorFlow o PyTorch), modificar las últimas capas y volver a entrenar la red con nuevos datos, con muy pocas líneas de código.

Más información sobre Transfer Learning

Vea estos vídeos para aprender a utilizar Transfer Learning desde la línea de comandos o con Deep Network Designer.

Temas relacionados