Transferencia Neuronal de Estilo
Rubén Rodríguez Abril
¿Cómo captar el estilo artístico de una obra de arte o una fotografía, o los principios estéticos que dan personalidad a un cuadro? Esta tarea, aparentemente compleja y abstracta, puede ser modelada por un algoritmo de Inteligencia Artificial que además, proyecta dicho estilo sobre otra imagen cualquiera. Dicho algoritmo recibe el nombre de Transferencia Neuronal de Estilo y es el objeto de este artículo.
La Transferencia Neuronal de Estilo
En artículos anteriores de esta serie mostrábamos cómo el funcionamiento anómalo de una red convolucional y la introducción de circuitos de retroalimentación parecían provocar fenómenos extraños parecidos a las alucinaciones y pareidolias visuales humanas, con resultados hasta cierto punto con un claro valor artístico.
En esta publicación nos proponemos seguir especulando sobre las hipotéticas estructuras neurológicas subyacentes al proceso creativo humano y a la actividad artística. Y nos preguntamos si, al igual que en el caso de las alucinaciones, es posible trazar un paralelo entre estos fenómenos neurológicos y las estructuras de las redes neuronales artificiales.
Examinaremos para ello un supuesto particular de creatividad algorítmica, la Transferencia Neuronal de Estilo (Neural Style Transfer, NST), que consiste en el aprendizaje, por parte de una red neuronal, del estilo de una fotografía o una obra de arte determinada (por ejemplo “Noche Estrellada”, de Van Gogh) y la transferencia del mismo a otra imagen de entrada diferente.

Espacio de características
Al igual que sucede en algoritmos como DeepDream o DeepDraw, en la transferencia neuronal de estilo juegan un papel fundamental los espacios de características de las capas convolucionales, así como el flujo de información existente entre los mismos.
Llámese espacio de características o espacio de Fukushima a las diferentes posibilidades de configuración de una capa convolucional (o módulo de incepción, en el caso de GoogLeNet). Se trata de un hiperespacio dotado de tantas dimensiones como neuronas haya en la capa. Cada neurona individual se identifica por tres números: el mapa al que pertenece (z) y la posición (x, y) en la que se ubica dentro del mismo. Cada vector viene conformado por los valores de activación de las neuronas de esa capa.
Los espacios más cercanos a la entrada codifican rasgos de menor nivel (trazos, figuras geométricas), mientras que las capas más profundas almacenan los conceptos de nivel más abstracto (árboles, automóviles, etc..). El conjunto de todos los espacios de características de la red constituye un ámbito imaginario simbólico-semántico capaz de almacenar gran cantidad de patrones, texturas, ideas, arquetipos y categorías.
En dichos espacios pueden realizarse operaciones matemáticas que determinan la cercanía semántica entre dos estados de red determinados (vectores en el espacio de Fukushima). De particular interés son, en el ámbito de Transferencia Neuronal de Estilo, los conceptos de distancia euclídea entre dos vectores y matriz de Gram de una capa convolucional. Ambos fueron utilizados por tres investigadores de la Universidad de Tubinga para crear un ingenioso algoritmo capaz de codificar no sólo el contenido semántico de una imagen determinada, sino también su estilo.
Codificando el estilo

Procedimiento para la Transferencia Neuronal de Estilo
La función de pérdida
El procedimiento de Gatys et al es, en líneas generales, el siguiente:
La función de pérdida L(c,s,m) (que debe ser minimizada) se define para cada capa convolucional y está compuesta de dos términos. El primero de ellos se relaciona con el contenido de la imagen a sintetizar y el segundo de ellos con su estilo:
Donde L(c,s,m) es la función de pérdida total, L_{contenido} la parte de la función relacionada con el contenido semántico de la imagen y L_{estilo} la relacionada con su estilo. λ_{c} y λ_{s} son hiperparámetros que señalan el peso de cada una de estas dos partes, mientras que c, s y m representan respectivamente la fotografía o contenido, la obra de arte cuyo estilo se adopta y la imagen en proceso de síntesis. Inicialmente, los píxeles de la imagen m se determinan de un modo aleatorio, a partir de ruido.
Función de pérdida del contenido
La parte de la función de pérdida relacionada con el contenido es equivalente a la distancia euclídea al cuadrado entre dos vectores. El primer vector es el correspondiente a las activaciones de la capa convolucional de que se trate generadas por la fotografía. El segundo tiene como componentes las activaciones que la imagen en proceso de síntesis genera en esa misma capa:
donde el sumatorio se realiza a través de todas las neuronas (x,y,z) de un mismo mapa de características, siendo o_{x,y,z} la activación de la célula causada por la imagen (m) que se está generando (recordemos que inicialmente estos valores son aleatorios) y n_{x,y,z} la activación generada por la fotografía (c). La elección de este término asegura que, con el transcurso de las iteraciones, las activaciones de los mapas de características de ambas imágenes irá convergiendo.
Matrices de Gram
En el algoritmo de transferencia neuronal de estilo, el contenido de una imagen viene determinado por el conjunto de activaciones de los mapas de características. El estilo, por el contrario, se determina por las pautas de coactivación existentes entre los pares de mapas de una misma capa. Por pautas de coactivación entendemos la similitud (o disimilitud) de las distribuciones de valores de los dos mapas.
Dichas pautas de coactivación son descritas por el algoritmo de la Transferencia Neuronal de Estilo a través de las denominadas matrices de Gram. A cada capa de la red le corresponde una matriz de Gram. Y cada elemento de esta matriz es igual al producto de Frobenius de dos mapas de características diferentes.
Donde G_{i,j} es el elemento (i,j) de la matriz de Gram de la capa convolucional de que se trate y <F_{i},F_{j}>_{F} el producto de Frobenius de los mapas de características F_{i} y F_{j}. El sumatorio tiene lugar a través de las coordenadas x e y. Lo que se multiplica (y después se suma) son los valores de activación de las neuronas.
La nueva matriz de Gram tendrá, pues, tantos elementos como posibles pares de mapas de características en dicha capa. Si la quinta capa convolucional tiene 512 mapas, como sucede en el caso de la arquitectura VGG16, entonces su matriz de Gram tendrá 512^2 = 262144 elementos diferentes.

En este ejemplo mostramos una capa de cuatro mapas de características, de una resolución de 2×2 (o también x=2 e y=2). Tras esto mostramos el producto de Frobenius de los mapas F_{2} y F_{4} que resultará en una de las celdas de la matriz de Gram.
Coactivación de mapas

Mostramos aquí tres mapas de características. Aunque la media de todos ellos es la misma, vemos que los valores de los mapas F_{2} y F_{3} se distribuyen de forma similar. Por eso, el producto de Frobenius de ambos mapas es mayor que el de otros pares. Tanto los Productos de Frobenius que muestran correlación entre mapas, como los que manifiestan su ausencia, forman en conjunto el estilo de una imagen, codificado en la matriz de Gram.
Función de pérdida
La matriz de Gram contiene el estilo de la imagen, es decir, las pautas de respuesta conjunta de los mapas de características de la capa. La función de pérdida de estilo se calcula comparando las matrices de Gram de la imagen generada y de la imagen de la que tomamos el estilo. El algoritmo buscará minimizar la diferencia entre ambas, y así transferirá el estilo de una imagen a otra.
El término de la función de pérdida relacionada con el estilo se calcula también para cada capa convolucional. Se expresa algebraicamente de la siguiente forma.
Donde N es el número de neuronas de la capa, G_{ij} es la matriz de Gram de la imagen que estamos construyendo y A_{ij} la del cuadro cuyo estilo queremos copiar. Las dos matrices se restan y tras ello se calcula la norma de la matriz resultante. El sumatorio tiene lugar, pues, a través de los índices i,j. Conforme la función de pérdida tienda a cero, los estilos de las dos imágenes irán convergiendo.
Para reconstruir eficientemente la información relativa al estilo de una obra de arte es necesario utilizar en el cómputo los datos de las capas convolucionales más profundas, que contienen información global sobre la imagen, al contrario de lo que sucede en la reconstrucción de los rasgos de la fotografías, que puede realizarse perfectamente a partir de las capas más cercanas a la entrada.
Pasos del algoritmo de Transferencia Neuronal de Estilo
Los pasos del algoritmo son los siguientes:
La imagen de la obra de arte se hace pasar a través de la red. Las matrices de Gram A_{ij} son entonces calculadas para las primeras capas de cada uno de los cinco bloques convolucionales.
La imagen de la fotografía se hace pasar a través de la red. Se calculan los valores de activación n_{x,y,z)} de las neuronas de la primera capa de convolución del cuarto bloque.
Se crea una imagen aleatoria a partir de ruido. Dicha imagen también se hace pasar a través de la red.
L_{contenido} sólo se calcula para la primera capa del cuarto bloque convolucional. En el resto de las capas es cero. L_{estilo} y su gradiente se calculan para la primera capa de cada bloque convolucional.
Los gradientes se suman y se retropropagan hacia la entrada.
Se modifican los valores de la función de activación de la capa de entrada, cuyos datos -ya modificados- vuelve a penetrar de nuevo en la red.
Los pasos descritos en los tres apartados anteriores se iteran cientos de veces.
Parámetros
Durante la síntesis de la imagen se produce una suerte de pugna entre los dos términos de la función de pérdida, de tal manera que el primero de ellos (L_{contenido}, parametrizado por λ_{c}), pujará porque la imagen de resultado absorba el máximo contenido semántico y geométrico posible de la fotografía original. El segundo (L_{estilo}, parametrizado por λ_{s}) término, por el contrario, tratará de compeler a la red y a la imagen final a asumir información relativa al estilo de la obra de arte señalada. Variando ambos hiperparámetros podemos conseguir que un tipo de información predomine sobre el otro.

Modulando los hiperparámetros λ_{c} y λ_{s} de la función de pérdida podemos hacer que predomine la información visual sobre la estilística o viceversa. Cuanto más a la derecha, mayor es la ratio \frac{λ_{c}}{λ_{s}}. La obra de arte es “Composición VII”, de Vasili Kandinski.
Interpretación de la Transferencia Neuronal de Estilo
La principal novedad del algoritmo que a grandes rasgos hemos analizado es que es capaz de capturar la información relativa al estilo de una fotografía o una obra de arte determinada.
Dicho estilo viene determinado por las relaciones de correlación entre las activaciones de los mapas de características de una misma capa. Ello parece señalar una suerte de comportamiento hebbiano, que afectaría, no tanto a las neuronas individuales como a los mapas de características en su conjunto. Si dos mapas de características reaccionan de una manera parecida ante la imagen que porta el estilo, el algoritmo fuerza también a que haya la misma reacción conjunta durante la síntesis de la imagen final. De esta manera se transmite el estilo de una imagen a la otra.
Nos preguntamos si en el cerebro humano también existen mecanismos de aprendizaje hebbiano que afectarían a grupos enteros de neuronas, encargados de procesar diferentes tipos de información. Tal vez sea éste uno de los mecanismos que permiten al cerebro procesar niveles superiores de significación a la simple segmentación semántica.
Lecturas recomendadas
– Gatys, L. A., Ecker, A. S. y Bethge, M. (2015) A Neural Algorithm of Artistic Style.
– Simonyan, K. y Zisserman, A. (2014) Very Deep Convolutional Networks for Large-Scale Image Recognition.