Perché REINFORCE funziona?

Aug 15 2020

Ecco uno screenshot del popolare algoritmo del gradiente di politica dal libro di Sutton e Barto:

Capisco la derivazione matematica della regola di aggiornamento, ma non sono in grado di costruire intuizioni sul motivo per cui questo algoritmo dovrebbe funzionare in primo luogo. Quello che mi preoccupa davvero è che iniziamo con una politica errata (cioè non conosciamo i parametri$\theta$ ancora) e usiamo questa politica per generare episodi e fare gli aggiornamenti conseguenti.

Perché REINFORCE dovrebbe funzionare? Dopo tutto, l'episodio che utilizza per l'aggiornamento del gradiente viene generato utilizzando la policy parametrizzata dai parametri$\theta$ che devono ancora essere aggiornati (l'episodio non è stato generato utilizzando la politica ottimale - non è possibile farlo in alcun modo).

Spero che la mia preoccupazione sia chiara e chiedo a tutti di fornire qualche intuizione sul motivo per cui funziona! Ho il sospetto che, in qualche modo , anche se stiamo campionando un episodio dalla politica sbagliata, ci avviciniamo a quello giusto dopo ogni aggiornamento (miglioramento monotono). In alternativa, potremmo avvicinarci alla politica ottimale (insieme ottimale di parametri$\theta$) in media.

Allora, cosa sta succedendo veramente qui?

Risposte

4 DavidIreland Aug 15 2020 at 21:16

La chiave per il funzionamento di REINFORCE è il modo in cui i parametri vengono spostati $G \nabla \log \pi(a|s, \theta)$.

Notare che $ \nabla \log \pi(a|s, \theta) = \frac{ \nabla \pi(a|s, \theta)}{\pi(a|s, \theta)}$. Questo rende l'aggiornamento abbastanza intuitivo - il numeratore sposta i parametri nella direzione che dà il maggior incremento di probabilità che l'azione venga ripetuta, dato lo stato, proporzionale ai ritorni - questo è facile da vedere perché si tratta essenzialmente di una salita in gradiente passo. Il denominatore controlla le azioni che avrebbero un vantaggio rispetto ad altre azioni perché sarebbero scelte più frequentemente, scalando inversamente rispetto alla probabilità dell'azione intrapresa; immagina se ci fossero state alte ricompense ma l'azione in quel momento$t$ ha una bassa probabilità di essere selezionato (es. 0,1) quindi questo moltiplicherà i rendimenti per 10 portando a un passo di aggiornamento più ampio nella direzione che aumenterebbe la probabilità che questa azione venga selezionata di più (che è ciò per cui controlla il numeratore, come menzionato ).

Questo è per l'intuizione - per vedere il motivo per cui fa il lavoro, poi pensare a quello che abbiamo fatto. Abbiamo definito una funzione obiettivo,$v_\pi(s)$, che ci interessa massimizzare nel rispetto dei nostri parametri $\theta$. Troviamo la derivata di questo obiettivo rispetto ai nostri parametri, quindi eseguiamo la risalita del gradiente sui nostri parametri per massimizzare il nostro obiettivo, cioè massimizzare$v_\pi(s)$, quindi se continuiamo a eseguire l'ascesa del gradiente, i parametri della nostra politica convergeranno (eventualmente) a valori che massimizzano $v$ e quindi la nostra politica sarebbe ottimale.