2015-06-16 09:58:06 -0300 2015-06-16 09:58:06 -0300

Super Mario e as redes neurais

Single 3094287 featured image

A fase de Super Mario World no vídeo a seguir foi jogada por um programa de computador que controlava um emulador:

Tendo isto em mente vou contar uma historinha: Quando eu era pequeno um dos meus sonhos era ter o R.O.B, o robozinho da Nintendo que jogava com você. Anos depois descobri que ele é uma traquitana barulhenta que só funciona com um punhado de jogos e não tem inteligência nenhuma. O console envia informações via 'piscadas' na tela e o mecanismo do ROB obedece... simplório e sem automação, para desilusão do Alisio criança.... mentira eu ainda quero um por puro saudosismo  por motivos acadêmicos.

Voltando ao programa que controlou o emulador, ele foi feito em linguagem LUA (linguagem desenvolvida ali na PUC-RJ) utiliza redes neurais e algoritmos genéticos para 'aprender' como jogar Super Mario World, coisa beeeem diferente do R.O.B. (para a alegria do Alísio adulto). O programa teve 24 h para aprender, joga mal, ignora power ups e se concentra em ir para a direita, e rápido, mas consegue terminar a fase.

Olha só como ele é ruim e só consegue 19 na barra do final :P

O funcionamento é mais simples do que pode parecer, mas vou tentar simplificar ainda mais porque se eu conseguir salvar alguma alma para o mundo acadêmico, já fico feliz demais:

Reparem no quadradinho menor com quadrados brancos (obstáculos) e pretos (inimigos) menores ainda. Eles são uma representação dos eventos da tela para que o algoritmo consiga interagir com ela.

As linhas conectam um pedaço da tela aos controles do SNES. As linhas verdes são acionadas pelos bloquinhos brancos, e as vermelhas pelos blocos pretos.

O algoritmo não faz nada na primeira geração, para evitar que a experiência pare por aí o programa reinicia o emulador, esta interferência externa é análoga às intempéries naturais como raios, cometas e erupções intensas aos quais os primeiros seres vivos estavam sujeitos no nosso jovem planeta terra. Após cada reinicio da fase novas linhas (axônios) são adicionadas randomicamente, gerando novas iterações da rede (ou novas espécies de rede neural). O sucesso de cada espécie é representado pelo número 'FITNESS' (que pode ser entendido como 'adaptação' ou 'aptidão') no topo na tela que cresce quanto mais a tela vai para a direita e também quanto mais rápido isso acontece.

As espécies sem sucesso são descartadas e as que obtiveram sucesso são mantidas, misturadas com a anterior adicionada de alguns neurônios aleatórios, tal qual a teoria da evolução das descrita por Charles Darwin (calma aê criacionistas e lamarquistas) no livro "A origem das espécies". O gráfico a seguir representa a pontuação máxima de cada uma das gerações e é possível ver que as vezes uma ou outra geração 'travava', mas eventualmente evoluía (melhorava o FITNESS).

O algoritmo relativamente simples necessitou de 32 gerações para terminar esta fácil fase, mas com um pouco mais de tempo seria perfeitamente possível que um algoritmo similar finalizasse o jogo ou derrubasse a estação espacial - IES (essa escalou rápido).

Esta declaração parece absurda, mas  é tema de debate sério entre gente como Bill Gates, Elon Musk e Stephen Hawkins (o ganhador do prêmio nobel cujo filme baseado em sua vida ganhou oscar de melhor ator em 2015) que já declararam em diversas oportunidades preocupação com o perigo potencial das máquinas se desenvolverem ao ponto de eventualmente subjugar os humanos.

Nós tivemos alguns milhões de anos, as máquinas não demorarão tudo isso........ COFF *skynet*,

Referências:

https://en.wikipedia.org/?title=Charles_Darwin

Source Code: http://pastebin.com/ZZmSNaHX

"NEAT" Paper: http://nn.cs.utexas.edu/downloads/pap...

Some relevant Wikipedia links:
https://en.wikipedia.org/wiki/Neuroev...
https://en.wikipedia.org/wiki/Evoluti...
https://en.wikipedia.org/wiki/Artific...
BizHawk Emulator: http://tasvideos.org/BizHawk.html

SethBling Twitter: http://twitter.com/sethbling
SethBling Twitch: http://twitch.tv/sethbling
SethBling Facebook: http://facebook.com/sethbling
SethBling Website: http://sethbling.com
SethBling Shirts: http://sethbling.spreadshirt.com
Suggest Ideas: http://reddit.com/r/SethBlingSuggestions

Super Mario World

Platform: SNES
26517 Players
365 Check-ins

48
  • Micro picture
    frajola · over 4 years ago · 5 pontos

    Quando essa porra zerar o Battletoads eu ficarei com medo xD

    2 replies
  • Micro picture
    tiagotrigger · over 4 years ago · 2 pontos

    Boa, muito legal computação neuro-evolutiva. Já tinha visto um outro que jogava Mario mais era diferente.
    Ah, e só uma pequena correção, a tradução de "fitness" nesse caso não é "stamina" (na verdade nem foi tradução), na verdade é melhor traduzir pra "aptidão" porque ele indica o quão bom a rede neural está trabalhando.

    1 reply
  • Micro picture
    firerockbird · over 4 years ago · 1 ponto

    só me surpreenderei se esse programa passar uma fase do kaizo mario perfeitamente

    1 reply
  • Micro picture
    leandro · over 4 years ago · 1 ponto

    Muito bom tópico. Parabéns

  • Micro picture
    guilherme_gondin · over 4 years ago · 1 ponto

    Isso pode ter sido o uso mais interessante de IA que eu tenha visto, eu vim aqui comentar logo após ter visto, mas acho que logo mais irei ler o paper desse cara.

  • Micro picture
    kess · almost 2 years ago · 1 ponto

    E pensar que uma criança de 10 anos dá um banho nesse emulador... sem nem ter noção de todas as conexões neurais que faz para poder conseguir terminar uma fase, aprender e evoluir... sem falar na coordenação olho-mão...
    Eu vejo isso com o meu sobrinho, 13 anos, e eu com mais que o dobro da sua idade, consigo ter reflexos muito melhores que os dele jogando as mesmas coisas...

Keep reading → Collapse ←
Loading...