Del trabajo elaborado por CODY NASH de la Empresa Toptal: Create Data from Random Noise with Generative Adversarial Networks, empresa con la que Gestión Digital mantiene una alianza de colaboración.
El mundo actual, aunque muchos no nos demos cuenta, se está moviendo en torno a los datos (Big Data), y lo hace en todos los campos de la actividad humana, se hace con el apoyo de las Maquinas de Aprendizaje o Machine Learning (ML), y apoyándose con la Inteligencia Artificial (AI). El reto es obtener el mayor número (Miles y mejor aun millones) de datos que permitan conocer y entender estadísticamente un en sin fín de fenómenos, culturales, sociales, económicos, de salud, comerciales, etc. Pero no es tarea fácil conseguir las cantidades de datos que permitan hacer conclusiones válidas. De ahí la incesante búsqueda de medios para lograr la recolección, ordenación, síntesis y utilización de datos. Cody Nash nos muestra la forma de utilizar una técnica para conseguir más datos, es a través de Redes de Adversarios Generativos o GAN por sus siglas en inglés.[/vc_column_text][vc_custom_heading text=”¿Qué es GAN?” el_class=”title__heading”][vc_column_text css_animation=”top-to-bottom”]Un GAN es un algoritmo de aprendizaje automático (Learning machine) donde una red neuronal genera los datos mientras que otra determina si la salida parece real. Las dos redes compiten entre sí para mejorar el realismo de los datos generados.
GAN es un tipo de red neuronal que puede generar nuevos datos desde cero. Puede alimentarse con un poco de ruido aleatorio como entrada, y puede producir imágenes realistas de por ejemplo habitaciones, o pájaros, o lo que sea y generar datos para lo que se haya preparado.
Algo en la que todos los científicos pueden estar de acuerdo es que necesitamos más datos. Los GAN, que se pueden usar para producir nuevos datos en situaciones de datos limitados, pueden resultar realmente útiles. En ocasiones, los datos pueden ser difíciles de obtener, costosos y llevar mucho tiempo generarlos. Y además, para que sea útiles, los nuevos datos deben ser lo suficientemente realistas, de tal forma que cualquier información que obtengamos de los datos generados se aplique a los datos reales. Si estás entrenando a un gato para cazar ratones, y estás usando ratones falsos, es mejor que te asegures de que los ratones falsos realmente se vean como ratones.
Otra forma de ver esto es que los GAN están descubriendo una estructura en los datos que les permite hacer datos realistas. Esto puede ser útil si no podemos ver esa estructura por nuestra cuenta, o no podemos obtenerlas con otros métodos.[/vc_column_text][vc_custom_heading text=”¿Por qué GANs?” el_class=”title__heading”][vc_column_text css_animation=”top-to-bottom”]Las redes de adversarios generativas (GAN) son una arquitectura de red neuronal que ha mostrado mejoras impresionantes sobre los métodos generativos previos, como los autoencoders variacionales o las máquinas restringidas de Boltzmann. Los GAN han podido generar imágenes más realistas (por ejemplo, DCGAN), que permiten la transferencia de estilo entre imágenes (ver aquí y aquí), generan imágenes a partir de descripciones de texto (StackGAN) y aprenden de conjuntos de datos más pequeños a través del aprendizaje semi-supervisado. Debido a estos logros, están generando mucho interés en los sectores académico y comercial.
El Director de Investigación de AI en Facebook, Yann LeCunn, incluso los ha llamado el desarrollo más emocionante en el aprendizaje automático en la última década[/vc_column_text][vc_custom_heading text=”Lo Básico” el_class=”title__heading”][vc_column_text css_animation=”top-to-bottom”]Piensa en cómo aprendes: intentas algo, obtienes retroalimentación. Ajustas tu estrategia e intentas de nuevo.
La retroalimentación puede venir en forma de crítica, o pena o ganancia. Puede venir de tu propio juicio de lo bien que lo hiciste. A menudo, la retroalimentación más útil es la retroalimentación que proviene de otra persona, porque no es solo un número o sensación, sino una evaluación inteligente de qué tan bien has realizado la tarea.
Cuando una computadora está entrenada para una tarea, el ser humano suele proporcionar la retroalimentación en forma de parámetros ajustados o algoritmos. Esto funciona bien cuando la tarea está bien definida, como aprender a multiplicar dos números. Puede decir fácilmente y exactamente a la computadora que estuvo mal.
Con una tarea más complicada, como crear una imagen de perro, se hace más difícil proporcionar retroalimentación. ¿La imagen es borrosa, se parece más a un gato, o no se parece a algo en absoluto? Se podrían implementar estadísticas complejas, pero sería difícil capturar todos los detalles que hacen que una imagen parezca real.
Un humano puede dar alguna estimación, porque tenemos mucha experiencia evaluando la información visual, pero somos relativamente lentos y nuestras evaluaciones pueden ser muy subjetivas. En su lugar, podríamos entrenar una red neuronal para aprender la tarea de discriminar entre imágenes reales y generadas.
Luego, al permitir que el generador de imágenes (también una red neuronal) y el discriminador se turnen aprendiendo uno del otro, pueden mejorar con el tiempo. Estas dos redes, jugando este rol, son una red adversaria generativa o generativa adversaria.
Puede escuchar al inventor de GAN, Ian Goodfellow, hablar sobre cómo en una discusión en un bar sobre este tema, lo llevó a una noche de codificación febril que resultó en el primer GAN. Y sí, reconoce al bar su logro. Puedes obtener más información sobre los GAN en el blog de Ian Goodfellow sobre este tema.
Hay una serie de desafíos cuando se trabaja con GAN. Capacitar a una sola red neuronal puede ser difícil debido a la cantidad de opciones involucradas: Arquitectura, funciones de activación, método de optimización, tasa de aprendizaje y tasa de abandono, por nombrar solo algunas.[/vc_column_text][vc_single_image image=”31789″ img_size=”full” alignment=”center”][vc_column_text css_animation=”top-to-bottom”]GAN duplica todas esas opciones y agrega nuevas complejidades. Tanto el generador como el discriminador pueden olvidar los trucos que usaron anteriormente en su entrenamiento. Esto puede llevar a que las dos redes se vean atrapadas en un ciclo estable de soluciones que no mejoran con el tiempo. Una red puede dominar a la otra red, de modo que ninguno puede aprender más. O bien, el generador puede no explorar gran parte del espacio de solución posible, solo lo suficiente para encontrar soluciones realistas. Esta última situación se conoce como colapso de modo.
El colapso de modo se da cuando el generador solo aprende un pequeño subconjunto de los posibles modos realistas. Por ejemplo, si la tarea es generar imágenes de perros, el generador podría aprender a crear solo imágenes de pequeños perros marrones. El generador habría perdido todos los otros modos que consisten en perros de otros tamaños o colores.
Se han implementado muchas estrategias para abordar esto, incluida la normalización de lotes, la adición de etiquetas en los datos de capacitación o el cambio de la forma en que el discriminador juzga los datos generados.
Las personas han notado que agregar etiquetas a los datos, es decir, dividirlos en categorías, casi siempre mejora el rendimiento de los GAN. En lugar de aprender a generar imágenes de mascotas en general, debería ser más fácil generar imágenes de gatos, perros, peces y hurones, por ejemplo.
Quizás los avances más importantes en el desarrollo de GAN han llegado en términos de cambiar la forma en que el discriminador evalúa los datos, así que echemos un vistazo más de cerca a eso .En Gestión Digital podemos ayudar a lograr campañas perfectas en Facebook