Archivo de la etiqueta: deep learning

Un pequeño experimento con Deep Learning

(Artículo escrito por nuestro profesor Pedro Gómez)

Como muchos ya sabréis, Deep Learning no es sino un conjunto de algoritmos de Machine Learning que se caracterizan por emplear modelos de redes neuronales con muchas capas para lograr el aprendizaje deseado.
Para que funcionen de manera correcta, requieren de muchos ejemplos o datos a partir de los cuales los algoritmos puedan llegar a aprender de manera automática. También requieren de una gran capacidad de computación, por lo que en los últimos años han ido ganando importancia gracias entre otras cosas a la potencia de las GPUs.
La diferencia principal con el resto de técnicas de Machine Learning es que mientras las técnicas tradicionales requieren procesar primero los datos generando características de los mismos antes de aprender, las técnicas de Deep Learning consiguen realizar el aprendizaje deseado sin ese paso previo.
Algunas aplicaciones comunes del Deep Learning son:
  • Reconocimiento de imágenes
  • Detección de objetos
  • Sistemas de recomendación
  • Traducción de lenguaje
  • etc.
Mientras que otras menos conocidas pueden ser:
Por el lado del software, existen varios frameworks que nos permiten utilizar las técnicas de Deep Learning. Básicamente, cada proveedor de servicios en la nube ha creado su propio framework, como parte de su estrategia para competir por dichos servicios. Uno de los más conocidos es Tensorflow de Google: https://www.tensorflow.org/
Una de las ventajas de Tensorflow, es que tiene conexión con lenguajes de programación populares en el mundo del Machine Learning, como R y Python. En el caso del ejemplo que os voy a comentar, éste ha sido el framework que he utilizado.
Imaginemos que nos quisiéramos inventar nombres de personas nuevos en euskera. Para poder entrenar un modelo que pueda aprender un modelo de lenguaje, necesitamos ejemplos de nombres en euskera ya existentes. En este caso, he descargado la lista de nombres disponibles en Euskera separada por sexos:
Nombres de personas en euskera (Fuente: http://www.euskaltzaindia.eus/index.php?option=com_content&view=article&id=4161&Itemid=699&lang=es)
Nombres de personas en euskera (Fuente: http://www.euskaltzaindia.eus/index.php?option=com_content&view=article&id=4161&Itemid=699&lang=es)
Disponemos en este caso de 1529 nombres de hombres y 1669 de mujeres. La verdad es que son pocos, y para hacer un experimento más serio sería conveniente disponer de más datos. Quizás alguien disponga de un listado más completo.
Podemos intentar generar un modelo de Deep Learning que modelice la probabilidad de observar un nombre en euskera como la probabilidad conjunta condicional de cada una de las letras anteriores que aparecen en dicho nombre. Para entrenar este modelo en este caso he optado por una arquitectura de red denominada RNN, Recurrent Neural Network.
¿Será el modelo capaz de inventar nombres nuevos en Euskera a partir de los ya existentes? Os adjunto un listado de algunos de los nombres nuevos que he obtenido, ¿os suenan a nombres en euskera? Os aseguro que no figuran en la lista oficial de Euskaltzaindia:
Hombres Mujeres
Oñat Buga
Elaitz Abenle
Aldeka Hezua
Molen Auntzun
Xapebo Saiane
Odrin Durosi
Olaxo Guna
Etein Lenine
Lari Urparana
Agotz Manke
Enix Gatzide
Ereki Kalunia
Isteru Izia
Ortzo Emalene
Hiraso Niresku
Jariti Ozoitza
Nankin Irnen
Leniz Jenitz
Ultaz Erzui
Benitx Azkiloga
A mí al menos sí me parecen bastante euskaldunes!

Cómo los metadatos nos pueden ayudar a predecir tu trabajo gracias al Big Data

El pasado noviembre, saltó a la palestra del «mundo de los datos» una noticia que en España ha pasado algo desapercibida (al menos en los  medios generalistas). No obstante, no creo que sus implicaciones sean menores. La agencia de espionaje de Canadá, la CSIS, había estado recolectando metadatos (datos generados en el uso de medios digitales como el correo electrónico, los mapas de geolocalización, etc.) durante 10 años.

El tribunal supremo de Canadá, instruyendo la causa, decretó -como no podría ser de otro modo- que esto era ilegal. Por más que tuviera un fin de eventuales espionajes o amenazas por terrorismo, la seguridad y privacidad del ciudadano por delante de todo.

Estos metadatos, para que se hagan ustedes a la idea, incluyen desde números de teléfono, localizaciones, direcciones de email, duraciones de las llamadas o comunicaciones, etc. Es decir, datos asociados a acciones, no el contenido de las mismas en sí (las llamadas y sus contenidos… en cuyo caso estaríamos hablando de algo aún más grave). El CSIS quería esto porque en 2006 puso en marcha un programa que bautizó como «Operational Data Analysis Centre» para producir información inteligente que ayudase a la toma de decisiones estratégicas en favor de la seguridad del país.

Esta noticia, me resultó bastante ilustrativa porque los metadatos (los grandes olvidados, sobre los que he escrito en alguna ocasión a colación de whatsapp y Facebook), pueden revelar mucha información sobre nosotros mismos. Cómo nos comportamos, qué y por qué decidimos qué, cómo tomamos las decisiones, etc. En definitiva, un montón de información personal, que nunca podemos olvidar. Como ha hecho el tribunal supremo de justicia canadiense, por más que se trate de una agencia pública la que ha cometido el delito.

Pues bien, me acordaba de esta noticia al leer que un equipo de investigadores de la empresa de telecomunicaciones noruega Telenor, junto con el MIT Media Lab y la organización sin ánimo de lucro Flowminder, han encontrado un método para, partiendo de metadatos, predecir el estado ocupacional/profesional de una persona (desempleado o a qué se dedica). Podéis leer el artículo aquí.

Estimating individual employment status using mobile phone network data (Fuente: arxiv.org/ftp/arxiv/papers/1612/1612.03870.pdf)
Estimating individual employment status using mobile phone network data (Fuente: arxiv.org/ftp/arxiv/papers/1612/1612.03870.pdf)

El paper explica maravillosamente el modelo predictivo que han conformado. La variable dependiente, no era otra que una variable categórica de 18 pòsibles estados (uno por cada profesión, desde estudiante, empleado/ocupado y tipos de ocupación). ¿Las independientes? (es decir, las predictoras); pues los metadatos que decíamos antes: un total de 160 características o variables (casi nada), tomadas desde dispositivos móviles y categorizadas en tres categorías: financieras, de movilidad y sociales. Para qué explicarlo, si en el paper sale una tabla con todas esas características:

Los metadatos de nuestros dispositivos móviles (Fuente: arxiv.org/ftp/arxiv/papers/1612/1612.03870.pdf)
Los metadatos de nuestros dispositivos móviles (Fuente: arxiv.org/ftp/arxiv/papers/1612/1612.03870.pdf)

Todos estos datos generamos desde nuestro dispositivo móvil. Que, como decíamos, ayudan a predecir, entre muchas cosas, una cuestión tan importante como nuestro estado de ocupación. Para ello, el equipo investigador ha comparado diferentes modelos predictivos (GBM, Random Forest, SVM, kNN, redes neuronales, etc.). Tras estudiar los rendimientos de cada modelo predictivo, se quedaron con una arquitectura de red neuronal usando un 75/25% de training/testing, siendo la precisión del modelo, de media, un total de un 67,5%. Hay profesiones donde es más fácil acertar y en otras más difícil. Será que algunos nos comportamos de manera más predecible y otros de menos 🙂

Precisión de los modelos predictivos para predecir ocupaciones (Fuente: arxiv.org/ftp/arxiv/papers/1612/1612.03870.pdf)
Precisión de los modelos predictivos para predecir ocupaciones (Fuente: arxiv.org/ftp/arxiv/papers/1612/1612.03870.pdf)

¿Qué variables son  las más críticas? Es decir, las que «mejor predicen» una profesión. Nada menos que la la torre de telecomunicaciones a las que más se conecta una persona (latitud y longitud), el número de lugares visitados (por frecuencia) y el radio de viaje (cómo se aleja de su hogar, la celda de conexión más cercana y que más frecuenta -salvo que durmamos mucho en hoteles :-)-). ¿Alguien se extraña entonces por qué Google Maps es gratuito? Lo de siempre, introduzcan en el navegador maps.google.com/locationhistory. En la siguiente imagen, representan la relación de estas variables y cómo ayudan a predecir la ocupación:

Relación entre variables predictoras y ocupaciones (Fuente: https://arxiv.org/ftp/arxiv/papers/1612/1612.03870.pdf)
Relación entre variables predictoras y ocupaciones (Fuente: https://arxiv.org/ftp/arxiv/papers/1612/1612.03870.pdf)
Profesiones y variables predictoras (Fuente: http://motherboard.vice.com/read/how-metadata-can-reveal-what-your-job-is)
Profesiones y variables predictoras (Fuente: http://motherboard.vice.com/read/how-metadata-can-reveal-what-your-job-is)

Este modelo de deep learning (aprendizaje cognitivo o profundo), este tipo de software que está revolucionando tantos procesos, dado que se entrenan a sí solos para encontrar patrones en grandes cantidades de datos, está en boca de muchos ahora. Su potencial es tan grande, que permitir que una agencia pública federal los emplee para cosas como las que aquí descritas, me parece preocupante.

Y ahora ustedes se estarán preguntando de dónde habrán estos investigadores obtenido los datos. Telenor 🙂 Es decir, la empresa de telecomunicaciones que, obviamente de manera anonimizada, han procesado hasta 76.000 conexiones de dispositivos móviles a sus torres de comunicaciones. Y de ahí han salido estos metadatos. Un proyecto, solo basado en esos datos, pero que imagínense lo que puede mejorar si lo integramos con otras fuentes de datos. Modelos aún más precisos a nivel de predicción. Un proyecto de Big Data en toda regla.

Como ven, estos proyectos de Big Data, tienen mucho potencial. Todo está por hacer y aprender. En nuestros programas de Big Data, además de ver los diferentes modelos predictivos, también aprendemos a integrar todas esas fuentes de datos, mejorar su calidad en un modelo de datos único y unificado, así como a montar infraestructuras de Big Data que optimicen estos procesamientos.