Perché non ci sono motori di apprendimento di rinforzo profondo per gli scacchi, simili a AlphaGo?


32

I computer sono stati a lungo in grado di giocare a scacchi usando una tecnica a "forza bruta", cercando una certa profondità e quindi valutando la posizione. Il computer AlphaGo tuttavia utilizza solo una ANN per valutare le posizioni (non fa alcuna ricerca approfondita per quanto ne so). È possibile creare un motore di scacchi che gioca a scacchi allo stesso modo in cui AlphaGo gioca a Go? Perché nessuno l'ha fatto? Questo programma avrebbe prestazioni migliori rispetto ai migliori motori di scacchi (e giocatori di scacchi) di oggi?


5
Vedi arxiv.org/abs/1509.01549 (Giraffe: Usare il rinforzo profondo imparando a giocare a scacchi) e un articolo popolare technologyreview.com/s/541276/… . Anche erikbern.com/2014/11/29/deep-learning-for-chess.html
ameba dice

Era solo questione di tempo prima che qualcuno riuscisse a farlo correttamente. Quindi un mese dopo aver pubblicato la tua domanda, eccoti qui: arxiv.org/abs/1712.01815 .
ameba dice Reinstate Monica il

Risposte:


49

MODIFICA (dopo aver letto il documento):

Ho letto il giornale pensieroso. Cominciamo con ciò che Google ha affermato nel documento:

  • Hanno sconfitto lo stoccafisso con Monte-Carlo-Tree-Search + reti neurali profonde
  • La partita è stata assolutamente unilaterale, molte vittorie per AlphaZero ma nessuna per lo stoccafisso
  • Sono stati in grado di farlo in sole quattro ore
  • AlphaZero ha giocato come un essere umano

Sfortunatamente, non penso che sia un buon giornale di giornale. Spiegherò con i collegamenti (quindi sai che non sto sognando):

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

I risultati delle partite da soli non sono particolarmente significativi a causa della strana scelta dei controlli del tempo e delle impostazioni dei parametri di Stockfish: i giochi sono stati giocati a un tempo fisso di 1 minuto / mossa, il che significa che Stockfish non fa uso della sua euristica di gestione del tempo ( sono stati fatti molti sforzi per far sì che lo Stoccafisso identifichi i punti critici del gioco e decida quando trascorrere un po 'di tempo in più in una mossa; a un tempo fisso per mossa, la forza ne soffrirà in modo significativo).

Lo stoccafisso non avrebbe potuto giocare gli scacchi migliori con un solo minuto per mossa. Il programma non è stato progettato per questo.

  • Lo stoccafisso funzionava su una normale macchina commerciale, mentre AlphaZero era su una macchina di oltre 4 milioni di TPU sintonizzata per AlphaZero. È come abbinare il desktop di fascia alta a un telefono Android economico. Tord ha scritto:

Uno è un programma di scacchi convenzionale in esecuzione su computer ordinari, l'altro utilizza tecniche fondamentalmente diverse e viene eseguito su hardware progettato su misura che non è disponibile per l'acquisto (e sarebbe fuori dal budget degli utenti ordinari se lo fosse).

  • Google ha inavvertitamente fornito 64 thread a una macchina a 32 core per Stoccafisso. Cito GM Larry Kaufman (esperto di scacchi di classe mondiale):

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

Concordo sul fatto che il test è stato tutt'altro che equo; un altro problema che ha danneggiato SF è che apparentemente era eseguito su 64 thread su una macchina a 32 core, ma avrebbe giocato molto meglio eseguendo solo 32 thread su quella macchina, poiché non c'è quasi alcun vantaggio SMP per compensare il rallentamento di circa 5 o 3. Anche il rapporto dei costi era più di quello che ho detto; Pensavo fosse una macchina a 64 core, ma una macchina a 32 core costa circa la metà di quello che immaginavo. Quindi forse nel complesso 30 a 1 non è una stima così negativa. D'altra parte, penso che tu sottovaluti quanto potrebbe essere ulteriormente migliorato.

  • Lo stoccafisso ha dato solo una tabella di hash da 1 GB. Questo è uno scherzo ... Ho una tabella hash più grande per la mia app iOS di Stockfish (Disclaimer: sono l'autore) sul mio iPhone! Tord ha scritto:

    ... tabelle hash troppo piccole per il numero di thread ...

La tabella hash da 1 GB è assolutamente inaccettabile per una partita come questa. Lo stoccafisso incontrerebbe frequentemente la collisione dell'hash. Sono necessari cicli di CPU per sostituire le vecchie voci di hash.

  • Lo stoccafisso non è progettato per funzionare con quel numero di thread. Nella mia app di scacchi iOS, vengono utilizzati solo pochi thread. Tord ha scritto:

... stava giocando con molti più thread di ricerca di quanti non abbia mai ricevuto una quantità significativa di test ...

  • Lo stoccafisso funzionava senza un libro di apertura o un tavolo da tavolo Syzygy da 6 pezzi. La dimensione del campione era insufficiente. La versione di Stoccafisso non era l'ultima. Discussione qui .

CONCLUSIONE

Google non ha dimostrato senza dubbio che i suoi metodi sono superiori allo stoccafisso. I loro numeri sono superficiali e fortemente distorti da AlphaZero. I loro metodi non sono riproducibili da una terza parte indipendente. È ancora un po 'troppo presto per dire che il Deep Learning è un metodo superiore alla tradizionale programmazione degli scacchi.


EDIT (dicembre 2017):

C'è un nuovo articolo di Google Deepmind ( https://arxiv.org/pdf/1712.01815.pdf ) per l'apprendimento approfondito del rinforzo negli scacchi. Dall'abstract, il motore di scacchi numero uno dello stoccafisso mondiale è stato "convincente" sconfitto. Penso che questo sia il risultato più significativo negli scacchi per computer dalla partita Deep Blue del 1997. Aggiornerò la mia risposta una volta che avrò letto il documento in dettaglio.


Originale (prima del dicembre 2017)

Chiariamo la tua domanda:

  • No, i motori degli scacchi non usano la forza bruta.
  • AlphaGo fa uso d'albero alla ricerca, utilizza Monte Carlo albero di ricerca . Google " Monte Carlo Tree Search alphaGo " se vuoi essere convinto.

ANN può essere utilizzato per i motori di scacchi:

Questo programma avrebbe prestazioni migliori rispetto ai migliori motori di scacchi (e giocatori di scacchi) di oggi?

Giraffe gioca a livello di Master internazionale, che è circa FIDE 2400. Tuttavia, Stoccafisso, Houdini e Komodo giocano tutti intorno a FIDE 3000. Questo è un grande divario. Perché? Perché non cercare l'albero di Monte-Carlo?

  • Il materiale euristico negli scacchi è semplice. Il più delle volte, una posizione di scacchi sta vincendo / perdendo semplicemente contando i materiali sul tabellone. Ricorda che il conteggio dei materiali non funziona per Go. Il conteggio dei materiali è ordini di grandezza più veloci rispetto all'esecuzione di reti neurali - questo può essere fatto da bitboard rappresentati da un numero intero a 64 bit. Sul sistema a 64 bit, può essere eseguito solo con diverse istruzioni della macchina. La ricerca con l'algoritmo tradizionale è molto più veloce dell'apprendimento automatico. Nodi più alti al secondo si traducono in ricerche più approfondite.
  • Allo stesso modo, ci sono tecniche molto utili ed economiche come la potatura a mosse nulle, la riduzione delle mosse in ritardo e le mosse killer ecc. Sono economiche da gestire e molto efficienti per l'approccio usato in AlphaGo.
  • La valutazione statica negli scacchi è veloce e utile
  • L'apprendimento automatico è utile per l'ottimizzazione dei parametri, ma abbiamo anche SPSA e CLOP per gli scacchi.
  • Ci sono molte metriche utili per la riduzione degli alberi negli scacchi. Molto meno per Go.

Ci sono state ricerche secondo cui Monte Carlo Tree Search non si adatta bene agli scacchi. Go è un gioco diverso da scacchi. Gli algoritmi di scacchi non funzionano per Go perché gli scacchi si basano su tattiche brutali. La tattica è probabilmente più importante negli scacchi.

Ora, abbiamo stabilito che MCTS funziona bene per AlphaGo ma meno per gli scacchi. L'apprendimento profondo sarebbe più utile se:

  • La valutazione NN sintonizzata è migliore rispetto agli algoritmi tradizionali. Tuttavia ... l'apprendimento profondo non è magico, tu come programmatore dovresti comunque fare la programmazione. Come accennato, abbiamo qualcosa come SPSA per giocare da soli per la regolazione dei parametri negli scacchi.
  • Investimento, soldi! Non ci sono molti soldi per l'apprendimento automatico negli scacchi. Lo stoccafisso è gratuito e open source, ma abbastanza forte da sconfiggere tutti i giocatori umani. Perché Google spenderebbe milioni se qualcuno potesse semplicemente scaricare Stockfish gratuitamente? Perché pagare per i cluster di CPU? Chi pagherà per i talenti? Nessuno vuole farlo, perché gli scacchi sono considerati un gioco "risolto".

Se il deep learning può ottenere quanto segue, batterà l'algoritmo tradizionale:

  • Data una posizione di scacchi, "sentirlo" come un grande maestro umano. Ad esempio, un grande maestro umano non andrebbe in fila per cattiva esperienza. Né l'algoritmo tradizionale né il deep learning possono raggiungerlo. Il tuo modello NN potrebbe darti una probabilità [0..1] per la tua posizione, ma non è abbastanza buono.

Vorrei sottolineare:

No. Giraffe (il link pubblicato da @Tim) non utilizza Monte Carlo Tree Search. Utilizza il normale algoritmo nega-max. Tutto ciò che fa è sostituire la normale funzione di valutazione con NN ed è molto lenta.

un altro:

Anche se Kasparov è stato battuto da Deep Blue nella partita del 1997. "L'umanità" è stata davvero persa intorno al 2003-2005, quando Kramnik ha perso una partita con Deep Fritz senza vittorie e Michael Adams ha perso contro una macchina a grappolo in una partita unilaterale. In quel periodo, Rybka si dimostrò troppo forte anche per i migliori giocatori del mondo.

Riferimento:

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

Quoto:

Negli scacchi abbiamo il concetto di materialità che fornisce già una stima ragionevole di come sta andando un motore e che può essere calcolato rapidamente. Inoltre, ci sono molti altri aspetti del gioco che possono essere codificati in una funzione di valutazione statica che non può essere eseguita in Go. A causa delle numerose euristiche e buona valutazione, l'EBF (Effective-Branching-Factor) è piuttosto piccolo. L'uso di una rete neurale in sostituzione della funzione di valutazione statica rallenterebbe decisamente il motore di parecchio.


1
Grazie. Alcune domande: i motori di scacchi usano l'algoritmo alpha-beta, non è questo un algoritmo "forza bruta"? "Ricerca dell'albero di Monte Carlo" significa che si guarda un numero di mosse prima della posizione attuale?
lijas,

1
La "forza bruta" di @lijas è generalmente definita come ricerca di tutte le possibilità. I motori di scacchi non lo fanno.
SmallChess,

7
@lijas Hai appena risposto alla domanda. Le moltiplicazioni di matrici sono un'operazione lenta.
SmallChess,

3
La ricerca Alpha Beta è sicuramente "forza bruta". Hans Berliner sulle tendenze dell'IA: "Ritengo che la tendenza più importante sia stata che i computer sono diventati molto più veloci in questi ultimi 50 anni. In questo processo, abbiamo scoperto che molte cose per le quali avevamo al meglio soluzioni antropomorfe, che in molti casi non sono riuscite a catturare la vera sostanza del metodo di un essere umano, potrebbe essere fatta con metodi più forzati che si limitano a elencare fino a trovare una soluzione soddisfacente. Se questa è eresia, così sia. " (vedi ieeexplore.ieee.org/document/820322/?reload=true )
Daniel Lidström,

1
@smallchess alpha beta è di fatto un algoritmo di ricerca, anche le sue varianti come negascout sono solo miglioramenti incrementali. A cos'altro potrebbe riferirsi? Questo è stato scritto molto prima che i sistemi di apprendimento profondo diventassero realtà.
Daniel Lidström,

6

DeepBlue ha già battuto Kasparov, quindi questo problema è stato risolto con un approccio molto più semplice. Ciò è stato possibile perché il numero di mosse possibili negli scacchi è molto più piccolo di quello in corso , quindi è un problema molto più semplice. Inoltre, nota che sia NN che la forza bruta hanno bisogno di enormi risorse di elaborazione ( qui puoi trovare una foto del computer dietro AlphaGo, nota che non utilizza nemmeno GPU, ma TPU per il calcolo). Il problema era che quando Deep Blue ha battuto Kasparov, la community di go ha sostenuto che ciò non sarebbe stato possibile con go (per molte ragioni diverse, ma per riassumere gli argomenti che avrei bisogno di fare una dettagliata introduzione al gioco di andare). Sì, puoi insegnare a NN a giocare a scacchi, Mario , oppure provare a insegnare a giocareStarcraft ...

Immagino che la ragione sia che semplicemente non si sente spesso nei media mainstream casi in cui le persone risolvono problemi già risolti.

Inoltre la tua premessa è sbagliata, il Deep Learning è usato per giocare a scacchi, ad esempio come descritto in Deep Learning Machine insegna da solo in 72 ore, gioca a livello internazionale . Vedi anche l'articolo corrispondente, Giraffe: Usare il rinforzo profondo Imparare a giocare a scacchi .


3
Nonostante esistano ovviamente alcuni programmi di scacchi addestrati con l'apprendimento approfondito del rinforzo, resta il fatto che nessuno ha costruito uno che avrebbe battuto i motori di scacchi "tradizionali". Suppongo che ciò sia dovuto al fatto che questo problema (battere i motori tradizionali) non è semplicemente interessante / motivante abbastanza da investire molto sforzo necessario per sviluppare qualcosa di livello AlphaGo.
ameba dice Reinstate Monica il

1
@amoeba, il software di go-play ampiamente disponibile, non utilizza il deep learning ed è generalmente più debole dei giocatori amatoriali da 1 dan, molto peggio di AlphaGo. AlphaGo è una prova di concetto.
Tim

1
@ rus9384 non è facile ma l'abbiamo già "risolto", Deep Bluie ha battuto Kasparov, abbiamo il nostro cigno nero che ha superato il test Turing di scacchi.
Tim

5
Il gioco risolto è un'altra cosa: non sappiamo se il gioco perfetto garantisce la vittoria per il bianco / nero o termina con il pareggio.
rus9384,

1
@ rus9384: Sarebbe divertente iniziare una partita contro un'IA di scacchi perfetta e vedere "Il bianco vince. Scacco matto in 97 mosse".
Eric Duminil,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.