terça-feira, 23 de julho de 2019

O Cubo de Rubik

Já se vão 45 anos de quando o húngaro Erno Rubik criou um apetrecho usado num jogo desafiador: o “cubo mágico”, rebatizado para “Cubo de Rubik”. Suas 6 faces, inicialmente uma de cada cor, estão divididas em 9 facetas de cubos menores, resultando em 54 facetas visíveis de 26 cubinhos engenhosamente acoplados a uma estrutura que permite rotações dos planos desses cubinhos. O desafio consiste em, partindo de uma disposição inicial aleatória, fazer as rotações necessárias para que 0 cubo volte a ter uma face de cada cor.

Não são nada simples ou intuitivos os movimentos que levavam à solução. Lembro-me de colegas, objeto de admiração (e de alguma inveja...), mostrando o cubo resolvido após alguma longa e misteriosa manipulação.

Na semana passada, surgiu na rede um artigo científico anunciando uma solução para o cubo, que excede em velocidade os melhores humanos e usou aprendizado profundo (em “deepcube.igb.uci.edu”) . É mais um passo na solução de desafios com o uso de inteligência artificial, com variantes.

Na programação tradicional estática, a forma de atacar o problema do cubo seria escrever um algoritmo reproduzindo o que um humano faria, passo a passo. Uma receita de bolo, a ser seguida pelo computador. Se a opção é usar aprendizado de máquina, o usual seria criar uma base de soluções já conhecidas e fazer o programa definir uma estratégia a partir disso. Era a abordagem em programas para xadrez, onde a experiência de jogos de grandes mestres orientou o “aprendizado” do programa. Também o aperfeiçoamento dos sistemas de tradução por máquina valeu-se da base existente de traduções. Com o uso pesado de dados, associado à tutoria humana, tem-se um comportamento similar e eficiente.

Evolução do “aprendizado supervisionado”, mencionado acima, seria o “auto aprendizado”: fornece-se ao programa apenas as regras de como as peças se movem. Ele partirá, assim, do zero e, por experiência e erro, treinará sua rede neural para identificar estratégias vencedoras. Foi o método adotado no sistema AlphaZero, que de início sabia apenas como mover as peças do xadrez. Fazendo-o jogar contra si mesmo, “aprendeu” estratégias vencedoras a ponto de, após apenas quatro horas alegadas de autotreinamento, bater grandes mestres e programas convencionais. Espantosamente, o AlphaZero escolhia movimentos inusitados numa primeira análise humana e, mesmo assim, vencia.

Até há uns anos, a via do auto aprendizado era um caminho lento e pouco animador. Hoje, com a velocidade de processamento disponível, a opção de “deep learning” (ou aprendizado profundo) é cada vez mais viável.

A solução proposta para o Cubo é uma variante do aprendizado profundo. Afinal este é um jogo solitário, sem “treino” possível, com uma infinidade de configurações iniciais e única posição final vencedora. Movimentos aleatórios buscando solução poderiam levar um tempo imenso e sequer convergir.

A proposta descrita no artigo envolveu criar uma estratégia que mistura avaliações do progresso já feito, com a árvore de decisões a ser seguida. O resultado foi um programa que aprendeu, sem tutoria humana, a solucionar o Cubo de Rubik com mais eficiência que os melhores especialistas humanos. Interessante e preocupante: afinal, é mais uma situação em que geramos algo que, ao mesmo tempo, nos ajuda e... nos torna obsoletos.
















===

A demonstração do Cubo com IA:
http://deepcube.igb.uci.edu/

O artigo referido acima:
https://openreview.net/pdf?id=Hyfn2jCcKm

Solução tradicional, em até 30 movimentos,  e o "número de Deus"
https://www.newscientist.com/article/dn19301-god-couldnt-do-faster-rubiks-cube-mystery-solved/

Referências na rede:

https://pt.wikipedia.org/wiki/Cubo_de_Rubik

https://news.uci.edu/2019/07/15/uci-researchers-deep-learning-algorithm-solves-rubiks-cube-faster-than-any-human/

https://www.cnet.com/news/ai-can-solve-a-rubiks-cube-before-you-even-get-started/#ftag=COS-05-10aaa0j

Nenhum comentário: