OpenWebinars

Inteligencia Artificial

Transfer learning: Todo lo que necesitas saber

¿Sabías que el transfer learning puede reducir el tiempo de entrenamiento de los modelos de IA en más del 50%? Esta técnica permite reutilizar conocimientos adquiridos previamente para abordar nuevas tareas con mayor rapidez y eficiencia. En este artículo descrubirás su funcionamiento, sus principales aplicaciones y cómo está transformando el mundo de la IA.

Luis López Cuerva

Luis López Cuerva

Lectura 9 minutos

Publicado el 10 de julio de 2024

Compartir

Introducción

¿Alguna vez te has enfrentado al reto de entrenar una red neuronal cuando dispones de pocos datos? ¿Cuántas veces has pensado en utilizar datos de una tarea para mejorar el rendimiento de otra?

En OpenWebinars, te respondemos estas y muchas más preguntas a la vez que te enseñamos a aplicar diversas técnicas de transfer learning.

Dos de los ejemplos más paradigmáticos de transfer learning son las redes VGG16 y VGG19. Estas redes son algunas de las más utilizadas para tratar imágenes médicas. ¿Pero cómo lo hacen?

Cuando trabajamos con imágenes médicas es complicado obtener muchos datos para entrenar redes neuronales. Los creadores de estas redes utilizaron transfer learning para superar este reto.

En primer lugar, entrenaron las redes neuronales con el conjunto de datos Imagenet y a continuación, aplicaron transfer learning para adaptar la red neuronal creada y poder utilizarla en problemas médicos.

Vamos a ver en detalle cómo lo hicieron.

¡Pongámonos manos al transfer learning!

Qué es el transfer learning

El transfer learning (TL) es un conjunto de técnicas de aprendizaje automático que se basa en reutilizar todo el conocimiento presente en una red neuronal previamente entrenada y aplicarlo a una tarea nueva.

Por ejemplo, podemos partir de una red entrenada para distinguir si un vehículo es un autobús, un coche o una moto y adaptarla para que detecte la marca de un vehículo.

También podemos entrenar un modelo de análisis de opiniones que evalúe las reseñas de restaurantes y adaptar este modelo para que analice las opiniones presentes en tweets.

Importancia del transfer learning en la actualidad

Desde 2015, la presencia y la importancia de las técnicas de transfer learning no han parado de aumentar. Es uno de los grandes campos de investigación de la Inteligencia Artificial y se aplica en prácticamente todas las tareas.

Los puntos clave para entender su importancia son:

  • Proliferación de modelos preentrenados: Cada vez es más fácil acceder a modelos preentrenados que permiten aplicar transfer learning de manera sencilla. Por ejemplo HuggingFace es un repositorio de modelos que se pueden utilizar para aplicar transfer learning.
  • Integración de bibliotecas populares: Las librerías de Inteligencia Artificial más populares disponen de integraciones para facilitar el uso de modelos preentrenados. Por ejemplo: TensorFlow Hub, PyTorch Hub y Keras Applications.
  • Mejora la eficiencia del proceso de en4trenamiento: Utilizando transfer learning acortamos los procesos de entrenamiento sin sacrificar calidad de predicción.
  • Gran aplicabilidad: Las técnicas de transfer learning se utilizan en todo tipo de tareas, destacan los ámbitos de conducción de vehículos inteligentes y el ajuste de grandes modelos de lenguaje (LLM).

Cómo funciona

A la hora de entender cómo funcionan las diferentes técnicas de transfer learning, es importante recordar cómo predicen las redes neuronales. Las redes neuronales aprenden a reconocer patrones y extraer características presentes en los datos.

Este conocimiento se representa en forma de matrices numéricas llamadas pesos. Tradicionalmente, cada vez que se entrena una red neuronal, los pesos se inicializan de forma aleatoria, pero al utilizar transfer learning, partimos de unos pesos ya entrenados, lo que nos permite mantener la capacidad de reconocer patrones y extraer características aprendidas en otra tarea.

Si quieres conocer en mayor medida el funcionamiento de las redes neuronales te recomendamos nuestra ruta de especialista en inteligencia artificial.

Aprende a desarrollar algoritmos de Machine Learning
Conviértete en un profesional de Machine Learning. Domina las habilidades y herramientas necesarias para implementar algoritmos de aprendizaje automático y Deep Learning en Python.
Comenzar gratis ahora

Tipos de transfer learning

A la hora de aplicar transfer learning, tradicionalmente se distinguen tres aproximaciones en función de qué tipo de información se utiliza para predecir y cómo de parecidas son la tarea con la que se va a preentrenar la red neuronal y la tarea final que se quiere realizar.

Aprendizaje inductivo

El aprendizaje inductivo es aquel en que los datos de preentrenamiento y los datos de la tarea final son similares mientras que las tareas son diferentes. Por ejemplo, partir de un modelo que reconozca gatos y perros y ampliarlo para que también reconozca flores sería un ejemplo de aprendizaje inductivo.

En este ejemplo los datos para las dos tareas son similares, ya que las dos tareas utilizan fotografías, sin embargo, las tareas de predicción son diferentes, ya que pasamos de detectar únicamente animales a detectar animales y plantas.

Aprendizaje deductivo

El aprendizaje deductivo es aquel en que los datos de preentrenamiento y los datos de la tarea final pueden ser diferentes, siempre que la tarea a realizar esté relacionada. Por ejemplo, a partir de un modelo que detecta fallos en la pintura de un coche podemos crear un modelo que detecte células anómalas mediante el aprendizaje deductivo.

En este ejemplo los datos las dos tareas son diferentes, ya que vienen de ámbitos diferentes, pero las tareas están relacionadas. Ambas tareas se basan en la detección de anomalías, ya sea en la pintura de un vehículo o en las células.

Aprendizaje transductivo

El aprendizaje transductivo es aquel en que los datos de preentrenamiento y los de la tarea final pueden ser diferentes, pero la tarea que queremos aprender debe ser la misma que la tarea de la que provienen los datos que usaremos para preentrenar el modelo. Por ejemplo, podemos partir de un modelo que traduzca textos del inglés al español y ajustarlo para que traduzca textos del francés al valenciano.

En este ejemplo los datos para las dos tareas son diferentes, ya que provienen de dos idiomas distintos, pero la tarea es la misma, la traducción de texto.

Principales técnicas de transfer learning

Existen 4 técnicas principales de transfer learning. Estas técnicas se diferencian en función de si realizan transfer learning transformando los datos o reutilizando partes de una red neuronal.

Feature extraction (Extracción de características)

Se llama extracción de características al proceso por el cual transformamos un dato arbitrario (ya sea texto, imagen, video, etc.) en una representación numérica. Todas las redes llevan a cabo este proceso y esta técnica de transfer learning aprovecha esto. En nuestro curso de introducción al PLN puedes encontrar más información de cómo transformamos textos a vectores.

¿Si aprendemos a convertir fotos de gatos en vectores podemos reutilizar este conocimiento para convertir fotos de plantas en vectores? Sí, concretamente podemos reutilizar toda la información aprendida para distinguir los gatos del sofá donde están tumbados.

Reutilizando esta información solamente tenemos que entrenar una capa de nuestra red neuronal para reconocer gatos y flores.

Para utilizar esta técnica seguimos tres pasos:

  • Entrenar la red neuronal con datos de preentrenamiento y congelar las capas previamente entrenadas.
  • Eliminar la última capa del modelo.
  • Añadir una última capa y reentrenar el modelo con datos de la tarea final.

Fine-Tuning (Ajuste fino)

La técnica fine-tuning parte del mismo razonamiento que la técnica feature extractor y lo amplía. Mientras que feature extractor únicamente reutiliza la capacidad de convertir los datos en vectores fine-tuning también reutiliza la última capa del modelo.

Por ejemplo, si tienes un modelo de clasificación de imágenes entrenado en un conjunto de datos de imágenes de animales, y quieres aplicarlo a un conjunto de datos de imágenes de flores, puedes utilizar fine-tuning para ajustar el modelo a la nueva tarea.

Los pasos a seguir serán los siguientes:

  • Entrenar la red neuronal con datos de preentrenamiento.
  • Reentrenar el modelo con un ratio de aprendizaje menor usando datos de la tarea final.

Domain adaptation (Adaptación de Dominio)

Domain adaptation es una técnica de transfer learning que en lugar de modificar la red neuronal transforma los datos que se utilizan.

Por ejemplo, tenemos un detector de animales entrenado con imágenes provenientes de fotografías y queremos crear un detector de animales en imágenes extraídas de cuadros medievales.

Al utilizar la técnica de domain adaptation transformaríamos las imágenes de cuadros medievales en imágenes estilo fotografía y detectaríamos los animales presentes en ella.

Los pasos a seguir serían los siguientes:

  • Transformar los datos de la tarea final para que sean más parecidos a los datos de preentrenamiento
  • Entrenar el modelo con los datos de preentrenamiento y de la tarea final a la vez.

Instance-Based transfer (Transferencia basada en instancias)

Instance-Based transfer es una técnica de transfer learning basada en asignar un nivel de importancia a cada muestra del conjunto de preentrenamiento en función de su utilidad para la tarea final.

Por ejemplo, si tenemos un conjunto de datos de animales para preentrenamiento y queremos crear un clasificador de fauna salvaje podríamos dar menos importancia a los animales domésticos del conjunto de preentrenamiento, ya que son muestras menos útiles.

Los pasos a seguir serían los siguientes:

  • Asignar una importancia a cada muestra del conjunto de datos de preentrenamiento
  • Entrenar el modelo con los datos de preentrenamiento y de la tarea final a la vez.

Aplicaciones prácticas

Las técnicas de transfer learning se aplican de manera práctica a todos los campos del aprendizaje automático.

Esto es debido a que mejoran el funcionamiento general de las redes neuronales, sin embargo, su aplicación ha resultado especialmente útil en los campos de visión por computador, procesamiento del lenguaje natural y al reconocimiento de voz.

Visión por computador

  • Detección de objetos: La detección de objetos es una tarea crucial para aplicaciones como la conducción autónoma o la robótica. La utilización de conjuntos de datos para preentrenar el modelo mediante técnicas de transfer learning permite entrenar modelos más fiables capaces de detectar objetos provenientes de un amplio rango de dominios.

  • Segmentación semántica: La segmentación semántica es una tarea que implica asignar una etiqueta a cada píxel de una imagen con el objetivo de identificar objetos y estructuras. La aplicación de transfer learning permite realizar segmentaciones más detalladas, aumentando la calidad final de los sistemas.

Procesamiento de Lenguaje Natural (PNL o NLP)

  • Análisis de sentimiento: El análisis de sentimiento es una tarea que implica determinar la opinión o emoción que se expresa en un texto. Al transferir el conocimiento de un modelo entrenado en un conjunto de datos de texto a otro conjunto de datos, se puede mejorar la precisión del análisis de sentimiento en aplicaciones como la minería de opinión y la atención al cliente.

  • Traducción automática: La traducción automática es una tarea que implica traducir texto de un idioma a otro. El transfer learning se utiliza para mejorar la precisión de la traducción automática, especialmente cuando se desea traducir a un idioma en el que no se disponen de muchos textos.

  • Si quieres saber más acerca de otras aplicaciones del procesamiento del lenguaje natural te recomendamos nuestro curso de aprendizaje automático y PLN .

Reconocimiento de voz

  • Reconocimiento de voz en entornos ruidosos: El reconocimiento de voz en entornos ruidosos es una tarea que implica identificar y transcribir la voz humana en entornos con ruido de fondo. Al transferir el conocimiento de un modelo entrenado en un conjunto de datos de voz a otro conjunto de datos, se puede mejorar robustez del modelo ante diferentes tipos de ruidos.

  • Reconocimiento de voz en idiomas minoritarios: El reconocimiento de voz en idiomas minoritarios es una tarea que implica identificar y transcribir la voz humana en idiomas en los que se dispone de pocos recursos. La aplicación de transfer learning es crítica en estos escenarios para ser capaces de crear modelos efectivos con muy pocos datos.

Otras aplicaciones

  • Análisis de datos médicos: Las técnicas de transfer learning se aplican en casi todos los análisis médicos debido a la complejidad de obtener datos médicos.

  • Recomendación de productos: Las técnicas de transfer learning se utilizan en proyectos de recomendación de productos ya que permite combinar conjuntos de datos provenientes de distintas plataformas, aumentando la capacidad del modelo de recomendar efectivamente productos a los usuarios.

Beneficios del transfer learning

Eficiencia de datos

Las técnicas de transfer learning reducen significativamente la cantidad de datos necesarios en la tarea objetivo para entrenar un nuevo modelo.

Esto es particularmente útil en situaciones donde la obtención de grandes conjuntos de datos etiquetados es costosa o impracticable. Además, nos permite reutilizar datos a lo largo de varias tareas, aumentando la eficiencia de estos.

Ahorro de tiempo y recursos

El proceso de entrenamiento de modelos de Deep Learning es costoso tanto en términos temporales como computacionales.

Las técnicas de transfer learning permiten iniciar con un modelo preentrenado, lo que reduce drásticamente el tiempo de entrenamiento necesario, reduciendo ambos tipos de coste.

Mejora en la precisión y rendimiento

Los modelos entrenados con transfer learning han sido entrenados en grandes conjuntos de datos y han aprendido representaciones robustas que capturan características generales útiles.

Cuando estos modelos se ajustan para tareas específicas mediante transfer learning, generalmente mejoran la precisión y rendimiento en comparación con modelos entrenados desde cero.

Esto es debido a que las características generales aprendidas pueden ser transferidas y refinadas, permitiendo que el modelo se beneficie tanto del conocimiento previo como de la especificidad de los nuevos datos.

Herramientas y bibliotecas más utilizadas

TensorFlow

TensorFlow es una biblioteca open source desarrollada por Google Brain para llevar a cabo tareas de Machine Learning y Deep Learning. Es una de las librerías de aprendizaje automático más utilizadas a nivel industrial debido a su flexibilidad y escalabilidad.

Se caracteriza por ofrecer un ecosistema integral y flexible de herramientas y recursos para llevar a cabo tareas de Inteligencia Artificial y por la gran cantidad de herramientas disponibles para facilitar la puesta en produccion de modelos desarrollados con Tensorflow.

PyTorch

PyTorch es una biblioteca de código abierto desarrollada por Facebook AI Research para el desarrollo y entrenamiento de redes neuronales. Es una de las librerías que permite una mayor personalización del proceso de entrenamiento de una red neuronal y su uso destaca especialmente entre la comunidad investigadora.

PyTorch se caracteriza por ser la biblioteca de redes neuronales con más modelos preentrenados libres. Además, está especialmente diseñada para que puedas controlar hasta el más mínimo detalle en el proceso de desarrollo de una red neuronal.

Keras

Keras es una biblioteca de alto nivel para Deep Learning que puede ejecutarse sobre TensorFlow. Fue desarrollada con el objetivo de permitir una experimentación rápida y una curva de aprendizaje suave.

Keras se caracteriza por ser la biblioteca de redes neuronales más sencilla de aprender. Posee una gran cantidad de funcionalidades de alto nivel y es altamente modular. Esto añadido a que está perfectamente integrada con Tensorflow la convierte en la biblioteca perfecta para comenzar a crear redes neuronales.

Mejora las habilidades de tus analistas de datos
En OpenWebinars lograrás que tu equipo se mantenga a la vanguardia en las últimas tecnologías para implementar y crear algoritmos de Machine Learning.
Solicitar más información

Conclusiones

Las técnicas de transfer learning ya son parte del flujo de trabajo estándar para entrenar redes neuronales, nos permiten abarcar tareas inabordables con otras técnicas de Deep Learning, trabajar con pocos datos, entrenar nuestras redes más rápido y conseguir que estas sean más precisas y robustas.

Todas las plataformas populares de Inteligencia Artificial ofrecen herramientas para facilitar la aplicación de técnicas de transfer learning. Además, todas las semanas se realizan nuevas investigaciones para encontrar mejores técnicas de transfer learning en ámbitos tan diversos como son los grandes modelos de lenguaje o la segmentación de imágenes.

Gracias a estos dos hechos veremos como estas técnicas se convierten en nuevos cimientos fundamentales de la Inteligencia Artificial.

¿Quieres entrenar redes neuronales? ¡Aplica transfer learning!

Bombilla

Lo que deberías recordar del transfer learning

  • Reduce los costes temporales y computacionales de entrenar un red.
  • Permite alcanzar mejores resultados con menos datos.
  • Nos permite reutilizar datos a lo largo de varias tareas.
  • Se puede aplicar desde tus librerías de IA favoritas.
  • Se puede aplicar a todas tus tareas de IA.
Compartir este post

También te puede interesar

Icono de la tecnología
Curso

Aprendizaje Automático y PLN

Intermedio
2 h. y 29 min.

Esta formación busca explorar las posibilidades del Aprendizaje Automático dentro del dominio del Procesamiento de Lenguaje Natural, comenzando...

Arturo Sánchez Palacio
4.5
Icono de la tecnología
Curso

Introducción al PLN

Principiante
2 h. y 15 min.

Esta formación se diseñó para proporcionar una comprensión sólida de los fundamentos del Procesamiento de Lenguaje Natural (NLP,...

Arturo Sánchez Palacio
4.4