la última clase estuvimos hablando acerca de como construir un programa que pueda
jugar y hablamos de la investigación básica; hoy vamos a hablar del programa
AlphaGo y sus derivados como el AlphaGo Master y AlphaGo 0; que se volvieron los
campeones del mundo de Go; si se acuerdan de la última vez, había 2 dificultades
principales para poder construir un programa que juegue al Go; una de ellas
en ajedrez podemos construir una función de valor a mano, diciéndole que use
inteligencia humana que le diga cual es la mejor posición en el tablero; pero en
el Go, encontramos que es muy difícil poder hacer eso y los seres humanos en
verdad luchan para escribir programas que les habiliten a encodificar ese
conocimiento humano acerca de qué significa ser un buen jugador de Go; el
2do problema es que en el ajedrez tenemos 20 movidas que se pueden hacer en
cualquier momento, mientras que en el Go hay como 300 movidas que se pueden hacer
en cualquier momento y en particular, pensar hacia adelante 3 movidas para cada
jugador al comienzo del juego de Go implican 58 trillones de posiciones, lo
cual es demasiado! entonces lo que vamos a hacer ahora es hablar acerca de como
podemos hacer para evitar ese problema; lo 1ro es darnos cuenta que hay 2 problemas
principales de aprendizaje supervisado, ya hablamos antes que podemos tomar cada
posición del tablero de Go y representarlas como una lista de números
donde cada posición es o bien vacía, blanca o negra y el 1er problema de
aprendizaje es, podemos tomar esta posición en el tablero y podemos mapearla
a un valor? esta posición de acá arriba, este es para 2 puntos de negras, está bien
o la posición de abajo es mala para las negras, entonces es -1
lo que podemos hacer ahora es en vez de tener una función de valores humanos
codificada, esta piedra vale 6 puntos por si misma y esta piedra vale 2 y entonces
nunca va a funcionar, en vez de eso, vamos a aprender utilizando un algoritmo de
aprendizaje de máquina
el 2do punto es también que debemos darnos cuenta de qué jugada tenemos que mirar,
porque podemos decir que mirar a cada jugada posible es imposible; la 2da cosa
es que también es verdad que una vez que tenemos el estado del tablero, esta lista
de números, también vamos a querer aprender cuales son las jugadas posibles
que se pueden realizar; cual de las 5 posiciones es en la que tengo que pensar
para poder podar el árbol y así no perderme por las ramas
otra vez hay 2 problemas importantes de aprendizaje de máquina, el 1ro es tomar la
posición en el tablero y mapearla a un valor y la 2da es tomar la posición en el
tablero y mapearla a todo lo que deberíamos tener pensado
la forma en que AlphaGo funciona es tratar este problema del aprendizaje de máquina
y bajando una lista de todas las jugadas profesionales de Go de los últimos 30 años
y otro montón de juegos que fueron jugados por amateurs de muy buen nivel y a partir
de ahí tomarlo como un problema de aprendizaje supervisado; es decir aprender
que posición en el tablero es la más probable para ganar y desde esta posición
en el tablero cual jugada es la que haría un jugador con mucha experiencia, así la
máquina aprende estas 2 cosas
la 2da cosa que hizo fue es aumentar este valor de la función con algo que se llama
búsqueda de árbol de Monte Carlo; si lo recuerdan de antes, la idea de la búsqueda
en un árbol es la de poder adelantarse a un par de jugadas, pero ahora lo que hace
es en algún punto de la parte de abajo del árbol, vamos a simular un montón de juegos
al azar para poder imaginar cual es la probabilidad de ganar, dada esta posición
en el tablero y entonces vamos a combinar la función de valor del aprendizaje de
máquina más este algoritmo especial, el de la búsqueda del árbol de Monte Carlo, para
que nos de una probabilidad total de ganar y así poder pensar en un respaldo
la 2da cosa que vamos a hacer es que le vamos a permitir a la máquina que juegue
contra sí misma durante mucho tiempo y en este proceso, denominado aprendizaje por
refuerzo; tenemos a la computadora jugando 1 millón de juegos contra sí misma y
actualizando en la forma en que todas estas probabilidades se pueden volver
jugadas o estas probabilidades se pueden volver posiciones ganadoras y cuando la
máquina juega contra sí misma muchas veces comenzando con el conocimiento humano,
pero se actualiza a sí misma jugando y termina con un conocimiento similar al
humano y al conocimiento de la compuradora y de hecho este procedimiento fue
en ese juego de 4 a 1 que se jugó en 2016
hay 2 críticas importantes del programa original AlphaGo; 1 fue que era necesario
contar con una base de conocimiento humana había que aprender de los jugadores
profesionales de Go y mucha gente se preguntó si esto quería decir que estas
técnicas solamente funcionan cuando tenemos sistemas expertos disponibles;
hay muchos dominios que nos preocupan y a los que los humanos les dedican su vida,
respondiendo a las preguntas específicas que ellos realizan; la 2da cosa de la que
no hablé pero que es mi mayor preocupación con el algoritmo original de AlphaGo, es
que tiene estas características de código escrito a mano, que son muy particulares
del juego Go,pero que hacen muy difícil de comprenderlo y estos conocimientos que son
específicos de un dominio que se usan para
resolver problemas que son difíciles en el Go
mi preocupación es que, es este mismo problema el que existe en el mundo real
pero en el mundo real no sabemos como codificarlos
en 2017 se lanzó el código de AlphaGo 0 que trata sobre estas críticas, en vez de
empezar con la base de datos de conocimiento humano para correr las cosas
del aprendizaje de máquina, sólo usaron el procedimiento de refuerzo, comenzaron con
este terrible programa plano de Go y lo dejaron jugando contra sí mismo muchas
veces y simplemente usando el aprendizaje por refuerzo en una forma muy inteligente
que era nueva, terminaron por construir este programa y este programa nuevo de
AlphaGo 0, donde 0 significa que tiene 0 conocimiento pudo ganarle al programa
original de AlphaGo por 100 a 0 en 100 juegos y la 2da edición el AlphaGo Master
fue derrotada 89 a 11; entonces para resumir toda esta sección del Go podemos
ver al Go como un caso de tareas para el aprendizaje de máquina y nos gusta porque
tiene estas restricciones sobre las movidas y porque sabemos que significa
ganar y las computadoras durante mucho tiempo fueron muy malas haciendo eso y se
sentía como si tuvieran estas propiedades que se necesitaban para poder construir un
sistema inteligente, esto es no necesitamos buscar en todas las cosas que
se pueden hacer, sino focalizarse en un par de cosas que parecen prometedoras y
entonces aún cuando no podamos leer todo lo que va a suceder, tener algún sentido
de que tipo de características son buenas y que tipo de características son malas y
vimos que fuimos desde el 2015, perder con oponentes humanos aún cuando se pudieran
hacer 5 jugadas al comienzo del juego para que de repente la máquina sea mejor que el
mejor de los humanos y todo en el transcurso de un par de meses y todo esto
fue hecho por el uso inteligente de poder transformar este problema en un problema
de aprendizaje de máquina y tomando ese problema de aprendizaje de máquina y
corriendo este algoritmo de aprendizaje por reforzamiento y al final pudimos
construir el AlphaGo 0 que no usa ningún conocimiento humano