Estou tentando entender a abordagem do gradiente de política para resolver o problema da cartpole . Nesta abordagem, estamos expressando o gradiente da perda referente a cada parâmetro de nossa política como uma expectativa da soma dos gradientes de nosso gradiente de política para todas as ações em uma sequência, ponderada pela soma das recompensas com desconto nessa sequência:
e estimamos isso usando uma média empírica em todas as amostras de um episódio - o que faz sentido intuitivamente.
Mas a parte menos intuitiva é que vi uma prática comum para normalizar vantagens entre os episódios em várias implementações (e, de fato, funciona melhor). Então, depois de calcularem, eles não usariam diretamente a vantagem, mas a normalizariam; por exemplo, aqui eles fazem depois de cada episódio:
discounted_epr = discount_rewards(epr)
discounted_epr -= np.mean(discounted_epr)
discounted_epr /= np.std(discounted_epr)
qual é a justificativa para isso - tanto na teoria quanto na intuição? Parece-me que, se um episódio é longo e, como tal, possui grandes vantagens, vale a pena aprender mais com esse episódio do que com um episódio de 3 movimentos. o que estou perdendo?
fonte
Respostas:
Em geral, preferimos normalizar os retornos para fins de estabilidade. Se você elaborar as equações de retropropagação, verá que o retorno afeta os gradientes. Assim, gostaríamos de manter seus valores em um intervalo conveniente específico. Não seguimos essa prática por garantias teóricas, mas por razões práticas. O mesmo acontece com o recorteQ funções de valor no Q-learning combinadas com NNs. Obviamente, existem algumas desvantagens nessas abordagens, mas em geral o algoritmo se comporta melhor, pois a retropropagação não leva os pesos da sua rede a valores extremos. Por favor, dê uma olhada neste excelente post de Andrej Karpathy (anexo a parte relacionada à sua pergunta como um bloco de notas ) que fornece informações adicionais:
fonte
Você pode achar úteis as seguintes referências:
fonte