Un algoritmo que escribe texto y nos entretiene

Quizás ya hayan leído alguna noticia al respecto. Suelen ser noticias bastante «trágicas» o «extremas». Que, como siempre, difícilmente llegará a darse. Aunque sí marcan tendencia, y sobre todo generan conversación. Me refiero a noticias que hablan de software, de algoritmos, que escriben por sí solos noticias, artículos de deporte o incluso sentencias o textos de defensa de acusados. IBM Watson, incluso ha creado ya un trailer:

Este tipo de piezas de software, están dando un paso más allá, y están empezando a entrar en el mundo del entretenimiento. En cierto modo, ese trailer creado por IBM Watson no deja de ser una primera aproximación a cómo tratar de crear contenido que nos pueda entretener a los humanos. Pero, creado, de manera automática. Es decir, sin dedicar tiempo de creatividad y entendimiento del cerebro humano para ello. Esto sí que es nuevo. Hasta la fecha habíamos tratado de aproximarnos a ello, pero no conseguido.

Y dado que el mercado del entretenimiento es muy jugoso, ya hay mucha gente haciendo cosas. En este artículo, podéis ver como Max Deutsch, utilizando un modelo de LSTM Recurrent Neural Network (algoritmo de aprendizaje cognitivo), y empleando como datos de entrada los textos de los primeros cuatro libros de Harry Potter, fue capaz de producir un nuevo capítulo. El capítulo lo pueden encontrar en el enlace que ponía antes. Hizo lo mismo para producir un capítulo de la serie Silicon Valley de HBO o para guiones para Expediente X. Twitter, para mucho del texto automático que genera (sí, mucho del que leeis), emplea cadenas de Markov. Es decir, empleando los textos que se mueven en dicha red, analiza qué palabras son más probables de aparecer de seguido a otras en el material fuente. El escritor/autor, poco tiene que decir. Las cadenas de Markov hacen todo por él o ella.

Prueben ustedes mismos. Navegando un poco por la red, he encontrado en GitHub este algoritmo creado por Jamie Brew, escrito en Python, y que permite entrenar modelos a partir de textos que le demos. Si quisiéramos crear cuentos para nuestros hijos, podéis introducir en la carpeta de textos aquellos con los que queráis que el software aprenda sus estructuras, para que sea capaz, a partir de ellas, de construir nuevas historias.

Código en Github de Jamie Brew para producir textos (Fuente: https://github.com/jbrew/pt-voicebox)
Código en Github de Jamie Brew para producir textos (Fuente: https://github.com/jbrew/pt-voicebox)

Este algoritmo me ha llamado la atención porque utiliza un enfoque híbrido algoritmo + humano. Por eso mismo decía al comienzo del artículo que suele ser difícil quedarse en un extremo o en otro. Brew visualiza estos algoritmos como un soporte a la creación humana. Que es, por cierto, como creo que más valor cogen estos algoritmos. En lugar de generar directamente las palabras, sugiere una lista de palabras, para que el creador elija la que más le gusta. Este modelo, en cierto modo no deja de ser diferente a cómo funcionamos los que escribimos o creamos en la vida real. Que nos quedamos pensando cuál es la mejor opción a seguir mientras vamos escribiendo. Es decir, es un proceso gradual que se nutre de pasos anteriores. Como las cadenas de Markov, que por eso son tan buen apoyo.

Este modelo de aproximación híbrido me gusta porque no hace un «commodity» la creatividad humana. Algo nos tiene que quedar a nosotros 🙂 Y, de hecho, ese «momento Eureka» que solemos tener al crear, es difícil de automatizar en un software. En un algoritmo. Por eso mismo, un modelo en el que en lugar de externalizar la creatividad, tenemos un algoritmo que nos ayuda en la parte más mecánica (darnos un conjunto de «mejores» alternativas a elegir para ir creando las diferentes piezas del puzzle final). Siempre habrá un humano por detrás, una mano artística.

De esta manera, no vemos el mundo de la inteligencia artificial, de los modelos como algo que compite contra nosotros. Que es lo que llevo diciendo mucho tiempo. Básicamente, porque esos discursos catastróficos o triunfalistas, ya digo serán luego difíciles de ser implementados.  El software es una herramienta que empleamos para hacer mejor nuestro trabajo. Para crearlo, necesitamos saber muchas cosas (tecnología, estadística, enfoque a aplicación -negocio-). Pero la creatividad, de momento, no hemos conseguido externalizarla. Y si queremos hacer cosas de calidad, es probable que ese monopolio artístico siga siendo del ser humano.

Cuándo y por qué puede fallar un modelo predictivo

Las pasadas elecciones americanas, han vuelto a poner encima de la mesa un debate que parece ya clásico: los (supuestos) fallos de las encuestas. El debate también salió con la infravaloración que se hizo a la victoria del Partido Popular el pasado 26-J, el «sorpasso» que las encuestas vaticinaron o en el Brexit.

Las encuestas, como modelos que son, son una aproximación a la realidad. Lo que suele fallar en esos modelos de aproximación no son tanto los métodos predictivos empleados, sino cómo se pondera la idea de la incertidumbre. Y es que estos ejercicios de adelantarnos a lo que puede ocurrir en un futuro (predecir), nunca borran ni eliminan la incertidumbre. El mundo es así, no es lineal.

Lo que ocurre es que nuestra mente no funciona bien bajo incertidumbre, por lo que la encanta utilizar las predicciones como una idea cerrada y segura. Así manejamos la información con más facilidad, reducimos nuestra fatiga cognitiva,  y podemos conversar sobre los temas con más facilidad con la gente.

Pero los modelos predictivos, como decía, no son tan sencillos. Ni los modelos estadísticos para tratar de hacer una previsión de los resultados electorales, ni los que tratan de predecir qué ocurrirá en la economía o con la meteorología. Siempre habrá incertidumbre.

Miremos el caso de las elecciones americanas para ilustrar la idea de cuándo y por qué puede fallar un modelo predictivo. Cuando hablamos del Teorema de Bayes, ya dijimos que predecir consta de tres partes constituyentes:

  1. Modelos
  2. Calidad de datos
  3. Juicio humano

Vayamos por partes. Los modelos. Ningún modelo es perfecto, el famoso aforismo de la estadística («All models are wrong«) de George Box que citó en este artículo de 1976. A sabiendas que la ciencia política llevada décadas estudiando el campo, que hay gente realmente buena detrás construyendo modelos predictivos (FiveThirtyEight, Predictwise, etc.), no tengo la sensación de que fuera un problema metodológico de captura de mecanismos -atributos, variables predictoras- de elección de presidente (comportamiento de los diferentes estados, variables económicas y sociales, momentum, ruido social, etc.).

No obstante, como señala este reportaje de New York Times, es posible y probable que los modelos no recogieran bien cómo Trump desplazó el debate a la derecha y ganó en zonas rurales el gran soporte urbano que tenía Clinton. Aquí juegan otros elementos (el mecanismo de asignación de electores), pero entiendo eso sí estaba recogido. Como veis, más incertidumbres que certezas. Pero esto es lo que tiene hacer modelos; a posteriori te das cuenta, pero a priori es difícil estimar las mejores variables a incorporar.

Modelo predictivo de fivethirtyeight.com
Modelo predictivo de fivethirtyeight.com

En segundo lugar, los datos en sí. De su calidad y su vital importancia, también hemos hablado mucho por aquí. Evidentemente, en un proceso electoral en el que cada vez los medios digitales tienen mayor protagonismo, es un candidato este eje a ser considerado. La falta de veracidad de las respuestas de las encuestas (no sea que alguien se entere que voy a votar a Trump, incluso un fallo de memoria, por las prisas con las que se suele responder), el sesgo de respuesta (te respondo a lo que tú me preguntas, no más), sesgos muestrales (¿cómo preguntar a todos a sabiendas de la ausencia de uso de medios digitales o telefónicos en muchos casos?, aquí es donde entraría el margen de error), etc. Es por todos estos problemas de los datos por los que cada vez hay más «cocina» o corrección de las respuestas por quién lo ha podido preguntar/hacer la encuesta. Por otro lado, no olvidemos la cada vez mayor importancia de las redes sociales, donde los efectos de red son difíciles de recoger todavía a nivel metodológico. Por todo esto, es probable que los datos que lleguen a los modelos, no sean los mejores en estos momentos. Y que haya mucho que mejorar aún en toda esta parte.

En tercer y último lugar, esta la interpretación de los resultados que ofrece un modelo. Es decir, el juicio humano. Como decíamos al comienzo, es difícil en ocasiones, en un modelo predictivo, explicar a la gente que todo lo que aquí se «modeliza» es una aproximación a una realidad mucho más complicada que lo que un modelo representa. Esa diferencia, ese gap, es lo que ponderamos con la incertidumbre. Como no sabemos lo que va a ocurrir con 100% de certeza, lo expresamos. Un intervalo de confianza del 95%, no garantiza, obviamente, nada. Este valor quiere decir que de cada 20 muestras sobre esa misma población (el electorado americano), 19 veces, el valor a predecir (el resultado electoral), estará contenido en el modelo. Solo se «fallará» (que tampoco es un término del todo correcto en este  contexto), en 1 de cada 20 ocasiones. ¿Puede ser este el caso de la victoria de Donald Trump o el resto de situaciones explicadas al comienzo? Es posible y probable.

Como ven, hacer un modelo predictivo no es un tarea sencilla. Por ello, es bueno manejar esta terminología básica de elementos críticos a considerar para saber muy bien lo que se está haciendo. En nuestros Programas de Big Data, por eso empezamos siempre hablando de modelado y calidad de datos, para luego empezar con la estadística y los modelos de aprendizaje supervisado y no supervisado (Machine Learning). No todo es software, claro.