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.