Pourquoi n'y a-t-il pas de moteurs d'apprentissage en profondeur pour les échecs, similaires à AlphaGo?

32

Les ordinateurs peuvent depuis longtemps jouer aux échecs en utilisant une technique de «force brute», en cherchant à une certaine profondeur puis en évaluant la position. Cependant, l'ordinateur AlphaGo n'utilise qu'un ANN pour évaluer les positions (il ne fait aucune recherche en profondeur pour autant que je sache). Est-il possible de créer un moteur d'échecs qui joue aux échecs de la même manière que AlphaGo joue Go? Pourquoi personne n'a fait ça? Ce programme fonctionnerait-il mieux que les meilleurs moteurs d'échecs (et les joueurs d'échecs) d'aujourd'hui?

lijas
la source
5
Voir arxiv.org/abs/1509.01549 (Giraffe: Utilisation de l'apprentissage par renforcement profond pour jouer aux échecs) et un article populaire technologyreview.com/s/541276/… . Aussi erikbern.com/2014/11/29/deep-learning-for-chess.html
amibe dit Réintégrer Monica
Ce n'était qu'une question de temps avant que quelqu'un arrive à le faire correctement. Donc, un mois après avoir posté votre question, c'est parti : arxiv.org/abs/1712.01815 .
amibe dit Réintégrer Monica

Réponses:

49

EDIT (après avoir lu le document):

J'ai lu attentivement le journal. Commençons par ce que Google a affirmé dans le document:

  • Ils ont vaincu Stockfish avec Monte-Carlo-Tree-Search + Deep neural networks
  • Le match était absolument unilatéral, de nombreuses victoires pour AlphaZero mais aucune pour Stockfish
  • Ils ont pu le faire en seulement quatre heures
  • AlphaZero a joué comme un humain

Malheureusement, je ne pense pas que ce soit un bon journal. Je vais vous expliquer avec des liens (donc vous savez que je ne rêve pas):

https://www.chess.com/news/view/alphazero-reactions-from-top-gms-stockfish-author

Les résultats du match en eux-mêmes ne sont pas particulièrement significatifs en raison du choix assez étrange des commandes de temps et des réglages des paramètres de Stockfish: les jeux ont été joués à un temps fixe de 1 minute / mouvement, ce qui signifie que Stockfish n'a aucune utilisation de son heuristique de gestion du temps ( beaucoup d'efforts ont été faits pour que Stockfish identifie les points critiques du jeu et décide quand passer un peu de temps supplémentaire lors d'un coup; à un moment fixe par coup, la force en souffrira considérablement).

Stockfish n'aurait pas pu jouer les meilleurs échecs avec seulement une minute par coup. Le programme n'a pas été conçu pour cela.

  • Stockfish fonctionnait sur une machine commerciale ordinaire, tandis qu'AlphaZero était sur une machine 4 millions + TPU réglée pour AlphaZero. C'est un peu comme faire correspondre votre bureau haut de gamme avec un téléphone Android bon marché. Tord a écrit:

L'un est un programme d'échecs conventionnel fonctionnant sur des ordinateurs ordinaires, l'autre utilise des techniques fondamentalement différentes et s'exécute sur du matériel conçu sur mesure qui n'est pas disponible à l'achat (et serait ainsi largement hors du budget des utilisateurs ordinaires s'il l'était).

  • Google a par inadvertance donné 64 threads à une machine à 32 cœurs pour Stockfish. Je cite GM Larry Kaufman (expert en échecs informatiques de classe mondiale):

http://talkchess.com/forum/viewtopic.php?p=741987&highlight=#741987

Je suis d'accord que le test était loin d'être équitable; un autre problème qui a nui à SF était qu'il était apparemment exécuté sur 64 threads sur une machine à 32 cœurs, mais il jouerait beaucoup mieux en exécutant seulement 32 threads sur cette machine, car il n'y a presque aucun avantage SMP pour compenser le ralentissement d'environ 5 à 3. De plus, le rapport de coûts était plus que ce que je disais; Je pensais que c'était une machine à 64 cœurs, mais une machine à 32 cœurs coûte environ la moitié de ce que j'avais deviné. Alors peut-être que dans l'ensemble 30 à 1 n'est pas une si mauvaise estimation. D'un autre côté, je pense que vous sous-estimez à quel point il pourrait être encore amélioré.

  • Stockfish n'a donné qu'une table de hachage de 1 Go. C'est une blague ... J'ai une table de hachage plus grande pour mon application Stockfish iOS (Avertissement: je suis l'auteur) sur mon iPhone! Tord a écrit:

    ... des tables de hachage bien trop petites pour le nombre de threads ...

Une table de hachage de 1 Go est absolument inacceptable pour un match comme celui-ci. Le stockfish rencontrait fréquemment une collision de hachage. Il faut des cycles CPU pour remplacer les anciennes entrées de hachage.

  • Stockfish n'est pas conçu pour fonctionner avec autant de threads. Dans mon application d'échecs iOS, seuls quelques threads sont utilisés. Tord a écrit:

... jouait avec beaucoup plus de fils de recherche que jamais auparavant.

  • Stockfish fonctionnait sans livre d'ouverture ni table de base Syzygy en 6 parties. La taille de l'échantillon était insuffisante. La version Stockfish n'était pas la dernière. Discussion ici .

CONCLUSION

Google n'a pas prouvé sans doutes que ses méthodes sont supérieures à Stockfish. Leur nombre est superficiel et fortement biaisé vers AlphaZero. Leurs méthodes ne sont pas reproductibles par un tiers indépendant. Il est encore un peu tôt pour dire que le Deep Learning est une méthode supérieure à la programmation d'échecs traditionnelle.


EDIT (déc 2017):

Il y a un nouveau document de Google Deepmind ( https://arxiv.org/pdf/1712.01815.pdf ) pour l'apprentissage par renforcement profond dans les échecs. D'après l'abstrait, le moteur d'échecs numéro un mondial Stockfish a été "de manière convaincante" vaincu. Je pense que c'est la réalisation la plus importante des échecs informatiques depuis le match Deep Blue de 1997. Je mettrai à jour ma réponse une fois que j'aurai lu le document en détail.


Original (avant décembre 2017)

Clarifions votre question:

  • Non, les moteurs d'échecs n'utilisent pas la force brute.
  • AlphaGo ne recherche l' utilisation des arbres, il utilise Monte Carlo Recherche Arbre . Google " Monte Carlo Tree Search alphaGo " si vous voulez être convaincu.

ANN peut être utilisé pour les moteurs d'échecs:

Ce programme fonctionnerait-il mieux que les meilleurs moteurs d'échecs (et les joueurs d'échecs) d'aujourd'hui?

Giraffe joue à peu près au niveau Internation Master, qui correspond à la cote FIDE 2400. Cependant, Stockfish, Houdini et Komodo jouent tous à environ FIDE 3000. C'est un grand écart. Pourquoi? Pourquoi pas Monte-Carlo Tree Search?

  • L'heuristique matérielle aux échecs est simple. La plupart du temps, une position d'échecs gagne / perd en comptant simplement les matériaux sur le plateau. Veuillez vous rappeler que le comptage des matériaux ne fonctionne pas pour Go. Le comptage des matériaux est beaucoup plus rapide que les réseaux de neurones en cours d'exécution - cela peut être fait par des tableaux de bord représentés par un entier 64 bits. Sur le système 64 bits, cela ne peut se faire que par plusieurs instructions machine. La recherche avec l'algorithme traditionnel est beaucoup plus rapide que l'apprentissage automatique. Des nœuds plus élevés par seconde se traduisent par une recherche plus approfondie.
  • De même, il existe des techniques très utiles et bon marché telles que l'élagage des mouvements nuls, la réduction des mouvements tardifs et les mouvements tueurs, etc. Ils sont peu coûteux à exécuter et très efficaces pour l'approche utilisée dans AlphaGo.
  • L'évaluation statique aux échecs est rapide et utile
  • L'apprentissage automatique est utile pour optimiser les paramètres, mais nous avons également SPSA et CLOP pour les échecs.
  • Il existe de nombreuses mesures utiles pour la réduction des arbres aux échecs. Beaucoup moins pour Go.

Il y a eu des recherches selon lesquelles Monte Carlo Tree Search n'est pas bien adapté aux échecs. Go est un jeu différent aux échecs. Les algorithmes d'échecs ne fonctionnent pas pour Go car les échecs reposent sur des tactiques brutales. La tactique est sans doute plus importante dans les échecs.

Maintenant, nous avons établi que les SCTM fonctionnent bien pour AlphaGo mais moins pour les échecs. L'apprentissage en profondeur serait plus utile si:

  • L'évaluation NN accordée est meilleure que les algorithmes traditionnels. Cependant ... l'apprentissage en profondeur n'est pas magique, vous, en tant que programmeur, auriez encore besoin de faire la programmation. Comme mentionné, nous avons quelque chose comme SPSA pour l'auto-jeu pour le réglage des paramètres aux échecs.
  • Investissement, argent! Il n'y a pas beaucoup d'argent pour l'apprentissage automatique aux échecs. Stockfish est gratuit et open source, mais suffisamment puissant pour vaincre tous les joueurs humains. Pourquoi Google dépenserait-il des millions si quelqu'un pouvait simplement télécharger Stockfish gratuitement? Pourquoi va-t-il payer pour les clusters de CPU? Qui va payer pour les talents? Personne ne veut le faire, car les échecs sont considérés comme un jeu "résolu".

Si l'apprentissage en profondeur peut atteindre les objectifs suivants, il battra l'algorithme traditionnel:

  • Étant donné une position d'échecs, "ressentez" cela comme un grand maître humain. Par exemple, un grand maître humain n'irait pas dans des lignes qui sont mauvaises - par expérience. Ni l'algorithme traditionnel ni le deep learning ne peuvent y parvenir. Votre modèle NN peut vous donner une probabilité [0..1] pour votre position, mais ce n'est pas suffisant.

Permettez-moi de souligner:

Non. Giraffe (le lien publié par @Tim) n'utilise pas Monte Carlo Tree Search. Il utilise l'algorithme régulier nega-max. Il ne fait que remplacer la fonction d'évaluation régulière par NN, et c'est très lent.

un de plus:

Bien que Kasparov ait été battu par Deep Blue lors du match de 1997. "Humanity" a vraiment été perdu vers 2003-2005, lorsque Kramnik a perdu un match contre Deep Fritz sans victoire et Michael Adams a perdu face à une machine à sous-munitions lors d'un match à sens unique. À cette époque, Rybka s'est avéré trop fort, même pour les meilleurs joueurs du monde.

Référence:

http://www.talkchess.com/forum/viewtopic.php?t=64096&postdays=0&postorder=asc&highlight=alphago+chess&topic_view=flat&start=0

Je cite:

Aux échecs, nous avons le concept de matérialité qui donne déjà une estimation raisonnable de la performance d'un moteur et qui peut être calculé rapidement. De plus, il y a beaucoup d'autres aspects du jeu qui peuvent être encodés dans une fonction d'évaluation statique qui ne pourrait pas être faite dans Go. En raison des nombreuses heuristiques et de la bonne évaluation, l'EBF (Effective-Branching-Factor) est assez petit. L'utilisation d'un réseau de neurones en remplacement de la fonction d'évaluation statique ralentirait considérablement le moteur.

Petitchess
la source
1
Merci. Quelques questions: les moteurs d'échecs utilisent l'algorithme alpha-bêta, n'est-ce pas un algorithme de "force brute"? Est-ce que "Monte Carlo Tree Search" signifie que l'on regarde un certain nombre de mouvements en avant de la position actuelle?
lijas
1
@lijas "brute-force" est généralement défini comme la recherche de toutes les possibilités. Les moteurs d'échecs ne font pas ça.
SmallChess
7
@lijas Vous venez de répondre à la question. Les multiplications matricielles sont une opération lente.
SmallChess
3
La recherche alpha bêta est "brutale". Hans Berliner sur les tendances de l'IA: "Je considère que la tendance la plus importante est que les ordinateurs se sont considérablement accélérés au cours des 50 dernières années. Dans ce processus, nous avons constaté que beaucoup de choses pour lesquelles nous avions au mieux des solutions anthropomorphes, qui dans de nombreux cas n'ont pas réussi à capturer l'essentiel de la méthode d'un humain, pourrait être fait par des méthodes plus brutales qui ne font qu'énumérer jusqu'à ce qu'une solution satisfaisante soit trouvée. Si c'est de l'hérésie, tant pis. " (voir ieeexplore.ieee.org/document/820322/?reload=true )
Daniel Lidström
1
@smallchess alpha beta est un algorithme de recherche de facto, même ses variantes comme negascout qui ne sont que des améliorations incrémentielles. À quoi d'autre pourrait-il faire référence? Cela a été écrit bien avant la naissance des systèmes d'apprentissage en profondeur.
Daniel Lidström
6

DeepBlue a déjà battu Kasparov, donc ce problème est résolu avec une approche beaucoup plus simple. Cela a été possible parce que le nombre de coups possibles aux échecs est beaucoup plus faible que lors des mises , c'est donc un problème beaucoup plus simple. De plus, notez que NN et la force brute ont besoin d'énormes ressources informatiques ( ici vous pouvez trouver une photo de l'ordinateur derrière AlphaGo, notez qu'il n'utilise même pas de GPU, mais de TPU pour le calcul). Tout le problème avec go était que lorsque Deep Blue a battu Kasparov, la communauté go a fait valoir que ce ne serait pas possible avec go (pour de nombreuses raisons différentes, mais pour résumer les arguments, je devrais donner une introduction détaillée au jeu). d'aller). Oui, vous pouvez apprendre à NN à jouer aux échecs, Mario , ou essayer de lui apprendre à jouerStarcraft ...

Je suppose que la raison en est que vous n'entendez tout simplement pas souvent dans les médias grand public des cas où les gens résolvent des problèmes qui ont déjà été résolus.

De plus, votre prémisse est fausse, le Deep Learning est utilisé pour jouer aux échecs, par exemple comme décrit dans Deep Learning Machine Teaches Itself Chess in 72 Hours, Plays at International Master Level . Voir également l'article correspondant, Giraffe: Utilisation de l'apprentissage par renforcement profond pour jouer aux échecs .

Tim
la source
3
Bien qu'il y ait évidemment des programmes d'échecs entraînés avec un apprentissage approfondi par renforcement, il n'en reste pas moins que personne n'en a construit un qui battrait les moteurs d'échecs "traditionnels". Je suppose que c'est parce que ce problème (battre les moteurs traditionnels) n'est tout simplement pas assez intéressant / motivant pour investir beaucoup d'efforts nécessaires pour développer quelque chose du niveau AlphaGo.
amibe dit Réintégrer Monica
1
@amoeba, le logiciel de go-play largement disponible, n'utilise pas non plus d'apprentissage en profondeur et il est généralement plus faible que les joueurs amateurs 1 dan, bien pire qu'AlphaGo. AlphaGo est une preuve de concept.
Tim
1
@ rus9384 ce n'est pas facile mais nous l'avons déjà "résolu", Deep Bluie a battu Kasparov, nous avons notre cygne noir qui a passé le test d'échecs de Turing.
Tim
5
Le jeu résolu est une autre chose: nous ne savons pas si un jeu parfait garantit une victoire pour le noir / blanc ou se termine par un match nul.
rus9384
1
@ rus9384: Ce serait amusant de commencer une partie contre une IA d'échecs parfaite et de voir "Les blancs gagnent. Échec et mat en 97 coups".
Eric Duminil