¿Qué es Fine-Tuning y cómo funciona en las redes neuronales?

Escrito por Moisés Barrios Torres | 18/04/23

Desarrollar, validar y entrenar una red desde cero puede suponer una tarea enorme, además de necesitar grandes conjuntos de datos. Por esto, el Fine-Tuning resulta tan interesante.

El Fine-Tuning o ajuste fino permite tomar un modelo entrenado que realiza bien una determinada tarea y aprovechar todo su conocimiento para resolver una nueva tarea específica; aunque, por supuesto, con ciertas reglas.

Qué es el Fine-Tuning, por qué usarlo y cómo funciona exactamente en las redes neuronales son cuestiones que respondemos a continuación.

 

Fine-Tuning: ¿qué es?

El Fine-Tuning es una técnica de entrenamiento que consiste en la reutilización de arquitecturas de redes CNN predefinidas y preentrenadas.

 

 

Se trata de un proceso en el que se realiza un “ajuste fino” de algunas capas de la red para obtener las salidas deseadas. Es decir, se ajustan ligeramente ciertas representaciones del modelo preentrenado para que este resulte más relevante en el problema que se desea resolver. Así, se evita definir la estructura de la red neuronal y realizar el entrenamiento desde cero.

 

Artículo relacionado: Red Neuronal: IA aplicada al procesamiento del lenguaje natural

 

 

 

El Fine-Tuning ayuda al entrenamiento de modelos de predicción precisos mediante el empleo de conjuntos de datos limitados. Se suele utilizar cuando se requiere una solución basada en el aprendizaje profundo, pero los datos disponibles no son suficientes para entrenar una red CNN desde cero.

 

¿Por qué usar el Fine Tuning?

Después de conocer qué es el Fine-Tuning, es importante determinar por qué se usa. Gracias al “ajuste fino”, se evita el mayor porcentaje del entrenamiento, lo que significa que permite ahorrar tiempo y recursos de computación

  • Si se desea resolver un problema A, se puede utilizar como punto de partida una red preentrenada para un problema similar. De esta forma, solo debemos adaptar la red al problema A y continuar el entrenamiento con datos propios. 

  • Por ejemplo, un modelo entrenado para reconocer coches puede servir de punto de partida para un nuevo modelo de reconocimiento de vehículos de carga pesada.

Como se puede observar, gran parte del esfuerzo está hecho porque el modelo preentrenado ya ha aprendido previamente a extraer parámetros universales necesarios para la resolución del problema.

 

Ver servicio Datos de imagen y video

 

Fine Tuning vs Aprendizaje por Transferencia 

Es preciso diferenciar lo que es el Fine-Tuning del aprendizaje por transferencia: aunque los dos son enfoques de entrenamiento de redes con algunos datos y ambos se basan en el conocimiento existente, la realidad es que poseen grandes diferencias.

En el aprendizaje por transferencia, se toma un modelo entrenado en una tarea para reutilizarlo en la resolución de otra, pero congelando los parámetros del modelo existente. El proceso es el siguiente:

  • Se carga el modelo entrenado y se congelan las capas preentrenadas para evitar la pérdida de información.

  • Se añaden nuevas capas entrenables sobre las congeladas, que se entrenan con otro conjunto de datos. 

En el ajuste fino, en cambio, se toman los parámetros de la red existente para entrenarlos aún más y así realice la segunda tarea. Básicamente, se adapta la estructura del modelo y se entrena. Para ello, el procedimiento es este:

  • Al modelo existente se le eliminan y agregan capas necesarias para la resolución de la nueva tarea.

  • En la nueva estructura de modelo se congelan solo aquellas capas que provienen de la red original, cuyo conocimiento se desea conservar para el nuevo entrenamiento. 

  • Se procede a entrenar el modelo con los nuevos datos para la nueva tarea. Solo se actualizan los pesos de las capas nuevas. 



Es usual combinar estos dos enfoques para facilitar la adaptación de los parámetros preentrenados al nuevo conjunto de datos.  

 

 

Las técnicas más conocidas de Fine Tuning

Para profundizar más sobre lo que es el Fine-Tuning, es preciso describir las técnicas más conocidas:

  • Fine-Tuning con muchos datos de entrenamiento. Se basa en tener acceso a un modelo preentrenado para una tarea similar y disponer de muchos conjuntos de datos para el entrenamiento. La técnica consistiría en:

    • Utilizar la red preentrenada como base y seguir el entrenamiento con los datos propios. Es el caso ideal.

Artículo relacionado: Cómo entrenar su motor de traducción automática

 

  • Fine-Tuning con pocos datos de entrenamiento. Si se cuenta con una red entrenada para una tarea similar a la que se desea resolver, pero los datos de entrenamiento son pocos, es preciso evitar el overfitting. Por ello, se debe:

    • Entrenar solamente las últimas capas de la estructura de la red, el resto deben congelarse. El modelo preentrenado se utiliza básicamente en la extracción de características.

En caso de que la red dispuesta como punto de partida no esté preentrenada para un problema similar a la tarea que se desea resolver, se tienen dos opciones:

  • Si se dispone de muchos datos para el entrenamiento, la mejor recomendación es entrenar el modelo desde cero.

  • Si se dispone de pocos datos, la opción más viable, normalmente, es congelar solo las primeras capas del modelo. Son capas que se han entrenado para extraer características universales, así que se pueden aprovechar.

 

Fine Tuning en modelos de aprendizaje automático

Dentro del aprendizaje automático encontramos como subconjunto el aprendizaje profundo, cuyos algoritmos requieren enormes cantidades de datos para aprender. De por sí, es un proceso que requiere grandes recursos, pero que se puede simplificar con la ayuda del Fine-Tuning.

Como se ha dicho, el Fine-Tuning consiste en realizar ligeros ajustes. Esto, dentro del aprendizaje profundo, significa utilizar los pesos de un modelo de aprendizaje profundo existente para programar un nuevo proceso de aprendizaje profundo muy similar.




En la red neuronal, estos pesos conectan cada una de las neuronas de una capa con cada una de las neuronas de la capa siguiente. 

Todo este proceso reduce el tiempo de programación y de procesamiento de un nuevo modelo de aprendizaje profundo, puesto que está partiendo del conocimiento de una red de aprendizaje profundo preexistente.

 

Ejemplo de Fine Tuning en modelos de aprendizaje automático 

Como ejemplo de lo que es el Fine-Tuning en el aprendizaje automático, se tiene al GPT, un modelo preentrenado generativo desarrollado para la generación de textos.

El preentrenamiento o aprendizaje del modelo GPT requiere una enorme cantidad de textos (corpus), donde el propio modelo organiza los textos automáticamente y realiza ajustes sin la intervención humana. Finalmente, a petición del usuario, podrá predecir la siguiente palabra a través del contexto. 

Este modelo preentrenado del GPT puede considerarse un modelo de punto de partida para realizar el Fine-Tuning y crear otros más específicos, como algoritmos para el análisis de sentimiento, la clasificación de documentos o el resumen de textos.

 

Datos para el entrenamiento de su IA con Pangeanic 

Los datos para el entrenamiento de modelos basados en IA (inteligencia artificial) son vitales para que los sistemas de aprendizaje automático puedan aprender, realizar la función asignada y ofrecernos resultados de calidad. 

Pangeanic le proporciona los datos más valiosos para que ponga en marcha el entrenamiento de sus sistemas. Para garantizar la calidad de nuestros datos empleamos sistemas humanos escalables, mantenemos procesos de verificación y aplicamos estrictos controles de calidad. 

Podemos proporcionarle datos paralelos para los sistemas de traducción automática; datos anotados para los procesos de reconocimiento de entidades nombradas; datos que le permiten conocer la actitud en los textos o inputs de redes sociales; y datos en formato de imagen, de audio y de vídeo.

En Pangeanic, le entregamos datos preparados y adecuados para el proceso de entrenamiento. Contáctenos, nos convertimos en el socio perfecto para incrementar exponencialmente las capacidades de su algoritmo de inteligencia artificial.