Insegnamento rafforzativo

Gioca a un gioco da tavolo contro un agente, addestrato utilizzando l'apprendimento per rinforzo e distribuito con TensorFlow Lite.

Iniziare

Se non conosci TensorFlow Lite e stai lavorando con Android, ti consigliamo di esplorare la seguente applicazione di esempio che può aiutarti a iniziare.

Esempio Android

Se stai utilizzando una piattaforma diversa da Android o hai già familiarità con le API di TensorFlow Lite , puoi scaricare il nostro modello addestrato.

Scarica il modello

Come funziona

Il modello è stato creato per un agente di gioco per giocare a un piccolo gioco da tavolo chiamato "Plane Strike". Per una rapida introduzione di questo gioco e delle sue regole, fai riferimento a questo README .

Sotto l'interfaccia utente dell'app, abbiamo creato un agente che gioca contro il giocatore umano. L'agente è un MLP a 3 strati che prende lo stato della scheda come input e restituisce il punteggio previsto per ciascuna delle 64 possibili celle della scheda. Il modello viene addestrato utilizzando il gradiente di policy (REINFORCE) e puoi trovare il codice di formazione qui . Dopo aver addestrato l'agente, convertiamo il modello in TFLite e lo distribuiamo nell'app Android.

Durante il gioco effettivo nell'app Android, quando è il turno dell'agente di agire, l'agente osserva lo stato della scacchiera del giocatore umano (la scacchiera in basso), che contiene informazioni sui precedenti attacchi riusciti e falliti (colpi e mancati) e utilizza il modello addestrato per prevedere dove colpire dopo, in modo che possa finire il gioco prima che lo faccia il giocatore umano.

Benchmark delle prestazioni

I numeri dei benchmark delle prestazioni vengono generati con lo strumento qui descritto.

Nome del modello Dimensioni del modello Dispositivo processore
Gradiente di politica 84 Kb Pixel 3 (Android 10) 0,01 ms*
Pixel 4 (Android 10) 0,01 ms*

* 1 filo utilizzato.

Ingressi

Il modello accetta un tensore 3-D float32 di (1, 8, 8) come stato della scheda.

Uscite

Il modello restituisce un tensore di forma float32 2-D (1,64) come punteggio previsto per ciascuna delle 64 possibili posizioni di strike.

Allena il tuo modello

Puoi addestrare il tuo modello per una scheda più grande/più piccola modificando il parametro BOARD_SIZE nel codice di addestramento .