Sto cercando di utilizzare una rete neurale per approssimare il valore Q in Q-learning come in Domande sull'apprendimento Q utilizzando reti neurali . Come suggerito nella prima risposta, sto usando una funzione di attivazione lineare per il livello di output, mentre sto ancora usando la funzione di attivazione sigmoid nei livelli nascosti (2, anche se posso cambiarlo in seguito). Sto anche usando un singolo NN che restituisce un output per ogni azione come consigliato.
Tuttavia, l'algoritmo è ancora divergente per il semplice problema di bilanciamento del carrello. Quindi, temo che il mio Q-update sia sbagliato. Dopo l'inizializzazione, ciò che ho fatto ad ogni passaggio è il seguente:
- Calcola usando la propagazione diretta di NN per tutte le azioni.
- Seleziona una nuova azione, , atterra in un nuovo stato s t .
- Calcola usando la propagazione diretta di NN per tutte le azioni.
- Imposta il valore Q target come: solo per l'azione corrente, a t, impostando per gli altri stati. Nota, penso che questo sia il problema.
- Impostare il vettore dell'errore su
- Backpropagare l'errore tramite NN per aggiornare le matrici dei pesi.
Qualcuno potrebbe indicarmi dove ho sbagliato?
Inoltre, pensi che dovrei includere un termine di bias anche nel livello di input e nel primo livello nascosto (cioè per le funzioni sigmoid)? Farà la differenza?
Grazie mille in anticipo per il tuo aiuto. Posso aiutare a chiarire la domanda o condividere il codice, se necessario.