La red neuronal de Google aprende a identificar gatos y a pintar. El equipo de investigación nos cuenta cómo funciona.
Las redes neuronales artificiales han provocado recientemente un notable progreso en la clasificación de imágenes y en el reconocimiento de voz. Pero aunque han sido unas herramientas muy útiles basadas en métodos matemáticos bien conocidos, en realidad seguimos entendiendo muy poco de por qué ciertos modelos funcionan y otros no. De modo que echemos un vistazo a algunas sencillas técnicas que nos ayudarán a entender estas redes.
Entrenamos a una red neuronal artificial mostrándole millones de ejemplos de entrenamientos y ajustando paulatinamente los parámetros de la red hasta que nos ofrezca las clasificaciones que deseamos. Una red consta normalmente de entre 10 y 30 capas apiladas de neuronas artificiales. La capa de entrada recibe cada una de las imágenes y las va comunicando a la capa siguiente hasta alcanzar la capa de «salida». La «respuesta» de la red proviene de su capa final de salida.
Uno de los retos de las redes neuronales es entender lo que sucede exactamente en cada capa. Sabemos que tras el entrenamiento, cada capa extrae gradualmente características a un nivel cada vez mayor de la imagen, hasta que la capa final esencialmente toma una decisión sobre lo que muestra la imagen. Por ejemplo, la primera capa quizá busque filos o esquinas. Las capas intermedias interpretan las características básicas para buscar formas o componentes generales, como una puerta o una hoja. Las pocas capas finales transforman esas formas o componentes en interpretaciones completas, y estas neuronas se activan como respuesta a cosas muy complejas, como edificios o árboles enteros.
Una forma de visualizar lo que sucede es darle la vuelta a la red y pedirle que realce una imagen de forma que se pueda extraer una interpretación particular. Digamos que desea saber qué tipo de imagen daría como resultado «plátano». Empiece con una imagen llena de ruido aleatorio y, a continuación, modifique la imagen hasta lo que la red neuronal entiende como plátano. Por sí misma, esta acción no funciona muy bien, pero lo hará si imponemos la restricción previa de que la imagen debería tener estadísticas similares a las de las imágenes naturales, como que los píxeles colindantes deban guardar una correlación.
Aquí tenemos una sorpresa: las redes neuronales que fueron entrenadas para discriminar entre distintos tipos de imágenes también disponen de la información necesaria para generar imágenes. Vea algunos ejemplos más entre las distintas clases:
¿Por qué esto resulta importante? Bien, entrenamos a las redes sencillamente mostrándoles muchos ejemplos de lo que deseamos que aprendan, esperando que extraigan la esencia de lo que importa (por ejemplo, un tenedor necesita un mango y entre 2 y 4 dientes), y que aprendan a ignorar lo que no importa (un tenedor puede tener cualquier forma, tamaño, color o inclinación). Pero, ¿cómo comprobamos que la red ha aprendido correctamente las características adecuadas? Visualizar la representación que tiene la red de un tenedor puede ser de ayuda en este respecto.
Efectivamente, en algunos casos, esto revela que la red neuronal no está buscando lo que pensábamos. Por ejemplo, esto es lo que una red neuronal que diseñamos pensó que eran las mancuernas:
Es cierto que ahí hay mancuernas, pero al parecer ninguna imagen de una mancuerna será completa si no aparece en ella un musculoso culturista que las levante. En este caso, la red fracasó a la hora de discernir completamente la esencia de una mancuerna. Quizá nunca le han mostrado una mancuerna sin un brazo sosteniéndola. La visualización nos puede ayudar a corregir este tipo de percances derivados del entrenamiento.
En lugar de ordenar exactamente qué característica deseamos que la red amplifique, también podemos dejar que la red tome esa decisión. En este caso, sencillamente le mostramos una imagen o fotografía arbitraria a la red y le dejamos que la analice. A continuación, elegimos una capa y le pedimos a la red que realce lo que haya detectado. Cada capa de la red se ocupa de las características a un nivel distinto de abstracción, de modo que la complejidad de las características que generamos depende de la capa que elijamos realzar. Por ejemplo, las capas inferiores tienden a producir trazos o sencillos patrones a modo de adorno, porque esas capas son sensibles a características básicas, como los filos y sus direcciones.
Izquierda: Fotografía original de Zachi Evenor. Derecha: imagen procesada por Günther Noack, ingeniero de software
Izquierda: Obra original de Georges Seurat. Derecha: imagen procesada por Matthew McNaughton, ingeniero de software
Si elegimos capas a un nivel superior, que identifican características más sofisticadas en las imágenes, tenderán a aparecer características complejas e incluso objetos enteros. De nuevo, sencillamente empezamos con una imagen existente y se la facilitamos a nuestra red neuronal. Le pedimos a la red: «De lo que veas en ella, dame más». Esto crea un bucle de retroalimentación: si una nube se parece un poco a un pájaro, la red hará que se parezca más a un pájaro. Esto, a su vez, hará que la red reconozca al pájaro aún con mayor claridad en la ocasión siguiente y así sucesivamente, hasta que un pájaro con un mayor nivel de detalle aparezca supuestamente de la nada.
Los resultados son interesantes, incluso una red neuronal relativamente sencilla se puede utilizar para interpretar en exceso una imagen, igual que cuando de niños disfrutábamos viendo pasar las nubes e interpretando sus formas. Esta red fue entrenada mayormente en imágenes de animales, así que de modo natural tiende a interpretar formas como animales. Pero, dado que los datos se guardan a un nivel tan alto de abstracción, los resultados son una mezcla interesante de estas características aprendidas.
Esta red fue entrenada mayormente en imágenes de animales, así que de modo natural tiende a interpretar formas como animales. Pero, dado que los datos se guardan a un nivel tan alto de abstracción, los resultados son una mezcla interesante de estas características aprendidas.
Por supuesto, con esta técnica podemos hacer bastante más que mirar las nubes. Podemos aplicarla a cualquier tipo de imagen. Los resultados variarán bastante según el tipo de imagen, ya que las características que se introducen sesgan la red hacia determinadas interpretaciones. Por ejemplo, las líneas del horizonte tienden a llenarse de torres y pagodas. Las rocas y los árboles se convierten en edificios. Los pájaros e insectos aparecen en las imágenes de hojas.
La imagen original influye en el tipo de objeto que formará la imagen procesada
Esta técnica nos proporciona un sentido cualitativo del nivel de abstracción que una determinada capa ha alcanzado a la hora de entender las imágenes. Llamamos a esta técnica (en inglés) «Inceptionism» en referencia a la arquitectura de la red neuronal utilizada. Se puede observar en las siguientes imágenes:
Pero debemos seguir profundizando: Iteraciones
Si aplicamos el algoritmo de forma iterativa sobre sus propios resultados y aplicamos algo de zoom tras cada iteración, obtenemos un flujo interminable de nuevas impresiones, que permiten explorar el conjunto de cosas que la red conocerá. Incluso podemos comenzar este proceso a partir de una imagen con ruido aleatorio, de modo que el resultado sea estrictamente el de la red neuronal, como se ve en las imágenes siguientes:
«Sueños» de la red neuronal — generados estrictamente a partir de ruido aleatorio utilizando una red entrenada en lugares por parte del Laboratorio de Inteligencia Artificial y Ciencias informáticas del Instituto Tecnológico de Massachusetts
Las técnicas aquí presentadas nos ayudan a entender y visualizar cómo las redes neuronales son capaces de llevar a cabo complejas tareas de clasificación, mejorar la arquitectura de la red y comprobar lo que la red ha aprendido durante el entrenamiento. También nos hace preguntarnos si las redes neuronales podrían convertirse en una herramienta para los artistas, como una nueva forma de mezclar conceptos visuales, o quizá incluso arrojar algo de luz sobre las raíces del proceso creativo en general.