Por que você não vê camadas de evasão nos exemplos de aprendizado por reforço?

13

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?

Matt Hamilton
fonte
11
Você já tentou adicionar abandono a uma rede RL para ver o que acontece? Eu tenho (para um solucionador LunarLander_v2 que funcione bem de outra forma), e os resultados foram terríveis, desde a resolução em 400 episódios até a falha total em resolvê-lo (e tentei muitas variações em outros parâmetros). Outra regularização é boa e até benéfica. Ainda não sei por que os problemas de abandono ainda estavam pensando em fazer uma pergunta aqui. . .
Neil Slater
Neil, sim, parece que sua experiência reflete o que é dito abaixo por Dennis. Como eu esperava, no cenário do tipo 'resolver este quebra-cabeça', você realmente deseja se adaptar demais à medida que deseja resolver esse quebra-cabeça específico. E você quer saber se está encontrando um alienígena azul vs um alienígena vermelho, pois eles podem se comportar de maneira diferente no seu jogo.
Matt Hamilton
@MattHamilton Acabei de ver um tópico de tweets que alguém fez sobre a história "Os pesquisadores da RL estão avaliando os dados de treinamento". Eu editei um link para isso na minha resposta. O ponto ainda é o mesmo quando se trata de responder à sua pergunta, mas concordo com a cadeia de tweets aos quais vinculei que a verdade é um pouco mais sutil.
Dennis Soemers

Respostas:

11

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:

  • A aleatoriedade na seleção de ações leva à variação nos retornos que observamos
  • Pode haver aleatoriedade inerente ao próprio ambiente, levando a uma variação extra em nossas observações (alguns ambientes são não determinísticos)
  • r+maxumaQ(s,uma)r'', que pode ser visto como uma variação adicional em nossos sinais de aprendizado.

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.


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?

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


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.

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.

Dennis Soemers
fonte
11
Dennis, muito obrigado pela sua resposta muito detalhada! Muito disso confirma as minhas suspeitas: ie, que mais RL está tentando resolver um problema muito específico em um ambiente específico em que geralmente há uma 'melhor' solução clara para esse problema.
Matt Hamilton
2
@MattHamilton Observe que há pesquisas em relação à RL para ambientes mais gerais. Se você estiver interessado nessas coisas, procure combinações de "Transferência de aprendizado" e "Aprendizado por reforço" ou coisas como RL de tarefas múltiplas (RL de tarefas múltiplas também pode ser interessante, mas provavelmente é um pouco diferente ) Esses tipos de esforços ainda tendem a ter um desempenho significativamente menor do que a abordagem tradicional de treinamento e avaliação em um ambiente de cada vez.
Dennis Soemers 10/10