neural-pathways-221718_640

Llevamos ya algún tiempo escuchando hablar de Machine Learning, Deep Learning, Decision Machines, APIs Predictivos… conceptos éstos que no es que nos vayan a cambiar la vida… ya nos la están cambiando.

Históricamente hemos considerado el software como algo capaz de hacer tareas repetitivas y mecánicas procesando una gran cantidad de información (por eso se llama “informática”) de una manera que supera con mucho la capacidad humana… tareas como llevar una facturación o generar las nóminas de una gran empresa.

Históricamente, también hemos considerado a las máquinas como “tontas”, incapaces de algo tan simple para cualquier persona como reconocer un objeto cotidiano como un tenedor o simplemente la cara de un amigo. En definitiva, para este último tipo de cosas las máquinas eran prácticamente inútiles.

Aunque bueno, si hacemos caso a las películas de policías y espías, la posibilidad de reconocer a una persona por la calle a través de las omnipresentes cámaras, era algo que ya nos resultaba familiar. Y no dudo que las grandes agencias de seguridad e inteligencia hayan dispuesto de esta tecnología desde hace décadas, pero dejando a un lado lo que podría haber sido realidad, sospecha o fantasía, el hecho incontrovertible de hoy es que esta tecnología existe… y lo que es más increíble todavía: está al alcance de todos… y lo está a un precio ridículo.

Y la prueba más evidente de todo esto es usar simplemente la app de Google Photos… como por arte de magia, cualquier palabra que introduzcas en su buscador, desde “tenedor” hasta “árbol de navidad”… ahí están, las fotos que contienen estos objetos. ¿Cómo es posible?… con dos palabras: Machine Learning.

¿Qué es Machine Learning?

Sin entrar en mucho detalle, porque realmente no podría, este concepto es una parte de la Inteligencia Artificial que ha evolucionado a partir del reconocimiento de patrones y los algoritmos de aprendizaje. Dicho de otro modo, mediante esta disciplina se estudian y construyen algoritmos capaces de aprender de los datos disponibles para hacer predicciones. Es decir algo que suena un poco proverbio oriental del estilo de “conoce el pasado para conocer el futuro”.

Una de las implementaciones más viejunas de esto son las redes neuronales. Una especie de imitación del que se supone el funcionamiento del cerebro humano (aunque creo que realmente no hay nadie hoy en día que sepa como funciona). Todavía me acuerdo de una práctica que hicimos con esto en la universidad para reconocer matrículas de coches a partir de fotos de relativamente mala calidad… y funcionaba.

El concepto sigue siendo el mismo a grandes rasgos:

  1. Necesitas por una parte la implementación de un algoritmo que un grupo de ingenieros y matemáticos muy listos ya han pensando.
  2. En segundo lugar, necesitas un sitio donde ejecutar el entrenamiento del monstruo y donde puedas hacerle preguntas… porque al fin y al cabo, para eso sirve, para que pueda predecir algo a partir de lo que ha aprendido.
  3. En tercer lugar, necesitas datos, muchos datos… para enseñar al monstruo come galletas que es el Machine Learning. Es decir, hay que pasarle por ejemplo una foto con una matrícula y decirle “lo que ves aquí es la matrícula XXXXX” si queremos que reconozca matrícula. Hay que pasarle un ejemplo de email de spam si queremos implementar un filtro de este tipo…. y así con miles o millones de ejemplos.

Y la mejor de todo es que, como desarrolladores, ya lo tenemos disponible y a un coste muy bajo los dos primeros puntos. Para el tercero, los datos, podremos obtenerlos de nuestra empresa como un listado de órdenes de compra, incidencias de usuarios, peticiones, etc. etc. O también, dependiendo del tipo de proyecto, podemos obtener datos de dominio público y/o combinados con APIs de terceros que nos pueden proporcionar información sobre productos, sitios, etc. etc.

Con todo esto, no tenemos disculpa para subirnos al carro de lo que en palabras de Sundar Pichai, CEO de Google, ha calificado como “la vía de transformación principal que nos está llevando a repensar todo lo que hacemos“.

Aplicando Machine Learning al mundo del turismo… y más allá

Captura de pantalla 2016-01-23 a las 17.55.34

Y como hay que predicar con el ejemplo, hoy ya puedo anunciar que, después de algunos meses trabajando con la complicidad de la noche, hemos desarrollado un “machine learning as a service” en el ámbito de la meteorología, con aplicaciones en el sector del turismo, entre otros.

Es un proyecto desarrollado junto a mi socio José Luis Gallego (@joseluisgv) para la empresa digitalmeteo. Un proyecto en el que estamos muy ilusionados por su tremendo potencial e innovación. Y si no me creéis, mejor que leáis este artículo en una importante web de turismo.

Para ello hemos implementado un API Gateway en la nube de Google Cloud Engine, en la que cualquier empresa podrá usar el Machine Learning de Google con el valor de añadido de digitalmeteo, empresa que haciendo honor a su nombre, está haciendo cosas muy interesantes combinando el conocimiento de sus meteorólogos con el software.

Este API Gateway dispone de un portal del desarrollador, en el que se publica la información necesaria para utilizar los servicios REST expuestos. Documentación que se genera mediante Swagger y un fichero de YAML de descripción.

También tiene una parte de gestión de APIs, Clientes y Planes con lo que podemos, muy fácilmente, añadir un nuevo API y definir planes de utilización de las APIs por pago por uso, por rangos o post-pago.

Por último, por supuesto, dispone de un runtime que recibe las peticiones de los consumidores de nuestros servicios, comprueba que pertenecen a un plan contratado en activo, ejecuta la lógica de negocio propia que hemos implementado mediante la combinación de servicios de terceros como los de la propia Machine Learning de Google, se contabiliza el uso, etc. etc.

En definitiva, ha sido una auténtica gozada, para un SOAtranstornado como yo, poder participar como arquitecto y backend developer implementando todo esto desde cero, utilizando por supuesto todas las ventajas que ofrece la plataforma de Google App Engine y llevar a la realidad todo el concepto de API Gateway.

En este momento, estamos colaborando con una gran OTA (agencia de viajes online española), en fase de beta cerrada para testar el producto y descubrir y poner a punto nuevos usos y servicios….

El futuro ya está aquí 😉