¿Cómo es que jugar GO contra ‘la computadora’ es diferente al Alpha Go de Google?

Existen muchas implementaciones de Computer Go, por lo que esta respuesta necesariamente tendrá un alcance muy amplio y es probable que haya más de unas pocas excepciones.

En general, funcionan básicamente igual. Utilizan algún tipo de búsqueda de árbol para buscar posibles estados futuros del tablero, teniendo en cuenta las acciones del oponente. AlphaGo usa la búsqueda de árbol de Monte Carlo, otros pueden usar el mismo, MinMax o alguna otra implementación. Sin embargo, Go tiene un factor de ramificación (el número promedio de nuevos estados posibles para cada nuevo nivel del árbol) de 200, por lo que pronto es imposible evaluar más que unos pocos estados por delante. Para lograr esto, las implementaciones usan dos funciones:

  • Evaluación del tablero : esta función toma el estado de un tablero y devuelve un número que representa su puntaje actual a un jugador específico. Si bien esto es bastante simple de hacer para el ajedrez, es extremadamente difícil de hacer para Go. De hecho, los jugadores experimentados de Go pueden estar fácilmente en desacuerdo sobre quién está ganando para un determinado juego en progreso.
  • Heurística : se utiliza una función heurística para seleccionar ciertas ramas del árbol y eliminarlas antes de eliminarlas. Por ejemplo, en la búsqueda de caminos, busca la carretera que va directamente lejos de su destino al final. En ajedrez, si ya has encontrado un movimiento que puede capturar a la reina del oponente, entonces no hay razón para buscar movimientos que capturen peones. Esto reduce significativamente el factor de ramificación y permite a los motores de ajedrez mirar muchos más pasos hacia adelante. En un motor de ajedrez que hice durante mis estudios, algunas heurísticas redujeron el espacio de búsqueda en un 80%. Nuevamente, esto es extremadamente difícil de implementar para Go, ya que los movimientos beneficiosos pueden aparecer fácilmente donde menos lo esperas.

En un sistema Go AI normal, los programadores habrán pensado en alguna forma realizable de implementar las dos funciones anteriores con grados limitados de éxito. En AlphaGo, los programadores configuraron un sistema de aprendizaje profundo para cada uno y lo entrenaron con una entrada aleatoria durante miles de coincidencias contra otras entradas generadas aleatoriamente. Así, a través de un proceso similar a la evolución, las mejores funciones surgieron de la refriega. Pero ningún humano podría mirar el desorden de las redes neuronales y explicar lo que está sucediendo. Es una propiedad emergente de muchos cambios diferentes de los parámetros de entrada. Básicamente, le dieron una forma básica de intuición, similar a la utilizada en el reconocimiento de voz e imagen.

La última gran diferencia es que su Go AI estándar se ejecuta en una sola computadora, y probablemente ni siquiera en paralelo. AlphaGo busca a través de 64 hilos paralelos en 1.920 CPU y 280 GPU en los últimos juegos que jugó *. Imagínense, tomó esa cantidad de potencia informática para vencer a un humano con un cerebro a unos 20 vatios 🙂

* Según el artículo de wikipedia, que obtiene el documento original del implementador: https://en.wikipedia.org/wiki/Al…