Depois de jogar muito Angry Birds, comecei a observar minhas próprias estratégias. Acontece que eu desenvolvi uma abordagem muito específica para obter 3 estrelas em cada nível.
Isso me fez pensar nos desafios de desenvolver um sistema de aprendizado de máquina capaz de jogar o Angry Birds. Interagir com o jogo e lançar os pássaros é trivial. Mas uma pergunta que eu tinha é sobre os "blocos de construção" do sistema.
Os sistemas de aprendizado de máquina parecem funcionar com conceitos simples ou compreensão sobre o problema. Isso geralmente é codificado como recursos como entradas. Portanto, parece que o sistema precisa ter a capacidade de entender alguns conceitos de alto nível para gerar uma estratégia.
Isso é verdade? Além disso, quais são os desafios ou partes difíceis do desenvolvimento de um sistema desse tipo?
EDIT # 1:
Aqui estão alguns esclarecimentos. Conseguir 3 estrelas é um problema difícil, porque você precisa maximizar os pontos. Isso pode ser feito de duas maneiras não exclusivas: 1) Minimizar o número de pássaros usados (você recebe 10.000 pontos por cada pássaro não utilizado). 2) Maximizou a destruição de vidro, madeira e outros objetos. Cada objeto destruído dá pontos. É possível destruir mais de 10.000 pontos em objetos com um único pássaro.
Aqui está um pouco mais de explicação sobre "conceitos de alto nível". Para maximizar os pontos descritos acima, você precisa usar os poderes especiais de cada pássaro. Então, isso significa lançar diferentes pássaros com diferentes trajetórias, dependendo do layout do mapa. E, enquanto jogo, desenvolvo uma estratégia que destrói certas áreas com certos pássaros em uma certa ordem.
Parece que, sem entender como usar cada ave para destruir uma área específica, o sistema não poderia aprender a obter 3 estrelas. Então, como você gerencia e codifica algo assim? Como você garante que o sistema possa aprender esses conceitos de alto nível?
Pergunta legal!
Parece que esta pergunta é sobre a técnica natural para esse tipo de problema. Eu acho que a técnica natural para esse tipo de problema é a aprendizagem por reforço (RL). RL é sobre como um agente deve executar ações em um ambiente para maximizar alguma noção de recompensa cumulativa. Talvez o algoritmo mais conhecido para RL seja o Q-learning . Eu acho que essa é a primeira pergunta neste site sobre aprendizado por reforço.
Eu acho que o que você está perguntando é verdade se você tentar abordar isso como classificação / regressão, mas essas não parecem ser a ferramenta certa para esse problema. Naturalmente, esse é um problema de RL em que seqüências de ações e resultados precisam ser levados em consideração.
fonte
Veja aqui como os outros estão participando ou participe: Angry Birds AI Challenge http://ai2012.web.cse.unsw.edu.au/abc.html
fonte
acabei de mencionar isso em meta. houve um uso pioneiro de algoritmos genéticos por Koza para resolver o videogame Pacman. ele construiu primitivas algorítmicas que podiam sentir e agir. pelo que me lembro, eles foram combinados em árvores semelhantes a Lisp para criar algoritmos maiores. o cruzamento com árvores Lisp envolve a substituição ou troca de subárvores que representam as expressões do algoritmo. a função de sucesso é algo como "pontos comidos" ou "pontos mais fantasmas comidos" ou "tempo que permaneceu vivo". ainda há algum trabalho nessa área. há uma referência koza neste artigo a seguir. o tempo de treinamento pode ser muito longo e a "convergência" muito gradual para esses tipos de problemas.
Aprendendo a jogar Pac-Man: uma abordagem evolutiva baseada em regras de Gallagher e Ryan
fonte