Asistimos a Data Augmentation, o cómo hacer grandes algoritmos con pocos datos

Un problema habitual en deep learning es la gran cantidad de datos necesaria para el entrenamiento de modelos, lo que podemos solucionar con datos aumentados.

La semana pasada tuvimos la oportunidad de asistir a Data Augmentation, o cómo hacer grandes algoritmos con pocos datos, un evento promovido por Trovit en el que Francisco Rodríguez, Data Scientist en Telefónica y docente en Datahack, nos puso al día en el tema de datos aumentados.

Introducción.

Empezamos con un clásico: gatos y perros. A partir de imágenes correctamente etiquetadas, el reto es entrenar una red que acabará prediciendo si, dada una imagen, se corresponde con un perro o un gato.

A continuación, expone algunos casos conocidos en los que se ha usado deep learning:

  • Google Neural Machine Translation: este motor traduce frases completas haciendo uso de deep learning. En su desarrollo se utilizó como input pares de frases traducidas entre dos idiomas.
  • Street View House Numbers: tiene como utilidad el reconocimiento de dígitos en imágenes reales. Para ello se empleó un algoritmo que partía de imágenes de números de casas obtenidas a través de Google Street View.
  • Imagenet: este proyecto consiste en una extensa base de datos de imágenes. Alrededor de 14 millones de imágenes fueron etiquetadas, con cerca de 20.000 categorías.

Lo que tienen en común estos proyectos es la gran cantidad de datos necesaria para que el modelo vaya aprendiendo de forma automática.

 

Data Augmentation.

Es aquí donde entra la técnica Data Augmentation que, como indica su nombre, nos permite aumentar nuestro dataset de dos formas:

  • Introduciendo perturbaciones en los datos originales. En nuestro ejemplo de gatos y perros, tomando una imagen original centrada, la replicamos  descentrada, invirtiendo ejes…
  • Utilizando distintas distribuciones. Ej: si queremos entrenar un modelo para clasificar imágenes de alta resolución, añadimos imágenes de baja resolución, con ruido… siempre manteniendo la mayor proporción de alta resolución.

 

Casos prácticos.

Seguimos con tres ejemplos prácticos, en los que se ha trabajado con datos aumentados y observamos su repercusión en la mejora de la accuracy (proporción de individuos correctamente clasificados).

1) Reconocimiento automático de matrículas.

Partiendo de un dataset de fotografías reales, en primer lugar se utiliza un algoritmo que reconoce placas de matrícula en cada imagen. Una vez detectada la placa, pasamos a identificar sus caracteres por separado.

Se aplicaron dos métodos de aumento de datos, con nombres bastante representativos de la técnica empleada:

  • Placas Frankenstein: se generan nuevas matrículas a partir de permutaciones de elementos de diferentes imágenes originales.
  • Placas Kandinsky: llamadas así por la similitud de las imágenes resultantes con el estilo del pintor expresionista. Consiste en tratar la imagen como un lienzo en blanco, añadiendo ruido (perturbaciones de la imagen).

Con sólo 200 imágenes originales, añadiendo datos aumentados se consiguió una mejora de la accuracy, con un 90% detectando placas de matrícula y un 97% identificando caracteres.

Detector matrículas

 

2) Corrector ortográfico automático.

La digitalización de textos consiste en, dada una imagen, identificar símbolos o caracteres de un alfabeto para almacenarlos como datos y facilitar su posterior edición. Esta tarea es llevada a cabo por un OCR (Optical Character Recognition), para el que se implementa un corrector.

Los datos aumentados consistirían en añadir frases con ruido (errores de ortografía), de manera que el OCR sea finalmente capaz de predecir el texto original a partir del augmented data.

Habrá que tener en cuenta incorporar a los datos de training la distribución según idioma (ej: si sabemos que un 80% de los textos a predecir son en inglés, un 10% español y un 10% portugués tendremos que respetar estas proporciones al generar los datos aumentados).

Al añadir errores generados a los errores reales, se observa una mejora en la accuracy del 84% al 89%.

Corrector ortográfico

 

3) Clasificador de CV’s.

Los curriculum vitae generalmente se organizan por secciones: datos personales, datos académicos, experiencia… En principio el contenido de estas secciones es independiente y su orden no es relevante.

Para aumentar los datos se generaron permutaciones de las secciones, consiguiendo aumentar la accuracy de un 68% a un 75%.

Clasificador CV

 

Validación de modelos.

Al desarrollar un algoritmo en machine learning, partimos de 3 datasets:

  • Training set: es el conjunto de datos sobre el que se entrena el modelo. Consiste en pares correctamente etiquetados, es decir, un vector de valores y la variable respuesta.
  • Validation set: el modelo ajustado en el paso anterior es usado para predecir la variable respuesta en este segundo dataset. Esto nos permite tener una evaluación no sesgada del modelo. En esta fase podemos aplicar regularización si se observa overfitting (el modelo tiene más capacidad de memorizar los datos de entrenamiento que de aprender de los nuevos).
  • Test set: evaluamos el modelo final ajustado en el training set.

Al emplear data augmentation tendremos 4 datasets, añadiendo al training set el training-validation set, ambos formados por datos reales y aumentados. El validation set y el test set deben proceder de datos reales.

Una consideración a tener en cuenta es que al generar el training-validation set, este debe tener la misma distribución que los datos reales, para evitar introducir sesgos.

Validación de modelos

Aplicamos el algoritmo elegido (random forest, SVM…) a cada uno de los 4 datasets, calculamos accuracy y vemos cómo evoluciona el error.

Además de over y underfitting, podemos detectar data mismatch (diferencia entre distribuciones de datos).

  • Si overfitting> aplicamos regularización o añadimos más datos.
  • Si data mismatch > tomamos una pequeña muestra de datos reales del validation set y analizamos patrones en los q falló el algoritmo, modificando el generador de datos aumentados (ej: demasiado ruido producido por sombras, corregir aumentando brillo).

 

Otros algoritmos.

Tras esto, se hizo una breve revisión de los Generadores de Imágenes Sintéticas y su evolución, consiguiendo cada vez imágenes más realistas.

También se introdujo el tema de Redes Generativas Antagónicas, una clase de algoritmo basado en aprendizaje no supervisado, en el que dos redes neuronales compiten mutuamente. Por un lado tendremos un training set y por otro un generador de imágenes ‘falsas’, que pasan por un discriminador que decide si la imagen es real o generada. Si se consigue engañar al discriminador, aceptando como real una fotografía sintética, es probable que un observador humano también la considere real.

Redes generativas antagónicas

 

Tip: Para finalizar esta interesante ponencia, Francisco nos recomienda hacer iteraciones rápidas, probando algoritmos hasta escoger el mejor candidato y comenzar cuanto antes la fase de aprendizaje.

Autor:

Cooking data at Metriplica.

Leave Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.