martes, 8 de marzo de 2016

Gamification as a Service

Gamificación(gamification en inglés) es el empleo de mecánicas de juego en entornos y aplicaciones no lúdicas con el fin de potenciar la motivación, la concentración, el esfuerzo, la fidelización y otros valores positivos comunes a todos los juegos. Se trata de una nueva y poderosa estrategia para influir y motivar a grupos de personas.

La implementación de estrategias de gamificación permite crear Engagement, logrando que los miembros de una comunidad, los trabajadores de una empresa, los estudiantes de un instituto, los habitantes de una ciudad participen de manera dinámica y proactiva en acciones que generalmente requieren un esfuerzo de la voluntad.


Según Gartner, los principales contextos de no-juego donde mayor expectación y adopción está generando la tendencia son:
  • Customer Engagement
  • Employee Performance
  • Advanced Education
  • Personal Development
  • Innovation
Las mecánicas de juego son una serie de reglas que intentan generar juegos que se puedan disfrutar, que generen placer, participación y compromiso por parte de los jugadores, al aportarles retos y un camino por el que discurrir.

“La gamificación del trabajo aumenta la motivación y productividad de empleados y socios, así como, la satisfacción de clientes”

Las mecánicas de juego más utilizadas son:
  • Puntos: Los puntos son valores numéricos que se le asignan al usuario por la realización de acciones o tareas. Se convierten en una mecánica de juego que engancha al usuario de tal manera que éste se motiva por tener más y conservarlos, para así conseguir acceso a nuevos contenidos y/o niveles. Los puntos deben, por un lado, servir de guía al jugador para premiar su nivel de participación e implicación en el juego, y, por otro, servir al diseñador como herramienta de control y mejora. En gamificación, existen diferentes tipologías de puntos, como los puntos de experiencia, puntos canjeables, puntos de habilidad o puntos de reputación, entre otros.
  • Niveles: Los niveles son un indicador del progreso del usuario, alzando el reconocimiento de éste tras haber ido consiguiendo realizar las diferentes tareas asignadas. Los niveles deben seguir una evolución progresiva en la que comienzan siendo sencillos y se dificultan a medida que el usuario se encuentra familiarizado y experimentado con el juego.
  • Clasificaciones: También se conocen como leaderboards y ofrecen unacomparación entre los resultados de los diferentes usuarios. Estos rankings se traducen en una competición entre los jugadores que promueve el deseo de estar siempre en la parte alta de la lista, incentivando la participación e involucración con el juego.
  • Misiones: Se trata de un estímulo a largo plazo que motiva al usuario a ser competitivo y se esfuerce en conseguir el éxito. Hay que ser cuidadosos con la misión que se lanza a los usuarios y se necesita estructurar previamente a la perfección, facilitando al usuario su explicación pero siempre manteniendo un mínimo de intriga. Al fin y al cabo, las personas somos curiosas por naturaleza y esto supondrá un estímulo de reacción.


  • Badges: Las insignias o badges son una de las mecánicas de juego más utilizadas y que mejores resultados dan, es una herramienta utilizada desde hace mucho y sirve como sistema de acreditación social. Entre alguna de las ventajas que conlleva utilizar esta mecánica de juego se encuentra la promoción social, la progresión en el juego y la competición entre usuarios.

 

GaaS - Gamification as a Service

GaaS es una plataforma creada por Altran para dar soporte a las estrategias de gamificación de las diferentes soluciones creadas por la compañía. Una de sus primeras integraciones se ha realizado con la plataforma Bond.
 
Mecánicas en Bond:
  • Los usuarios consiguen puntos cada vez que interaccionan con la aplicación.
  • Los usuarios pueden consultar su clasificación en la aplicación (leaderboard).
  • Periódicamente se lanzan desafíos a los usuarios, mediante notificaciones, invitándoles a realizar un tipo de interacción concreta en un periodo de tiempo determinado (Ejemplo: votar n recomendaciones en x tiempo, visualizar n contenidos por dia, etc)
  • Dependiendo de los puntos obtenidos los usuarios se clasifican por niveles (status).Los usuarios pueden conseguir badges mediante la consecución de desafíos.

Con el API de GaaS es muy sencillo incluir gamificación en cualquier aplicación o servicio, simplemente define tus niveles, misiones y premios y ¡a gamificar!

Autor: Luis Roldán


lunes, 7 de marzo de 2016

Por qué todo el mundo se ofrece a guardar sus fotos sin cobrarle nada



El otro día en javaHispano apareció como noticia una nueva versión de Marvin, un framework para procesamiento de imágenes. Eso no es una gran noticia en sí salvo para los que están interesados en el proyecto, claro, y para ser honesto, yo ni siquiera sabía de la existencia de Marvin, pero junto a la notica había un vídeo que me llamó mucho la atención. 


El vídeo se explica por sí mismo. El software analiza la imagen y localiza todo lo que se mueve. No parece difícil, pero créame que lo es, aunque si es difícil o no es irrelevante para lo que vamos a tratar aquí. El caso es que existe una librería de Software Libre que es capaz de seguir a las personas que se están moviendo en una calle o un pasillo con tal de tener una imagen de referencia con la calle vacía, que tampoco es un requisito muy difícil de conseguir. Tener un ordenador capaz de localizar y seguir personas en movimiento abre muchas posibilidades. Una vez que se sigue a una persona, se puede calcular su vector de movimiento y calcular si viene o va, y por no ponernos apocalípticos pensando en robots armados que persiguen personas, vamos a pensar que ese ordenador está conectado con cámaras motorizadas que saben cuándo la persona está dándoles la espalda y cuándo no simplemente analizando la dirección de sus vectores de movimiento.

Con la información de seguimiento de Marvin se puede mover la cámara para seguir a cada individuo que se acerque y hacer zoom sobre la parte superior del rectángulo, donde debería estar la cara, y hacer una foto de su rostro. Una vez que tenemos la cara, podríamos pasarla por un sistema de reconocimiento de rostros entrenado con unos miles de imágenes de personas de nuestro interés y, con suerte, podríamos identificar a alguna de las personas que pasan delante de la cámara.

Nada de esto es difícil. Hasta ahora, usando una Raspberry PI y componentes electrónicos, podemos tener un demostrador que saque fotos de las personas que pasen delante de una cámara por algo menos de unos cientos de euros en material y unas cuantas horas de trabajo. Tal vez el reconocimiento de caras requiera que usemos algo más potente que una Raspberry, como un portátil del año pasado, pero nada del otro mundo en cualquier caso.

Pero vamos a ponernos ambiciosos y vamos a pensar que tenemos algo más que una Raspberry PI, como por ejemplo unos CPDs con miles de CPUs y, sobre todo, una base de datos de millones de fotografías etiquetadas con el nombre de la persona que sale en la foto. Con esos recursos podríamos identificar a mucha más gente con un índice de fiabilidad mucho mayor. Por ejemplo, en Facebook tienen literalmente millones de fotos de millones de personas convenientemente etiquetados, desde múltiples ángulos y en prácticamente cualquier gesto y postura. De hecho, su algoritmo de reconocimiento de rostros ronda el 97% de efectividad, así que estoy seguro de que es mejor que yo reconociendo caras.

Facebook podría poner cámaras en las calles e identificar a millones de personas según fueran pasando por delante haciendo su vida normal. Y Google también, porque también tiene un buen analizador de rostros. Este no es un artículo para despotricar contra el Gran Hermano y la perdida de libertad a la que nos aboca la tecnología, porque además, no sé en qué le podría beneficiar a Google o Facebook saber quién pasa por número 67 de la Calle de la Seta ni en que amenaza mi libertad que Google sepa que paso por ahí, así que vamos a ser más prácticos y a poner esa cámara en la entrada de un centro comercial, porque saber que alguien está entrando en un centro comercial es mucho más útil.

Si Google sabe que entras en un centro comercial puede ponerse a revisar tus búsquedas de la última semana, descubrir que has estado mirando bicicletas, suponer que estás interesado en comprar una y enviarte al teléfono móvil ofertas de bicicletas en ese mismo centro comercial. Si en ese centro comercial hay dos comercios que venden bicicletas, tener a Google de tu lado puede mejorar mucho tus ventas, así que si Google decide crear un servicio de seguimiento de clientes con envío de ofertas, los comercios tendrán un incentivo muy fuerte para contratarlo, y el dueño del centro comercial también tendrá un incentivo muy fuerte para permitir que Google o Facebook pongan una cámara en la puerta porque las tiendas que se instalen en ese centro comercial pueden esperar que su publicidad esté mejor dirigida que las que se instalen en un centro comercial que no ofrezca ese servicio. Al fin y al cabo, con este sistema la publicidad llega a personas en el momento en el que entran en un centro comercial, no cuando duermen la siesta, y además le llegará a personas que han estado curioseando por internet sobre la mercancía que vendes. Es difícil encontrar a un anunciante que te ofrezca una segmentación mejor.

Todo esto ya es posible utilizando los teléfonos que llevamos en el bolsillo y una combinación más o menos rebuscada de triangulación de antenas, GPS, RFID y aplicaciones, pero para que sea eficaz, la persona debe instalar aplicaciones en su terminal, permitir la localización, tener activo el GPS del terminal... Pero incluso de las personas que cumplen todos esos requisitos y por ejemplo no apagan el GPS para ahorrar batería no tenemos una información demasiado precisa porque los centros comerciales están techados, así que podemos saber que entran en el centro comercial, pero no podemos saber dónde se encuentran exactamente una vez dentro. En cambio, todos llevan la cara descubierta.

Supongo que la mayoría recordamos esas escenas de Minority report en las que se escanea la retina de cualquier persona por la calle y se le envía una grabación con un saludo personalizado para esa persona y un listado de ofertas que le pueden interesar.
 

Bueno, reconocer las caras desde lejos no es tan exacto como examinar la retina, pero reconocer a la gente por la cara no está mal, y hasta que descubramos como dirigir el sonido de un anuncio a una persona sin que se mezcle con el sonido del anuncio enviado a la persona que va a su lado tendremos que conformarnos con reconocer caras y enviarle la publicidad al móvil, pero la idea es la misma.

Ahora la pregunta es ¿pueden Google o Facebook hacer esto? Y la respuesta es: y no solo ellos. Ellos parten con ventaja porque llevan años acumulando selfies, conversaciones, o búsquedas en sus CPDs. Han tejido redes comerciales para vender su capacidad como soporte publicitario entre anunciantes. Incluso se han asegurado de que les llevemos siempre en el bolsillo del pantalón creando aplicaciones o incluso teléfonos móviles para asegurarse de que recibiremos sus anuncios. Y además, se toman la publicidad en serio y le dedican ingentes recursos de I+D. Pero no saben tanto de nosotros como creemos.

Saber lo que buscamos por internet la última semana está bien, ofrece una información valiosísima, pero podemos tener curiosidad por el último Bentley aunque la mayoría nunca podremos comprar uno. En cambio, cualquier cadena de supermercados o franquicia de centro comercial sabe de cosas más mundanas que compramos casi a diario, y además, suelen tener su propia tarjeta de fidelización, así que cuando pagamos y pasamos la tarjeta de fidelización, todo lo que ha pasado por la caja se guarda de forma cuidadosa asociado a nuestro nombre. Google o Facebook saben lo que curioseamos por internet y tienen cientos de fotos nuestras, pero Carrefour o Zara saben lo que de verdad compramos.

Google o Facebook llevan ventaja. Ellos tienen ya el software preparado y sobre todo la base de datos de fotografías con el que entrenar sus algoritmos de reconocimiento de rostros. Carrefour o Zara tienen la información de consumo, pero tendrían que construir la base de datos caras de clientes. Google o Facebook tienen una base de datos de rostros de cualquiera, pero a Carrefour o Zara les puede valer con tener una base de datos que contenga solo los rostros de sus clientes. Una forma sencilla de hacerlo podría ser proporcionar a los clientes una tarjeta de fidelización con una foto de la cara, o mejor aún, con su cara convertida en un pequeño holograma como el que llevan las tarjetas de crédito, lo que sería una excusa perfecta para que el cliente se sentara pacientemente delante de una máquina de aspecto extraterrestre para que le escaneará la cara desde varios ángulos. ¡Eh! Tener un holograma gratis de tu propia cara merece la pena...

Eso es caro. Más caro que convencer al cliente para que se descargue una aplicación en el móvil. ¿Qué obtendría el comercio a cambio de ese sobreprecio? Como ya hemos dicho, de entrada la capacidad de enviar publicidad a los que no se descargan la aplicación o no tienen activa la localización en el móvil, pero eso es solo el principio. Pueden saber dónde está el cliente dentro del centro comercial siempre que haya cámaras repartidas por los pasillos.

Digamos que Zara implementa un sistema de reconocimiento de caras y se hace con una base de datos de rostros de todos los que alguna vez han sido clientes suyos gracias a regalar tarjetas con un holograma de la cara del cliente. Zara no solo podrá enviar ofertas personalizadas a sus clientes cuando entren en el centro comercial o se acerquen a su tienda. Incluso podría poner a una persona en la entrada de Zara que diera la bienvenida a los clientes llamándoles por su nombre y ofreciéndoles alguna oferta sobre camisas a juego con el pantalón que compraron la semana pasada, que es un nivel de servicio que muy pocas empresas del mundo dan a sus clientes, si no que, y esto es lo divertido, si pone una cámara cerca de la entrada de H&M podrá enviar publicidad de sus propias ofertas a todos los que se acerquen al H&M. No solo puede enviar sus ofertas, si no que puede "desactivar" las de la competencia. ¿No es delicioso?

Claro, que ¿quién va a entregar una foto de su cara a una multinacional para que la digitalice y la use en un sistema de reconocimiento automático? Es nuestra privacidad y las leyes nos amparan. Un holograma puede ser un buen cebo, pero siempre puede uno declinar la idea para matener su privacidad. Claro, que si apareciera un servicio que nos obligara a usar la cara...  


Las empresas de venta al por menor difícilmente podrán entrar en el negocio de la publicidad o en el de los medios de pago, pero pueden usar la tecnología y la información que poseen para mejorar sus ventas, incluso a costa de las ventas de su competencia. Simplemente con dirigirse a los clientes por su nombre de pila según entran por la puerta de la tienda, del hotel, del restaurante... sin poner cámaras en el exterior del centro comercial, la experiencia de compra del cliente mejoraría de forma radical. Si un grupo dedicado a la venta al por menor con múltiples marcas quiere crear una nueva marca con precios más elevados o diferenciar a los grandes compradores de los demás, esta puede ser una buena manera de hacerlo. Los bancos o las líneas aéreas ya lo hacen con el color de una tarjeta ¿no? ¿Por qué no llevar ese nivel de atención a la venta al por menor?

Una cosa está clara. El mundo de la venta al por menor va a cambiar.

Autor: Nilo Gonzalez

martes, 1 de marzo de 2016

Introducción a las redes neuronales



¿Qué es una red neuronal?

El propósito de este texto es el de realizar una muy simplificada introducción al mundo de las redes neuronales, con el objeto de facilitar la comprensión de textos más elaborados.

Si tras leer este texto un lector neófito en el tema sale con la sensación de que entiende los mecanismos que hay detrás de los procesos generales que rigen las redes neuronales: ¿qué son?, ¿cómo funcionan?, ¿qué es el aprendizaje o entrenamiento?, etc., entonces el texto habrá cumplido su propósito.

Según la Wikipedia: Las redes de neuronas artificiales (denominadas habitualmente como RNA o en inglés como: "ANN") son un paradigma de aprendizaje y procesamiento automático inspirado en la forma en que funciona el sistema nervioso de los animales. Se trata de un sistema de interconexión de neuronas que colaboran entre sí para producir un estímulo de salida. En inteligencia artificial es frecuente referirse a ellas como redes de neuronas o redes neuronales.

Más coloquialmente, una red neuronal artificial pretende replicar mediante software o hardware, los mecanismos que rigen la toma de decisiones y el aprendizaje de los cerebros de los organismos vivos.

Los ordenadores tienen una enorme capacidad de cálculo, alcanzan velocidades que nuestro cerebro sería incapaz de emular. Pero sin embargo, tienen grandes dificultades para realizar tareas que nosotros hacemos sin esfuerzo, como es reconocer patrones, o caras, imágenes, etc.

Es dentro de este ámbito, el de las actividades que no se les da bien a los ordenadores, donde está indicado el empleo de las redes neuronales artificiales, las cuales, al replicar la operativa de un cerebro, son capaces de realizar dichas actividades de manera análoga a un cerebro biológico.

¿Cómo funciona una red neuronal?

Simplificando mucho, un cerebro está compuesto de varias “capas” de neuronas, conectadas entre sí formando una tupida maya. Con esta distribución a cada neurona le llegan una serie de entradas (a través de las dendritas), y acaba conectada con las siguientes “capas” de neuronas mediante una serie de salidas (conectadas a su vez a las dendritas de las neuronas posteriores). Dicha conexión se realiza mediante un tipo de enlace bioquímico capaz de transmitir impulsos eléctricos, llamado sinapsis.

A efectos prácticos, cuando a nuestro cerebro le llega un estímulo de entrada, (por ejemplo el carácter “C”), y lo procesa, es capaz de devolvernos como salida el fonema asociado a dicho carácter (“C” = “ce”). Esta asociación símbolo-fonema, es fruto del aprendizaje que hemos tenido, el cual ha quedado registrado en nuestro cerebro en forma de conexiones entre neuronas, definiendo caminos para el impulso nervioso. Dichos caminos “guían” el flujo del impulso hacia una salida, de forma que el flujo que ha seguido el impulso tiene asociado el fonema correcto.

Con este ejemplo en mente, si imaginamos un cerebro, como una serie de neuronas conectadas entre sí, formando una red en distintas capas, con sus conexiones ya definidas, la respuesta que proporcionaría dicho cerebro ante una determinada entrada, se correspondería con la salida dependiente del camino que siguiera el impulso nervioso.


Dicho camino dependería a su vez de la resistencia eléctrica ofrecida al impulso eléctrico de la sinapsis. Caminos con menor resistencia proporcionarían antes una respuesta.

Cuando un cerebro esta “limpio“, la resistencia eléctrica de todos los caminos es similar, por lo que la salida que proporcionaría un cerebro “limpia” ante un determinado estímulo sería arbitraria.

Es mediante el proceso de aprendizaje que se fijan las resistencias a los estímulos eléctricos que dirigen los flujos hacia salidas correctas.

A muy alto nivel, el proceso de aprendizaje de un cerebro funcionaría de la siguiente manera:

Si se proporcionase como entrada un estímulo que se correspondiese con el carácter “C”, dicho cerebro debe aprender que esa representación gráfica se corresponde con el fonema “ce”, modificando a menores las resistencias eléctricas que aproximen la salida hacía el fonema “ce” y/o incrementando las resistencias de aquellos caminos que alejen la salida de dicho fonema.

La ventaja de este mecanismo es que, como todas las entradas proporcionan una salida, siempre habrá una respuesta ante un estímulo, aunque este no sea conocido. La salida de dicha respuesta, circulara por los caminos que más se parezcan a los conocimientos que tenga dicho cerebro, lo que permitirá que un cerebro infiera resultados en función de los conocimientos que ya tuviera almacenados 

En base a esto, cuanto mayor sea el aprendizaje y mayor el número de casos que conozca un cerebro, (más símbolos y más fonemas), más fiables serán los resultados que proporcione como salida ante estímulos similares (“ C parecido a c parecido a < ”), lo cual le permitirá responder con fiabilidad ante estímulos desconocidos.

Es decir, un cerebro con el conocimiento necesario es capaz de distinguir la “C” de la “O”, pese a su similitud gráfica y de identificar correctamente los caracteres “c” o “<” como “otros tipos” de “C”.

Una vez comprendido cómo funciona el proceso de reconocimiento de patrones en un cerebro, es posible replicar este comportamiento mediante un modelo de software.

Redes Neuronales Artificiales

Para replicar este funcionamiento (reconocimiento de patrones) a nivel lógico, necesitaremos disponer de una neurona artificial, que acepte varias entradas, que sea capaz de simular la resistencia al impulso eléctrico como lo hace una neurona de verdad y que sea capaz de proporcionar una salida. La salida puede ser conectada a una o varias de las entradas de otra u otras neuronas artificiales para formar una red.

Hay varios tipos de redes artificiales, el modelo más sencillo se denomina “perceptrón”. 

Inventado en 1957 (Frank Rosenblatt), el perceptrón es la más simple de las redes neuronales posibles. Representa a una única neurona. Un perceptrón se compone de una o más entradas, un procesador, y una única salida.


Ilustración 1: Esquema Perceptrón

El objeto del perceptrón es el de emular el funcionamiento de una neurona, como tal por sí mismo, carece de sentido o aplicación, pero en conjunto con otros perceptrones, configurados en forma de red, y tras el entrenamiento necesario (aprendizaje), es posible emular el procesamiento de patrones de manera similar a la que realizaría un cerebro.

 Ilustración 2: Modelo básico de Perceptrón

El modelo del “perceptrón” parte de una serie de entradas (X), que ven modificado su valor por una serie de pesos (W). Mediante estos pesos se simula las resistencias sinápticas neuronales, sólo que en vez de aumentar o disminuir la resistencia al impulso inicial, se amplifica o disminuye su valor, en función de la afinidad con el conocimiento de la red.

Todos estos valores (las entradas con sus pesos correspondientes) se integran en un único valor.

Se emplea una función de activación (que procesa los valores para mantenerlos dentro de los límites fijados, normalizándolos), y como resultado se produce una salida, la cual puede emplearse como entrada para otro u otros perceptrones de la red neuronal.

Este proceso repetido a lo largo de toda la red, produce una única salida, cuyo valor ha ido transformándose a medida que ha ido fluyendo por los distintos caminos 

El proceso de aprendizaje (llamado entrenamiento) es el que define y fija los pesos sinápticos (W), de todas las entradas de los perceptrones de la red. De forma que es mediante el entrenamiento, como se almacena el conocimiento en la red.

Como ejemplo:

Imaginemos que queremos diseñar una red neuronal que nos ayude a predecir el precio aproximado que tendrá la gasolina. 

Imaginemos así mismo, que conocemos el histórico de la evolución semanal de los precios de la gasolina:  

Lunes
Martes
Miércoles
Jueves
Viernes
Sábado
Domingo
0.98
0.99
0.97
1.02
1.03
1.00
1.02
1.09
1.02
0.97
1.03
1.01
0,99
1.01
0.98
0.99
1.02
1.02
1.01
1.02
1.05
..
0.98
0.99
1.02
0,97
1.03
1.00
1.03

Podríamos diseñar la red neuronal como una red de neuronas artificiales, con 6 entradas y una salida.

De esta forma, podríamos proporcionarle la evolución semanal del precio de la gasolina de lunes a sábado (un valor por cada entrada), y obtener como salida el precio esperado para el domingo (la salida). 

Para ello, deberíamos entrenar nuestra red, proporcionándole series de 6 datos de precios (de lunes a sábado) y comparar la salida con el precio conocido del domingo, ajustando los pesos ponderados en función de lo lejos o cerca que se fueran quedando los resultados proporcionados por la red.

Tras el entrenamiento necesario, la red sería capaz de proporcionar valores que siguen el “patrón” oculto en la evolución de los precios y “predecir” un valor para los precios de los domingos.

Ilustración 3: Red neuronal artificial “perceptrón” multicapa con n neuronas de entrada, m neuronas en su capa oculta y una neurona de salida

Habitualmente, las redes neuronales, están formadas por varias capas. Suelen disponer de una capa de entrada, que recoge los distintos inputs de la red, una o varias capas ocultas, donde se procesa la información, y una capa de salida, para devolver un resultado.

El éxito de una red, se ve claramente influenciado por su entrenamiento (cantidad y calidad), pero también por su arquitectura: número de entradas, número de capas, número de neuronas por capa, funciones de activación, de normalización, etc. 

Con esta introducción, hemos llegado al nivel básico de conocimiento sobre lo que es una Red Neuronal Artificial; si os ha parecido interesante, se puede profundizar mucho en el tema con un poco de investigación por vuestra cuenta.

Bibliografia: Podcast Cienciaes.com
Wikipedia (redes neuronales, perceptron)
Varias lecturas RNA

Autor: Andrés Lapique