Qualche dubbio sull'applicazione dell'apprendimento per rinforzo a giochi come gli scacchi


9

Ho inventato un gioco da tavolo simile agli scacchi. Ho costruito un motore in modo che possa funzionare autonomamente. Il motore è sostanzialmente un albero decisionale. È composto da:

  1. Una funzione di ricerca che su ogni nodo trova tutte le possibili mosse legali
  2. Una funzione di valutazione che assegna un valore numerico alla posizione del tabellone (positivo significa che il primo giocatore sta guadagnando il sopravvento, negativo invece che il secondo giocatore sta invece vincendo)
  3. Un algoritmo alphabeta di potatura di negamax

Il problema principale di questo motore è che l'ottimizzazione della funzione di valutazione è davvero complicata. Non so quali fattori considerare e quali pesi mettere. L'unico modo in cui vedo per migliorare il motore è iterare i giochi provando ogni volta combinazioni diverse di fattori e pesi. Tuttavia, a livello computazionale sembra un'impresa molto dura (posso backpropagare senza usare il deep learning?).

Vorrei usare l'apprendimento per rinforzo per migliorare il motore giocando contro se stesso. Ho letto sull'argomento, ma sono ancora abbastanza confuso.

Quale altra ricompensa in un gioco fa parte dell'output vincente o perdente (1 o 0)? Se utilizzo altri premi, come l'output della funzione di valutazione ad ogni turno, come posso implementarlo? Come posso modificare la funzione di valutazione per fornire migliori iterazioni dei premi dopo l'iterazione?

Risposte:


6

Vorrei usare l'apprendimento per rinforzo per migliorare il motore giocando contro se stesso. Ho letto sull'argomento ma sono ancora abbastanza confuso.

Attenzione: l'apprendimento per rinforzo è una materia ampia e complessa. Anche se potrebbe portarti a una deviazione dai robot di gioco, potresti voler studiare le basi di RL. Un buon punto di partenza è l' apprendimento del rinforzo Sutton & Barto : un'introduzione

Quale altra ricompensa in un gioco fa parte dell'output vincente o perdente (1 o 0)?

A seconda del tuo gioco, di solito è quello. In realtà per una partita vincente / pareggiata / persa come gli scacchi, la ricompensa di ogni azione è 0 eccetto per la vittoria (+1) o la perdita (-1) alla fine. In un gioco a somma zero, questo si allinea perfettamente a minimax, potatura alphabeta ecc.

L'apprendimento per rinforzo ha lo scopo di indirizzare gli ambienti con ricompense ritardate. L'aggiunta di premi "aiutanti" per i non goal intermedi è di solito controproducente.

Se utilizzo altri premi, come l'output della funzione di valutazione ad ogni turno, come posso implementarlo?

In genere no. Ciò che farà l'applicazione del gioco autonomo RL è imparare una funzione di ritorno (a volte chiamata utility ) che prevede l'aspettativa della tua ricompensa totale + 1/0 / -1 entro la fine del gioco. Lo useresti al posto dell'attuale euristica per la ricerca minimax. Oppure, potresti regolare la tua attuale funzione euristica in modo da produrre nella stessa gamma e usare RL per ottimizzare i suoi pesi per fare la migliore approssimazione alla vera funzione di ritorno del gioco ottimale (che probabilmente è troppo complessa per calcolare esattamente).

Come posso modificare la funzione di valutazione per fornire migliori iterazioni dei premi dopo l'iterazione?

Questo è ciò che i diversi approcci RL tentano di fare, ci sono una varietà di solutori diversi. Non c'è modo breve per spiegarlo. Potresti iniziare con un metodo semplice come Q-Learning . Q-Learning apprende le stime di Q (s, a) (chiamato valore dell'azione) che è il rendimento atteso quando si è in stato se si intraprende un'azione a, e successivamente seguendo una politica ottimale. Fa un'ipotesi arbitraria per cominciare e lo affina più vicino al vero valore ad ogni passo fatto nell'ambiente di apprendimento. I semplici apprendenti Q tabulari fanno questo perfezionamento semplicemente memorizzando una grande tabella di tutti gli stati e le azioni con la migliore stima finora del valore reale e calcolando la media in ogni nuova stima man mano che viene vissuta.

È anche possibile combinare un metodo RL per l'euristica con la ricerca minimax look-ahead: questo è ciò che ha fatto AlphaGo originale e ciò che AlphaGo Zero fa durante l'allenamento. Questo è un approccio potente perché la ricerca minimax funzionerà per ricontrollare l'euristica generata da RL. Anche se per giochi abbastanza semplici, RL può imparare l'euristica perfetta e avresti bisogno solo della ricerca locale (quale dovrebbe essere la prossima mossa).

A meno che il tuo gioco non sia molto semplice (tutti gli stati possibili si adatteranno alla memoria), avrai bisogno di una sorta di approssimatore di funzioni all'interno dell'algoritmo RL. Le reti neurali sono una scelta standard. Avere qualcosa per quella parte è inevitabile, anche se un'altra buona scelta è quella di definire un gruppo di funzioni proxy (che potresti usare per costruire un euristico a mano) e usare un approssimatore lineare - solo una somma ponderata di tutte le caratteristiche. Questo può funzionare abbastanza bene ed è stato usato ad esempio in dama (dama) giocatori allenati usando RL.

Infatti, a condizione che la tua funzione euristica non sia troppo insolita, puoi probabilmente trattarla come un approssimatore lineare e usare RL per apprendere i pesi migliori.


"L'apprendimento per rinforzo ha lo scopo di indirizzare gli ambienti con ricompense ritardate. L'aggiunta di ricompense" di aiuto "per i non obiettivi intermedi è di solito controproducente." Vorrei sottolineare che esiste un documento che tenta di risolvere il problema dei premi sparsi introducendo obiettivi intermedi " Hindsight Experience Replay ".
nbro

1
@nbro: ci sono molti tentativi di risolvere i premi sparsi, è una grande domanda a risposta aperta in RL, un modo per aumentare la sfida di un problema è rendere i premi più sparsi. Le tracce di ammissibilità sono un altro tentativo, Hierarchical RL è un'altra area promettente. . . Non penso di voler aggiungere queste tecniche alla risposta qui, dato che si tratta più di fattibilità del problema di OP e di un'introduzione all'argomento
Neil Slater,
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.