Apprendimento per rinforzo

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 lavori con Android, ti consigliamo di esplorare la seguente applicazione di esempio che può aiutarti a iniziare.

Esempio Android

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

Scarica il modello

Come funziona

Il modello è costruito per consentire a un agente di gioco di giocare a un piccolo gioco da tavolo chiamato "Plane Strike". Per una rapida introduzione a questo gioco e alle sue regole, fare 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 addestramento qui . Dopo aver addestrato l'agente, convertiamo il modello in TFLite e lo distribuiamo nell'app Android.

Durante il gioco vero e proprio nell'app Android, quando è il turno dell'agente di agire, l'agente guarda lo stato del tabellone del giocatore umano (il tabellone in basso), che contiene informazioni sui precedenti attacchi riusciti e falliti (successi e mancati) e utilizza il modello addestrato per prevedere dove colpire successivamente, 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 politico 84 Kb Pixel 3 (Android 10) 0,01 ms*
Pixel 4 (Android 10) 0,01 ms*

* 1 thread utilizzato.

Ingressi

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

Uscite

Il modello restituisce un tensore di forma 2-D float32 (1,64) come punteggi previsti per ciascuna delle 64 possibili posizioni di attacco.

Addestra il tuo modello

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