Tag: Deep Learning

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:

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.

.

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.

learning pytorch

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:

  • La guía de referencia de la API: https://pytorch.org/docs/stable/index.html
  • Videotutoriales de 60 minutos: https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html
  • Tutoriales: https://pytorch.org/tutorials/
  • Recetas de ejemplos de códigos: https://pytorch.org/tutorials/recipes/recipes_index.html
  • Manual: Deep Learning with PyTorch

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:

  1. ALGORITMO.  En Ciencias de la Computación, un algoritmo es un conjunto de pasos para realizar una tarea. En otras palabras, una secuencia lógica  y con instrucciones que forman una fórmula matemática o estadística para realizar el análisis de datos.
  2. ANÁLISIS DE SENTIMIENTO. El análisis de sentimiento se refiere a los diferentes métodos de lingüística computacional que ayudan a identificar y extraer información subjetiva del contenido existente en el mundo digital. Gracias al análisis del sentimiento, podemos ser capaces de extraer un valor tangible y directo, como puede ser determinar si un texto extraído de la red Internet contiene connotaciones positivas o negativas.
  3. ANÁLISIS PREDICTIVO. El análisis predictivo pertenece al área de la Analítica Empresarial. Se trata de utilizar los datos para determinar que puede pasar en el futuro. La AP permite determinar la probabilidad asociada a eventos futuros a partir del análisis de la información disponible (presente y pasada). También permite descubrir relaciones entre los datos que normalmente no es detectada con un análisis menos sofisticado. Técnicas como la minería de datos (data mining) y los modelos predictivos son utilizados.
  4. ANALÍTICA EMPRESARIAL. La Analítica Empresarial comprende los métodos y las técnicas que se utilizan para recopilar, analizar e investigar el conjunto de datos de una organización, lo cual genera conocimiento que se transforma en oportunidades de negocio y mejora la estrategia empresarial. AE permite una mejora en la toma de decisiones ya que éstas se basan en la obtención de datos reales y tiempo real y permite conseguir objetivos empresariales a partir del análisis de estos datos.
  5. BIG DATA.  Actualmente nos encontramos en un entorno en el que cada día se generan trillones de bytes de información. A esta enorme cantidad de datos producidos día a día, la denominamos Big Data. El crecimiento de los datos provocados en Internet y otras áreas (Ej. Genómica) hacen necesarias nuevas técnicas para poder acceder y utilizar estos datos. Al mismo tiempo estos grandes volúmenes de datos ofrecen nuevas posibilidades de conocimiento y nuevos modelos de negocio. En particular, en Internet, este crecimiento comienza con la multiplicación en el número de webs comenzando los buscadores (ej. Google) a buscar nuevas formas de almacenar y acceder a estos grandes volúmenes de datos. Esta tendencia (blogs, redes sociales, IoT …) está provocando la aparición de nuevas herramientas de Big Data y la generalización de su uso.
  6. BUSINESS ANALYTICS (Analítica Empresarial). La Analítica Empresarial o Business Analytics permite conseguir los objetivos empresariales, a partir del análisis de datos. Básicamente permite detectar tendencias y realizar pronósticos a partir de modelos predictivos y utilizar estos modelos para optimizar los procesos de negocio.
  7. BUSINESS INTELLIGENCE (Inteligencia de Negocio). Otro concepto relacionado con la AE es la Inteligencia Empresarial (IE) centrada en el uso de los datos de una empresa para facilitar también la toma de decisiones y anticipar acciones empresariales. La diferencia con la AE es que la IE es un concepto más amplio, no solo se centra en el análisis de datos sino que éste es un área dentro de la IE. Es decir, la IE se trata de un conjunto de estrategias, aplicaciones, datos, tecnología y arquitectura técnica entre las que se encuentra la AE; y todo ello, enfocado a la creación de nuevo conocimiento a través de los datos existentes de la empresa
  8. DATA MINING o minería de datos. Data Mining (minería de datos) es también conocida como Knowledge Discovery in database (KDD). Es comúnmente definida como el proceso para descubrir patrones útiles o conocimientos a partir de fuentes de datos tales como Bases de Datos, textos, imágenes, la web, etc.  Los patrones deben ser válidos, potencialmente útiles y entendibles. La minería de datos es un campo multidisciplinar que incluye: aprendizaje automático, estadísticas, sistemas de base de datos, inteligencia artificial, Information Retrieval, visualización de la información, … El objetivo general del proceso de minería de datos consiste en extraer información de un conjunto de datos y transformarla en una estructura comprensible para su uso posterior.
  9. DATA SCIENCE. La oportunidad que los datos ofrecen para generar nuevo conocimiento requiere de técnicas sofisticadas de preparación de estos datos (estructuración) y análisis de los mismos. Así en Internet, sistemas de recomendación, traducción automática y otros sistemas de Inteligencia Artificial se basan en técnicas de Data Science o Ciencia de datos.
  10. DATA SCIENTIST. El data scientist, como su propio nombre indica, es un experto en la Ciencia de Datos (Data Science). Su trabajo se centra en extraer conocimiento a partir de grandes volúmenes de datos (Big Data) extraídos de diversas fuentes y múltiples formatos para dar respuesta a las cuestiones que se planteen.
  11. DEEP LEARNING o aprendizaje profundo es una técnica dentro del machine learning basado en arquitecturas neuronales. Un modelo basado en deep learning puede aprender a realizar tareas de clasificación directamente a partir de imágenes, texto o sonido, etc. Sin necesidad de intervención humana para la selección de características, esto se puede considera la principal característica y ventaja del deep learning, llamada “feature discovering”. Pueden, además, poseer una precisión que supera al ser humano.
  12. GEOMARKETING. El análisis conjunto de los datos demográficos, económicos y geográficos posibilita estudios de mercado para rentabilizar las estrategias de marketing. El análisis de este tipo de datos se puede llevar a cabo a través del Geomarketing. Tal como su propio nombre indica, Geomarketing es una confluencia entre geografía y marketing. Se trata de un sistema integrado de información -datos de diversa índole-, métodos estadísticos y representaciones gráficas orientados a dar respuestas a cuestiones de marketing de forma rápida y sencilla.
  13. INTELIGENCIA ARTIFICIAL. En computación se trata de programas o bots diseñados para realizar determinadas operaciones que se consideran propias de la inteligencia humana. Se trata de hacer que éstos sean tan inteligentes como un humano. La idea es que perciban su entorno y actúen en base a ello, centrado en el auto-aprendizaje, sean capaces  de reaccionar ante nuevas situaciones.
  14. INTELIGENCIA ELECTORAL. Este nuevo término “Inteligencia Electoral (IE)” es la adaptación de modelos matemáticos y de Inteligencia Artificial a las peculiaridades de una campaña electoral. El objetivo de esta inteligencia es la obtención de una ventaja competitiva en los procesos electorales, ¿sabes cómo funciona?
  15. INTERNET OF THINGS (IoT). Este concepto, Internet de las Cosas, fue creado por Kevin Ashton y hace referencia al ecosistema en el que los objetos cotidianos están interconectados a través de Internet.
  16. MACHIEN LEARNIN (Aprendizaje automático). Este término hace referencia a la creación de sistemas a través de la Inteligencia Artificial,  donde lo que realmente aprende es un algoritmo, el cual supervisa los datos con la intención de poder predecir comportamientos futuros.
  17. MINERÍA WEB. La minería web tiene como objeto descubrir información útil o el conocimiento (KNOWLEDGE) procedente de la estructura de hipervínculo web, contenido de la página y datos de usuario. Aunque la minería web utiliza muchas técnicas de minería de datos, no es meramente una aplicación de técnicas de minería de datos tradicionales, debido a la heterogeneidad y la naturaleza semi-estructurada o no estructurada de los datos de la web. La minería web o web mining comprende una serie de técnicas encaminadas a obtener inteligencia a partir de datos procedentes de la web. Aunque las técnicas utilizadas tienen su raíz en las técnicas de data mining o minería de datos, presentan características propias debido a las particularidades que presentan las páginas webs.
  18. OPEN DATA. El Open Data es una práctica que tiene la intención de disponer de unos tipos de datos de forma libre para todo el mundo, sin restricciones de derecho de autor, patentes u otros mecanismos. Su objetivo es que estos datos puedan ser consultados, redistribuidos y reutilizados libremente por cualquiera, respetando siempre la privacidad y seguridad de la información.
  19. PROCESAMIENTO DEL LENGUAJE NATURAL (PLN). Del procesamiento conjunto de la ciencia computacional y la lingüística aplicada, nace el Procesamiento de Lenguaje Natural (PLN o NLP en inglés), cuyo objetivo no es otro que el de hacer posible la compresión y procesamiento asistidos por ordenador de información expresada en lenguaje humano, o lo que es lo mismo, hacer posible la comunicación entre personas y máquinas.
  20. PRODUCT MATCHING. El Product Matching es un área perteneciente a Data Matching o Record Linkage encargada de identificar automáticamente aquellas ofertas, productos o entidades en general, que aparecen en la web procedente de diversas fuentes, aparentemente de forma distinta e independiente, pero que hacen referencia a una misma entidad real. En otras palabras, el proceso de Product Matching consiste en relacionar para distintas fuentes aquellos productos que son el mismo.