Fine Tuning

 El ajuste fino(Fine Tuning) es un enfoque para transferir el aprendizaje en el que los pesos de un modelo previamente entrenado se entrenan en nuevos datos. El ajuste fino se puede realizar en toda la red neuronal o solo en un subconjunto de sus capas, en cuyo caso las capas que no se ajustan se "congelan" (no se actualizan durante el paso de retropropagación ).

Para algunas arquitecturas, como las redes neuronales convolucionales , es común mantener congeladas las capas anteriores (las más cercanas a la capa de entrada) porque capturan características de nivel inferior, mientras que las capas posteriores a menudo distinguen características de alto nivel que pueden estar más relacionadas con la tarea en la que se entrena al modelo.

El ajuste fino es común en el procesamiento del lenguaje natural (NLP), especialmente en el dominio del modelado del lenguaje . Los modelos de lenguaje grande como GPT-2 de OpenAI se pueden ajustar en tareas de NLP posteriores [ jerga ] para producir mejores resultados que los que normalmente puede lograr el modelo pre-entrenado.  Los modelos que se entrenan previamente en corpus grandes y generales generalmente se ajustan reutilizando los parámetros del modelo como punto de partida y agregando una capa específica de la tarea entrenada desde cero. El ajuste fino del modelo completo también es común y, a menudo, produce mejores resultados, pero es más costoso desde el punto de vista computacional. El ajuste fino completo también es más propenso al sobreajuste y puede hacer que el modelo funcione peor en datos fuera de la distribución de datos de entrenamiento utilizados durante el ajuste fino.

El ajuste fino generalmente se logra con el aprendizaje supervisado , pero también existen técnicas para ajustar un modelo usando una supervisión débil . El aprendizaje por refuerzo también se utiliza para perfeccionar modelos de lenguaje como ChatGPT (una versión perfeccionada de GPT-3 ) y Sparrow mediante el aprendizaje por refuerzo a partir de comentarios humanos .

Una vez que su modelo haya convergido en los nuevos datos, puede intentar descongelar todo o parte del modelo base y volver a entrenar todo el modelo de principio a fin con una tasa de aprendizaje muy baja. Este es un último paso opcional que potencialmente puede brindarle mejoras incrementales. También podría conducir a un sobreajuste rápido, tenlo en cuenta.

Es fundamental realizar este paso solo después de que el modelo con capas congeladas se haya entrenado para la convergencia. Si mezcla capas entrenables inicializadas aleatoriamente con capas entrenables que contienen funciones preentrenadas, las capas inicializadas aleatoriamente generarán actualizaciones de gradiente muy grandes durante el entrenamiento, lo que destruirá sus funciones preentrenadas.

También es fundamental usar una tasa de aprendizaje muy baja en esta etapa, porque está entrenando un modelo mucho más grande que en la primera ronda de entrenamiento, en un conjunto de datos que suele ser muy pequeño. Como resultado, corre el riesgo de sobreajustarse muy rápidamente si aplica actualizaciones de gran peso. Aquí, solo desea readaptar los pesos preentrenados de forma incremental.

En capítulos anteriores, discutimos cómo entrenar modelos en el conjunto de datos de entrenamiento Fashion-MNIST con solo 60000 imágenes. También describimos ImageNet, el conjunto de datos de imágenes a gran escala más utilizado en el mundo académico, que tiene más de 10 millones de imágenes y 1000 objetos. Sin embargo, el tamaño del conjunto de datos que solemos encontrar está entre los de los dos conjuntos de datos.

Supongamos que queremos reconocer diferentes tipos de sillas a partir de imágenes y luego recomendar enlaces de compra a los usuarios. Un método posible es identificar primero 100 sillas comunes, tomar 1000 imágenes de diferentes ángulos para cada silla y luego entrenar un modelo de clasificación en el conjunto de datos de imágenes recopiladas. Aunque este conjunto de datos de sillas puede ser más grande que el conjunto de datos de Fashion-MNIST, la cantidad de ejemplos sigue siendo menos de una décima parte de la de ImageNet. Esto puede provocar el sobreajuste de modelos complicados que son adecuados para ImageNet en este conjunto de datos de silla. Además, debido a la cantidad limitada de ejemplos de entrenamiento, es posible que la precisión del modelo entrenado no cumpla con los requisitos prácticos.

Para abordar los problemas anteriores, una solución obvia es recopilar más datos. Sin embargo, recopilar y etiquetar datos puede requerir mucho tiempo y dinero. Por ejemplo, para recopilar el conjunto de datos de ImageNet, los investigadores han gastado millones de dólares en fondos de investigación. Aunque el costo actual de recopilación de datos se ha reducido significativamente, este costo aún no se puede ignorar.

Otra solución es aplicar el aprendizaje por transferencia para transferir el conocimiento aprendido del conjunto de datos de origen al conjunto de datos de destino . Por ejemplo, aunque la mayoría de las imágenes en el conjunto de datos de ImageNet no tienen nada que ver con sillas, el modelo entrenado en este conjunto de datos puede extraer características de imagen más generales, lo que puede ayudar a identificar bordes, texturas, formas y composición de objetos. Estas características similares también pueden ser efectivas para reconocer sillas.

 

En esta sección, presentaremos una técnica común en el aprendizaje por transferencia: el ajuste fino . Como se muestra en la Fig. 14.2.1 , el ajuste fino consta de los siguientes cuatro pasos:

  1. Entrene previamente un modelo de red neuronal, es decir, el modelo de origen , en un conjunto de datos de origen (p. ej., el conjunto de datos de ImageNet).
  2. Cree un nuevo modelo de red neuronal, es decir, el modelo de destino . Esto copia todos los diseños del modelo y sus parámetros en el modelo de origen excepto la capa de salida. Suponemos que estos parámetros del modelo contienen el conocimiento aprendido del conjunto de datos de origen y este conocimiento también será aplicable al conjunto de datos de destino. También suponemos que la capa de salida del modelo de origen está estrechamente relacionada con las etiquetas del conjunto de datos de origen; por lo tanto, no se utiliza en el modelo de destino.
  3. Agregue una capa de salida al modelo de destino, cuyo número de salidas es el número de categorías en el conjunto de datos de destino. Luego inicialice aleatoriamente los parámetros del modelo de esta capa.
  4. Entrene el modelo de destino en el conjunto de datos de destino, como un conjunto de datos de silla. La capa de salida se entrenará desde cero, mientras que los parámetros de todas las demás capas se ajustarán en función de los parámetros del modelo de origen.

Cuando los conjuntos de datos de destino son mucho más pequeños que los conjuntos de datos de origen, el ajuste fino ayuda a mejorar la capacidad de generalización de los modelos.

 Ventajas del ajuste fino

  1. Mejore el rendimiento de un modelo previamente entrenado en una tarea específica con amplios datos y computación
  2. Ideal para entornos de altos recursos con amplios datos de entrenamiento y recursos computacionales

Tecnicamente el ajuste fino es tomar un modelo preentrenado, y se vuelve a entrenar con datos diferentes para que realice otra tarea espacifica.  


Sin embargo, ya se considera el uso de recursos, el rendimiento de modelo, al momento de hacer entrenamiento e inferencia se usa otros metodos: Ajuste fino de parámetros eficientes.

El ajuste fino y el ajuste fino de parámetros eficientes son dos enfoques que se utilizan en el aprendizaje automático para mejorar el rendimiento de los modelos previamente entrenados en una tarea específica.