viernes, 25 de agosto de 2017

Amarillismo en la inteligencia artificial

En este presente año 2017, se ha visto una explosión en los medios respecto a la inteligencia artificial y se ha vuelto una moda que muchos intentan adoptar, lamentablemente su mayor difusión se ha visto acompañada de exageraciones, creación de noticias falsas, especulaciones de robots asesinos ,o de agentes de inteligencia artificial que "cobran vida" y empiezan a comunicarse entre si en un lenguaje que ellos mismos inventaron.  

Este ultimo ejemplo se concretó y  ha sido muy popular en las ultimas semanas, al punto de convertirse viral y ser publicado en múltiples medios ,revistas, periódicos, noticieros etc. Incluso en medios no enfocados a tecnología y ciencias, estamos hablando de una noticia que en algunos medios decía algo similar a :

"Facebook apaga a 2 de sus agentes de inteligencia artificial que cobraron vida y empezaron a comunicarse en un lenguaje que ellos mismos crearon." , esta noticia es exageradamente falsa y nosotros la catalogamos de amarillismo , creada(y compartida) por medios que carecen de conocimiento en la materia ,de los alcances,avances y estado actual de la misma y que se dejan llevar sin investigar o que solo buscan subirse al tren y hablar de un tema que se ha vuelto una moda en el actual año, generar temor en las personas y de esta manera obtener mayor alcance y difusión . Las personas que escribimos este blog seguimos en redes sociales, blogs y sitios de ciencias y tecnología a algunos de los pioneros e investigadores mas importantes de IA y algunos de los comentarios de ellos luego de que este rumor se convirtiera viral fueron:

Yann LeCun,director de ingeligencia artificial en facebook:   Indicó que muchos en su equipo y de la comunidad de investigadores de IA sentían verguenza ajena(facepalming) al ver la noticia,aclaró que FB no había apagado a los agentes por que cobraran vida e inventaran un lenguaje, fue por que simplemente no funcionaban ,y catalogó a estas noticias de alarmistas, y de ser carnada de clicks e incentivó a leer,informarse y preguntar a la gente que se dedica o conoce el tema. 

Ian Goodfellow,investigador en Google,OpenAI y creador del ultimo avance en IA(GANs): Compartió un artículo titulado "No,facebook no entro en pánico y apago un programa que se estaba volviendo peligrosamente inteligente", en su publicación otros investigadores comentaban "Estoy seguro que estamos lejos de eso", "Luego de leer por 30 segundos, lo catalogue como ridículo ".

Lo mas triste de esto, es que muchos conocedores y profesionales de ciencias de la computación y gente que se auto-nombra conocedores de IA han sido engañados y han compartido la noticia, en lugar de desmentirlo e informar a gente afuera del ámbito.

Una analogía que me gusta hacer respecto a esto(utilizando como ejemplo vehículos que se manejan solos es) :
  • Antes de 2017:  investigadores vuelven al laboratorio y mesa de diseño, luego de que el algoritmo del vehículo fallara y cruzara un semáforo en rojo.
  • En 2017: Empresa automovilística se ve obligada a apagar su vehículo de inteligencia artificial,luego de que cobrara vida y rebeldemente ignorara un semáforo con el objetivo de dañar a su tripulante.
Personalmente llevo varios años en el tema aun antes de su actual "boom"(en mi ultimo año antes de entrar a la universidad, compre mi primer libro(fotocopias) del tema aun que no entendía nada, en 2013 publique un articulo sobre sistemas expertos en mi blog y fui multado en la biblioteca de mi universidad por no devolver el famoso libro de IA de Peter Norvig y en 2014 empece a auto-enseñarme machine learning y deep learning)y sigo de cerca las publicaciones de algunas de las personas mas importantes del tema(como Andrew NG o Yann Lecun)y he experimentado y desarrollado varios agentes de IA y puedo decir que el comportamiento que exhibieron los agentes de FB se da cuando el sistema  esta fallando, su arquitectura es incorrecta, sus hyperparametros deben ser mejorados, o su data de entrenamiento es poca o de baja calidad y NO SE DEBE a que cobran vida y están inventando su propio idioma, aun estamos muy lejos de esto, no olvidemos que la inteligencia artificial se reduce a algoritmos, modelos matemáticos, estadísticos y problemas de optimización.

Como ejemplo de uno de mis proyectos, comparto el siguiente repositorio que consiste en un bot que luego de ser entrenado con literatura de horror de 2 de mis autores favoritos "aprende" a generar nueva literatura que fusiona el estilo de ambos, se puede ver que en los primeros "commits" genera texto completamente sin  sentido(como el de los agentes de FB) y luego esto mejora conforme se experimenta con la arquitectura,hiperparametros y preprocesamiento de datos:

Espero con este articulo poder aportar un poco a clarificar y desmentir esta noticia amarillista y alarmista.

Autor: Luis Leal

lunes, 2 de enero de 2017

Google Adwords API Wrapper


Este post esta dirigido a software y data engineers o developers en general que deban utilizar la API de google adwords para realizar consumo de datos de google.

Muchas veces , las APIs de google brindan gran poder y flexibilidad al desarrollador pero esto acompañado de complejidad o poca claridad de implementación . Este es el caso de la API de Google adwords , para el escenario especifico de descargar datos de google desde una aplicación o un job programado automático, esta API impone cierta complejidad . Por esta razon creamos un Wrapper orientado a objetos en python que solo necesita una operación luego de instanciar un objeto:

descargar()


Esta operación recibirá de parametros la data que queremos descargar, las fechas deseadas, el formato del archivo de salida , y un flag booleano para indicar si se desea comprimir o no. Respecto al archivo de configuración googleads.yaml ,solo necesitamos indicar su ubicación como parametro al momento de instanciar el objeto(o bien usar el parametro default de Python el cual asumirá que el archivo se encuentra en el directorio home del usuario). De esta manera abstraemos la complejidad de programacion de la API de google adwords a 2 pasos(en pseudocodigo)
  1. Crear instancia de wrapper enviando de parámetro la ubicación del archivo de configuración.
  2. Ejecutar llamada a operación de descarga de datos enviando de parametro la data deseada, fechas requeridas, y formato de salida esperado.
Este wrapper puede ser integrado facilmente a cualquier aplicación, job automático, herramientas de integración de data(como SAP Data Services o Pentaho Data integration).

El codigo y un ejemplo de uso puede ser encontrado en el repositorio de github:


Autor: Luis Leal