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.

136356_681848618

 

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.

136360_2545907250

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

O funcionamento é mais simples do que pode parecer, mas vou tentar simplificar ainda mais porque se eu conseguir salvar alguma alma tirando ela do curso de direito 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.

136337_2545907250

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.

136357_2178393105

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).

136332_2545907250

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).

136391_1382410690

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

  • Agenda

    • julho 2017
      S T Q Q S S D
      « jun    
       12
      3456789
      10111213141516
      17181920212223
      24252627282930
      31  
  • Pesquisar