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.
¿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.
Aplicaciones de Transfer Learning
Transfer Learning es popular en muchas aplicaciones de Deep Learning, tales como:
Visión artificial
Las aplicaciones de visión artificial incluyen reconocimiento de imágenes, detección de objetos, segmentación de imágenes y procesamiento de nubes de puntos de LiDAR. Consulte el ejemplo de MATLAB Clasificación de tumores en imágenes multirresolución divididas en bloques con Transfer Learning.
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:
- 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.
- 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.
- 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.
¿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.
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.
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
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.
- Seleccione un modelo previamente entrenado. Al principio, puede resultar útil seleccionar un modelo sencillo.
- 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.
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.
- 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.
- 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.
- 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
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia-Pacífico
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)