sábado, 28 de noviembre de 2015

¡Chatbots, desplegaos!

Hace poco descubrí un encantador bot con una finalidad muy singular: concienciar sobre el acoso de mujeres. Este magnífico bot, con el que puede hablarse aquí, es un brillante ejemplo de un uso específico de un chatbot. Y, aunque sus reglas no son especialmente sofisticadas, hace un excelente trabajo en el campo concreto para el que ha sido diseñado.


Aunque desde un principio, nuestro bot ha estado pensado poder adoptar diferentes personalidades, lo cierto es que hasta ahora el desarrollo estaba centrado en una única personalidad, un asistente lo más atento y completo posible. Sin embargo, este objetivo tan claramente marcado tiene el inconveniente de que tiende a ahogar la creatividad. Si tienes un bot al cuidado de tus citas, tus cuentas y tu vida en general, no resulta muy apetecible experimentar con nuevos enfoques que, en el mejor de los casos, pueden generar datos indeseables que entorpezca la consulta de los buenos, y, en el peor de los casos, pueden ocasionar la pérdida de información.

Con el fin de fomentar la innovación, estamos trabajando en una nueva función que permitirá cambiar de un bot a otro de manera extremadamente rápida y sencilla. Cada bot estará encapsulado a partir de ahora, con sus datos y los reglas en carpetas aisladas, pero compartiendo todos los datos comunes. Además, esta innovación ayudará a racionalizar los procedimientos de inicialización y esperamos que también sirva para poner a punto el editor de reglas.

Aunque todavía quedan algunos retoques, dentro de muy poco esperamos lanzar una versión de demostración con la que podremos crear nuestro propio bot y experimentar con diferentes personalidades de una manera extremadamente sencilla.




martes, 3 de noviembre de 2015

La curiosidad como motor del comportamiento

Cuando un ser humano se sienta a conversar con un chat bot suele adoptar una de estas tres estrategias:
  • Insultar al bot
  • Dejar al bot en evidencia para que se vea que no es más que una máquina
  • Mantener una conversación normal
Las dos primeras opciones son, con diferencia, las más habituales pero no dan pie a conversaciones largas. A fin de cuentas una conversación basada en insultos, por muy bien que se respondan, no suele dar para mucho. Además, una vez que hemos conseguido avergonzar al bot demostrándole que nuestro intelecto es infinitamente superior al suyo, damos la partida por ganada y el juego por acabado.


La tercera opción es mucho menos habitual y también suele generar rápidamente frustración en el ser humano cuando sus respuestas nos desagradan. Aparte del tremendo esfuerzo de programación que requiere emular una conversación humana, no hay que olvidar que a los humanos tampoco vale cualquier conversación. ¿No has tenido nunca una conversación con un compañero de trabajo o el amigo de un amigo que apenas haya durado tres o cuatro frases antes de que sobrevenga un silencio incómodo? O, incluso la conversación ha continuado, ¿no has pensado nunca que nada de lo que estabas escuchando no te importaba en absoluto? Si tales sentimientos despiertan ante seres humanos similares a nosotros, con un vasto conocimiento del mundo y sin problemas para articular sus ideas mediante frases, ¿no es demasiado pedirle a un ordenador que no solo emule una conversación cualquiera, sino que sea lo suficientemente amena como para que nos apetezca continuarla?

Dado que la inteligencia artificial está aún en sus albores, por ahora prácticamente imposible crear un bot cuya personalidad y conocimientos sean tan fascinantes como para que cualquier ser humano pueda pasar un buen rato hablando con él. Por tanto, es preciso buscar un método alternativo para que la conversación con un bot resulte más atractiva.

Hace tiempo pensé en la posibilidad de convertir la conversación en algún tipo de juego. Al igual que los perros a los que es posible entretener lanzándoles una y otra vez la misma pelota, los seres humanos tenemos cierta tendencia a que algo nos resulte mucho más interesante en cuanto le añadimos puntos, insignias y récords (o PBL, tal como se le denomina en la jerga). No obstante, no parece haber una manera obvia de incluir estos elementos en una conversación.

Al igual que en el mundo de la gamificación no todo son PBL, había que buscar algún tipo de juego que resultara lo suficientemente gratificante al jugador como para que conversara con regularidad con el bot, pero ¿cuál? Me rondaba idea vaga sobre ayudar al bot a ampliar su conocimiento del mundo, por ejemplo, respondiendo a sus preguntas sobre las relaciones entre las palabras de las que hablábamos, pero algo no acababa de funcionar. Todas estas ideas fallaban porque, por ilustrarlo con mayor claridad, era como un juego de ping-pong con un solo jugador. Tal vez podíamos lanzarle preguntas al jugador y tal vez nos las devolviese, pero el bot no tenía ningún interés particular en esas respuestas. Y si ya el bot se aburría, ¿cómo íbamos a interesar al ser humano?

Tras meditar bastante sobre todo esto, pensé en invertir el planteamiento. Siempre había pensado en el juego desde el punto de vista del ser humano pero, ¿y si pensaba más bien en un juego que pudiera interesarle a un bot? ¿Y si creaba algún tipo de algoritmo que motivase a que el palito, hasta ahora inmóvil, que representaba al bot en el juego de ping-pong subiese y bajase en busca de la pelota? Solo se me ocurrió una respuesta: la curiosidad.

Imaginemos que le contamos al bot cualquier detalle de nuestra vida. Por ejemplo, «Mañana iré a Granada». Según el planteamiento estático, podríamos generar una serie de preguntas que el bot podría plantearnos rutinariamente «¿Qué harás en Granada?», «¿Está muy lejos Granada?», «¿Has estado antes en Granada?», etc. Son conocimientos estáticos, que el bot adquirirá, almacenará y, en realidad, no le servirán para nada. Es un juego, sí, pero uno tan fácil que resulta aburrido. Para animarlo, puede plantearse con nuevas reglas. En lugar de crear al azar una pregunta que le plantearemos al ser humano y luego nos quedaremos sin saber qué decir, ¿y si creamos una base de datos que contenga la curiosidad del bot por el mundo y la que introduciremos todas las preguntas que el bot pueda plantearse? Por supuesto, no podemos que el bot plantee las preguntas una tras otra, lo que aburriría tanto al usuario como al propio bot, sino que le obligaríamos a elegir una única pregunta que deberá cumplir dos condiciones:
  • Estar relacionada con lo que el usuario ha dicho
  • Dar respuesta al máximo número de incógnitas de la base de datos
Estamos convirtiendo de esta manera un sistema perfectamente estable en uno insatisfecho, que ahora tendrá una motivación para elegir unas preguntas en lugar de otras y un objetivo que, al igual que todos los objetivos que realmente merecen la pena, será imposible de cumplir. Con cada nueva respuesta a las preguntas deberán formularse nuevos interrogantes, al igual que nos ocurre a los seres humanos. Para equilibrar un poco el juego sería interesante compensar la desventaja que tiene frente a nuestros conocimientos del mundo dándole de posibilidad la posibilidad de buscar información en determinadas fuentes, así como crear hipótesis y ponerlas a prueba.

Al igual que ocurre con frecuencia en el mundo de la informática en general y en el mundo de los chatbots en particular, muchas ideas que se parecen brillantes en un principio resultan ser totalmente inservibles. El método propuesto tal vez no sea tan prometedor como pienso, pero incluye algunas ideas que, tal vez implementadas de otra manera, puedan mejorar la interacción entre seres humanos y máquinas. Además, se trata de un enfoque lo suficientemente concreto para ponerlo en práctica sin demasiadas complicaciones, basta con crear una batería sencilla de preguntas, unas relaciones básicas y un algoritmo de selección simple, pero al mismo tiempo lo suficientemente amplio como para admitir todo tipo de mejoras, perfeccionando sus elementos básicos. A fin de cuentas, la curiosidad es uno de los grandes motores de la humanidad y no sería descabellado pensar que también pueda serlo para unas máquinas que carecen de otras necesidades que son las que motivan buena parte del comportamiento humano.