23.7. Transferir aprendizaje y ajuste: congelación de capas

Transfer Learning y Fine-tuning son poderosas técnicas en el campo del Machine Learning y Deep Learning que permiten la transferencia de conocimiento desde un modelo previamente entrenado a una nueva tarea con el objetivo de mejorar el rendimiento y la eficiencia del entrenamiento. La esencia del Transfer Learning es tomar los pesos y características aprendidos por un modelo en un gran conjunto de datos, generalmente en una tarea relacionada, y aplicarlos a una nueva tarea con menos datos disponibles.

Una de las estrategias más efectivas dentro de Transfer Learning es la congelación de capas. Esta técnica implica mantener fijos los pesos de algunas capas de un modelo previamente entrenado, mientras que solo algunas capas se ajustan o "afinan" para la nueva tarea. Exploremos más profundamente cómo funciona esta estrategia y cómo se puede aplicar utilizando Python y bibliotecas de aprendizaje profundo como TensorFlow y Keras.

¿Qué es la congelación de capas?

En el contexto de las redes neuronales profundas, la congelación de capas es el proceso de mantener sin cambios los pesos de ciertas capas durante el entrenamiento. Esto se hace porque estas capas ya han aprendido características generales que pueden ser útiles para la nueva tarea. Generalmente, las primeras capas de una red neuronal convolucional (CNN) aprenden características de bajo nivel, como bordes y texturas, mientras que las capas más profundas aprenden características de mayor nivel, más específicas de la tarea original.

Al congelar las primeras capas, podemos reutilizar estas características generales y centrar el entrenamiento en las capas superiores, que se ajustarán para capturar los matices de la nueva tarea. Esto no solo ahorra tiempo y recursos computacionales, sino que también puede mejorar el rendimiento en tareas con conjuntos de datos más pequeños, donde aprender desde cero puede llevar a un sobreajuste.

¿Cómo congelar capas en Python con TensorFlow/Keras?

Con bibliotecas como TensorFlow y Keras, congelar capas es un proceso sencillo. Al cargar un modelo previamente entrenado, podemos definir fácilmente qué capas deben congelarse. A continuación se muestra un ejemplo de cómo hacer esto:

de tensorflow.keras.applications importa VGG16
desde tensorflow.keras importar capas, modelos

# Cargue el modelo VGG16 previamente entrenado con pesos ImageNet
base_model = VGG16(pesos='imagenet', include_top=False, input_shape=(224, 224, 3))

# Congelar todas las capas del modelo base
para capa en base_model.layers:
    capa.entrenable = Falso

# Agregar nuevas capas personalizadas a la nueva tarea
x = capas.Aplanar() (modelo_base.salida)
x = capas.Dense(1024, activación='relu')(x)
predicciones = capas.Dense(num_classes, activación='softmax')(x)

# Crea el modelo final
modelo = modelos.Modelo(entradas=modelo_base.entrada, salidas=predicciones)

# Ahora solo se entrenarán las capas agregadas

En el código anterior, todas las capas del modelo VGG16 están congeladas y se agregan nuevas capas para la tarea específica. Durante el entrenamiento, solo se actualizarán los pesos de las nuevas capas.

¿Cuándo utilizar la congelación de capas?

La congelación de niveles es más eficaz cuando el nuevo conjunto de datos de tareas es pequeño o cuando las tareas de origen y de destino son similares. Si el nuevo conjunto de datos es grande y muy diferente del conjunto de datos original, puede que sea necesario entrenar más capas o incluso toda la red nuevamente para lograr un buen rendimiento.

Ajuste después de congelar capas

Después de un período inicial de entrenamiento con capas congeladas, suele ser útil ajustar algunas de las capas superiores del modelo previamente entrenado. Esto implica descongelar una pequeña cantidad de capas superiores y continuar entrenando para adaptar características de alto nivel al nuevo conjunto de datos.

Por ejemplo:

# Descongelar las últimas 5 capas del modelo base
para capa en base_model.layers[-5:]:
    capa.entrenable = Verdadero

# Continuar entrenando con una tasa de aprendizaje más baja
optimizador = keras.optimizadores.Adam(lr=1e-5)
model.compile(optimizador=optimizador, pérdida='categorical_crossentropy', métricas=['precisión'])

Al descongelar capas, es importante utilizar una tasa de aprendizaje más baja para evitar destruir funciones ya aprendidas.

Consideraciones finales

La transferencia de aprendizaje y el ajuste con congelación de capas son técnicas valiosas para aprovechar modelos previamente entrenados para nuevas tareas. Al ajustar cuidadosamente qué capas congelar y descongelar y elegir la estrategia de entrenamiento adecuada, puede obtener un modelo altamente efectivo, incluso con un conjunto de datos limitado. El uso de bibliotecas como TensorFlow y Keras facilita la implementaciónmentación de estas técnicas en Python, lo que permite a los profesionales del aprendizaje automático y el aprendizaje profundo centrarse en la creación de soluciones sólidas e innovadoras.

Ahora responde el ejercicio sobre el contenido:

¿Cuál de las siguientes afirmaciones sobre la congelación de capas en el contexto del aprendizaje por transferencia y el ajuste en el aprendizaje profundo es cierta?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Imagen del artículo Transferir aprendizaje y ajuste: adaptar modelos a nuevos dominios 92

Siguiente página del libro electrónico gratuito:

Transferir aprendizaje y ajuste: adaptar modelos a nuevos dominios

Tiempo estimado de lectura: 4 minutos

Descarga la aplicación para obtener una certificación gratuita y escuchar cursos en segundo plano, incluso con la pantalla apagada.
  • ¡Lee este curso en la aplicación para obtener tu Certificado Digital!
  • Escucha este curso en la aplicación sin tener que encender la pantalla de tu celular;
  • Obtenga acceso 100% gratuito a más de 4000 cursos en línea, libros electrónicos y audiolibros;
  • + Cientos de ejercicios + Historias educativas.

+ 9 millones
estudiantes

Certificado gratuito y
válido con código QR

60 mil ejercicios
gratis

Calificación de 4.8/5
en tiendas de aplicaciones

Cursos gratuitos de
vídeo y audiolibros