O objetivo é projetar um componente de otimização de política proximal que tenha restrições específicas no espaço de ação dependente de regras orientadas pelo estado, usando uma estrutura como o Tensorforce.
Opções de design listadas na pergunta
Essas opções estão listadas aqui para referência rápida ao ler a análise inicial abaixo.
- Altere o espaço de ação em cada etapa, dependendo do internal_state. Presumo que isso seja um absurdo.
- Não faça nada: deixe o modelo entender que a escolha de uma ação indisponível não tem impacto.
- Não faça quase nada: impacte levemente negativamente a recompensa quando o modelo escolher uma ação indisponível.
- Ajude o modelo: incorporando um número inteiro no espaço de estado / observação que informa ao modelo qual é o valor internal_state + bullet point 2 or 3
Análise inicial
É realmente sensato alterar o espaço de ação para cada movimento. Essa é, de fato, uma representação adequada para o problema, conforme declarado, e a maneira normal como os seres humanos jogam e a maneira como os computadores vencem os seres humanos no Chess and Go.
A aparente falta de sentido dessa idéia é apenas um artefato do progresso ao longo do roteiro do projeto Tensorforce e do progresso ao longo da teoria do reforço, ambos jovens no cenário geral. Lendo a documentação e as Perguntas frequentes do Tensorforce, não parece que a estrutura foi projetada para conectar um mecanismo de regras para determinar o espaço de ação. Isso não é uma falha do código aberto. Não parece haver nenhum artigo que forneça teoria ou proponha algoritmos para decisões em cadeia de Markov condicionadas por regras.
A opção de não fazer nada é a que se encaixa nas estratégias disponíveis atualmente representadas na literatura. Provavelmente o quase-nada é provavelmente a abordagem que produzirá um comportamento desejável mais confiável e talvez mais imediato.
O problema com o conceito de ajudar o modelo é que não é uma idéia tão forte quanto estender o modelo. Em código aberto, isso seria feito estendendo as classes que representam o modelo, o que exigiria algum trabalho teórico antes da codificação para
a. Represent rule-conditioned learning in nomenclature
b. Represent convergence mathematically using the new nomenclature
c. Determining a method of convergence
d. Proving convergence
e. Rechecking
f. Defining a smooth and efficient algorithm
g. Providing PAC learning information for planning
f. Peer review
g. Extending the classes of the library
h. Proof of concept with the current problem above
i. Additional cases and metrics comparing the approach with the others
j. Extending the library flexibility to support more such dev
A extensão dos sistemas de aprendizado para cobrir o caso restrito a regras é uma ótima idéia para uma tese de doutorado e pode ser utilizada em laboratórios de pesquisa como uma proposta de projeto com muitas aplicações possíveis. Não deixe que todas as etapas dissuadam o pesquisador. Eles são essencialmente uma lista de etapas para qualquer tese de doutorado ou projeto de laboratório de IA financiado.
Para uma solução de curto prazo, ajudar o modelo pode funcionar, mas não é uma estratégia sólida para promover as idéias da IA ao longo do caminho do aprendizado por reforço. Como solução de curto prazo para um problema específico, pode funcionar bem. A idéia de quase nada pode ser mais sólida, pois se encaixa nas provas de convergência que levaram à implementação específica que o Tensorforce provavelmente está usando.
Renomeá-lo de fazer quase nada para ajudar na convergência pode ajudar a desenvolver a perspectiva correta antes de tentar. Você pode achar que precisa atenuar a assistência à medida que se aproxima da convergência para evitar ultrapassagens, assim como com uma taxa de aprendizado.
Normalmente, o conjunto de ações que o agente pode executar não muda com o tempo, mas algumas ações podem se tornar impossíveis em diferentes estados (por exemplo, nem todos os movimentos são possíveis em qualquer posição do jogo TicTacToe).
Dê uma olhada, por exemplo, na parte do código https://github.com/haje01/gym-tictactoe/blob/master/examples/base_agent.py :
fonte