Transfer Learning ¿qué es y para que sirve?

Buenas! Como andan? Acá estamos de nuevo, semana número 43 de este año 2019 y hoy quiero aprovechar para seguir repasando conceptos.

Ya que en el último episodio estuvimos hablando de redes neuronales convolucionales, que son muy usadas para hacer clasificaciones de imágenes, nos viene como anillo al dedo para hablar de transfer learning. Transferencia de aprendizaje.

Como siempre les recuerdo que se pueden suscribir al podcast en Ivoox, Spotify o cualquier aplicación de podcast así se enteran cuando sale un nuevo episodio. Y que me pueden encontrar en twitter como @pochocosta también en Instagram como pochocosta.

Ahora si, empecemos con el tema.

Transferencia de aprendizaje

La transferencia de aprendizaje es un concepto que está muy interesante por ejemplo para la clasificación de imágenes que es justo de los que hablamos en el último episodio.

Por eso les decia que venia como anillo al dedo haber hablado de clasificación de imagenes la ultima vez. 

Si se acuerdan el ejemplo que habíamos comentado era de un modelo para clasificar imagenes de perro y caballos.

Entonces si ya tenemos ese modelo entrenado. Le dimos como entrenamiento miles de imágenes de perros y miles de imagenes de caballos. De lejos, de cerca, de frente, de perfil, de cuerpo completo, de la cara, de todas las variantes que se les ocurra…

Seguramente ya tengamos un modelo que haya aprendido a distinguir ciertos patrones en las imágenes y que si le damos una nueva foto de un perro probablemente vaya a poder predecirlo bien.

Tomar un modelo pre entrenado para resolver otro problema

Ahora entonces podemos tomar ese modelo como base, que ya tiene sus capas entrenadas. Las primeras capas reconocen formas simples. Saben reconocer bordes, sombras. Las siguientes capas ya identifican patrones visuales como ojos y orejas. 

Entonces podemos usar ese aprendizaje que ya tienen para clasificar otro tipo de imágenes parecidas donde nos pueda servir también que sepa reconocer esos mismos patrones. 

Supongamos un ejemplo bien fácil. En vez de clasificar perros y caballos, ahora queremos clasificar burros y lobos.

Para esto vamos a necesitar conseguir un conjunto de datos con imagenes de burros y lobos, todas etiquetadas. Idealmente las vamos a separar en 3 conjuntos. Uno para entrenamiento, uno para validación y otro para pruebas.

En la práctica lo que podemos a hacer entonces es agarrar el modelo que tenemos entrenado y guardarlo en un archivo, y guardar en otro archivo los pesos aprendidos.

Después cargamos estos archivos en un nuevo modelo y le eliminamos la última capa que es la capa de predicción que sabía clasificar perros y caballos.

No hace falta entrenar todas las capas

El próximo paso es “freezar” las capas. Las congelamos en el estado que están, con los pesos que tienen aprendidos, para que los próximos entrenamientos no las tengan en cuenta.

Y ahora lo que faltaría hacer es agregar una nueva capa densa para que haga la predicción de si la imagen es un burro o un lobo. 

A esta capa lo que vamos a tener que indicarle es qué función de activación queremos que aplique. 

Y esta va a ser la capa que ahora tenemos que entrenar con los ejemplos etiquetados de burros y lobos.

Acá una aclaración.

En realidad esta última capa en este ejemplo no era necesario que sea borrada, porque su salida era una clasificación entre dos clases y es la misma cantidad de clases que ahora queremos reconocer.

Modelos populares de clasificación de imágenes

Pero si usamos como base uno de los modelos populares como Resnet50, VGG16, Inception o cualquiera de esos. Sus capas de predicción están creadas para reconocer 1000 clases.

Por eso es que se reemplaza esa capa por una que se ajuste a la cantidad de clases que queremos reconocer.

Bueno hecha la aclaración, ahora pensemos las bondades de todo esto.

Beneficios del Transfer Learning

Lo bueno del transfer learning, es que podemos tener un modelo de clasificación de imágenes con una muy buena precisión, al cual tuvimos que darle muy pocas imagenes para entrenamiento en comparación con la cantidad que hubiéramos necesitado para entrenar este modelo desde cero.

Por otro lado, una de las mayores bondades es que podamos buscar si ya existe algún modelo que se haya creado y entrenado para clasificar el mismo tipo de imágenes o alguno parecido.

Entonces si encontramos, podremos basarnos en alguno que fue creado por expertos, y que fue probado y optimizado para resolver ese problema de la mejor manera.

Lo que además implica que nos vayamos a ahorrar todo el computo que fue necesario para desarrollar y entrenar ese modelo, nos ahorramos de tener que conseguir y etiquetar miles de ejemplos. O sea, un montón de tiempo y dinero.

Y esto es lo que hace que el transfer learning sea algo fantástico!

Ahora bien, ¿qué pasa si lo que queremos clasificar no es tan parecido a lo que el modelo pre entrenado que tenemos sabe reconocer?

Bueno, en este caso las primeras capas pre entrenadas nos siguen sirviendo porque son las que saben reconocer los bordes, manchas de color, etc. Las características más genéricas digamos.

En cambio las capas posteriores, que ya reconocen patrones visuales de estructuras más complejas, vamos a tener que volver a entrenarlas para que reconozcan las estructuras de nuestras nuevas clases.

Lo que sí, es que para este nuevo entrenamiento podemos empezar con los pesos inicializados de la red pre entrenada en vez de empezar con valores aleatorios. 

Esto va a ayudar a que el entrenamiento sea más eficiente.

Ahora si, para este caso vamos a necesitar tener más ejemplos para poder entrenar y tener una buena precisión.

Y bueno este sería un resumen de lo que es la transferencia de aprendizaje. Espero que les haya gustado y que lo compartan con quienes crean que pueda interesarles.

Y muchas gracias a todos los que dejan sus reseñas en Apple Podcast, ya que además de ayudar a que el podcast llegue a mas personas, me sirve leer sus comentarios para saber qué cosas les gustan del podcast.

También muchas gracias a los que dejan sus me gusta y comentarios en ivoox.

Dejar recomendación en iTunes



Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *