Recentemente, Magnus Carlsen renovou o seu título de campeão mundial de xadrez, título que mantém desde 2013. Já em 2010 houvera alcançado a classificação de melhor do mundo, quando ainda só tinha 19 anos, o que fez dele o mais jovem de sempre a conseguir tal feito. Não há dúvidas que Magnus é um expoente máximo da espécie humana a jogar xadrez! Contudo, uma aplicação de xadrez a correr num qualquer smartphone seria capaz de derrotar o campeão mundial de xadrez! Os melhores jogadores de xadrez do mundo não são humanos, são antes criações humanas!
A Inteligência Artificial mostrou o seu potencial em 1997, quando o super-computador “Deep Blue” da IBM derrotou o então campeão mundial de xadrez, Garry Kasparov (ainda hoje considerado um dos melhores jogadores de xadrez de sempre). Desde aí, os computadores ficaram muito mais rápidos, o que significa que hoje qualquer smartphone com uma aplicação de xadrez consegue vencer qualquer pessoa no planeta. Note-se que a dificuldade do xadrez reside em parte na habilidade de “imaginar” o maior número de cenários possíveis, isto é, “se eu mexer o meu cavalo, o meu adversário pode mover a torre, ou o bispo, o que consequentemente…”. Imaginar todos os cenários possíveis é em geral muito difícil, ou mesmo impossível, dependendo do número de peças no tabuleiro e da sua disposição.
Será que um computador consegue calcular todas as jogadas possíveis e respectivos resultados? Não. O número de jogadas possíveis num jogo de xadrez é estimado em cerca de . Este número é “muito” maior que o googol (do qual já aqui falei). É difícil de ter uma noção do que representam estes números tão grandes, mas para terem uma ideia, este número é muito maior que a estimativa do número de átomos no universo (que é inferior a ). Ainda assim, mesmo não existindo computadores capazes de calcular todas as jogadas possíveis, eles conseguem ainda assim calcular muito mais jogadas do que nós, humanos. Naturalmente, as aplicações comuns de xadrez não calculam simplesmente uma amostra aleatória de jogadas possíveis: estes programas foram escritos de modo a fazerem uso daquilo que sabemos do jogo. Por exemplo, o centro do tabuleiro de xadrez é uma localização privilegiada, pois muitas das peças de xadrez conseguem atacar mais espaço do tabuleiro caso estejam nestas posições. Assim, é claro que quem criou as aplicações de xadrez “ensinou” o computador a usar esse conhecimento.
Deep Blue à esquerda, Garry Kasparov à direita. O processador de Deep Blue tinha 30 nodos, em que cada um era um microprocessador de 120 MHz, auxiliados por 480 chips VLSI desenhados especialmente para o xadrez (isto é, para executar o programa que tinha sido desenvolvido para escolher as melhores jogadas). O programa tinha sido escrito em C (ver tutorial de C). O Deep Blue era capaz de avaliar 200 milhões de posições distintas por segundo.
Até há pouco tempo, este era o tipo de abordagem que nós tínhamos em relação à Inteligência Artificial em geral: programávamos um computador com um dado tipo de “protocolo” ou “receita”, o qual seria seguido pela máquina. Digamos que o computador seguia um algoritmo que se assemelhava a um género de máquina de Rube Goldberg:
Basicamente, o computador estaria a seguir uma sequência lógica de passos semelhantes àqueles que nós, humanos, faríamos na mesma situação. Por um lado a máquina beneficiaria do seu poder de cálculo extremamente rápido, mas por outro estaria limitada pela falta de “imaginação” ou “instinto” – algo que a fizesse transcender aquela sequência de passos. Estaria também limitada ao conhecimento que lhe tinha sido “oferecido” por nós. Muitos diriam que isto não é “inteligência artificial”, do mesmo modo que não diríamos que uma calculadora tem inteligência. Por isso, muitos ficaram desiludidos com a derrota de Kasparov: a inteligência e imaginação humanas tinham sido derrotadas por um algoritmo suficientemente poderoso.
A História, porém, não se fica por aqui. Há um ano atrás surgiu o AlphaZero. Nesta altura, a aplicação mais forte do mundo a jogar xadrez era o Stockfish. O Stockfish é uma aplicação que em geral segue a receita do Deep Blue: trata-se de um algoritmo que calcula um número enorme de cenários possíveis e beneficia de uma também enorme base de dados sobre as melhores formas de começar e acabar o jogo (com base no conhecimento humano sobre o xadrez). Pelo contrário, ao AlphaZero foram apenas “ensinadas” as regras do jogo e o seu objectivo. Ao invés de ensinar tácticas ao algoritmo de forma a que este reduzisse o número possível de jogadas a considerar a cada momento, o AlphaZero desenvolveu o seu conhecimento de xadrez sozinho: jogando contra si próprio um número enorme de jogos (um número muito superior ao número de jogos de xadrez já jogados pela humanidade desde que o jogo foi inventado). AlphaZero é um programa que foi desenhado essencialmente para aprender consigo próprio, ao invés de seguir um dado guião. Tal como no condicionamento pavloviano, o AlphaZero vai aprendendo com os erros através de um mecanismo de “reforço” de “experiências positivas” (que conduzam à vitória).
Depois de nove horas a jogar contra si próprio, o AlphaZero foi testado num torneio de 100 jogos contra o Stockfish em Dezembro de 2017. O AlphaZero ganhou 28 jogos, empatou 72 e não perdeu nenhum [1]! Este mês voltou de novo a demonstrar o seu poderio sobre o Stockfish: num torneio de 1000 jogos ganhou 155, perdeu 6 e empatou o resto. Um aspecto crucial é que o AlphaZero usou um poder de processamento significativamente mais reduzido que o do Stockfish. Isto significa que a forma como o AlphaZero procura a melhor jogada possível é mais eficiente que a usada pelo Stockfish [2]. Essencialmente isto implica que aquilo que o AlphaZero aprendeu sobre xadrez jogando contra si próprio ultrapassa o nosso conhecimento sobre o jogo.
Como Garry Kasparov escreveu este mês na revista Science, “o AlphaZero mostra-nos que as máquinas podem ser os especialistas e não meramente as ferramentas especializadas” [3]. Note-se que apesar de (por enquanto) não sabermos ler as “memórias” do AlphaZero e por isso não termos acesso directo ao seu conhecimento sobre xadrez, temos acesso à forma como ele joga. Isto significa que podemos aprender com a máquina!
Mais importante que tudo, xadrez é apenas um exemplo! O próximo passo será fazer máquinas deste tipo que consigam resolver problemas que nos afectam a todos. Quem sabe se no futuro os cientistas serão meramente expectadores das máquinas!
“As boas notícias, Dave, é que o computador passou o teste de Turing. As más notícias é que tu não.” (O teste de Turing foi concebido para testar a capacidade de uma máquina demonstrar um “comportamento inteligente” que seja indistinguível de um humano.)
[1] http://science.sciencemag.org/content/362/6419/1140
[2] https://www.chess.com/news/view/updated-alphazero-crushes-stockfish-in-new-1-000-game-match
[3] http://science.sciencemag.org/content/362/6419/1087
2 comentários
O cartoon está fabuloso!!! 😀
Quanto ao AlphaZero vs. Stockfish, os resultados não terão dependido também do AlphaZero ter jogado “contra si próprio um número enorme de jogos (um número muito superior ao número de jogos de xadrez já jogados pela humanidade desde que o jogo foi inventado)”?
Ou seja, quando atingirmos esse número de experiências, potencialmente (se todos partilhássemos o que aprendemos no final dos jogos) não saberíamos tanto como o AlphaZero?
abraço!
Author
Olá Carlos,
Desculpa por ter demorado tanto tempo a responder! (Faz muita falta um sistema de notificações automáticos nos nossos artigo – mas vejo agora que respondendo a um comentário já tenho a hipótese de pedir para ser notificado por email. Pedia ser a opção default para quem publica artigos.)
Sim, os resultados de certo que dependeram desse número enorme de jogos e é possível que se a experiência que dizes fosse realizada (e se fosse realizável, isto é, possível), é possível que até soubéssemos mais que o AlphaZero, pois nada nos garante que o AlphaZero é “esperto” na sua aprendizagem. Não obstante, o AlphaZero consegue aprender e isso é por si próprio fabuloso, porque assim o sistema tem a capacidade de beneficiar do poder computacional imenso que hoje em dia existe… Acho que o facto da experiência que dizes não ser praticável não é um mero detalhe neste assunto: é antes um aspecto crucial.
Abraço,
Marinho