IA 101

¿Qué es el Aprendizaje de Transferencia?

mm

¿Qué es el Aprendizaje de Transferencia?

Al practicar el aprendizaje automático, entrenar un modelo puede llevar mucho tiempo. Crear una arquitectura de modelo desde cero, entrenar el modelo y luego ajustar el modelo es una cantidad masiva de tiempo y esfuerzo. Una forma mucho más eficiente de entrenar un modelo de aprendizaje automático es utilizar una arquitectura que ya ha sido definida, potencialmente con pesos que ya han sido calculados. Esta es la idea principal detrás del aprendizaje de transferencia, tomar un modelo que ya ha sido utilizado y reutilizarlo para una nueva tarea.

Antes de profundizar en las diferentes formas en que se puede utilizar el aprendizaje de transferencia, tomémonos un momento para entender por qué el aprendizaje de transferencia es una técnica tan poderosa y útil.

Resolviendo un Problema de Aprendizaje Profundo

Cuando intentas resolver un problema de aprendizaje profundo, como construir un clasificador de imágenes, debes crear una arquitectura de modelo y luego entrenar el modelo con tus datos. Entrenar el clasificador del modelo implica ajustar los pesos de la red, un proceso que puede tardar horas o incluso días, dependiendo de la complejidad del modelo y del conjunto de datos. El tiempo de entrenamiento se escalará de acuerdo con el tamaño del conjunto de datos y la complejidad de la arquitectura del modelo.

Si el modelo no logra el tipo de precisión necesario para la tarea, es probable que se necesite ajustar el modelo y luego volver a entrenarlo. Esto significa más horas de entrenamiento hasta que se encuentre una arquitectura óptima, una longitud de entrenamiento y una partición del conjunto de datos. Cuando consideras la cantidad de variables que deben estar alineadas entre sí para que un clasificador sea útil, tiene sentido que los ingenieros de aprendizaje automático siempre estén buscando formas más fáciles y eficientes de entrenar e implementar modelos. Por esta razón, se creó la técnica de aprendizaje de transferencia.

Después de diseñar y probar un modelo, si el modelo resultó útil, se puede guardar y reutilizar más adelante para problemas similares.

Tipos de Aprendizaje de Transferencia

En general, hay dos tipos diferentes de aprendizaje de transferencia: desarrollar un modelo desde cero y utilizar un modelo preentrenado.

Cuando desarrollas un modelo desde cero, necesitarás crear una arquitectura de modelo capaz de interpretar tus datos de entrenamiento y extraer patrones de ellos. Después de que el modelo se entrena por primera vez, probablemente necesitarás hacer cambios en él para obtener el rendimiento óptimo del modelo. Luego puedes guardar la arquitectura del modelo y utilizarla como punto de partida para un modelo que se utilizará en una tarea similar.

En la segunda condición, el uso de un modelo preentrenado, simplemente debes seleccionar un modelo preentrenado para utilizar. Muchas universidades y equipos de investigación hacen que las especificaciones de su modelo estén disponibles para uso general. La arquitectura del modelo se puede descargar junto con los pesos.

Al realizar el aprendizaje de transferencia, se puede utilizar la arquitectura completa del modelo y los pesos para la tarea en cuestión, o solo se pueden utilizar ciertas porciones/capas del modelo. Utilizar solo parte del modelo preentrenado y entrenar el resto del modelo se conoce como ajuste fino.

Ajuste Fino de una Red

Ajustar fino una red describe el proceso de entrenar solo algunas de las capas de una red. Si un nuevo conjunto de datos de entrenamiento es muy similar al conjunto de datos utilizado para entrenar el modelo original, se pueden utilizar muchos de los mismos pesos.

La cantidad de capas en la red que deben desbloquearse y volver a entrenarse debe escalarse de acuerdo con el tamaño del nuevo conjunto de datos. Si el conjunto de datos que se está entrenando es pequeño, es una mejor práctica mantener la mayoría de las capas como están y entrenar solo las últimas capas. Esto es para evitar que la red se sobreajuste. Alternativamente, se pueden eliminar las capas finales de la red preentrenada y agregar nuevas capas, que luego se entrenan. Por otro lado, si el conjunto de datos es grande, potencialmente más grande que el conjunto de datos original, se debe volver a entrenar toda la red. Para utilizar la red como extractor de características fijo, se puede utilizar la mayoría de la red para extraer las características, mientras que solo la capa final de la red se desbloquea y se entrena.

Cuando estás ajustando fino una red, solo recuerda que las capas iniciales de la ConvNet son las que contienen la información que representa las características más genéricas de las imágenes. Estas son características como bordes y colores. Por otro lado, las capas finales de la ConvNet contienen los detalles que son más específicos de las clases individuales contenidas en el conjunto de datos en el que se entrenó el modelo original. Si estás entrenando un modelo en un conjunto de datos que es bastante diferente del conjunto de datos original, probablemente querrás utilizar las capas iniciales del modelo para extraer características y solo volver a entrenar el resto del modelo.

Ejemplos de Aprendizaje de Transferencia

Las aplicaciones más comunes del aprendizaje de transferencia probablemente sean aquellas que utilizan datos de imagen como entradas. Estos son a menudo tareas de predicción/clasificación. La forma en que las Redes Neuronales Convolucionales interpretan los datos de imagen se presta a reutilizar aspectos de los modelos, ya que las capas convolucionales a menudo distinguen características muy similares. Un ejemplo de un problema común de aprendizaje de transferencia es la tarea ImageNet 1000, un conjunto de datos masivo lleno de 1000 clases diferentes de objetos. Las empresas que desarrollan modelos que logran un alto rendimiento en este conjunto de datos a menudo lanzan sus modelos bajo licencias que permiten a otros reutilizarlos. Algunos de los modelos que han resultado de este proceso incluyen el modelo ResNet de Microsoft, el modelo Inception de Google y el modelo VGG de Oxford grupo.

Bloguero y programador con especialidades en Machine Learning y Deep Learning temas. Daniel espera ayudar a otros a utilizar el poder de la IA para el bien social.