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.
- ¿Hay alguna diferencia entre los simuladores Cadence Specter y Synopsys HSPICE?
- ¿Hay alguna prueba matemática para garantizar que la suposición múltiple es verdadera, es decir, que cualquier punto de datos en un espacio de alta dimensión se encuentra en una variedad de baja dimensión incrustada en ese espacio?
- ¿Qué es la teoría de tipos en informática?
- ¿Son las habilidades teóricas más valiosas que las habilidades de implementación en EE o CS en general?
- ¿Qué es el arranque en la computadora? ¿ROM tiene algún papel que desempeñar?
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…