Los algoritmos de cada día (parte 3)

Los algoritmos están presentes en nuestra vida cotidiana de muchas maneras. En esta tercera nota y última parte de la trilogía sobre los algoritmos de cada día, nos preguntamos si los algoritmos se pueden entrenar para hacer arte.

Los algoritmos son creaciones humanas, no tienen nada de mágico o misterioso; tampoco hace falta saber sobre súper computadoras, ciencia de datos o altísimas potencias de cálculo y predicciones ―aunque también tienen mucho que ver con todo esto― para comprenderlos un poco más.

La manera más simple de definir a los algoritmos es decir que son recetas o una lista de pasos a seguir para desarrollar una tarea o una serie de instrucciones para hallar la solución de un problema o un programa para lograr un objetivo. Ese objetivo puede ser muy elemental o extremadamente complejo.

Algo muy elemental, y que involucra un algoritmo, es ordenar libros por color de lomo en estantes. Para cumplir este objetivo, creamos una serie de categorías y de pasos a seguir: todos los de lomo verde van en el estante 1, todos los de lomo naranja en el estante 2, los negros en el estante 3 y así de acuerdo a la cantidad de libros que tengamos, la diversidad de colores y los números de estantes disponibles.

Un algoritmo complejo es, por ejemplo, el que procesa toda la información para recrear el origen de un tsunami. Este algoritmo utiliza datos recolectados por sensores y boyas ubicados en los océanos y los compara con otra gran cantidad de información previa para interpretar las variaciones ocurridas en el mar y predecir su evolución. La predicción matemática que arroja el algoritmo sirve para desarrollar mejores sistemas de alerta, mucho más precisos.

Si podemos programar a los algoritmos para que recreen el origen de una ola gigante, operen un brazo robótico para realizar una microcirugía de ojo o manejen un auto sin conductor ¿podemos entrenarlos para hacer arte?

Entrenamiento de algoritmos

Cuando decimos entrenamiento, nos referimos a diseñar diferentes tipos de algoritmos que sean capaces de analizar e interpretar la gran masa de datos e información que les brindamos cada vez mejor y de modo más específico. ¿Cómo logramos que sean más eficientes? Les enseñamos. ¿De qué manera les enseñamos a los algoritmos? Alimentándolos con mayores volúmenes de datos e información y programándolos para que realicen procesos iterativos en diferentes capas, como si cada capa fuese un ensayo de prueba y error, con posteriores “decisiones”. Por cada capa recorrida, analiza e interpreta en un nivel más profundo. Cuantas más capas atraviese y cuantas más repeticiones (iteraciones) realice de esos recorridos, más precisas serán las decisiones resultantes.

Explicado de una manera muy simplificada, el entrenamiento de algoritmos involucra procesos semejantes a los que se ponen en juego durante el aprendizaje. Como si los algoritmos realizaran bocetos nuevos, originales, a partir de datos previos incorporados en el sistema.

Las investigaciones con las denominadas redes neuronales artificiales van en esa dirección, pero ¿qué son estas redes? Se trata de algoritmos basados en el funcionamiento de las neuronas biológicas que componen nuestro sistema nervioso. Estos algoritmos “imitan” el funcionamiento de las redes de neuronas biológicas. Aunque no alcanzan la capacidad de abstracción de las neuronas del cerebro humano, estas redes artificiales van sumando complejidad con los programas de entrenamiento.

En la web del Proyecto IDIS, Javier de Akzue, magister en Artes Electrónicas por UNTREF, describe:

Una red neuronal tiene entre diez y treinta capas de neuronas artificiales, y el contenido a analizar e interpretar va atravesando cada una de ellas hasta llegar a la última «capa de respuesta», que presenta el resultado. Asignando valores para errores y aciertos y con experiencias e información previa, las neuronas van acumulando resultados y generando una suerte de conocimiento. De alguna manera, las redes neuronales se entrenan a sí mismas a lo largo del tiempo, de acuerdo a los patrones que buscan como correctos y los que descartan como incorrectos. 

Arte algorítmico

El arte algorítmico, también conocido como arte generado por computación, es un subconjunto del arte generativo, aquel generado por un sistema autónomo.

Que un sistema sea autónomo no significa que “hace lo que quiere”. Los algoritmos tampoco hacen lo que quieren. Cuando hablamos de entrenamiento de algoritmos, entran en escena conceptos como aprendizaje automático (machine learning) y aprendizaje profundo (deep learning), entre otros. Es muy importante señalar, que el entrenamiento de los algoritmos siempre tiene un sesgo técnico e ideológico que, obviamente, depende de con qué tipo de imágenes, datos e información se alimente a los algoritmos.

Leonardo Solaas, filósofo, programador y artista argentino, introduce la manipulación de video a través de algoritmos en muchas de sus obras. Solaas sostiene que los sistemas generativos están en el cruce del arte y la tecnología:

Una tecnología en particular, las redes neuronales profundas, está permitiendo que las computadoras trabajen en territorios que hasta hace poco eran un indiscutido dominio humano. Cosas tales como la traducción, el reconocimiento de objetos, la comprensión del habla, que solían ser inabordables para el procesamiento serial de las máquinas, de a poco se tornan accesibles. Vemos producciones de redes neuronales en el campo de la literatura, la música y la imagen que van siendo, si no del todo buenos, al menos inquietantes.

Los artistas que trabajan con sistemas autónomos saben que en cierto momento tienen que ceder el control. En otras palabras, diseñan y programan sistemas que, a su vez, "hacen arte". El punto aquí es que no se trata de un arte trascendental producido por la sensibilidad de una persona, sino de una especie de arte híbrido. El artista programa algoritmos en función de determinados deseos y búsquedas creativas propias, pero el resultado depende no solo de todos los datos y la información que el artista introduce en el sistema, sino de la manera autónoma en que el sistema es capaz de procesar y "resolver" ese set de datos.

¿Sueñan los algoritmos con cabezas de perros?

Deep Dream es un algoritmo de procesamiento de imágenes impulsado por Google. La red neuronal de este algoritmo fue entrenada ingresándole millones de imágenes. 

Alexander Mordvintsev, ingeniero de software, Christopher Olah, pasante de ingeniería de software y Mike Tyka, ingeniero de software fueron los responsables del desarrollo de Deep Dream. En el artículo que publicaron en el blog de IA de Google, dicen:

Uno de los desafíos de las redes neuronales es comprender qué sucede exactamente en cada capa. Sabemos que después del entrenamiento, cada capa extrae progresivamente características cada vez más altas de la imagen, hasta que la capa final esencialmente toma una decisión sobre lo que muestra la imagen. Por ejemplo, la primera capa puede buscar bordes o esquinas. Las capas intermedias interpretan las características básicas para buscar formas o componentes generales, como una puerta o una hoja. Las últimas capas las ensamblan en interpretaciones completas: estas neuronas artificiales se activan en respuesta a cosas muy complejas, como edificios o árboles enteros. (…) Durante la investigación, además de obtener una idea de cómo estas redes llevan a cabo tareas de clasificación, descubrimos que el proceso también generó un arte hermoso.

El algoritmo de Deep Dream fue entrenado para que las redes neuronales pudiesen diferenciar los objetos dentro de una imagen: se le cargaron infinidad de ejemplos mostrando los diferentes objetos que componían dichas imágenes, los cuales respondían a una serie de características, por ejemplo: un perro tiene una cabeza, cuatro patas, dos ojos, un hocico y una cola. Partiendo de esta máxima, las redes comenzaron a procesar cualquier imagen que se les "mostraba", buscando encontrar similitudes entre su base de datos y la imagen en cuestión.

Como el algoritmo de Deep Dream fue capaz de extraer nuevas imágenes dentro de la imagen inicial y combinarlas de manera autónoma, se originaron los llamados “sueños de Google”. La denominación de sueños es una metáfora, por supuesto, pero en estas imágenes oníricas, repletas de cabezas de perros, ojos y patas mezcladas con otros objetos, muchos y muchas artistas alrededor del mundo vieron grandes posibilidades para la experimentación digital y el arte generativo.  

Aquí podemos apreciar tres pinturas de Vincent van Gogh recreadas con el generador de Deep Dream.

 

Google liberó el código de Deep Dream y los artistass exploraron el potencial creativo del algoritmo.

En la web hay una versión simple del generador Deep Dream, libre y gratuita, para cualquier navegante o usuario. Es muy básica, pero entretenida. Para acceder, se abre el Deep Dream Generator y solo hay que loguearse con Google o Facebook. Tiene tres niveles posibles de edición: Deep Style, Thin Style y Deep Dream. También cuenta con galerías para ver los experimentos de los usuarios.   

Este generador permite subir imágenes y/o fotografías, para someterlas a la transformarción de Deep Dream. Los resultados pueden postearse en las galerías o descargarse. Solo hay que animarse y probar todas las posibilidades. En configuración o settings se pueden personalizar numerosas variables.

 

¿Pintar como Rembrandt?

 The Next Rembrandt es una obra realizada por algoritmos y análisis de datos para generar un nuevo cuadro del pintor holandés Rembrandt Harmenszoon van Rijn (Países Bajos 1609 – 1699). La idea que inspiró esta iniciativa fue entrenar a los algoritmos para poder pintar una nariz o una boca como lo haría Rembrandt.

El proyecto llevó a cabo una investigación que relevó la mayor cantidad de datos e información existente sobre las obras del artista holandés. Esta extensa base de datos de 150 gigabytes estaba compuesta por 168.263 fragmentos de las 346 pinturas de Rembrandt, análisis de estudios de historia del arte, contenidos de pinturas píxel por píxel, tipos de pigmentos más utilizados, estilos de trabajo, proporciones de rasgos faciales más frecuentes, investigación de archivo y análisis de imágenes con reconocimiento facial y escaneos 3D de alta resolución.

El objetivo de nutrir a los algoritmos con esta cuantiosa base de datos era que pudiesen cuantificar y estadísticamente “conocer” la evolución de Rembrandt como artista. Los algoritmos procesaron todo el material y sus resultados se volcaron en una impresora 3D especial. La impresión se hizo sobre un lienzo en sucesivas capas, como lo haría un pintor. Así se generó una pintura original, "casi” un nuevo Rembrandt.

Imagen de la pintura algorítmica. Fotografía Agencia EFE

 

En el siguiente video, Emmanuel Flores, líder del proyecto The Next Rembrandt, explica cómo fue el trabajo multidisciplinario de su equipo, mostrando paso a paso, con ejemplos, de qué manera pusieron en marcha el desafío. Charla TED en español.

 

Más allá de las derivas algorítmicas de los sistemas autónomos y de que solo existió un Rembrandt, el llamado arte generativo es importante para continuar explorando posibilidades creativas. Decíamos al principio, que los algoritmos no hacen "lo que quieren": las personas somos quienes los entrenamos. Los algoritmos tienen una capacidad de procesamiento ultra veloz para conjuntos masivos de datos, esto es lo verdaderamente importante. Podemos aprovechar esta capacidad de los algoritmos como herramientas, por ejemplo, para la restauración de pinturas y otras obras de arte. Todo depende de los objetivos que nos guíen.  

Así terminamos la trilogía de notas sobre los algoritmos de cada día, no dejen de leer las partes 1 y 2. 

Ficha

Publicado: 03 de mayo de 2021
Última modificación: 04 de mayo de 2021

Audiencia

Área / disciplina

Nivel

Categoria

Modalidad

Formato

Etiquetas

Autor/es

Otros contribuyentes

Licencia

Últimos recursos

Árbol de Educapps

Orígenes del graffiti

Macetas sustentables
 

Javier Di Salvo: ¿cuáles son los aportes que nos brindan los videosjuegos en contextos educativos de virtualidad?

Javier Di Salvo: ¿cuáles son las recomendaciones que le darías a un docente a la hora de crear recursos interactivos?