Apprendimento per rinforzo profondo: significa Q come metrica di valutazione
Sto mettendo a punto un modello di apprendimento profondo per uno studente del gioco Space Invaders (immagine sotto). Lo stato è definito come distanza euclediana relativa tra il giocatore e i nemici + distanza relativa tra il giocatore e 6 laser nemici più vicini normalizzata dall'altezza della finestra (se la posizione del giocatore è$(x_p,y_p)$ e la posizione di un nemico è $(x_e,y_e)$, la distanza euclidea relativa è $\frac{\sqrt{(x_p-x_e)^2+(y_p-y_e)^2}}{HEIGHT}$e HEIGHT è l'altezza della finestra). Quindi la dimensione dello spazio di osservazione è (10 + 6), il che si traduce in un input della mia rete neurale profonda di 16 unità.


Ecco alcuni risultati sullo studente:

Risposte
Penso che il tuo problema principale sia l'uso della distanza relativa come caratteristica principale. Ha due principali punti deboli:
La distanza da un oggetto non fornisce la direzione dell'oggetto. Le migliori scelte di azione dipendono tutte in modo critico dalla direzione. Ad esempio, un fulmine laser nemico di 0,1 unità direttamente sopra il giocatore è un pericolo immediato che richiede un'azione evasiva, mentre una 0,1 unità a sinistra oa destra non è un pericolo e sta per lasciare la finestra di gioco. La tua caratteristica della distanza relativa non distingue tra questi scenari, ma è una differenza fondamentale.
Un po 'meno importante, ma la distanza grezza non cattura alcun senso di movimento. Se i nemici si muovono costantemente turno dopo turno, ma non sempre nella stessa identica direzione o alla stessa velocità, anche le loro velocità dovrebbero far parte dello stato.
Un modo per migliorare le funzionalità è aggiungere una componente di velocità per ogni oggetto, mostrando quanto velocemente si avvicina o si allontana dal giocatore. Questo potrebbe aiutare un po ', ma la mia sensazione è che tu abbia bisogno di più dati rispetto alla distanza e alla velocità.
Penso che dovresti usare normalizzato $x, y$posizione come caratteristiche per ogni elemento monitorato, più la velocità normalizzata$dx, dy$ per qualsiasi tipo di oggetto che può cambiare direzione (se i laser nemici cadono sempre verso il basso potresti non aver bisogno di nulla per quelli).
Inoltre:
Se i bordi della finestra sono importanti, dovresti includere almeno il relativo $x$di uno di essi, quindi l'agente conosce la sua posizione assoluta sullo schermo e quanto spazio ha da manovrare. Questo è vero se al giocatore è impedito di spostarsi ulteriormente a sinistra oa destra, o se il giocatore "si sposta" sull'altro lato dello schermo. Entrambi i tipi di effetto influenzeranno in modo significativo il modo in cui il gioco viene riprodotto vicino al bordo dello schermo.
Per tenere traccia del valore previsto, è necessario tenere traccia della posizione dei missili del giocatore. Non è sufficiente lasciare che l'agente predica quando è meglio sparare - per tracciare con precisione una funzione di valore ha bisogno di "vedere" se il missile che ha sparato qualche passo fa è probabile che colpisca o manchi un bersaglio.
Sia per i laser nemici che per i missili del giocatore, va bene filtrare e ordinare i dati in base ad alcuni criteri (come la distanza dal giocatore). Finché questo è coerente, può anche aiutare molto avere tale pre-elaborazione.