Ir al contenido principal

¿Cómo funciona el programa AlphaGo de Google DeepMind?

"[Las neuronas son] células de formas delicadas y elegantes, las misteriosas mariposas del alma, cuyo batir de alas quién sabe si esclarecerá algún día el secreto de la vida mental." (Ramón y Cajal)

Introducción.

El programa AlphaGo desarrollado por Google DeepMind se ha hecho famoso estos días en los medios de comunicación a partir de su enfrentamiento (y victoria) frente el campeón del mundo y noveno dan, Lee Sedol.

Como digo, todos los medios se han hecho eco de esta proeza (en concreto, conseguir un algoritmo capaz de competir en igualdad de condiciones con un gran maestro de Go), algo que se pensaba que aún tardaría 10 años más en llegar, pero pocos medios no especializados han explicado con cierto detalle cómo funciona realmente AlphaGo. Y esto es precisamente lo que pretendo con esta entrada: explicar técnicamente del modo más sencillo posible qué es lo que han hecho desde Google para conseguir este hito en inteligencia artificial,  y hacerlo además de un modo que pueda ser entendido más o menos por cualquier persona.

Durante toda esta entrada, voy a basarme en el paper que el propio equipo de DeepMind ha publicado en la revista Nature explicando su obra: "Mastering the game of Go with deep neural networks and tree search" (http://www.nature.com/nature/journal/v529/n7587/full/nature16961.html). Pero para que gente no especializada pueda entender este asunto, evidentemente tendré que simplificar en gran parte el contenido de dicho trabajo. No obstante, decir a aquellos lectores con conocimientos más avanzados de computación, que podéis acceder a dicho paper y obtener toda la información técnica completa y detallada en profundidad (si no queréis pagar, aquí tenéis un enlace gratuito al PDF oficial ofrecido por Google Scholar :P).

Precedentes de AlphaGo.

El juego de tablero del Go ha sido desde hace décadas el último gran reto de la inteligencia artificial en cuanto a intentar conseguir un nivel de juego capaz de enfrentarse a grandes maestros humanos. Tal es la complejidad combinacional del juego (¡donde una partida tiene más movimientos posibles que átomos tiene el Universo!), que ni siquiera poniendo miles de ordenadores distribuidos calculando jugadas mediante algoritmos tradicionales de "fuerza bruta" se conseguía nada (algo que sí sirvió, sin embargo, para que el DeepBlue de IBM venciera al gran maestro de ajedrez Gary Kasparov en 1996). Pero como decimos, en el Go esta estrategia digamos "tradicional" de pre-programar algunas reglas de juego e invertir luego cientos de computadores para prever y calcular las mejores jugadas no conseguían ganar ¡ni siquiera a un jugador principiante!

Nuevas técnicas de inteligencia artificial fueron, no obstante, apareciendo en los últimos años, las cuales ya introducían nuevos preceptos y estrategias: siendo de destacar la aparición en el uso de árboles de exploración Monte-Carlo -no entraré en mucho detalle sobre esta técnica denominada MCTS (Monte-Carlo Tree Search), pero tenéis mucha más información en el paper y en internet ;)-. Pues bien, usando estas nuevas técnicas ya se lograron programas comerciales capaces de jugar al nivel de un jugador amateur (con un Elo de sobre 2000), siendo en este sentido de destacar los programas Crazy Stone y Zen.

Comparación del nivel de juego entre AlphaGo, el gran maestro Fan Hui, y otros programas comerciales de Go.

Sin embargo, hasta llegada de AlphaGo en 2015, ningún programa pudo pasar de este nivel amateur de juego, y se pensaba que poder llegar a competir con un gran maestro de Go de dan (p) (con un Elo por encima de 3000), era algo que tardaría en llegar un mínimo de 10 años más...pero finalmente no ha sido así. AlphaGo venció en octubre del 2015 en un torneo al gran maestro humano Fun Hui, de dan 3p (y sobre 2800 de Elo). Y aunque ya eso supuso una revolución y un verdadero logro para la tecnología, ha sido no obstante este año, tras su fenomenal enfrentamiento con el 9p dan Lee Sedol (con un Elo por encima de 3500), cuando se ha confirmado la proeza. Una proeza con un mérito aún mayor dado el método por el que ha conseguido: habiéndose literalmente simulado el modo en que el cerebro humano piensa y aprende, para lograr así generalizar y abstraer lo suficiente la capacidad del algoritmo como para entender y comprender (igual que lo haría una persona), el valor de un movimiento únicamente a partir de la información sensible (visual) del tablero. Veamos ésto con un poco más de detalle.

Redes neuronales artificiales.

Cuando decimos que este logro se ha conseguido simulando cómo funciona el cerebro humano, me estoy refiriendo, por supuesto, a que se han utilizado profusamente redes neuronales artificiales (que no son más que una emulación computacional del modo en que se conforman las redes neuronales biológicas en el hombre -y en el resto de animales- para otorgamos nuestras capacidades cognitivas).

Estas redes se usaron concretamente para dos tareas bien diferenciadas: para seleccionar (y descartar) estrategias de juego que merecen (o no) la pena estudiar más a fondo de entre las cientos de miles de combinaciones disponibles, y para evaluar lo favorable o desfavorable que es un determinado estado del tablero. Para cada una de estas dos tareas se usaron varias subredes neuronales independientes, aunque todas compartían una estructura muy similar; tratándose de redes con una entrada (input) "visual" el cual recibe directamente los pixels del tablero en un instante dado, tras lo cual 14 capas intermedias u ocultas (hidden layers) se encargan de procesar esta información "sensible" recibida, trasladando el resultado de este procesado de información hacia una capa de salida (output). Este resultado será finalmente el utilizado por AlphaGo para discriminar lo acertado o no de una determinada estrategia de juego, y para intentar prever y entender cómo de bien le iría si finalmente se decidiese por una de ellas.

Este ha sido, por tanto; el verdadero acierto del equipo de desarrollo de Google, hacer un uso muy intensivo de redes neuronales complejas para abstraer y generalizar la estrategia de juego; y ha sido además lo que ha permitido en tan sólo dos años, aumentar el Elo del estado del arte en la IA de este juego en más de 1500 puntos: todo un rotundo éxito.

Imitando al hombre.

Sin duda, la clave detrás del poder del programa se encuentra en haberse logrado imitar computacionalmente, y con mucho acierto, el modo en que se supone que la propia mente humana procede a la hora de jugar una partida de Go; y también al imitar el modo en que procede el cerebro humano a la hora de aprender a jugar primero, y a ganar después con el tiempo maestría. Y para que se comprenda este punto con claridad, creo que lo mejor es hacer un breve símil aproximado entre el modo en que se supone que la mente de un maestro humano procede, y el modo en que AlphaGo hace lo propio:

Ilustración de una red neuronal biológica.
A la hora de jugar una partida, un jugador humano primeramente observa mediante la vista (captando los fotones reflejados por el tablero) el estado actual de juego (número de piezas en cada casilla, color de las mismas, etc,); esa información eléctrica sensible se traslada mediante el nervio óptico hacia el sistema nervioso central (SNC), donde la corteza visual primaria V1 (y posteriormente las áreas visuales corticales extra estriadas: V2, V3, V4, y V5), tratan esta información visual originaria, adecuándola y transformándola de modo que sirvan más eficazmente en los sucesivos procesamientos neuronales, los cuales tomarán como entrada esta información visual tratada (y no la original del nervio óptico). No existen aún detalles exactos y completos del modo en que este procesamiento posterior ocurre, pero sí se sabe que el hipotálamo actúa como coordinador (o controlador) de un proceso asociado recurrente e interconectado donde diferentes subredes neuronales biológicas especializadas procesan toda la información de un modo concurrente (fundamentalmente en los lóbulos temporales y parietales). Durante este procesado continuo y asociado de redes especializadas, se supone que el jugador va mentalmente seleccionando y estudiando los movimientos que considera prometedores (utilizando la memoria), y luego previendo el resultado que ese movimiento conllevaría en sucesivas jugadas, descartando así las jugadas menos favorables y profundizando en aquellas que sí se lo parecen. Este bucle mental, en gran parte inconsciente, se repite durante miles de simulaciones mentales imaginarias (descartando por el camino billones de jugadas no valoradas como prometedoras) para finalmente, tras un intervalo variable de tiempo de dicha "exploración mental", procederse a una salida (es decir; a la toma de una decisión final): "colocar la pieza en la casilla x". Esta salida se transmite posteriormente a los nervios motores de las extremidades, los cuales mueven la mano que cogen la ficha (en Go a las fichas las llaman piedras), y la sueltan en la posición x. En realidad, la neurociencia dispone de detalles mucho más concretos (aunque aún incompletos) sobre este proceso, pero para el símil que vamos a realizar, con lo dicho basta.

¿Y cómo lo hace AlphaGo? Pues de un modo asombrosamente similar. La máquina utiliza una técnica de exploración iterativa muy (muy) similar a la que realiza nuestro cerebro. En concreto, utiliza un árbol de exploración MCTS (Monte-Carlo Tree Search) para emular la "exploración mental" imaginaria que hemos visto que hace el cerebro; pero adapta dicha técnica de manera que se proceda de un modo casi idéntico a cómo explora la mente del jugador humano. El proceso completo es aproximadamente el siguiente: primero la máquina recibe los pixels con el estado actual del tablero (de modo similar a cómo la retina y el nervio óptico llevan esta misma información sensible al SNC), posteriormente esta entrada visual y sensible se convoluciona por entre varias capas intermedias de neuronas (de modo similar a cómo actúa la corteza visual en V1,V2,V3,V4 y V5). Es la salida de esta convolución la que se introduce luego en los nodos (neuronas) de entrada de las 4 subredes neuronales artificiales que se usarán en el resto del proceso (de modo parecido a cómo lo hacen ciertas subredes biológicas asociadas).

Ilustración de una red neuronal artificial.
Es decir; que una vez tratada la información visual sensible, se produce un proceso iterativo de simulación muy similar al que tiene lugar en la mente de una persona por entre diferentes subredes neuronales biológicas en los lóbulos temporales y parietales. En concreto, AlphaGo procede a evaluar y seleccionar (gracias a la actuación de dos de las 4 subredes neuronales utilizadas: value network y policy SL network) las jugadas que considera más prometedores (descartando billones de alternativas del mismo modo que hace una persona), y más tarde se dedica a investigar y profundizar en el estudio de estas jugadas percibidas como buenas candidatas gracias a otra de las subredes neuronales encargadas de realizar esta tarea con gran eficacia y precisión (fast rollout policy). Este proceso de exploración ocurre a un ritmo de miles de simulaciones "imaginarias" por segundo (un ritmo del mismo orden de magnitud que el humano), pero hay que recalcar que esta cantidad es irrisoria en comparación con las decenas de millones de "simulaciones" que utilizó, por ejemplo DeepBlue contra Kasparov. Porque es importante hacer de nuevo hincapié en que aquí el poder de la máquina no recae en explotar la potencia de cálculo en un proceso de fuerza bruta de exploración, sino en usar esta potencia en la ejecución de complejas redes neuronales capaces de abstraer, generalizar y seleccionar las mejores jugadas y estrategias de juego de entre billones de alternativas que son descartadas e ignoradas. Esto es precisamente lo que se cree que el hombre hace al jugar, y lo que ha dado al AlphaGo tanta capacidad de juego al imitarle.

Cómo realizaron el entrenamiento de las redes neuronales de AlphaGo.

Pues de una manera muy similar a cómo se supone que nuestras redes neuronales biológicas se adaptan y modulan para realizar con éxito nuevas tareas requeridas por la persona: mediante un proceso continuo y gradual de ensayo y error empírico.

Cualquier persona neuronalmente sana, posee desde que concluye su desarrollo cerebral, todas las capacidades neurológicas necesarias para poder llegar a aprender a jugar Go tras un proceso de aprendizaje el cual llegue a modular y adaptar las sinapsis de ciertas subredes de neuronas en diferentes zonas del cerebro. Es decir; que las subredes que nos permiten jugar al Go ya están ahí desde el principio, y es un proceso de ensayo y error el que va poco a poco adaptando dichas subredes para ir mejorando la calidad de nuestro juego. En pocas palabras: nuestro cerebro aprender a jugar...jugando.

AlphaGo hace lo mismo, pero a la enorme escala que permite el hecho de poderse simular millones de partidas en muy poco tiempo (mientras que una persona no puede jugar más de una centena de ellas por motivos fisiológicos). En concreto, las subredes neurológicas utilizada por la máquina se entrenaron mediante este proceso empírico jugando contra sí misma durante semanas (usando una subred denominada policy RL network). Para entender este proceso de entrenamiento con más detalle, sin embargo, es necesario disponer de ciertos conocimientos previos de computación teórica, por lo que no voy a entrar en más detalles técnicos (aunque está todo muy bien explicado en el paper publicado por Google). Baste con que nos quedemos con la idea de que la máquina aprende literalmente a jugar de un modo casi idéntico a cómo lo hace el hombre (mediante la observación de partidas que son jugadas por otras personas que saben hacerlo mejor que nosotros -policy SL network-, y mediante un proceso continuo de juego y práctica personal por el que vamos limando gradualmente por ensayo y error nuestros fallos de juego -policy RL network-).

Resultados y discusión.

Los resultados han sido maravillosos. Entrenando de este modo, la misma estructura neuronal artificial ha pasado en pocas semanas de no ser capaz de ganar ni siquiera al más penoso jugador humano, a poder vencer primero al gran maestro 2p dan Fan Hui (por 5 a 0), y luego también al campeón mundial Lee Sedol 9p dan. La (durante décadas) tan prometida inteligencia artificial parece que ahora sí está dando por fin sus primeros (y verdaderos) pasos.

Pero las aplicaciones futuras de esta revolución lograda por DeepMind no se reducen a la mera posibilidad de jugar juegos con un nivel sobrehumano; sino que abre las puertas a la aplicación de estos métodos utilizados sobre muchas otras tareas complejas que hasta ahora sólo un humano era capaz de realizar con precisión. Las posibilidades son ilimitadas, y estamos sin duda ante un hito que la historia se encargará de recordar a su debido tiempo.

Opinión personal.

Pues bien, hasta aquí ya hemos dicho lo fundamental sobre cómo funciona AlphaGo y las consecuencia y resultados de su desarrollo, pero no quiero cerrar este artículo, sin embargo; sin hacer antes un par de anotaciones muy personales y subjetivas mías, que cada cual tendrá que valorar, pero que creo sinceramente que ganan fuerza tras este experimento de Google:

Primero y fundamental, creo que este experimento demuestra que nuestra mente no es ni conforma ningún fenómeno especial o diferenciado en su esencia natural. En otras palabras: creo que este desarrollo aporta mucha más fuerza a la idea que rechaza cualquier tipo de dualismo en la capacidad cognitiva del hombre. El materialismo más reduccionista creo que saca partido ante estos hechos, y que ya poco lugar a dudas queda de que nuestra mente entera, junto a sus capacidades cognitivas, es simplemente el resultado de complejos (y masivos) cálculos ocurridos por entre las neuronas de nuestro cerebro gracias a medios eléctricos...y poco más. Ni alma, ni espíritu, ni siquiera postulados estrambóticos como la supuesta intervención cuántica propuesta por Roger Penrose parecen ya necesarios ni creíbles: únicamente la física y la química a nivel mesoscópico, junto con la dirección de movimiento impuesta por la termodinámica, parecen bastar y sobrar para dar cuenta del origen y desarrollo de nuestra conciencia y capacidades mentales. Y eso sería todo.

Por otra parte, también creo que este desarrollo supone una clara muestra del modo en que nuestras propias capacidades cognitivas pueden ser (y serán) fácilmente sobrepasadas en cualquier ámbito o tarea que nos propongamos (sin importar ya su complejidad): simplemente habremos de usar redes neuronales artificiales con la estructura adecuada para cada tarea dada, y posteriormente proceder a modular sus pesos (el equivalente a adaptar la fuerza de las sinapsis biológicas) de un modo gradual pero masivo y a gran escala (parecido a como han hecho con AlphaGo). Además, no es siquiera necesario que una persona se dedique a investigar qué estructura neuronal artificial es la adecuada para cada tarea, porque dentro de poco estoy seguro que otra rama de la computación llamada computación evolutiva se unirá con éxito a estos avances, y harán posible que incluso la estructura neuronal necesaria se seleccione de manera autónoma con esta técnica (de un modo similar a como la evolución biológica hizo lo mismo en el reino animal).

Y es que yo estoy firmemente convencido de que el uso conjunto del tipo de técnicas de aprendizaje utilizadas en AlphaGo, junto con el uso concurrente de técnicas de computación evolutiva, llevarán durante las próximas tres o cuatro (o cinco :P) décadas a la aparición final de una verdadera conciencia artificial indiferenciable de la humana: esa máquina pensará, sentirá, aprenderá, se emocionará, y actuará en cualquier ámbito como nosotros...e incluso lo hará mejor.

Es más: yo creo que ya hoy día, si un gran país del estilo de EEUU se propusiese esta meta, dedicando gran parte del esfuerzo del país en esta dirección de modo similar a cómo se hizo en el proyecto Manhattan (dando lugar a la bomba atómica), o en el programa Apolo (que llevó el hombre a la luna), igualmente creo que en no más de 10 años se podría conseguir sin duda esta conciencia artificial que os digo. De hecho, tengo "confianza" en que una posible guerra fría renovada gracias al choque entre el futurible presidente americano Donald Trump y el actual presidente ruso Vladímir Putin, lleven a que al menos uno de los dos bandos (posiblemente USA), dedique grandes esfuerzos en esta dirección guiado por intereses militares; lo cual acelere así el asunto. Evidentemente hay que tener en cuenta las posibles consecuencias secundarias de este choque entre países, pero bueno, siempre hay que intentar ver el lado positivo de las cosas (xDD). Y lo positivo sería sin duda la aparición de esta hipotética conciencia artificial 40 ó 50 años antes de lo que ocurrirá con el actual nivel de financiación en estos campos de estudio ;).

Para concluir, y aunque sé que puede parecer una afirmación exagerada, en mi opinión, este logro conseguido por Google DeepMind supone una nueva y definitiva herida a la narcisista humanidad y su gran ego:

Históricamente, la primera herida la propició Nicolás Copérnico al demostrar que la Tierra no es el centro del universo. Una segunda fue obra de Charles Darwin, al demostrar que el hombre es simplmente un animal más. La tercera fue iniciada sin duda por Sigmund Freud, al proclamar que ni siquiera somos dueños de nosotros mismos (con el descubrimiento del inconsciente), herida que fue desarrollada y ampliada más tarde por la moderna neurociencia. Finalmente, creo que se acaba de producir una nueva herida desde el terreno de la inteligencia artificial al demostrarse que cualquiera de nuestras capacidades cognitivas superiores (conscientes, inconscientes, sencillas o complejas) no es sólo que sean reproducibles, sino que incluso son mejorables. El materialismo gana la batalla, y se demuestra que el tan alabado fenómeno mental humano no es especial en ningún sentido: se constata que finalmente es sólo cuestión de poner las partículas necesarias en el lugar adecuado, y dejar que la termodinámica guíe el movimiento.

Y con esto termino :). Espero que os haya interesado el artículo.

¡Un saludo!

Principales referencias utilizadas.

"Mastering the game of Go with deep neural networks and tree search" (http://www.nature.com/nature/journal/v529/n7587/full/nature16961.html) (Google DeepMind) (2015).
https://deepmind.com/publications.html (publicaciones del equipo de desarrollo Google DeepMind).

Entradas populares de este blog

Evidencia a favor de la teoría de Jeremy England (usando computación evolutiva)

"You start with a random clump of atoms, and if you shine light on it for long enough, it should not be so surprising that you get a plant." Jeremy England (2014), interview commentary with Natalie Wolchover Hace ya un mes que terminé de estudiar a fondo el interesante trabajo que el físico  Jeremy England  está realizando en el  MIT (Massachusetts Institute of Technology) . En mi blog he divulgado todo lo referente a este trabajo con mucho nivel de detalle, siendo esta entrada un compendio de todo lo que el trabajo cuenta. La idea de esta línea de investigación viene a decir, a grosso modo , que la física de nuestro mundo mantiene una relación implícita entre complejidad y energía . Esta relación indica que, cuanto más complejo es un fenómeno, más energía debe disiparse de modo que crezca la probabilidad de que tal fenómeno finalmente acontezca. Esta teoría de Jeremy parte, y se deduce, de una base termodinámica y de mecánica estadística ya establecida, por lo que sus concl

Aprendizaje automático mediante Deep Q Ntework (DQN + TensorFlow)

"[Las neuronas son] células de formas delicadas y elegantes, las misteriosas mariposas del alma, cuyo batir de alas quién sabe si esclarecerá algún día el secreto de la vida mental."  (Ramón y Cajal) Introducción. Este artículo es una continuación de mi entrada anterior "Las matemáticas de la mente" [2]. Vimos en ese artículo cómo era posible que un simple algoritmo de computación pudiese imitar el modo en que nuestro cerebro aprende a realizar tareas con éxito, simplemente a partir del equivalente computacional de una red neuronal. Sin embargo, a pesar de que en dicha entrada os comentaba el caso de cómo se puede programar un algoritmo capaz de conseguir  literalmente,  aprender a jugar al Conecta4 (4 en raya) sin especificar ( pre-programar ) en ningún momento las reglas del juego; es posible que muchos notasen que aún así, todavía había que pre-procesar la entrada de la red neuronal para ofrecerle a las neuronas (nodos) de la capa de entrada ( inputs ) qué ficha

Aprendizaje autónomo por computación evolutiva (Conecta 4)

"[Las neuronas son] células de formas delicadas y elegantes, las misteriosas mariposas del alma, cuyo batir de alas quién sabe si esclarecerá algún día el secreto de la vida mental."  (Ramón y Cajal) Introducción. Dibujo de Ramón y Cajal de las células del cerebelo de un pollo,  mostrado en "Estructura de los centros nerviosos de las aves", Madrid, 1905. Dos noticias muy importantes que han tenido lugar estas últimas semanas en el campo de la neurociencia y la inteligencia artificial (de las cuales me hice eco en este mismo blog: aquí [1][2] y  aquí [3]), me hizo recordar un trabajo de computación que hice allá por el 2011 cuando inicié el doctorado en ingeniería (el cual por cierto aún no terminé, y que tengo absolutamente abandonado :( Ya me gustaría tener tiempo libre para poder retomarlo; porque además odio dejar las cosas a medias). Pues bien, el trabajo original[4] (que he mejorado) consistía en ser el desarrollo de un algoritmo capaz de aprender a jugar a