Actualmente estoy leyendo sobre aprendizaje automático y me preguntaba cómo aplicarlo para jugar Connect Four .
Mi intento actual es un clasificador multiclase simple que utiliza un modelo de función sigmoide y el método uno contra todos.
En mi opinión, las características de entrada deben ser el estado (disco del jugador 1, disco del jugador 2, vacío) de los campos de cuadrícula 7x6 = 42.
La salida sería el número de la fila para colocar el disco. Debido a que es un número discreto entre 1 y 7, supongo que esto puede tratarse como un problema de clasificación multiclase.
Pero, ¿cómo genero ejemplos de capacitación utilizables en el aprendizaje supervisado?
El objetivo principal es ganar el juego, pero el resultado obviamente no se conoce al hacer todos menos el último turno. Si solo dejo que dos jugadores que deciden aleatoriamente qué hacer juegan unos contra otros miles de veces, ¿será suficiente simplemente tomar todos los turnos realizados por el ganador de cada ronda de juego como ejemplos de entrenamiento? ¿O tengo que hacer esto de una manera completamente diferente?
Editar: Como se sugiere en los comentarios, leí un poco sobre el aprendizaje por refuerzo. Por lo que sé, Q-Learning debería hacer el truco, es decir, tengo que aproximar una función Q del estado actual y la acción a tomar para ser la recompensa acumulativa máxima que comienza en ese estado. Luego, cada paso sería elegir la acción que resulte en el valor máximo de Q. Sin embargo, este juego tiene demasiados estados para hacer esto, por ejemplo, como una tabla de búsqueda. Entonces, ¿cuál es una forma efectiva de modelar esta función Q?
Respuestas:
Solo para ofrecer una alternativa más simple al aprendizaje por refuerzo, puede usar el algoritmo minimax básico para buscar buenos movimientos y usar el aprendizaje automático para evaluar las posiciones del tablero.
Para aclarar, minimax construye un árbol de juego donde cada nodo está etiquetado con el resultado de las hojas hacia arriba (1 = el jugador A gana, 0 = el jugador B gana), suponiendo que A elige los movimientos que maximizan este número, y B elige los movimientos que lo minimizan
A menos que el juego sea muy simple, no podrás construir todo el árbol del juego hasta las terminales. En cambio, deberá detenerse en posiciones de tablero inacabadas y evaluar las hojas con algo de heurística (esencialmente la probabilidad de que el jugador A gane desde la posición dada). Puede dejar que un algoritmo de aprendizaje automático, como una red neuronal, intente aprender esta probabilidad al conectar cuatro posiciones con resultados conocidos.
Para generar ejemplos de entrenamiento, puedes construir tu reproductor minimax con una simple heurística, dejar que se juegue a sí mismo miles de veces, usar esos juegos para entrenar tu primera red neuronal, luego dejar que eso se pague mil juegos y así sucesivamente. Con un poco de suerte, su sistema mejorará con cada generación.
fuente
Escribí una publicación de blog sobre el uso de minimax para jugar connect hace cuatro años. Puedes ver el código en acción aquí . Si necesita entrenar a sus modelos, tal vez pueda dejar que juegue un par de miles de juegos contra mi implementación de minimax.
fuente