Algum código de exemplo do algoritmo REINFORCE proposto por Williams?

9

Alguém conhece o exemplo de um algoritmo proposto por Williams no artigo "Uma classe de algoritmos de estimativa de gradiente para aprendizado por reforço em redes neurais" http://incompleteideas.net/sutton/williams-92.pdf

Alex Gao
fonte
Eu esquecerei de vir aqui quando o fizer, mas estou prestes a concluir a refatoração do github.com/pytorch/examples/blob/master/reinforcement_learning/… do openAI para um estilo orientado a objetos, que é realmente escalável. Sibile-me sobre isso e eu vou postá-lo aqui
Gulzar
Eu o implementei aqui: código Lua . Espero que ajude!
Xenomeno

Respostas:

11

Na palestra de David Silver sobre os métodos Gradient de Política , o slide 21 aqui é um pseudocódigo para o algoritmo episódico Reinforce, que basicamente é um método baseado em gradiente em que o retorno esperado é amostrado diretamente do episódio (em vez de estimar isso com algumas informações aprendidas). função). Nesse caso, o retorno esperado é realmente a recompensa episódica total em diante, .Gt

inicializarθ

para cada episódio { } amostrados da política doπ θs1,a1,r2...sT1,aT1,rTπθ

    para t = 1 a T - 1 faça

        θθ+αθlogπθ(st,at)Gt

    fim para

fim para

Esse algoritmo sofre alta variação, pois as recompensas amostradas podem ser muito diferentes de um episódio para outro, portanto, esse algoritmo é geralmente usado com uma linha de base subtraída da política. Aqui está uma explicação mais detalhada, completa com exemplos de código.

Florin Gogianu
fonte
Estou curioso para saber por que atualizar pesos a cada timestep em vez de atualizar uma vez no final do episódio? O meu entendimento é não é alterado no passe para frente do trajectrory todoθ
eric2323223
@ eric2323223 O curso de David Silver (recomendado) discute isso completamente. REFORÇAR é um método de Monte Carlo. Você pode fazer uma atualização mais frequente, o que é melhor para muitos casos. Assista aos vídeos para obter explicações muito melhores do que o que posso dar aqui. Em geral, ele chama o método mais frequente "Diferença temporal" ou "TD", com uma otimização chamada "TD (lambda)"
Gulzar
O REINFORCE é um algoritmo dentro da política?
GoingMyWay
2

O algoritmo REINFORCE para aprendizado de reforço de gradiente de política é um algoritmo simples de gradiente estocástico. Funciona bem quando os episódios são razoavelmente curtos, portanto muitos episódios podem ser simulados. Os métodos de função de valor são melhores para episódios mais longos porque podem começar a aprender antes do final de um único episódio.

nsweeney
fonte