Imagem: Ars Technica (Jogo "Civilization")
Por John Timmer, Ars Technica
Normalmente, os artigos que cobrem ciência de computador são um pouco chatos, mas duas coisas sobre um recente teve um forte apelo pessoal: eu sou viciado na série “Civilization” de jogos e eu raramente me preocupo em ler o manual do usuário. Estes não necessariamente soam como questões que poderiam ser resolvidos através de ciência da computação, mas alguns pesquisadores decidiram deixar um computador ensinar a si mesmo como jogar “Freeciv” e, no processo, ensinar-se a interpretar o manual do jogo. Simplesmente determinar se os movimentos que fez foram finalmente bem sucedida, o software dos pesquisadores não só ficou melhor em jogar o jogo, mas descobriu muito do manual do proprietário, também.
“Civilization” não é o primeiro jogo a capturar a atenção de cientistas da computação. Os autores dos jornais, com base no “MIT” e “University College London”, citam as literaturas passadas em que os computadores eram capazes de ensinar-se “GO”, “Poker”, “Scrabble”, jogos multi-player de cartas, e jogos de estratégia em tempo real. O método utilizado para todas estas é chamado de quadro de pesquisa Monte Carlo. Em cada movimento possível, o jogo executa uma série de jogos de simulação, que ele usa para avaliar a eventual utilidade de vários movimentos. Ele usa esses para atualizar uma função de utilidade que estima o valor de um movimento dado para um estado específico do jogo. Após várias iterações, a função de utilidade deve ficar melhor em identificar a melhor jogada, embora o algoritmo esporadicamente insere um movimento aleatório, apenas para continuar a mostrar novas possibilidades.
Isso tudo soa muito simples, mas os desafios computacionais são bastante grandes. Os autores estimam que um jogador médio, normalmente terá 18 unidades em jogo, e cada um desses pode tomar qualquer uma das 15 ações. Isso cria o que eles chamam de um "espaço de ação" de cerca de 1.021 movimentos possíveis. Para avaliar a utilidade de qualquer um destes, eles testaram mais de 20 movimentos e então verificaram o resultado do jogo (ou determinaram se ganharam ou perderam antes disso). Eles fizeram isso 200 vezes a fim de gerar os próprios números de desempenho.
Para os testes, o Pesquisador Monte Carlo foi configurado para jogar Freeciv construído em IA(Inteligência Artificial) em um jogo um-contra-um numa grade de 1.000 telhas. Um jogo de 100 movimentos simples levou cerca de 1,5 horas para ser concluído em um Core i7, então todo esse tempo de simulação não foi trivial. Mas, em geral, o algoritmo foi executado muito bem, sendo capaz de alcançar a vitória nesse curto espaço de tempo em cerca de 17 por cento do tempo (deixado para jogar um jogo até a conclusão, o Pesquisador Monte Carlo ganhou pouco menos de metade do tempo).
Mesmo assim os autores se perguntaram se o algoritmo poderia chegar a melhores decisões de forma mais consistente se ele tivesse acesso a manuais do proprietário, que contém vários pedaços de aconselhamento sobre os pontos fortes e fracos de várias unidades, bem como algumas orientações gerais sobre como construir um império (fundar primeiras cidades perto de um rio por exemplo). Então, eles decidiram colocar o programa para “ler os manuais do proprietário”.
A "leitura" ocorreu através de uma rede neural que leva o estado do jogo, um movimento proposto, e o manual do proprietário como entrada. Um conjunto de neurônios na rede analisou o manual para procurar pares de “estado/ação”. Estes pares são coisas como "unidade ativa" ou "estradas concluídas" (os estados) e "melhorar o terreno" ou "fortalecer unidade", como as ações. Uma rede neural em separado, em seguida, descobria se algum dos itens identificados para o primeiro aplicava-se à situação atual. Estes são então combinados para encontrar conselhos relevantes no manual, que é então incorporada na função de utilidade.
A principal coisa sobre este processo é que a rede neural ainda não sabe se está identificando corretamente os pares “estado/ação” quando ele começa (ele não sabe "ler") e muito menos se interpretou corretamente o conselho que transmitem (você constrói perto de um rio, ou você nunca deve construir próximo a um rio?). Tudo que tem que seguir em frente é o impacto que a própria interpretação tem sobre o resultado do jogo. Em suma, tem que descobrir como ler o manual do proprietário simplesmente tentando interpretações diferentes e ver se eles melhoram a própria jogada.
Apesar dos desafios, ele funciona. Quando a análise de texto completo foi incluído, o sucesso do software dos autores disparou, e agora ganhou mais de metade de seus jogos dentro de 100 movimentos, e venceu a IA do jogo quase 80 por cento do tempo quando os jogos foram jogados para até o final.
Para testar quão bem o programa foi, os autores alimentou uma mistura de frases do manual dos proprietários e aquelas selecionadas a partir das páginas do “The Wall Street Journal”. O programa usou corretamente frases do manual em mais de 90 por cento do tempo durante o início do jogo. No entanto, emquanto o jogo progredia, o manual tornou-se menos do que um guia útil, e a capacidade de escolher do manual caiu para cerca de 60 por cento pelo resto do jogo. Em paralelo, o programa começou a confiar menos no manual, e mais na própria experiência de jogo.
Isso não significa que o “Jornal” era inútil, no entanto. Alimentando o pacote completo do programa com textos aleatórios em vez de um manual do proprietário também impulsionou a sua porcentagem de vitórias do algoritmo, impulsionando-o a 40 por cento em jogos de 100 movimentos. Isso não é tão bom quanto o de 54 por cento obtidos com o manual, mas é um pouco melhor do que a taxa de ganhar 17 por cento do algoritmo sozinho.
O que está acontecendo aqui? A pesquisa não diz, mas a principal coisa a se notar é que a rede neural está apenas na tentativa de identificar regras que funcionem (por exemplo, construir perto de um rio). Na verdade, não importa como essas regras são transmitidas, ele simplesmente associa o texto com uma ação aleatória e determina se os resultados são bons. Se é sorte, pode acabar associando uma regra útil com um pouco de texto aleatório. Ele tem uma melhor chance de fazê-lo com pedaços não aleatórios de texto como o manual do proprietário, mas ele ainda pode fornecer orientações úteis não importa o que seja dado para trabalhar.
(Eu pedi aos autores para dar uma explicação para este resultado, mas desde essa publicação, eles não tinham conseguido dar um retorno para mim.)
Os autores concluem que o programa aprendeu com sucesso a aproveitar a rica linguagem presente no manual do jogo para um melhor desempenho, aprendendo a interpretar a linguagem enquanto vier junto. Isto é claramente verdade, o programa teria um melhor desempenho quando fosse dado o manual do proprietário do que quando fosse alimentado com texto aleatório, e a diferença foi estatisticamente significativa. Mas simplesmente dando-lhe qualquer texto resultou em um maior aumento relativo. Isso implica que é melhor ter algumas regras para se trabalhar, não importa como elas são derivadas, do que nenhuma orientação mesmo.