Explicado simplemente: cómo un programa de inteligencia artificial dominó el antiguo juego de Go

Se trata de AlphaGo , la IA de Google DeepMind's Go que sacudió el mundo de la tecnología en 2016 al derrotar a uno de los mejores jugadores del mundo, Lee Sedol.

Go es un antiguo juego de mesa que tiene tantos movimientos posibles en cada paso que las posiciones futuras son difíciles de predecir y, por lo tanto, requiere una fuerte intuición y un pensamiento abstracto para jugar. Por esta razón, se creía que solo los humanos podían jugar bien al Go. La mayoría de los investigadores pensaron que todavía llevaría décadas construir una IA que pudiera pensar así. De hecho, voy a publicar este ensayo hoy porque esta semana (8 al 15 de marzo) marca el segundo aniversario del partido AlphaGo vs Sedol.

Pero AlphaGo no se detuvo allí. 8 meses después, jugó 60 juegos profesionales en un sitio web de Go disfrazado de un jugador llamado "Maestro", y ganó cada juego, contra docenas de campeones del mundo, por supuesto sin descansar entre juegos.

Naturalmente, este fue un ENORME logro en el campo de la IA y provocó discusiones en todo el mundo sobre si deberíamos estar emocionados o preocupados por la inteligencia artificial.

Hoy vamos a tomar el artículo de investigación original publicado por DeepMind en la revista Nature y desglosarlo párrafo por párrafo usando un inglés simple.

Después de este ensayo, sabrá muy claramente qué es AlphaGo y cómo funciona. También espero que después de leer esto no creas todos los titulares de las noticias que hacen los periodistas para asustarte sobre la IA y, en cambio, te emocionas por ello.

Preocuparse por los crecientes logros de la IA es como preocuparse por las crecientes capacidades de Microsoft Powerpoint. Sí, mejorará con el tiempo con la incorporación de nuevas funciones, pero no puede convertirse sin control en una especie de monstruo de Hollywood.

NO es necesario que sepas jugar. Ve para comprender este documento. De hecho, yo mismo solo he leído las primeras 3-4 líneas en el párrafo inicial de Wikipedia al respecto. En cambio, sorprendentemente, utilizo algunos ejemplos de Ajedrez básico para explicar los algoritmos. Solo tienes que saber qué es un juego de mesa para 2 jugadores, en el que cada jugador se turna y hay un ganador al final. Más allá de eso, no necesitas saber nada de física o matemáticas avanzadas ni nada.

Esto lo hará más accesible para las personas que recién ahora comenzaron a aprender sobre el aprendizaje automático o las redes neuronales. Y especialmente para aquellos que no usan el inglés como su primer idioma (lo que puede dificultar mucho la lectura de estos artículos).

Si NO tiene conocimientos previos de IA y redes neuronales, puede leer la sección "Aprendizaje profundo" de uno de mis ensayos anteriores aquí . Después de leer eso, podrá completar este ensayo.

Si también desea obtener una comprensión superficial del aprendizaje por refuerzo (lectura opcional), puede encontrarlo aquí .

Aquí está el documento original si quiere intentar leerlo:

En cuanto a mí: Hola, soy Aman, un ingeniero de inteligencia artificial y robots autónomos. Espero que mi trabajo le ahorre mucho tiempo y esfuerzo si estudiara esto por su cuenta.

¿Hablas japonés? Ryohji Ikebe ha escrito amablemente un breve memorando sobre este ensayo en japonés, en una serie de Tweets.

¡Empecemos!

Resumen

Como saben, el objetivo de esta investigación era entrenar un programa de IA para jugar Go al nivel de jugadores humanos profesionales de clase mundial.

Para entender este desafío, permítanme hablar primero de algo similar que se hizo con el ajedrez. A principios de la década de 1990, IBM presentó la computadora Deep Blue que derrotó al gran campeón Garry Kasparov en Ajedrez. (También es un tipo genial, ¡asegúrate de leer más sobre él más tarde!) ¿Cómo jugó Deep Blue?

Bueno, usó un método de fuerza bruta. En cada paso del juego, echó un vistazo a todos los posibles movimientos legales que se podían jugar y siguió adelante para explorar todos y cada uno de los movimientos para ver qué sucedería. Y seguiría explorando movimiento tras movimiento durante un tiempo, formando una especie de árbol de decisión ENORME de miles de movimientos. Y luego regresaba a lo largo de ese árbol, observando qué movimientos parecían tener más probabilidades de producir un buen resultado. Pero, ¿qué entendemos por “buen resultado”? Bueno, Deep Blue tenía muchas estrategias de ajedrez cuidadosamente diseñadas por jugadores de ajedrez expertos para ayudarlo a tomar mejores decisiones, por ejemplo, ¿cómo decidir si proteger al rey u obtener ventaja en otro lugar? Hicieron un "algoritmo de evaluación" específico para este propósito,para comparar qué tan ventajosas o desventajosas son las diferentes posiciones del tablero (estrategias de ajedrez de expertos codificadas por IBM en esta función de evaluación). Y finalmente elige un movimiento cuidadosamente calculado. En el siguiente turno, básicamente vuelve a pasar por todo.

Como puede ver, esto significa que Deep Blue pensó en millones de posiciones teóricas antes de jugar cada movimiento. Esto no fue tan impresionante en términos del software de inteligencia artificial de Deep Blue, sino más bien en el hardware: IBM afirmó que era una de las computadoras más poderosas disponibles en el mercado en ese momento. Podría mirar 200 millones de posiciones de tablero por segundo.

Ahora venimos a Go. Solo créame que este juego es mucho más abierto, y si probara la estrategia Deep Blue en Go, no podría jugar bien. Habría MUCHAS posiciones para mirar en cada paso que simplemente sería poco práctico para una computadora pasar por ese infierno. Por ejemplo, en el movimiento de apertura en Ajedrez hay 20 movimientos posibles. En Go, el primer jugador tiene 361 movimientos posibles, y este abanico de opciones permanece amplio durante todo el juego.

Esto es lo que quieren decir con "enorme espacio de búsqueda". Además, en Go, no es tan fácil juzgar qué tan ventajosa o desventajosa es una posición particular del tablero en un punto específico del juego; tienes que jugar todo el juego por un tiempo antes de poder determinar quién está ganando. Pero digamos que mágicamente tuviste una manera de hacer ambas cosas. ¡Y ahí es donde entra el aprendizaje profundo!

Entonces, en esta investigación, DeepMind usó redes neuronales para realizar ambas tareas (si nunca ha leído sobre redes neuronales todavía, aquí está el enlace nuevamente). Entrenaron una "red neuronal de políticas" para decidir cuáles son los movimientos más sensibles en una posición de tablero en particular (por lo que es como seguir una estrategia intuitiva para elegir movimientos desde cualquier posición). Y entrenaron una "red neuronal de valor" para estimar qué tan ventajosa es una disposición de tablero en particular para el jugador (o en otras palabras, qué probabilidades hay de que ganes el juego desde esta posición). Entrenaron estas redes neuronales primero con ejemplos de juegos humanos (su buen aprendizaje supervisado ordinario). Después de esto, la IA pudo imitar el juego humano hasta cierto punto, por lo que actuó como un jugador humano débil. Y luego entrenar las redes aún más,hicieron que la IA se enfrentara a sí misma millones de veces (esta es la parte del “aprendizaje por refuerzo”). Con esto, la IA mejoró porque tenía más práctica.

Solo con estas dos redes, la IA de DeepMind pudo jugar bien contra los programas de reproducción de Go de última generación que otros investigadores habían construido antes. Estos otros programas habían utilizado un algoritmo de juego preexistente ya popular, llamado "Búsqueda de árboles de Monte Carlo" (MCTS). Más sobre esto más adelante.

Pero adivinen qué, todavía no hemos hablado sobre el verdadero negocio. La IA de DeepMind no se trata solo de políticas y redes de valor. No utiliza estas dos redes como reemplazo de la Búsqueda de árboles de Monte Carlo. En cambio, utiliza las redes neuronales para hacer que el algoritmo MCTS funcione mejor ... y se volvió mucho mejor que alcanzó niveles sobrehumanos. ESTA variación mejorada de MCTS es "AlphaGo", la IA que venció a Lee Sedol y pasó a la historia de la IA como uno de los mayores avances de la historia. Básicamente, AlphaGo es simplemente una implementación mejorada de un algoritmo informático muy común. ¿Entiende ahora por qué la IA en su forma actual no es absolutamente nada de lo que tener miedo?

Vaya, hemos pasado mucho tiempo solo en el Resumen.

Muy bien, para comprender el artículo a partir de este momento, primero hablaremos de una estrategia de juego llamada algoritmo de búsqueda de árboles de Monte Carlo. Por ahora, solo explicaré este algoritmo con suficiente profundidad para darle sentido a este ensayo. Pero si desea conocerlo en profundidad, algunas personas inteligentes también han hecho excelentes videos y publicaciones de blog sobre esto:

1. Una breve serie de videos de Udacity

2. Explicación de Jeff Bradberry sobre MCTS

3. Un tutorial de MCTS de Fullstack Academy

La siguiente sección es larga, pero fácil de entender (haré todo lo posible) y MUY importante, ¡así que quédate conmigo! El resto del ensayo será mucho más rápido.

Hablemos del primer párrafo del ensayo anterior. ¿Recuerdas lo que dije sobre Deep Blue haciendo un enorme árbol de millones de posiciones y movimientos en el tablero en cada paso del juego? Tenías que hacer simulaciones y mirar y comparar todos y cada uno de los movimientos posibles. Como dije antes, ese era un enfoque simple y un enfoque muy directo: si el ingeniero de software promedio tuviera que diseñar un juego con IA y tuviera todas las computadoras más fuertes del mundo, probablemente diseñaría una solución similar.

Pero pensemos en cómo juegan los humanos al ajedrez. Digamos que estás en una posición particular del tablero en medio del juego. Según las reglas del juego, puedes hacer una docena de cosas diferentes: mover este peón aquí, mover la reina dos casillas aquí o tres casillas allá, y así sucesivamente. Pero, ¿realmente haces una lista de todos los movimientos posibles que puedes hacer con todas tus piezas y luego seleccionas un movimiento de esta larga lista? No, "intuitivamente" se reduce a unos pocos movimientos clave (digamos que se le ocurren 3 movimientos sensatos) que cree que tienen sentido, y luego se pregunta qué sucederá en el juego si elige uno de estos 3 movimientos. Puede pasar de 15 a 20 segundos considerando cada uno de estos 3 movimientos y su futuro, y tenga en cuenta que durante estos 15 segundos no tiene que planificar cuidadosamente el futuro de cada movimiento;puede simplemente "desplegar" algunos movimientos mentales guiados por su intuición sin DEMASIADO pensamiento cuidadoso (bueno, un buen jugador pensaría más y más profundamente que un jugador promedio). Esto se debe a que tienes un tiempo limitado,y no puedes predecir con precisión lo que hará tu oponente en cada paso de ese hermoso futuro que estás cocinando en tu cerebro. Así que solo tendrás que dejar que tu instinto te guíe. Me referiré a esta parte del proceso de pensamiento como “implementación”, ¡así que tomen nota de ello!

Entonces, después de "desplegar" tus pocos movimientos sensatos, finalmente dices que se jodan y simplemente juega el movimiento que encuentres mejor.

Entonces el oponente hace un movimiento. Podría ser un movimiento que ya había anticipado, lo que significa que ahora está bastante seguro de lo que debe hacer a continuación. No es necesario que vuelva a dedicar demasiado tiempo a los lanzamientos. O, podría ser que tu oponente te golpee con un movimiento bastante bueno que no esperabas, por lo que debes tener aún más cuidado con tu próximo movimiento.

Así es como continúa el juego y, a medida que se acerca más y más al punto final, te resultará más fácil predecir el resultado de tus movimientos, por lo que tus lanzamientos no toman tanto tiempo.

El propósito de esta larga historia es describir lo que hace el algoritmo MCTS en un nivel superficial: imita el proceso de pensamiento anterior al construir un "árbol de búsqueda" de movimientos y posiciones en todo momento. Nuevamente, para obtener más detalles, debe consultar los enlaces que mencioné anteriormente. La innovación aquí es que en lugar de pasar por todos los movimientos posibles en cada posición (lo que hizo Deep Blue), selecciona de manera inteligente un pequeño conjunto de movimientos sensibles y los explora. Para explorarlos, "despliega" el futuro de cada uno de estos movimientos y los compara en función de sus resultados imaginados .

(En serio, esto es todo lo que creo que necesitas para entender este ensayo)

Ahora, volviendo a la captura de pantalla del documento. Go es un “juego de información perfecto” (lea la definición en el enlace, no se preocupe, no da miedo). Y teóricamente , para tales juegos, no importa en qué posición particular te encuentres en el juego (incluso si acabas de jugar 1-2 movimientos), es posible que puedas adivinar correctamente quién ganará o perderá (asumiendo que ambos jugadores juegan “Perfectamente” a partir de ese momento). No tengo idea de a quién se le ocurrió esta teoría, pero es un supuesto fundamental en este proyecto de investigación y funciona.

Eso significa que, dado un estado del juego s , hay una función v * (s) que puede predecir el resultado, digamos la probabilidad de que ganes este juego, de 0 a 1. Lo llaman la "función de valor óptimo" . Debido a que es más probable que usted gane algunos puestos en la junta directiva que otros puestos en la junta, pueden considerarse más “valiosos” que los demás. Déjame decirlo de nuevo: Valor = Probabilidad entre 0 y 1 de que ganes el juego.

Pero espera, digamos que había una chica llamada Foma sentada a tu lado mientras juegas al ajedrez, y ella sigue diciéndote a cada paso si estás ganando o perdiendo. "Estás ganando ... Estás perdiendo ... Nop, todavía perdiendo ..." Creo que no te ayudaría mucho a elegir qué movimiento necesitas hacer. Ella también sería bastante molesta. En cambio, lo que te ayudaría es si dibujaras el árbol completo de todos los movimientos posibles que puedes hacer y los estados a los que conducirían esos movimientos, y luego Foma te diría para todo el árbol qué estados son estados ganadores y cuáles estados perdedores. Luego, puede elegir movimientos que lo llevarán a estados ganadores. De repente, Foma es tu cómplice, no un amigo molesto. Aquí, Foma se comporta como su función de valor óptimo v * (s). Más temprano,Se creía que no era posible tener una función de valor precisa como Foma para el juego de Go, porque los juegos tenían mucha incertidumbre.

PERO - incluso si tuvieras la maravillosa Foma, esta estrategia del país de las maravillas de extraer todas las posiciones posibles para que Foma las evalúe no funcionará muy bien en el mundo real. En un juego como Chess o Go, como dijimos antes, si intentas imaginar incluso 7-8 movimientos en el futuro, puede haber tantas posiciones posibles que no tienes tiempo suficiente para verificarlas todas con Foma.

Entonces Foma no es suficiente. Debe reducir la lista de movimientos a algunos movimientos razonables que pueda implementar en el futuro. ¿Cómo hará eso su programa? Entra Lusha. Lusha es un hábil jugador y entusiasta del Ajedrez que ha pasado décadas viendo a grandes maestros jugar al Ajedrez entre sí. Ella puede ver la posición de su tablero, ver rápidamente todos los movimientos disponibles que puede hacer y decirle qué tan probable sería que un experto en ajedrez hiciera cualquiera de esos movimientos si estuviera sentado en su mesa. Entonces, si tiene 50 movimientos posibles en un punto, Lusha le dirá la probabilidad de que cada movimiento sea elegido por un experto. Por supuesto, algunos movimientos razonables tendrán una probabilidad mucho mayor y otros movimientos sin sentido tendrán muy poca probabilidad. Por ejemplo: si en Ajedrez, digamos que su Reina está en peligro en una esquina del juego,es posible que aún tengas la opción de mover un pequeño peón en otra esquina del juego Ella es tufunción política , p (a \ s). Para un estado dado, ella puede darte probabilidades de todos los movimientos posibles que haría un experto.

Vaya, puedes tomar la ayuda de Lusha para guiarte en cómo seleccionar algunos movimientos razonables, y Foma te dirá la probabilidad de ganar con cada uno de esos movimientos. Puede elegir la mudanza que aprueben tanto Foma como Lusha. O, si quieres ser más cuidadoso, puedes implementar los movimientos seleccionados por Lusha, hacer que Foma los evalúe, elegir algunos de ellos para implementarlos en el futuro y seguir permitiendo que Foma y Lusha te ayuden a predecir MUY lejos en el futuro. el futuro del juego - mucho más rápido y más eficiente que pasar por todos los movimientos en cada paso hacia el futuro. ESTO es lo que quieren decir con "reducir el espacio de búsqueda". Use una función de valor (Foma) para predecir resultados y use una función de política (Lusha) para brindarle probabilidades de gran maestría para ayudar a reducir los movimientos que implementa. Estos se denominan "despliegues de Monte Carlo".Luego, mientras retrocede del futuro al presente, puede tomar valores promedio de todos los diferentes movimientos que implementó y elegir la acción más adecuada. Hasta ahora, esto solo ha funcionado en un nivel de aficionado débil en Go, porque las funciones de política y las funciones de valor que utilizaron para guiar estos lanzamientos no eran tan buenas.

Uf.

La primera línea se explica por sí misma. En MCTS, puede comenzar con un Foma no calificado y Lusha no calificado. Cuanto más juegues, mejor podrán predecir movimientos y resultados sólidos. “Reducir la búsqueda a un haz de acciones de alta probabilidad” es solo una forma sofisticada de decir, “Lusha te ayuda a reducir los movimientos que necesitas implementar asignándoles probabilidades de que un experto los juegue”. El trabajo anterior ha utilizado esta técnica para lograr jugadores de IA de nivel amateur fuertes, incluso con funciones de política simples (o "superficiales" como lo llaman).

Sí, las redes neuronales convolucionales son excelentes para el procesamiento de imágenes. Y dado que una red neuronal toma una entrada particular y da una salida, es esencialmente una función, ¿verdad? Entonces puede usar una red neuronal para convertirse en una función compleja. Por lo tanto, puede pasar una imagen de la posición de la placa y dejar que la red neuronal descubra por sí misma lo que está sucediendo. Esto significa que es posible crear redes neuronales que se comportarán como funciones de política y valor MUY precisas. El resto se explica por sí mismo.

Aquí discutimos cómo se entrenaron Foma y Lusha. Para entrenar la red de políticas (prediciendo para un puesto dado que mueve los expertos elegirían), simplemente use ejemplos de juegos humanos y utilícelos como datos para el buen aprendizaje supervisado.

Y desea entrenar otra versión ligeramente diferente de esta red de políticas para usarla en implementaciones; éste será más pequeño y más rápido. Digamos que, dado que Lusha tiene tanta experiencia, se toma un tiempo para procesar cada puesto. Es bueno comenzar con el proceso de reducción, pero si intentas hacer que repita el proceso, aún tomará demasiado tiempo. Así que entrena una * red de políticas más rápida * para el proceso de implementación (lo llamaré ... ¿el hermano menor de Lusha, Jerry? Lo sé, lo sé, basta con estos nombres). Después de eso, una vez que haya entrenado las redes de políticas lentas y rápidas lo suficiente con datos de jugadores humanos, puede intentar dejar que Lusha juegue contra sí misma en un tablero Go durante unos días y obtener más práctica. Esta es la parte del aprendizaje por refuerzo: hacer una mejor versión de la red de políticas.

Luego, entrena a Foma para la predicción de valor: determinar la probabilidad de que gane. Dejas que la IA practique jugando una y otra vez en un entorno simulado, observa el resultado final cada vez y aprende de sus errores para mejorar cada vez más.

No entraré en detalles sobre cómo se capacitan estas redes. Puede leer más detalles técnicos en la sección posterior del documento ('Métodos') que no he cubierto aquí. De hecho, el propósito real de este artículo en particular no es mostrar cómo usaron el aprendizaje por refuerzo en estas redes neuronales. Uno de los artículos anteriores de DeepMind, en el que enseñaron a la IA a jugar juegos ATARI, ya ha discutido en profundidad algunas técnicas de aprendizaje por refuerzo (y ya escribí una explicación de ese artículo aquí). Para este artículo, como mencioné ligeramente en el Resumen y también subrayé en la captura de pantalla anterior, la mayor innovación fue el hecho de que usaron RL con redes neuronales.para mejorar un algoritmo de juego ya popular, MCTS. RL es una herramienta genial en una caja de herramientas que usaron para ajustar las redes neuronales de la función de política y valor después del entrenamiento supervisado regular. Este artículo de investigación trata de demostrar cuán versátil y excelente es esta herramienta, no de enseñarle cómo usarla. En la jerga televisiva, el periódico Atari era un infomercial de RL y este periódico AlphaGo es un comercial.

Muy bien, finalmente hemos terminado con las partes de "introducción". A estas alturas ya tienes una muy buena idea de lo que significa AlphaGo.

A continuación, profundizaremos un poco más en cada cosa que discutimos anteriormente. Puede que veas algunas ecuaciones y expresiones matemáticas feas y peligrosas, pero son simples (las explico todas). Relajarse.

Una nota rápida antes de continuar. ¿Le gustaría ayudarme a escribir más ensayos de este tipo que expliquen trabajos de investigación interesantes? Si habla en serio, estaría encantado de trabajar con usted. Por favor deje un comentario y me pondré en contacto con usted.

Entonces, el primer paso es entrenar nuestra política NN (Lusha), para predecir qué movimientos es probable que realice un experto. El objetivo de esta NN es permitir que la IA juegue de manera similar a un humano experto. Esta es una red neuronal convolucional (como mencioné antes, es un tipo especial de NN que es muy útil en el procesamiento de imágenes) que toma una imagen simplificada de la disposición de una placa. Las “no linealidades del rectificador” son capas que se pueden agregar a la arquitectura de la red. Le dan la capacidad de aprender cosas más complejas. Si alguna vez ha entrenado NN antes, es posible que haya utilizado la capa "ReLU". Eso es lo que son estos.

Los datos de entrenamiento aquí estaban en forma de pares aleatorios de posiciones de tablero, y las etiquetas eran las acciones elegidas por los humanos cuando estaban en esas posiciones. Solo aprendizaje supervisado regular.

Aquí utilizan "ASCENSO de gradiente estocástico". Bueno, este es un algoritmo de retropropagación. Aquí, está tratando de maximizar una función de recompensa. Y la función de recompensa es simplemente la probabilidad de la acción predicha por un experto humano; desea aumentar esta probabilidad. Pero bueno, realmente no necesitas pensar demasiado en esto. Normalmente, entrena la red para que minimice una función de pérdida, que es esencialmente el error / diferencia entre el resultado previsto y la etiqueta real. Eso se llama DESCENSO de gradiente. En la implementación real de este trabajo de investigación, de hecho han utilizado el descenso de gradiente regular . Puede encontrar fácilmente una función de pérdida que se comporte de manera opuesta a la función de recompensa, de modo que minimizar esta pérdida maximizará la recompensa.

La red de políticas tiene 13 capas y se denomina red de “políticas SL” (SL = aprendizaje supervisado). Los datos provienen de un ... Solo diré que es un sitio web popular en el que millones de personas juegan Go. ¿Qué tan bien funcionó esta red de políticas de SL?

Era más preciso que lo que habían hecho otros investigadores antes. El resto del párrafo se explica por sí mismo. En cuanto a la "política de implementación", ¿recuerda de hace algunos párrafos, cómo Lusha la red de políticas de SL es lenta y no puede integrarse bien con el algoritmo MCTS? Y entrenamos a otra versión más rápida de Lusha llamada Jerry, ¿quién era su hermano menor? Bueno, esto se refiere a Jerry aquí mismo. Como puede ver, Jerry es la mitad de preciso que Lusha, ¡PERO es miles de veces más rápido! Realmente ayudará a que las simulaciones implementadas del futuro sean más rápidas cuando apliquemos el MCTS.

Para la siguiente sección, no * tienes * que saber sobre el aprendizaje por refuerzo ya, pero luego tendrás que asumir que todo lo que digo funciona. Si realmente desea profundizar en los detalles y asegurarse de todo, es posible que desee leer un poco sobre RL primero.

Una vez que tienes la red SL, entrenada de manera supervisada usando movimientos de jugadores humanos con los datos de movimientos humanos, como dije antes tienes que dejar que ella practique por sí sola y mejore. Eso es lo que estamos haciendo aquí. Así que simplemente tome la red de políticas de SL, guárdela en un archivo y haga otra copia.

Luego usa el aprendizaje por refuerzo para afinarlo. Aquí, haces que la red juegue contra sí misma y aprendes de los resultados.

Pero hay un problema en este estilo de entrenamiento.

Si solo practicas para siempre contra UN oponente, y ese oponente también está practicando solo contigo exclusivamente, no hay mucho aprendizaje nuevo que puedas hacer. Solo estarás entrenando para practicar cómo vencer a ESE jugador. Esto es, lo adivinaste, sobreajuste: tus técnicas funcionan bien contra un oponente, pero no se generalizan bien a otros oponentes. ¿Entonces cómo lo arreglas?

Bueno, cada vez que ajusta una red neuronal, se convierte en un tipo de jugador ligeramente diferente. Entonces, puede guardar esta versión de la red neuronal en una lista de "jugadores", que se comportan de manera ligeramente diferente, ¿verdad? Genial: ahora, mientras entrena la red neuronal, puede hacer que juegue aleatoriamente contra muchas versiones diferentes, antiguas y nuevas del oponente, elegidas de esa lista. Son versiones del mismo reproductor, pero todos juegan de forma ligeramente diferente. ¡Y cuanto más entrenes, con MÁS jugadores podrás entrenar aún más! ¡Bingo!

En esta formación, lo único que guía el proceso de formación es el objetivo final, es decir, ganar o perder. No necesitas entrenar especialmente a la red para hacer cosas como capturar más área en el tablero, etc. Simplemente dale todos los movimientos legales posibles entre los que pueda elegir y dile “tienes que ganar”. Y es por eso que RL es tan versátil; Puede usarse para entrenar políticas o redes de valores para cualquier juego, no solo Go.

Aquí, probaron qué tan precisa era esta red de políticas RL, solo por sí misma sin ningún algoritmo MCTS. Como recordará, esta red puede tomar directamente una posición en el tablero y decidir cómo lo jugaría un experto, por lo que puede usarla para jugar juegos con una sola mano.

Bueno, el resultado fue que la red ajustada de RL ganó contra la red SL que solo estaba entrenada en movimientos humanos. También ganó contra otros programas de Go jugando fuertes.

Debe tener en cuenta aquí que incluso antes de capacitar a esta red de políticas de RL, la red de políticas de SL ya era mejor que el estado del arte, ¡y ahora ha mejorado aún más ! Y ni siquiera hemos llegado a otras partes del proceso como la red de valor.

¿Sabías que los pingüinos bebés pueden estornudar más fuerte de lo que puede ladrar un perro? En realidad, eso no es cierto, pero pensé que le gustaría una pequeña broma aquí para distraerse de las ecuaciones de aspecto aterrador anteriores. Volviendo al ensayo de nuevo: hemos terminado de entrenar a Lusha aquí. Ahora volvamos a Foma - recuerde la “función de valor óptimo”: v * (s) -> que solo le dice qué tan probable es que gane en su posición actual en el tablero si ambos jugadores juegan perfectamente a partir de ese momento.

Entonces, obviamente, para entrenar a un NN para que se convierta en nuestra función de valor, necesitaríamos un jugador perfecto ... que no tenemos. Así que usamos nuestro jugador más fuerte , que resulta ser nuestra red de políticas de RL.

Toma el estado actual del tablero s y genera la probabilidad de que ganes el juego. Juegas un juego y conoces el resultado (gana o pierde). Cada uno de los estados del juego actúa como una muestra de datos y el resultado de ese juego actúa como la etiqueta. Entonces, al jugar un juego de 50 movimientos, tiene 50 muestras de datos para la predicción de valor.

Lol, no. Este enfoque es ingenuo. No puedes usar los 50 movimientos del juego y agregarlos al conjunto de datos.

El conjunto de datos de entrenamiento tuvo que elegirse con cuidado para evitar el sobreajuste. Cada movimiento en el juego es muy similar al siguiente, porque solo te mueves una vez y eso te da una nueva posición, ¿verdad? Si toma los estados en los 50 de esos movimientos y los agrega a los datos de entrenamiento con la misma etiqueta, básicamente tiene muchos datos "algo duplicados" y eso causa un ajuste excesivo. Para evitar esto, elige solo estados de juego de aspecto muy distinto. Entonces, por ejemplo, en lugar de los 50 movimientos de un juego, solo eliges 5 de ellos y los agregas al conjunto de entrenamiento. DeepMind tomó 30 millones de posiciones de 30 millones de juegos diferentes, para reducir las posibilidades de que haya datos duplicados. ¡Y funcionó!

Ahora, algo conceptual aquí : hay dos formas de evaluar el valor de un puesto en la junta. Una opción es una función de valor óptimo mágico (como la que entrenó anteriormente). La otra opción es simplemente implementarla en el futuro utilizando su política actual (Lusha) y observar el resultado final en esta implementación. Obviamente, el juego real rara vez se ajusta a tus planes. Pero DeepMind comparó cómo funcionan estas dos opciones. También puede hacer una combinación de ambas opciones. Aprenderemos sobre este "parámetro de mezcla" un poco más tarde, ¡así que tome nota mental de este concepto!

Bueno, su única red neuronal que intenta aproximarse a la función de valor óptimo es AÚN MEJOR que hacer miles de simulaciones mentales usando una política de implementación. Foma realmente pateó traseros aquí. Cuando reemplazaron la política de implementación rápida con la política de RL dos veces más precisa (pero lenta) de Lusha, e hicieron miles de simulaciones con eso , lo hizo mejor que Foma. Pero solo un poco mejor y demasiado lento. Entonces Foma es la ganadora de esta competencia, ha demostrado que no puede ser reemplazada.

Ahora que hemos entrenado las funciones de política y valor, podemos combinarlas con MCTS y dar a luz a nuestro ex campeón mundial, destructor de grandes maestros, el avance de una generación, que pesa doscientos sesenta y ocho libras, uno y solo Alphaaaaa GO !

En esta sección, idealmente debería tener una comprensión un poco más profunda del funcionamiento interno del algoritmo MCTS, pero lo que ha aprendido hasta ahora debería ser suficiente para darle una buena idea de lo que está sucediendo aquí. Lo único que debe tener en cuenta es cómo estamos usando las probabilidades de la política y las estimaciones de valor. Los combinamos durante los lanzamientos, para reducir la cantidad de movimientos que queremos implementar en cada paso. Q (s, a) representa la función de valor y u (s, a) es una probabilidad almacenada para esa posición. Lo explicaré.

¿Recuerda que la red de políticas utiliza el aprendizaje supervisado para predecir los movimientos de los expertos? Y no solo te da el movimiento más probable, sino que te brinda probabilidadespara cada movimiento posible que indique la probabilidad de que sea un movimiento experto. Esta probabilidad se puede almacenar para cada una de esas acciones. Aquí lo llaman "probabilidad previa", y obviamente lo usan al seleccionar qué acciones explorar. Básicamente, para decidir si explorar o no un movimiento en particular, debes considerar dos cosas: primero, al jugar este movimiento, ¿qué probabilidades hay de ganar? Sí, ya tenemos nuestra “red de valor” para responder a esta primera pregunta. Y la segunda pregunta es, ¿qué tan probable es que un experto elija este movimiento? (Si es muy poco probable que un experto elija un movimiento, ¿por qué perder el tiempo considerándolo? Esto lo obtenemos de la red de políticas)

Entonces hablemos del "parámetro de mezcla" (¡mira, volví a él!). Como se mencionó anteriormente, para evaluar posiciones, tiene dos opciones: una, simplemente use la red de valor que ha estado usando para evaluar estados todo el tiempo. Y dos, puedes intentar jugar rápidamente un juego de lanzamiento con tu estrategia actual (asumiendo que el otro jugador jugará de manera similar) y ver si ganas o pierdes. Vimos cómo la función de valor era mejor que las implementaciones en general. Aquí combinan ambos. Intente darle a cada predicción una importancia de 50 a 50, o de 40 a 60, o de 0 a 100, y así sucesivamente. Si adjunta un% de X al primero, deberá adjuntar 100-X al segundo. Eso es lo que significa este parámetro de mezcla. Verá estos resultados de prueba y aciertos más adelante en el documento.

Después de cada implementación, actualiza su árbol de búsqueda con la información que obtuvo durante la simulación, para que su próxima simulación sea más inteligente. Y al final de todas las simulaciones, elige el mejor movimiento.

¡Interesante información aquí!

¿Recuerda cómo la política NN ajustada de RL era mejor que la política NN de formación humana de SL? Pero cuando los colocas dentro del algoritmo MCTS de AlphaGo, usar el NN entrenado por humanos demostró ser una mejor opción que el NN ajustado. Pero en el caso de la función de valor (que recordará que usa un jugador fuerte para aproximarse a un jugador perfecto), entrenar a Foma usando la política RL funciona mejor que entrenarla con la política SL.

“Hacer toda esta evaluación requiere mucha potencia informática. Realmente tuvimos que sacar las armas grandes para poder ejecutar estos malditos programas ".

Autoexplicativo.

"LOL, nuestro programa literalmente hizo volar los pantalones a todos los demás programas que nos precedieron"

Esto vuelve a ese "parámetro de mezcla" nuevamente. Al evaluar las posiciones, dar la misma importancia tanto a la función de valor como a los despliegues se desempeñó mejor que solo usar uno de ellos. El resto se explica por sí mismo y revela una visión interesante.

Autoexplicativo.

Autoexplicativo. Pero lee esa oración subrayada en rojo nuevamente. Espero que ahora vean claramente que esta línea de aquí es prácticamente el resumen de todo este proyecto de investigación.

Párrafo de conclusión. "¡Presumámonos un poco más aquí porque lo merecemos!" :)

Ah, y si eres un científico o una empresa de tecnología y necesitas ayuda para explicar tu ciencia a personas no técnicas para marketing, relaciones públicas o capacitación, etc., puedo ayudarte. Envíeme un mensaje en Twitter: @mngrwl