Archivo de la etiqueta: algoritmo

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.

Cuando los algoritmos se convierten en cajas negras

Les voy a recomendar un libro que me ha parecido realmente espectacular: “The Black Box Society: The Secret Algorithms That Control Money and Information“.

Fuente: Amazon
Fuente: Amazon

Empecemos por lo básico, definiendo qué son los algoritmos y por qué hablamos ahora de “cajas negras”. Los algoritmos básicamente es lo que hacemos los informáticos cuando nos ponemos a crear una serie de reglas abstractas para transformar datos. Es decir, cogemos una fuente de información o datos, y dado que no está expresado ni representan aquello que queremos obtener, diseñaños y desarrollamos una serie de reglas que permiten encontrar, expresar y representar aquello que estábamos buscando.

Además, desde que hemos introducido el paradigma Big Data, los algoritmos también buscan, patrones, relaciones, etc. Dado que cada vez codificamos y automatizamos un mayor número de nuestras conductas, deseos, emociones, etc. en entornos digitales, producimos una mayor cantidad de datos. Y más interesante resulta para muchas industrias desarrollar algoritmos para encontrar inteligencia que transformar en negocio.

Por ello, hoy en día, tenemos muchos, muchísimos algoritmos. Además, cada vez más sofisticados. Junto con el hardware y las redes, constituyen los ejes clave sobre los que pivota esta transformación digital de muchas industrias. Estamos ya ante las máquinas más sofisticadas del planeta. Lo cual está muy bien: más seguridad, optimización de las rutas para evitar perder tiempo, frenos automáticos, etc. 100 millones de líneas de código incorporan los nuevos vehículos (frente a las 60 millones de líneas que tiene Facebook y las 5 millones de líneas que tiene el colisionador de hadrones, para que se hagan a la idea de la complejidad de la que habalmos). Estamos ante las primeras máquinas que están alcanzando los límites biológicos de la complejidad.

El problema, además de su complejidad, es que fueron concebidos por una serie de personas, que seguían algún objetivo, no siempre claro. La intencionalidad del ser humano es inherente a lo que hacemos. Actuamos en base a incentivos y deseos. Por lo tanto, la pregunta que nos solemos hacer cuando pensamos en las cajas negras de los algoritmos pasan por su reingeniería. Es decir, saber cuáles son las reglas que los gobiernan.

Algoritmos de caja negra (Fuente: https://es.wikipedia.org/wiki/Caja_negra_(sistemas)#/media/File:Blackbox3D.png)

Cuando no sabemos qué reglas son éstas, hablamos de algoritmos de “caja negra”. No sabemos cómo funcionan, cuál es el criterio con el que lo hacen, con qué objetivos fueron concebidos, etc. Por ello, el libro que os recomendaba al comienzo, sugiere que comencemos a discutir también sobre el “accountability” o “escrutinio” de los algoritmos. En una era en la que las apuestas contras las divisas de los países, los coches o servicios públicos son autónomos, o personas o sistemas de Big Data que toman decisiones de sanidad son codificadas en algoritmos, no podemos esquivar esta conversación.

En este sentido, el libro de Pasquale, introduce la “Ética de la tecnología” bajo tres perspectivas que debieran ser consideras cuando construimos algoritmos:

  • Crítica deontológica: es decir, que los resultados a obtener deban satisfacer una serie de reglas, políticas, principios, etc.
  • Crítica teleológica: valorar las consecuencias de los resultados que obtienen esos algoritmos.
  • Crítica de valores: diseño que considera de manera explítica e implítica los valores compartidos en una sociedad global, además de a los propios stakeholders que perciben y usan el sistema como se pensaba en un comienzo.

Con estas tres miradas a incorporar cada vez que enfrentamos el diseño y desarrollo de un algoritmos, son varios los elementos a considerar para ser responsable en su concepción y sus posibles consecuencias. Especialmente, para el campo del Big Data:

  • Disponibilidad: que sea fácil de disponer, no solo  ya el propio código, sino también su funcionamiento.
  • Facilidad de mantenimiento: que no resulte difícil de mantener para una persona ajena al que diseñó y desarrolló el algoritmo.
  • Inteligibilidad: entendible para más personas que los que formaron el equipo de su creación.
  • Integridad del algoritmo: que se mantenga íntegro y no solo funcione para un conjunto de datos determinados.
  • Selección del modelo y atributos: que el modelo sea representativo de la realidad que quiere reflejar. Los atributos a seleccionar para su caracterización, también resultan críticos.
  • Integridad de los datos: lo que decíamos a nivel de algoritmo, también a nivel de datos. Que se mantengan íntegros y no sean susceptibles de modificaciones fáciles o ser demasiado volátiles.
  • Propiedad colectiva de los datos: que los datos no sean propiedad del que desarrolló el algoritmo; desacoplando esa propiedad, podríamos hablar de un compromiso social y global.
  • Sesgo de selección: ¿qué preguntas nos estamos haciendo a la hora de construir el algoritmo? No caer en la trampa de seleccionar solo las partes que más nos interesan o favorecen.

En el congreso Governing Algorithms, se trataron muchos de estos temas. Pero, además hablaron también de otra forma de diseñar y desarrollar algoritmos, con ejemplos como:

  • Sunlight Foundation: una organización que trabaja en la explotación de datos en el campo de la innovación social, el análisis de las facturas de gobiernos para encontrar relaciones o patrones, etc.
  • Enroll America: búsqueda de ciudadanos no asegurados de manera activa e inteligente para mejorar su bienestar.
  • Data Science for Social Good: una iniciativa de la Universidad de Chigado para formar “data scientist” en la construcción de algoritmos para la mejora del bienestar global.

Como toda herramienta, en su uso, dependerá su evaluación. Una evaluación, que como han visto, tampoco es sencilla. ¿Es ético un algoritmo? Depende de todos los factores arriba listado. Lo que sí parece claro es que cuando cogen una forma de “caja negra”, suponen un riesgo global importante. Está en nuestras manos que el “accountability” sea efectivo, y no construyamos reglas que no satisfagan esas perspectivas de análisis citadas.