Cómo personalizar modelos de aprendizaje automático de forma sencilla

1. Introducción

2a934d0e86f14118.png

Última actualización: 28‑3‑2022

Aprendizaje automático

El aprendizaje automático es un campo que evoluciona a una velocidad vertiginosa. Todos los días, se lanzan investigaciones y oportunidades nuevas que habilitan casos de uso que antes no eran posibles.

Por lo general, estos lanzamientos generan modelos, que pueden interpretarse como ecuaciones matemáticas muy largas que producen un resultado (p. ej., una clasificación) a partir de una entrada (p. ej., una imagen).

  • ¿Qué sucede si quieres usar uno de estos modelos nuevos con tus propios datos?
  • ¿Cómo puedes beneficiarte de estos modelos de vanguardia para tu caso de uso o en tu app?

En este codelab, te guiaremos en el proceso de personalización de modelos de aprendizaje automático para tus propios datos de forma sencilla.

Compilar y entrenar modelos de aprendizaje automático tiene muchos desafíos:

  • Tarda mucho tiempo.
  • Usa grandes cantidades de datos.
  • Requiere experiencia en campos como matemáticas y estadísticas.
  • Utiliza muchos recursos: algunos modelos pueden tardar días en entrenarse.

La creación de nuevas arquitecturas de modelos lleva mucho tiempo y puede requerir muchos experimentos y años de experiencia, pero ¿qué sucedería si pudieras aprovechar todo ese conocimiento y usarlo en tus propios datos con solo personalizar investigaciones de vanguardia para tu problema? Puedes hacerlo con una técnica llamada aprendizaje por transferencia.

En este codelab, aprenderás a realizar aprendizaje por transferencia, por qué funciona y cuándo usarlo.

Qué aprenderás

  • Qué es el aprendizaje por transferencia y cuándo usarlo
  • Cómo usar el aprendizaje por transferencia
  • Cómo ajustar los modelos
  • Cómo usar Model Maker de TensorFlow Lite
  • Cómo usar TensorFlow Hub

Requisitos

  • Todo el código se ejecuta con Google Colaboratory, por lo que no deberás instalar nada en tu máquina (para acceder a Colab, solo necesitas acceso a Internet y una Cuenta de Google)
  • Conocimientos básicos sobre TensorFlow y la API de Keras
  • Conocimientos de Python

Incluso si no tienes conocimientos básicos de TensorFlow o del aprendizaje automático, puedes aprender sobre el aprendizaje por transferencia. Lee el siguiente paso “Qué es el aprendizaje por transferencia” para conocer la teoría subyacente a la técnica y, luego, continúa con la sección “Aprendizaje por transferencia con Model Maker”. Si quieres profundizar y ver el proceso con más detalle, consulta las secciones sobre el aprendizaje por transferencia con TensorFlow Hub.

2. ¿Qué es el aprendizaje por transferencia?

Un modelo previamente entrenado es una red guardada que se entrenó antes en un conjunto de datos grande, por lo general, en una tarea de clasificación de imágenes a gran escala. Puedes usar el modelo previamente entrenado tal como está o usar el aprendizaje por transferencia a fin de personalizar este modelo para una tarea determinada.

La intuición detrás del aprendizaje por transferencia para la clasificación de imágenes es que, si un modelo se entrena en un conjunto de datos lo suficientemente grande y general, servirá como modelo genérico del mundo visual. Luego, puedes aprovechar estos mapas de atributos aprendidos sin tener que comenzar desde cero entrenando un modelo grande en un conjunto de datos de gran tamaño.

Existen dos maneras de personalizar un modelo de aprendizaje automático:

  • Extracción de atributos: Usa las representaciones que aprendió una red anterior para extraer atributos significativos de muestras nuevas. Solo agrega un clasificador nuevo, que se entrena desde cero, sobre el modelo previamente entrenado para que puedas reutilizar los mapas de atributos aprendidos antes en el conjunto de datos. No es necesario volver a entrenar el modelo completo. La red convolucional básica ya contiene atributos que son genéricamente útiles para clasificar imágenes. Sin embargo, la parte final de clasificación del modelo previamente entrenado es específica de la tarea de clasificación original y, después, específica del conjunto de clases en las que se entrenó el modelo.
  • Ajuste: Desbloquea algunas de las capas superiores de una base del modelo inmovilizada y entrena de forma conjunta las capas del clasificador agregadas recientemente y las últimas capas del modelo base. Esto nos permite “ajustar” las representaciones de atributos de orden superior en el modelo base a fin de que sean más pertinentes a la tarea específica.

Es más rápido realizar el entrenamiento mediante extracción de atributos, pero, con el ajuste, se logran mejores resultados.

Probarás ambas técnicas (extracción de atributos y ajuste) con dos formas diferentes de realizar el aprendizaje por transferencia:

  • La biblioteca Model Maker de TensorFlow Lite realiza automáticamente la mayor parte de la canalización de datos y la creación del modelo, lo que facilita el proceso. El modelo resultante también se puede exportar fácilmente para usarlo en dispositivos móviles y navegadores.
  • Los modelos de TensorFlow Hub aprovechan el amplio repositorio de modelos de aprendizaje automático disponibles en TensorFlow Hub. Los investigadores y la comunidad aportan estos modelos, lo que permite ofrecer modelos de vanguardia mucho más rápidos y variados.

3. Aprendizaje por transferencia con Model Maker

Ahora que ya conoces la idea subyacente del aprendizaje por transferencia, comencemos a usar la biblioteca Model Maker de TensorFlow Lite, una herramienta que te ayudará a hacerlo de forma sencilla.

La biblioteca Model Maker de TensorFlow Lite es una biblioteca de código abierto que simplifica el proceso de aprendizaje por transferencia y hace que este sea mucho más accesible para los desarrolladores que no trabajan con AA, como los desarrolladores web y de dispositivos móviles.

El notebook de Colab te guía a través de los siguientes pasos:

  • Carga de los datos
  • División de los datos
  • Creación y entrenamiento del modelo
  • Evaluación del modelo
  • Exportación del modelo

Después de este paso, puedes comenzar a realizar el aprendizaje por transferencia con tus propios datos siguiendo exactamente el mismo proceso.

Colaboratory

A continuación, iremos a Google Colab para entrenar el modelo personalizado.

Tardarás aproximadamente 15 minutos en revisar la explicación y comprender los conceptos básicos del notebook.

Ventajas:

  • Es una forma sencilla de personalizar modelos.
  • No es necesario que entiendas TensorFlow ni la API de Keras.
  • Es una herramienta de código abierto que se puede cambiar si el usuario necesita algo específico que aún no se implementa.
  • Exporta el modelo directamente para su ejecución en navegadores o dispositivos móviles.

Desventajas

  • Existen menos posibilidades de configuración que si compilas la canalización completa y el modelo por tu cuenta, como con los dos métodos anteriores.
  • Incluso cuando se elige el modelo base, no todos los modelos se pueden usar como base.
  • No es adecuado para grandes cantidades de datos en los que la canalización de datos es más compleja.

4. Encuentra un modelo en TensorFlow Hub

Una vez que finalices esta sección, podrás hacer lo siguiente:

  • Encontrar modelos de aprendizaje automático en TensorFlow Hub
  • Comprender las colecciones
  • Comprender los diferentes tipos de modelos

Para realizar el aprendizaje por transferencia, debes comenzar con lo siguiente:

  • Datos, por ejemplo, imágenes de los sujetos que quieres reconocer
  • Un modelo base que puedes personalizar para tus datos

Por lo general, la parte de los datos depende de la empresa, pero el camino más sencillo es tomar muchas fotos de lo que deseas reconocer. Pero ¿qué ocurre con el modelo base y dónde puedes encontrar uno? TensorFlow Hub puede ser útil.

TensorFlow Hub es el repositorio de modelos para las necesidades de tus modelos de TensorFlow.

Puedes buscar y leer la documentación de miles de modelos disponibles para usar. Muchos de ellos están listos para el aprendizaje por transferencia y el ajuste.

Busca un modelo

En primer lugar, realicemos una búsqueda sencilla de modelos para usar en TensorFlow Hub, que puedas utilizar en tu código más adelante.

Paso 1: Abre el sitio tfhub.dev en un navegador.

imagen de la página principal de tfhub.dev

Para el aprendizaje por transferencia en el dominio de la imagen, necesitamos vectores de atributos. Estos son como modelos de clasificación, pero sin el encabezado de clasificación.

Los vectores de atributos pueden convertir imágenes en una representación numérica en el espacio N (en que N es la cantidad de dimensiones de la capa de salida del modelo).

En TFHub, puedes hacer clic en una tarjeta específica para buscar específicamente vectores de atributos.

Imagen de la página de tfhub.dev con un cuadrado en el que se destaca la tarea del vector de atributos

También puedes buscar el nombre de un modelo con el filtro de la izquierda para mostrar solo Image feature vectors.

Esta es una imagen de la página de búsqueda de tfhub.dev después de seleccionar una tarea de vector de atributos en la página principal.

Las tarjetas con íconos azules son colecciones de modelos. Si haces clic en una colección de imágenes, tendrás acceso a muchos modelos similares para elegir. Elijamos la colección de imágenes.

Esta es la página de colección de imágenes de tfhub.dev

Desplázate hacia abajo y selecciona MobileNet V3. Cualquiera de los vectores de atributos será suficiente.

Esta es la página de colección de imágenes de tfhub.dev que se desplazó un poco desde la página anterior

En la página de detalles del modelo, puedes leer toda su documentación, ver fragmentos de código para probarlo o, incluso, probarlo directamente en un notebook de Colab.

Página de detalles de un modelo de vector de atributos de mobilenetV3

Por ahora, solo necesitas la URL de la parte superior. Ese es el handle del modelo y la forma en que puedes acceder fácilmente a un modelo desde la biblioteca de TensorFlow Hub.

5. Aprendizaje por transferencia con TensorFlow Hub

Ahora que elegiste el modelo que usarás, vamos a personalizarlo. Para ello, debes cargarlo con el método KerasLayer de la biblioteca de TensorFlow Hub.

Este método carga un modelo de tal forma que se pueda usar como una capa en tu modelo que te permita compilarlo a partir de esta capa.

Antes, cuando aprendiste a usar Model Maker, se ocultaron todos los componentes internos para que fuera más fácil de comprender. Ahora, verás lo que hace Model Maker en segundo plano.

Colaboratory

A continuación, iremos a Google Colab para entrenar el modelo personalizado.

Tardarás aproximadamente 20 minutos en revisar la explicación y comprender los conceptos básicos del notebook.

Ventajas:

  • Hay miles de modelos disponibles aportados por investigadores y la comunidad, que se entrenaron con una variedad de conjuntos de datos.
  • Existen modelos para todas las tareas, como visión, texto y audio.
  • Es fácil de experimentar con diferentes modelos similares. Para cambiar el modelo base, es posible que debas cambiar solo una string.

Desventajas

  • Aún es necesario tener un poco de experiencia en TensorFlow y Keras para usar los modelos.

Si quieres profundizar aún más, también puedes consultar la sección Aprendizaje por transferencia con la aplicación de Keras. Es un proceso muy similar a usar TensorFlow Hub, pero solo con las API principales de TensorFlow.

6. Felicitaciones

¡Felicitaciones! Aprendiste qué es el aprendizaje por transferencia y cómo aplicarlo a tus propios datos.

En este codelab, aprendiste a personalizar modelos de aprendizaje automático para tus propios datos mediante una técnica llamada aprendizaje por transferencia.

Probaste 2 formas de aprendizaje por transferencia:

  • Usar una herramienta como Model Maker de TensorFlow Lite
  • Usar un vector de atributos de TensorFlow Hub

Ambas opciones tienen sus ventajas y desventajas, y muchos parámetros de configuración posibles para tus necesidades particulares.

También aprendiste que puedes ir un poco más lejos y ajustar los modelos modificando un poco más sus ponderaciones para que se adapten mejor a tus datos.

Con ambas opciones, se pueden realizar ajustes precisos en los modelos.

El aprendizaje por transferencia y los ajustes no solo son para los modelos relacionados con imágenes. Como la idea es usar una representación aprendida de un dominio a fin de ajustarla a tu conjunto de datos, también se puede utilizar para los dominios de texto y audio.

Próximos pasos

  • Pruébalo con tus propios datos.
  • Comparte con nosotros tu creación y etiqueta a TensorFlow en redes sociales con tus proyectos.

Más información

¿Tienes alguna pregunta?