Come addestrare una rete neurale per un gioco da tavolo a base circolare?


11

Mi chiedo come addestrare una rete neurale per un gioco da tavolo a base circolare come tic-tac-toe, scacchi, rischi o qualsiasi altro gioco a base circolare. Ottenere la mossa successiva per inferenza sembra essere piuttosto semplice, alimentando lo stato del gioco come input e usando l'output come mossa per il giocatore corrente. Tuttavia, allenare un'intelligenza artificiale a tale scopo non sembra essere così semplice, perché:

  1. Potrebbe non esserci una valutazione se una singola mossa è buona o meno, quindi l'allenamento delle singole mosse non sembra essere la scelta giusta
  2. Usare tutti gli stati di gioco (input) e le mosse (output) dell'intero gioco per allenare la rete neurale, non sembra essere la scelta giusta in quanto non tutte le mosse all'interno di una partita persa potrebbero essere sbagliate

Quindi mi chiedo come addestrare una rete neurale per un gioco da tavolo a base circolare? Vorrei creare una rete neurale per tic-tac-toe usando tensorflow.

Risposte:


10

Ottima domanda! NN è molto promettente per questo tipo di problema: Giraffe Chess . Il risultato di Lai è stato considerato un grosso problema , ma sfortunatamente è arrivato solo pochi mesi prima che AlphaGo prendesse i riflettori. (Si è scoperto tutto bene, in quanto Lai è stato successivamente assunto da DeepMind, anche se non così bene per il motore Giraffe ;)

Ho trovato l'approccio di Lai molto utile ed è supportato da solidi risultati.


Potresti voler usare " sequenziale " invece di "round based" poiché sequenziale è il termine preferito in Teoria dei giochi e Teoria dei giochi combinatori , e questi sono i campi che applicano l'analisi matematica ai giochi.

I giochi che elenchi vengono ulteriormente definiti " astratti " per distinguerli dai moderni giochi da tavolo di strategia, o giochi in generale, che utilizzano un tema forte e sono generalmente meno compatti dei giochi astratti in termini di meccanica ed elementi. Questo porta l'avvertimento che i giochi astratti non sono limitati ai giochi sequenziali o ai giochi da tavolo, o persino ai giochi in particolare, come nel caso di enigmi come il Sudoku.

Il nome formale per questo gruppo di giochi è generalmente "informazione partigiana , sequenziale, deterministica , perfetta " con l'ulteriore categorizzazione di Tic-Tac-Toe come "banale" (risolto e facilmente risolvibile) e non banale (intrattabile e irrisolto) per giochi come Chess and Go.


7

Sono un giocatore di scacchi e la mia risposta sarà solo sugli scacchi.

La formazione di una rete neutrale con l'apprendimento per rinforzo non è nuova, è stata fatta molte volte in letteratura.

Spiegherò brevemente le strategie comuni.

  • Lo scopo di una rete è imparare valutazione della posizione. Sappiamo tutti che una regina è più forte di un vescovo, ma possiamo far conoscere la rete senza programmarla esplicitamente? Che dire della struttura dei pegni? La rete comprende come valutare se una posizione sta vincendo o no?

  • Ora sappiamo perché abbiamo bisogno della rete, dovremo progettarla. Il design differisce radicalmente tra gli studi. Prima che il deep learning fosse popolare, le persone utilizzavano reti poco profonde. Oggi spicca una rete con molti livelli.

  • Una volta che abbiamo la rete, dovrai creare un motore di scacchi. La rete neurale non può magicamente giocare a scacchi da sola, deve collegarsi a un motore di scacchi. Fortunatamente, non è necessario scrivere il codice di valutazione della posizione perché la rete può farlo per noi.

  • Ora dobbiamo giocare. Potremmo iniziare con alcuni database di scacchi di alta qualità o fare in modo che il nostro agente di intelligenza artificiale giochi con un altro giocatore (ad es. Se stesso, un altro agente di intelligenza artificiale o un essere umano). Questo è noto come apprendimento di rinforzo .

  • Mentre giochiamo, aggiorniamo il parametro di rete. Questo può essere fatto mediante discesa gradiente stocastica (o altre tecniche simili). Ripetiamo il nostro allenamento per tutto il tempo che vogliamo, di solito per oltre milioni di iterazioni.

  • Finalmente abbiamo un modello di rete neutrale addestrato per gli scacchi!

Guarda le seguenti risorse per i dettagli:

https://chessprogramming.wikispaces.com/Learning


L'unico piccolo lo ha qui
quintumnia,

Questo è un esempio di come fornire in futuro un collegamento esterno, senza riassumere, possa essere dannoso. Poiché il link fornito è ora morto
Greg Hilston

4

Penso che dovresti familiarizzare con l'apprendimento per rinforzo. In questo campo dell'apprendimento automatico l'agente interagisce con il suo ambiente e successivamente l'agente ottiene una ricompensa. Ora, l'agente è la rete neurale che l'ambiente è il gioco e l'agente può ottenere una ricompensa +1 se vince o -1 se perde. Puoi usare questo stato, azione, tupla dell'esperienza della ricompensa per addestrare l'agente. Posso consigliare le lezioni di David Silver su YouTube e anche il libro di Sutton.

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.