febrero 16, 2019 6:00 pm

Jesús

?? Read in English

Todos sabemos que crear imágenes de la nada es divertido (además de que nos permite alardear frente a nuestros amigos). No obstante, no son muchos los problemas de ingeniería que requieran de imágenes sintéticas para poder ser resueltos.

¿Sabes cuál sigue siendo el principal contratiempo que nos encontramos en todas las ramificaciones y encarnaciones de machine learning? ¡No hay suficientes datos!

De hecho, buena parte de los problemas que podemos atacar (o no) vienen determinados por la cantidad de información etiquetada disponible en ese dominio.

¿Qué tal si queremos estudiar en profundidad un fenómeno muy espaciado en el tiempo? ¿Qué hay de aquellas enfermedades o condiciones que sólo le ocurren a una diminuta parte de la población, pero que aún así impactan negativamente la vida de seres humanos?

La escasez de datos tiene que dejar de ser una justificación para no acercarnos a estas áreas de oportunidad.

Curiosamente, las GANs nos pueden ser de gran ayuda en estos casos…

Aprendizaje Semi-Supervisado

Oye, confío en ti. Sé que eres una persona inteligente y aplicada, por lo que no te aburriré con otra explicación de lo que el aprendizaje supervisado y no supervisado son. Sólo para refrescar tu memoria: Si tienes data etiquetada, entonces es aprendizaje supervisado; si no, posiblemente sea aprendizaje no supervisado, y el papel que juega machine learning va más allá de generar predicciones.

¿Sabías que hay un punto medio entre estos dos extremos? Se llama aprendizaje semi-supervisado y, como su nombre lo indica, combina técnicas de ambos mundos para producir clasificadores o regresores cuando la insuficiencia de datos es un factor a tener en cuenta.

Típicamente, obtener data sin etiquetar es mucho más fácil y económico que producir conjuntos de datos etiquetados. Básicamente, el Internet es una fuente (virtualmente) infinita de data no etiquetada. Por tal motivo, tener un modelo capaz de sacar provecho de ambos tipos de data es increíblemente útil.

GANs y el Aprendizaje Semi-Supervisado

En este y este ejemplo nos hemos centrado en crear el generador de imágenes más fidedigno posible. Por tal motivo, no reparamos en desechar el discriminador cuando nuestro generador hubiese alcanzado un nivel de habilidad satisfactorio.

En otras palabras, el discriminador era una herramienta, un medio para otro fin.

En esta ocasión, invertiremos los papeles: Nuestro enfoque estará en crear un clasificador lo más potente posible usando el generador como un instrumento para alcanzar esta meta.

Lo primero que debemos hacer es extender el discriminador para que aparte de decir si una imagen es real o falsa, nos diga también la clase de la misma. Para ello, en vez de utilizar una función de activación sigmoid, podemos utilizar un softmax con N + 1 posiciones, donde N corresponde al número de clases, y la posición extra nos dice si la imagen es verdadera o no.

Veamos en el siguiente notebook cómo implementar una GAN para aprendizaje semi-supervisado.

Como el generador es una herramienta, veremos que a pesar de que el clasificador alcanza suficiente destreza en los datos de prueba, las imágenes generadas siguen siendo un poco indistinguibles o ambiguas. Esto se debe a que generar imágenes coherentes y reconocibles es una tarea más complicada que alcanzar un desempeño decente en una tarea de clasificación.

¿Qué te parece este nuevo rol para las GANs? ¿Te llama más la atención o prefieres su lado más jocoso de crear imágenes divertidas? Déjame un comentario con tu respuesta.

¡Nos vemos!

(El código usado en este artículo está disponible en el siguiente repositorio).

Sobre el Autor

Jesús Martínez es el creador de DataSmarts, un lugar para los apasionados por computer vision y machine learning. Cuando no se encuentra bloggeando, jugando con algún algoritmo o trabajando en un proyecto (muy) cool, disfruta escuchar a The Beatles, leer o viajar por carretera.