Eu estive estudando o aprendizado por reforço e, especificamente, brincando com a criação de meus próprios ambientes para usar com o OpenAI Gym AI. Estou usando agentes do projeto stable_baselines para testar com ele.
Uma coisa que notei em praticamente todos os exemplos de RL é que nunca parece haver camadas de abandono em nenhuma das redes. Por que é isso?
Criei um ambiente que simula os preços da moeda e um agente simples, usando o DQN, que tenta aprender quando comprar e vender. Ao treiná-lo em quase um milhão de timesteps, extraído de um conjunto específico de dados que consiste em dados de preços de cinco minutos no valor de um mês, parece que ele superestima muito. Se eu avaliar os agentes e o modelo em comparação com o valor de dados de um mês diferente, o desempenho é péssimo. Soa como super ajuste clássico.
Mas há uma razão pela qual você não vê as camadas de abandono nas redes RL? Existem outros mecanismos para tentar lidar com o ajuste excessivo? Ou, em muitos exemplos de RL, isso não importa? Por exemplo, pode haver apenas uma maneira verdadeira de obter a pontuação máxima máxima no jogo 'breakout'; assim, você deve aprender exatamente isso e não precisa generalizar?
Ou considera-se que a natureza caótica do próprio ambiente deve fornecer combinações diferentes de resultados suficientes para que você não precise ter camadas de abandono?
fonte
Respostas:
O abandono introduz essencialmente um pouco mais de variação. Em ambientes de aprendizado supervisionado, isso realmente ajuda a reduzir o excesso de ajustes (embora eu acredite que a evasão também já esteja se tornando menos ... moda nos últimos anos do que nos poucos anos anteriores a isso; não tenho 100% de certeza, porém, não é o meu principal objetivo). Área de Atuação).
No aprendizado por reforço, variações adicionais não são realmente o que estamos procurando. Já tende a haver uma grande variação nos sinais de aprendizado que obtemos, e essa variação já tende a ser uma questão importante para a estabilidade do aprendizado e / ou a velocidade do aprendizado. Por exemplo:
Muitas partes importantes dos algoritmos Deep RL (sem as quais nossos processos de treinamento empiricamente se desestabilizam e quebram) são muito adaptadas para reduzir essa variação. Por exemplo, as Redes de destino no DQN foram introduzidas especificamente para reduzir o problema do alvo em movimento. Deste ponto de vista, não é de surpreender que, se adicionássemos mais variações artificiais por outros meios novamente (como o abandono), isso prejudicaria o desempenho / desestabilizaria o aprendizado.
Na maioria das pesquisas atuais de Aprendizagem por Reforço (Profundo), a adaptação excessiva não é realmente vista como um problema. A grande maioria das pesquisas em RL consiste em treinamento em um ambiente (por exemplo, Cartpole, Breakout, ou em um nível específico em Pacman, ou navegar em um labirinto específico, etc.) e avaliar constantemente o desempenho durante esse processo de aprendizagem ou avaliar desempenho após esse processo de aprendizagem no mesmo ambiente .
Se comparássemos essa metodologia de avaliação com o que acontece no aprendizado supervisionado ... estamos basicamente avaliando o desempenho no conjunto de treinamento * . Na aprendizagem supervisionada, isso seria absolutamente inaceitável, mas na RL é muito tratado como aceitável e mais regra do que exceção. Alguns dizem que isso é simplesmente um problema na pesquisa atual de RL, algo que precisa mudar. Também se pode argumentar que não é necessariamente um problema; se realmente formos capazes de treinar o agente exatamente no mesmo ambiente em que desejamos implantá-lo mais tarde ... bem, então qual é o problema de se adaptar a esse ambiente?
Portanto, quando estamos usando a metodologia de avaliação descrita acima, na verdade estamos adaptando a um ambiente específico, mas a adaptação é boa, e não ruim, de acordo com nossos critérios de avaliação . É claro que essa metodologia não leva a agentes que possam generalizar bem; se você treinar consistentemente um agente para navegar em um labirinto em particular, provavelmente não poderá navegar em um labirinto diferente após o treinamento.
* Nota: a verdade, na minha opinião, é um pouco mais sutil do que realmente estamos "avaliando o conjunto de treinamento" em RL. Veja, por exemplo, este belo tópico de tweets: https://twitter.com/nanjiang_cs/status/1049682399980908544
Observe que sua metodologia de avaliação descrita aqui não se encaixa mais na metodologia de avaliação mais "comum". Você tem um problema com a deriva do conceito , com a não estacionariedade no ambiente. Isso significa que o ajuste excessivo pode ser um problema para você.
Ainda assim, não tenho certeza se o abandono ajudaria (ainda é uma variação adicional que pode doer). Em primeiro lugar, você deve ter certeza de que há alguma maneira de acompanhar o tempo / mês em suas informações, de modo que você pelo menos tenha a chance de aprender uma política que se adapta ao longo do tempo. Se você possui um limite claro e sólido entre "fase de treinamento" e "fase de avaliação" e sabe que a deriva do conceito ocorre através desse limite (você sabe que seu ambiente se comporta de maneira diferente na fase de treinamento e na fase de avaliação) ... você realmente não tem muita esperança de aprender uma política apenas com a experiência na fase de treinamento que ainda apresenta bom desempenho na fase de avaliação. Eu suspeito que você terá que se livrar dessa fronteira clara e sólida. Vocês' Quero continuar aprendendo durante toda a fase de avaliação. Isso permite que seu algoritmo de aprendizado colete experiência no ambiente alterado e se adapte a ele.
fonte