O maluco usou um molde de madeira e até uma máquina de molde com sucção…
Sistema criado com esse recurso conseguiu aprender sozinho a jogar diversos games da plataforma e até mesmo explorar bugs de programação.
Por Matheus Gonçalves
Tom Murphy é um programador e PhD da Carnegie Mellon University, que fica em Pittsburgh, nos Estados Unidos.
Para apresentar uma de suas teses, Murphy desenvolveu uma forma de inteligência artificial que deu a um robô a capacidade de aprender sozinho a jogar games do NES, como Super Mario Bros, Karate Kid, Tetris e Pac Man, de forma buscar sempre algum tipo de vitória.
Murphy descreve:
“Os bytes na memória (e algumas vezes palavras com 16 e 32 bits) podem conter fatos interessantes sobre o jogo, como a posição do jogador, sua fase ou sua pontuação. A ideia central desse documento é usar apenas o valor dessas alocações de memória para deduzir quando um jogador está vencendo. As coisas que um jogador humano percebe, como informações da tela e efeitos sonoros, são completamente ignorados. Como uma forma de simplificação adicional, nós assumimos que “ganhar” consiste sempre em aumentar os valores da posição na fase, aumentar o valor da pontuação, de vidas, do mundo e coisas assim, mais e mais e assim por diante.”
Era preciso então treinar o robô de forma que ele percebesse que tipo de atitude acumulava pontos e quais movimentos tiravam pontos.
Para saber o que estava acontecendo com os inimigos, como sua posição na tela e suas formas de ataque, o software por trás desta “mágica”, chamado “Technique for automating NES games” ou “Técnica para automatizar jogos”, foi desenvolvido de forma a ler os estados de memória do jogo antes de cada atitude do personagem. Isso é feito com ordenamentos lexicográficos e viagem no tempo (usando as informações dos memory states, claro).
O robô começou seu aprendizado iniciando aleatoriamente os comando dos botões, sem qualquer ordem lógica. Isso não gerava praticamente nenhum resultado na movimentação dos personagens. Mas ao começar a combinar botões, como pular pra frente, o sistema aprendeu que dada tarefa pode fazer ganhar pontos ou diminuir pontos.
Com algumas semanas de treinamento, o robô com esta IA já era capaz de pular obstáculos e atingir as tartarugas, bem como buscar as flores com poderes especiais. SOZINHO!
Mas ainda assim, em alguns momentos, ele ainda se jogava no buraco, perdendo assim uma vida, ou ficando preso em lugares sem saída.
O autor teve que voltar o treinamento, corrigindo o algorítimo, pois havia um erro no cálculo. Foi uma inserção inicial de argumento. Com isso e mais algumas semanas de aprendizado, o robô tinha desenvolvido habilidades para jogar praticamente qualquer jogo de plataforma do NES que utilizasse esse mesmo sistema de estados salvos em memória.
O robô não se tornou lá um excelente jogador, pois ele ainda morre algumas vezes, mas ele é capaz de evitar inimigos, coletar moedas ou qualquer item que some pontos, andar pelo cenário e até mesmo explorar falhas de programação do jogo.
Como uma aplicação de Inteligência Artificial, o resultado está excelente.
Confira abaixo o video com a execução destes testes:
(via TechCrunch)
AI, aprendizado, Artificial Intelligence, asimov, eu robô, game dev, games, hack, I Robot, IA, inteligência Artificial, mario, NES, Nintendo, pac man, pacman, programação, redes neurais, teste, tetris, videogame
Send this to friend