Matéria originalmente publicada na Motherboard.
Os computadores estão lentamente minando especialidades humanas, nos superando em alguns dos jogos mais desafiadores como o Go. Cara, até videogames e pôquer estão sendo dominados por algoritmos complexos. Era só questão de tempo até eles virem atrás de uma das mais queridas habilidades humanas: identificar corretamente pokémons.
Videos by VICE
Sim, as máquinas agora conseguem estudar e treinar até poderem ver um Machop e saber com alguma certeza que esse é um pokémon lutador. Não é tarefa fácil, já que há centenas de pokémons de 18 tipos diferentes. O segredo para essa capacidade é uma tecnologia conhecida como redes neurais.
Redes neurais artificiais são programas de computador feitos de “camadas” de neurônios conectados que rodam computações semialeatórias sobre dados de input como imagens, e se rearranjam até “aprenderem” como reconhecer os objetos nelas. Isso se chama “treinamento”, e quando o processo está completo, a rede deve conseguir reconhecer objetos não familiares que são parecidos com aqueles com que ela já treinou.
O pesquisador independente brasileiro Henrique Soares imaginou que seria interessante testar como essa tecnologia de reconhecimento de imagem lidaria com um videogame jogado pela molecada do mundo todo, e que a experiência o ajudaria a avançar suas próprias habilidades tecnológicas. E por diversão também.
“Descobri que ler livros, e até resolver alguns problemas clássicos […] são ótimas ferramentas para aprender alguma coisa”, Soares escreveu por e-mail. “Mas só aplicando essas soluções a novos problemas (mesmo problemas bobos), sou capaz de transformar esse conhecimento em habilidades para o mundo real.” Justo. Então como ele fez isso, e deu certo?
O primeiro passo de Soares foi juntar uma base de dados de sprites de Pokémon para que a rede pudesse treinar. Ele juntou milhares de sprites de personagens das primeiras cinco gerações do jogo, cobrindo centenas de criaturas. Depois de otimizar os sprites e os anotar por tipo, Soares separou 20% deles para treino e 80% para testes.
O computador conhecia reconhecer um tipo de pokémon apenas olhando para ele com 39% de precisão no geral. Melhor que um chute aleatório, mas não tão eficiente assim. Mas olhando um pouco mais de perto, você vai ver que a AI identificou com alta precisão alguns pokémons individuais — com mais de 90% de certeza — mas com outros teve mais dificuldade. O algoritmo também se deu melhor reconhecendo certos tipos que outros. A rede reconheceu corretamente pokémons do tipo sombrio como o Meowth em 92% das vezes, mas do tipo fantasma só 17% das vezes.
A baixa precisão pode ser atribuída ao conjunto relativamente pequeno de milhares de sprites — já que as redes neurais funcionam melhor com milhões de exemplos.
Você pode ter ficado imaginando o que a rede estava “procurando” quando decidia qual era um tipo de pokémon. É possível que a rede estivesse analisando coisas como cor e tamanho, já que muitos pokémons de água são azuis por exemplo. Mas é aí que entra a coisa mais interessantes sobre redes neurais: Não sabemos realmente como elas trabalham nos mínimos detalhes. Graças a algumas novas ferramentas de visualização, Soares conseguiu remover camadas da rede para ver como os sprites “ativavam” neurônios individuais.
“Temos um centro que claramente dispara com regiões vermelhas do sprite, o que nos leva a pensar que a rede está aprendendo a discernir cores, [e] associar isso a um certo tipo”, Soares explicou por e-mail. “Mas indo mais fundo na rede e mais longe da imagem original, essas interpretações são mais e mais difíceis de fazer numa inspeção simples.”
Se você gostaria de ajudar Soares com esse trabalho, acesse a página do projeto dele no GitHub. Se você for desse tipo, né.