La Redes Neuronales Generativas Adversarias conocidas a nivel mundial como GAN -del inglés, Generative Adversarial Networks- se tratan de modelos de deep learning para generar y/o manipular imágenes, fotos, videos y edición de audios. Gracias a la maravillosa mente de Ian Goodfellow, quién junto a otros siete compañeros de la Universidad de Montreal en 2014, escribieron el primer paper sobre Generative Adversal Networks, hoy en día conocemos estas redes neuronales basadas en deep lerning.
Las GANs funcionan con dos redes neuronales: una “generadora” y otra “discriminadora”. Ambas compiten en un constante juego de suma cero donde lo que una red gana, la otra pierde. En otras palabras, la ganancia o pérdida de una de las redes se compensa con la ganancia o pérdida de la opuesta. Desarrollamos un poco más esta idea.
La red neuronal «generadora» produce muestras de aquello que queremos crear (ej. imágenes, textos, sonidos…) con el objetivo de engañar a la red «discriminadora» para que crea que son reales. A su vez, el objetivo de la red «discriminadora» es detectar las falsificaciones analizando el material producido por la red «generadora» y determinando si se ajusta a lo que está buscando. Es decir, identifica si cada instancia de datos que revisa pertenece o no al conjunto de datos de entrenamiento. En palabras de Ian Goodfellow, «es un proceso donde cada una de las redes va mejorando y aprende de su oponente».
Las GAN han logrado grandes avances y ahora pueden producir imágenes falsas muy convincentes de animales, paisajes, rostros humanos, etc. hasta tal punto que han surgido apps que permiten, a cualquier persona con un smartphone, experimentar con esta tecnología. Un ejemplo de esto son las apps que generan imágenes «deep fakes».
Generación de imágenes «deep fakes»
Deep Fake es un concepto relativamente nuevo y que está compuesto por los términos: deep learning y fake. Esto es «aprendizaje profundo», una de las ramas de la Inteligencia Artificial, y la palabra, «falso». Este concepto es bastante acertado ya que la tecnología que genera estos rostros hiperrealistas (o casi hiperrealistas) que no se corresponden con una persona real ya que falsifica (fake) su voz y sus gestos, son modelos de deep learning basados en Redes Neuronales Generativas Adversarias (GAN).
Actualmente existen apps centradas en el «Deep fake» que permiten jugar con imágenes y/o audiovisuales de tal forma que cualquier persona, con tan solo descargarla, pueda tener a su disposición esta manipulación de imágenes. Uno de los primeros ejemplos más famosos de «deep fake» es un vídeo de con imágenes que «falseaba» ser Obama:
Un algoritmo empezó a jugar con imágenes de Obama, y ahí nació la propaganda del futuro: los vídeos manipulados que intentarán alterar (aún más) la realidad.
Deep fake: así será la evolución más temible de las fake news. pic.twitter.com/ltlYbu7Ont
— PAPEL (@Papel_EM) May 8, 2019
Otro ejemplo más reciente ocurrió el verano pasado (2019), con el auge de #FaceAppChallenge: una app que permitía simular qué aspecto podría tener una persona en el futuro en la vejez. Esta app se hizo viral pese a muchas advertencias en diferentes medios off/online sobre el posible «peligro» existente en la privacidad del usuario al aceptar las condiciones en la descarga de la aplicación. Sin embargo, pese a ello, hemos podido ver como se ha hecho de nuevo viral este verano. En esta ocasión, con simulaciones de cómo sería un persona cambiando de sexo, es decir, ver cómo se vería una mujer si fuese hombre o un hombre si fuese mujer.
HILO de políticos españoles cambiados de género?
Pedro Sánchez pic.twitter.com/mPEwcjwee6
— Dromus (@psammodromus) June 12, 2020
.
PyTorch es un framework de Machine Learning de código abierto creado para ser flexible y modular para la investigación, con la estabilidad y el soporte necesarios para el despliegue de producción. PyTorch proporciona un paquete de Python para funciones de alto nivel como el cálculo de tensor (como NumPy) con una fuerte aceleración de GPU y TorchScript para una transición fácil entre el modo «eager» y el modo gráfico. Con la última versión de PyTorch, el framework proporciona ejecución basada en gráficos, capacitación distribuida, implementación móvil y cuantización. La sencillez de su interfaz, y su capacidad para ejecutarse en GPUs (lo que acelera el entrenamiento de los modelos), lo convierten en la opción más asequible para crear redes neuronales artificiales.
Originalmente desarrollado por Facebook AI Research, PyTorch ha sido a su vez una pieza fundamental en el desarrollo de relevantes aplicaciones de Inteligencia Artificial, como el Autopilot de Tesla y el Pyro de Uber. Gracias a su facilidad de uso, PyTorch se ha convertido en uno de los frameworks de Deep Learning más populares del mundo, al que sólo hacen sombra Tensorflow y Keras, ambos respaldados por el patrocinio de Google. En este artículo (en inglés), puedes descubrir las diferencias entre PyTorch y TensorFlow.
¿Por qué PyTorch es el framework de Deep Learning del futuro?
A continuación, te exponemos las diez razones por las que PyTorch es uno de los framework de aprendizaje profucndo más populares a nivel mundial:
1. Python es uno de los lenguajes de programación más populares utilizados por los científicos de datos, para construir modelos de Machine Learning. PyTorch está diseñado para integrarse perfectamente con Python y sus bibliotecas populares como NumPy.
2. Fácil de aprender. PyTorch es más fácil de aprender que otros frameworks de Deep Learning. Esto se debe a que su sintaxis y aplicación son similares a muchos lenguajes de programación convencionales como Python.La documentación de PyTorch también es muy organizada y útil para principiantes. Más adelante os mostraremos recursos para aprender PyTorch.
3. Mayor productividad del desarrollador. PyTorch es muy simple de usar, lo que también significa que la curva de aprendizaje para los desarrolladores es relativamente corta. PyTorch tiene una interfaz Python simple y proporciona una API simple pero potente. PyTorch también se puede implementar fácilmente en Windows y Linux.
4. Debugging (depuración) fácil. Como PyTorch está profundamente integrado con Python, muchas herramientas de depuración de Python también se pueden usar en el código PyTorch. Específicamente, las herramientas pdb e ipdb de Python se pueden usar para este tipo de depuración en PyTorch.
5. Data Parallelism. PyTorch tiene una característica muy útil conocida como paralelismo de datos. Con esta función, PyTorch puede distribuir el trabajo computacional entre múltiples núcleos de CPU o GPU
6. Support de gráfico dinámico. PyTorch admite gráficos computacionales dinámicos, lo que significa que el comportamiento de la red se puede cambiar mediante programación en tiempo de ejecución. Esto facilita una optimización de modelo más eficiente y le da a PyTorch una gran ventaja sobre otros frameworks de aprendizaje automático, que tratan las redes neuronales como objetos estáticos. Con este enfoque dinámico, podemos ver todos y cada uno de los cálculos y saber exactamente lo que está sucediendo. Cuando el flujo de datos y las operaciones correspondientes se definen en tiempo de ejecución, la construcción del gráfico computacional ocurre dinámicamente. Esto se hace con la ayuda de la clase de autogrado implícitamente.
7. PyTorch también proporciona un nuevo front-end híbrido. Esto significa que tenemos dos modos de operación, a saber, el modo «eager» y el modo gráfico. Generalmente utilizamos el modo «eager» para la investigación y el desarrollo, ya que este modo proporciona flexibilidad y facilidad de uso. Y generalmente utilizamos el modo gráfico para la producción, ya que esto proporciona una mejor velocidad, optimización y funcionalidad en un entorno de tiempo de ejecución C ++.
8. Bibliotecas útiles. Una gran comunidad de desarrolladores ha creado muchas herramientas y bibliotecas para extender PyTorch. La comunidad también está apoyando el desarrollo en visión por computadora, aprendizaje de refuerzo y mucho más.
9. PyTorch tiene soporte nativo de ONNX y puede exportar modelos en el formato estándar de intercambio de red neuronal abierta. Esto permitirá que los modelos basados en PyTorch accedan directamente a las plataformas y tiempos de ejecución compatibles con ONNX.
10. PyTorch también es bien recibido por las principales plataformas en la nube, lo que permite a los desarrolladores e ingenieros realizar trabajos de capacitación a gran escala en GPU con PyTorch. El soporte en la nube de PyTorch también proporciona la capacidad de ejecutar modelos en un entorno de producción.
Recursos para aprender PyTorch
Gracias a Internet, podemos acceder a un gran numero de recursos gratuitos para aprender PyTorch. La propia web de PyTorch ofrece una serie de herramientas -en inglés- como son:
Sin embargo si necesitas mejor videotutoriales en español, existe el canal de YouTube Not CSV el cual posee una interesante introducción a PyTorch dividida en dos vídeos de una hora cada uno.
Por otro lado, existen otros recursos formativos muy útiles fuera de la web de PyTorch como:
Actualmente, miles de millones de productos se venden online y existen numerosas plataformas e-commerce que los venden. Identificar y combinar determinados productos para diversos fines, como para la comparación de precios, se convierte en un desafío para el sector del comercio electrónico, ya que no existen identificadores únicos y globales para cada producto. En este punto es donde entra en juego la Inteligencia Artificial y el Machine Learning.
Existen diversos portales webs enfocados a la comparación de precios para obtener las mejores ofertas en un determinado producto como la contratación de seguros de coche. Estos comparadores de precios están enfocados al cliente pero… ¿y si somos una tienda online y queremos comparar los precios de los productos de la competencia con los nuestros? ¿Cómo podemos abordarlo?
Antes de profundizar, un breve aspecto a tener en cuenta: el naming y descripción de los productos no poseen un formato estándar. Cada tienda online incluye estos datos (marca, titulo y descripción del producto) en su web de diferente forma para un mismo producto. Asimismo, las imágenes que se muestran del producto tampoco son estandarizadas y pueden aparecer con diferente perspectiva, color, claridad, etc. Evidentemente, sí existen identificadores generalizados para algunos productos como son las pulgadas de un televisor, pero es posible que según el portal de venta online no lo mencionen, lo incluyan en el titulo del producto o lo incluyan en la descripción.
Por tanto, una persona de forma manual puede visitar diferentes tiendas online y verificar que éstas coinciden con los mismos productos. No obstante, el problema surge cuando no es viable realizar esta labor de forma manual porque el coste sería muy elevado. Es aquí donde entra en juego la Inteligencia Artificial y el Machine Learning para automatizar el proceso de Product Matching.
¡La Inteligencia Artificial y Machine Learning al rescate!
Inicialmente, en las soluciones de machine learning para la coincidencia de productos, el proveedor de soluciones tiene que construir primero una base de datos de miles de millones de productos. Esto se hace mediante la recopilación de información a través de rastreos web y feeds (crawlers).
Una vez se tiene la base de datos, se realiza el proceso de Product Matching. Un producto puede identificarse utilizando su título, su descripción, imágenes y lista de atributos o especificaciones. En muchos casos, el título del producto en sí mismo proporcionará mucha información y el sistema tiene que aprender a ordenar el nombre del producto (por ejemplo, el modelo de marca) de los atributos (pulgadas, resolución, etc. Toda esta información debe extraerse, clasificarse y colocarse en las categorías apropiadas: modelo de televisor, versión, resolución, etc.
Para cada comparación, el sistema pasa por muchos pasos y verificaciones. Se busca un número de identificación único, una prueba de similitudes de palabras clave, normalización de marca y coincidencia (por ejemplo, LG es lo mismo que Life´s Good), normalización de atributo y coincidencia (32″es lo mismo que 32 pulgadas, 32 pulg. , 32 pulgadas), coincidencia de imágenes, etc.
Figura 1. Ejemplo de Televisor LG en dos portales webs diferentes y cuyo título y descripción no aparecen estandarizados.
Todo esto es un proceso complicado, y existen diferentes soluciones Product Matching que se pueden emplear con diferentes técnicas pero la ventaja es que las redes neuronales y los sistemas de Product Matching aprenden con el tiempo, incluso de sus errores, y así mejoran con cada uso.
Por otro lado, el procesamiento de las imágenes de productos puede proporcionarnos información relevante que no aparece reflejado en el titulo y/o descripción del producto. En la figura 2, podemos ver cómo detectar un mismo producto (ej. Nata Pascual) en dos supermercados diferentes (supermercado A, supermercado B). En el supermercado B tenemos dos productos de Nata Pascual y queremos ver cuál de los dos hace «match» con el supermercado A. Si atendemos únicamente a las taxonomías de la descripción, ambos productos del supermercado B coinciden, en parte, con la descripción del proudcto del supermercado A. Sin embargo, ayudándonos de la imagen en lugar de la descripción se detecta cual de los dos productos del supermercado B coincide con el del supermercado A. Detectar este tipo de “anomalías” es bastante complicado, sin embargo, la herramienta netPrecie de ITELLIGENT a través de técnicas de Deep Learning detecta este tipo de diferencias en imágenes para aportar una mayor optimización al sistema de Product Matching.
Figura 2. Ejemplo de Product Matching a través del procesamiento imágenes con técnica de Deep Learning (netPrice)
El sistema automatizado de Product Matching desarrollado por ITELLIGENT se llama netPrice. Esta herramienta de monitorización de precios permite enlazar tu catálogo de productos con los de tu competencia a través de técnicas de Inteligencia Artificial y Machine Learning para asegurar la correcta analítica de precios. ¿Quieres saber más sobre nuestra herramienta? ¿Deseas tener una demo de netPrice?
¡Escríbenos!