Por que o REINFORCE funciona?

Aug 15 2020

Aqui está uma captura de tela do popular algoritmo de gradiente de política do livro de Sutton e Barto -

Eu entendo a derivação matemática da regra de atualização - mas não sou capaz de construir intuição sobre por que esse algoritmo deve funcionar em primeiro lugar. O que realmente me incomoda é que começamos com uma política incorreta (ou seja, não sabemos os parâmetros$\theta$ ainda), e usamos essa política para gerar episódios e fazer atualizações consequentes.

Por que o REINFORCE deveria funcionar? Afinal, o episódio que ele usa para a atualização do gradiente é gerado usando a política que é parametrizada por parâmetros$\theta$ que ainda não foram atualizados (o episódio não é gerado usando a política ideal - não há como fazermos isso).

Espero que minha preocupação esteja clara e peço a todos que me dêem alguma intuição sobre por que isso funciona! Suspeito que, de alguma forma , embora estejamos testando um episódio da política errada, nos aproximamos do certo após cada atualização (melhoria monotônica). Alternativamente, poderíamos estar nos aproximando da política ideal (conjunto ideal de parâmetros$\theta$) na média.

Então, o que realmente está acontecendo aqui?

Respostas

4 DavidIreland Aug 15 2020 at 21:16

A chave para o funcionamento do REINFORCE é a maneira como os parâmetros são alterados para $G \nabla \log \pi(a|s, \theta)$.

Observe que $ \nabla \log \pi(a|s, \theta) = \frac{ \nabla \pi(a|s, \theta)}{\pi(a|s, \theta)}$. Isso torna a atualização bastante intuitiva - o numerador muda os parâmetros na direção que dá o maior aumento na probabilidade de a ação se repetir, dado o estado, proporcional aos retornos - isso é fácil de ver porque é essencialmente uma subida gradiente degrau. O denominador controla as ações que teriam uma vantagem sobre outras ações porque seriam escolhidas com mais frequência, escalando inversamente em relação à probabilidade da ação ser executada; imagine se tivesse havido grandes recompensas, mas a ação no momento$t$ tem baixa probabilidade de ser selecionado (por exemplo, 0,1), então isso irá multiplicar os retornos por 10 levando a uma etapa de atualização maior na direção que aumentaria a probabilidade dessa ação ser mais selecionada (que é o que o numerador controla, como mencionado )

Isso é para a intuição - para ver por que ele faz o trabalho, em seguida, pensar sobre o que temos feito. Definimos uma função objetivo,$v_\pi(s)$, que estamos interessados ​​em maximizar no que diz respeito aos nossos parâmetros $\theta$. Encontramos a derivada deste objetivo em relação aos nossos parâmetros, e então realizamos a subida do gradiente em nossos parâmetros para maximizar nosso objetivo, ou seja, maximizar$v_\pi(s)$, portanto, se continuarmos realizando a subida de gradiente, nossos parâmetros de política convergirão (eventualmente) para valores que maximizam $v$ e assim nossa política seria ótima.