Q-learning con Neural Network come approssimazione della funzione


11

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.Q(a)

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.Qt(st)
  • Seleziona una nuova azione, , atterra in un nuovo stato s t .atst
  • Calcola usando la propagazione diretta di NN per tutte le azioni.Qt(st+1)
  • Imposta il valore Q target come: solo per l'azione corrente, a tQt+1(st,at)=Qt(st,at)+αt[rt+1+γmaxaQ(st+1,a)Qt(st,at)]at, impostando per gli altri stati. Nota, penso che questo sia il problema.Qt+1(s,at)=Qt(s,at)
  • Impostare il vettore dell'errore su e=QtargetQt=Qt+1Qt
  • 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.

Risposte:


9

Il tuo obiettivo dovrebbe essere giusto

rt+1+γmaxaQ(st+1,a)

rt+1+γmaxaQ(st+1,a)Qt

Q


Qt

Tuttavia, il mio NN + Q-learning non sta ancora convergendo. Quindi, se il metodo è corretto, immagino che cercherò solo di giocare con il tasso di apprendimento e il numero di neuroni negli strati nascosti
Enrico Anderlini

1
Sì, dovresti farlo (prova a utilizzare anche la funzione di trasferimento ReLU). Ma si noti che Q-Learning non ha garanzie di convergenza con l'approssimazione delle funzioni. Se il tuo prossimo tentativo non funziona, ti consigliamo di provare Advantage Learning. E infine, il problema potrebbe essere che i tuoi dati non sono iid. Quindi dovrai implementare Experience Replay.
rcpinto,

Qt+1rt+1

1
No, è zero. Ma sarà lentamente propagato dai valori Q agli stati precedenti, perché il valore Q è una stima dei premi cumulativi futuri .
rcpinto,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.