terça-feira, 14 de janeiro de 2014

Tributo a Mikhail Tal - por Hindemburg Melão Jr.

No filme “Eu, Robô”, há uma cena em que o robô está sendo interrogado, por ser suspeito de um assassinato, e ele diz que dorme e sonha. Então Will Smith insulta o robô, dizendo que não é possível, que ele é apenas uma máquina, ele não é humano, é apenas uma imitação da vida, não pode sonhar, e questiona, em tom desafiador: “um robô é capaz de pintar um quadro? De compor uma sinfonia ou uma ópera?” e o Robô retruca: “e você é?”.

Esta cena é muito interessante e nos leva a pensar em quais são as verdadeiras características que nos fazem humanos, e sobre quanto continuamos preconceituosos contra as minorias indefesas, sejam elas grupos de pessoas, de animais, de máquinas ou alienígenas. Nos anos 1960, quando o GM Ludek Pachman resolveu, em cerca de 30 segundos, um problema de mate em 2, enquanto o melhor supercomputador da época levou mais de 5 minutos, Pachman exclamou: “está provado que computadores nunca serão melhores que humanos”. 

A história da Inteligência Artificial está intimamente ligada à história dos computadores de Xadrez, sendo o Xadrez o campo mais promissor para se testar a eficiência das heurísticas que norteiam os processos decisórios das máquinas. Um dos primeiros programas escritos na história foi um programa para jogar Xadrez, pensado e escrito por Allan Turing, antes mesmo de existirem computadores. Era um programa de Xadrez para máquina de furar papel. Reescrito para rodar na interface do Fritz, o programa de Turing joga com um nível perto de 1500 pontos de rating nos processadores modernos. 

Meu primeiro contato com programas de Xadrez foi em meados dos anos 1980, na casa do amigo Bíola, um dos melhores jogadores do mundo em BombJack. Na época os programas de xadrez eram ainda muito fracos. Meu primeiro programa de Xadrez foi o Chessmaster 3000, que recebi de presente do amigo Oscar Kiymitzu Kamesu, em 1993, e durante muito tempo me diverti jogando com este programa. Eu tinha um AT-386 DX 40, com 4 Mb de RAM, e naquela máquina o CM3000 para DOS tinha uns 2000 de rating em jogos pensados e uns 2300 em jogos rápidos. Desde então, tenho acompanhado a evolução dos programas, passando por Psion, Zarkov, Kasparov’s Gambit, K-Chess, Fritz 2, Fritz 2.51, Fritz 3.06, Hiarcs 3, Hiarcs 4, Rebel 5, Rebel 6, Chessmaster 4000, M-Chess Pro 3.5, etc. Os programas se dividiam entre os rápidos e tolos, como Fritz, Junior e Chessmaster, e o lentos e sábios, como Hiarcs, Rebel, M-Chess Pro.

Até que em 1998 foi lançado o revolucionário Fritz 5, claramente mais forte do que qualquer programa da época, combinando rapidez no cálculo de variantes com bons conceitos. O ponto forte do Fritz continuava sendo o cálculo, mas ele avaliava posições bem melhor do que seus antecessores. Na posição crítica da Defesa Damiano, depois de 1.e4 e5 2.Cf3 f6? 3.Ce5 fe5 4.Dh5 Re7 5.De5 Rf7 6.Bc4 Rg6, o Fritz 5, depois de analisar 8 segundos (num K6 II 400MHz), anunciava mate em 11 lances. Isso era muito rápido para a época. O Rebel foi um dos primeiros programas a privilegiar a análise das variantes forçadas com xeque ou com ameaças de mate, como artifício para conseguir enxergar mais lances à frente, mas o Fritz 5 conseguia encontrar este mate em 11 mesmo não sendo uma sequência ininterrupta de xeques, havendo um lance tranquilo no meio da variante. Contudo, o ponto forte do Fritz 5 estava em avaliar quem estava melhor numa determinada posição. Algumas posições de referência que eu costumava usar para testar a “compreensão” posicional das engines eram: 

1) Posição do ataque Fegatello logo depois de Cf7
2) Posição do Duplo Muzio
3) Variante Iugoslava da Índia do Rei logo que define a variante

A maioria das engines dava a posição 1 como ganhadora ou quase ganhadora para as Pretas, dava a posição 2 como claramente ganhadora para as Pretas e a posição 3 como claramente melhor para as Brancas. Então havia basicamente dois problemas: as engines não sabiam avaliar quando vantagens posicionais compensavam um déficit material, como nos casos 1 e 2, nem compreendiam bem os conceitos de domínio do centro à distância. E o Fritz 5 foi o primeiro passo importante no sentido de avaliar corretamente estas posições. Ele ainda achava as posições 1 e 2 perdidas ou quase perdidas, porém já reduzia bastante o quanto as considerava perdidas. Ao Fritz 5 se seguiram Hiarcs 6, Junior 5, Shredder 5 etc. 

Junior 4.6 foi um dos primeiros a julgar corretamente as posições com fianqueto para um dos bandos e Peões centrais para o bando oposto. Em seguida, Fritz 6 e Junior 6 melhoraram ainda seus critérios de avaliação, mas ainda pareciam não conseguir dar o passo decisivo de considerar a posição 1 como equilibrada ou leve vantagem branca. Passaram-se muitos anos, muitos avanços importantes foram feitos, mas estas posições continuam sendo julgadas incorretamente. Em 2007, houve uma revolução tão importante ou até mais importante do que quando surgiu o Fritz 5. Foi quando o mestre internacional Vasik Rajlich criou Rybka. Sua primeira versão já era muito forte, mas foi a versão 2.3 que realmente revolucionou. 

O arquivo era muito maior e a velocidade de cálculo era muito menor. Cerca de 100 vezes mais lenta do que o Fritz, isso indicava que ela reunia muito mais conceitos estratégicos e uma heurística bem mais sofisticada. Imediatamente Rybka dominou o mundo dos computadores, sobrepujando com folga todas as melhores engines da época, com mais de 100 pontos de rating de vantagem sobre a segunda colocada. Pela primeira vez uma engine conseguia avaliar corretamente uma posição em que grande desvantagem material, como 1 ou 2 peças, poderia estar compensada por vantagens posicionais. Foi um separador de águas que deixou para trás a percepção visionária de Asimov, que previu aquele diálogo entre o robô e um humano em 2035, porém em 2007 os robôs já eram capazes de produzir Arte num nível comparável aos mais notáveis artistas humanos. 
  
Lamentavelmente, por motivos que talvez não tenhamos como saber quais foram, Vasik Rajlich sofreu acusações ridículas de plágio e foi perseguido e ofendido. Uma das acusações foi de que Rybka seria um clone de Fruit. Alguns especialistas da época refutaram cabalmente estas acusações, mostrando que Rybka era muito diferente, além de muito superior. Contudo, Vasik Rajlich se sentiu ofendido e descontinuou seu trabalho com desenvolvimento de engines de Xadrez. Rybka chegou até a versão 4.1, e esta continua sendo uma das melhores engines para avaliar posições. Cerca de 2 anos depois, começaram a surgir adversários à altura de Rybka, como Critter, Robbolito, Tactico, Ivanhoe, Fire, Houdini, Stockfish, Komodo, Gull etc. Alguns nomes, como Stockfish e Damirs Rybka Killer, foram criados especialmente para fazer frente à Rybka. 

Rybka se mostrou tão superior a todos os programas e a todos os humanos, que foram promovidos alguns matchs em que Rybka fez algo que parecia impensável desde os tempos de Morphy e Steinitz: dar vantagem de Peão, de qualidade e até mesmo de Cavalo para jogadores de alto nível. Rybka enfrentou jogadores com 2700 de rating oferecendo 1 Peão de vantagem, e enfrentou um mestre oferecendo um Cavalo. É altíssima a dificuldade de jogar com material a menos nos dias de hoje, devido ao elevado nível técnico. Kasparov, por exemplo, sofreu para vencer um match contra Chapman, um jogador com menos de 2000 de rating, dando 2 Peões de vantagem. Nos anos 1980, era praticamente fora de cogitação qualquer jogador do mundo dar um Peão de vantagem a um GM. No início do século XX, Capablanca disse que o Xadrez estava esgotado e seria necessário criar novas peças e mudar as regras, sugerindo que com as regras atuais ele era invencível e, com a evolução da técnica, logo haveria mais e mais jogadores invencíveis, e o Xadrez se afundaria em empates intermináveis. 

O avanço das engines nas últimas décadas mostrou que Capa estava errado. Mesmo entre as engines com 3500 de rating, ainda ocorrem vitórias, portanto os empates entre humanos de 2700 e 2800 se devem ao fato de ambos errarem aproximadamente na mesma proporção, não porque ambos estão perto da infalibilidade. E o fato de uma engine poder oferecer um Peão de vantagem corrobora isso, pois não só os humanos cometem erros, como são tão graves que ponto de valer um Peão. 

Passados 20 anos desde que tive meu primeiro programa de Xadrez, continuam existindo programas predominantemente táticos, como Houdini e Stockfish, e programas mais estratégicos, como Komodo e Rybka. Ainda existem as versões mais recentes do Fritz, Hiarcs, Junior e Shredder, mas estes já ficaram para trás em comparação aos descendentes de Rybka. 

Nos últimos 12 a 15 meses, o topo das listas de rating de engines tem sido ocupado por Houdini 3.0, e recentemente foi superado por Stockfish DD. A maioria destas listas se baseia em jogos de 4 minutos para 40 lances, ou 40 minutos para 40 lances. Há algumas listas com dezenas de milhares de jogos de menos de 1 minuto e algumas com 120 minutos. Geralmente usam 1, 2 ou 4 processadores. Raramente usam 6 processadores. Mas há uma lista (TCEC) que se baseia em jogos de 120 minutos e usa 16 processadores. Nesta lista, o topo do ranking é ocupado pela melhor engine para análises profundas: Komodo 6. 

Com a revolução iniciada com Rybka, atualmente as melhores engines permitem ao mundo compreender alguns fatos que apenas Tal, Nunn, Bronstein e poucos outros conseguiam enxergar algumas décadas atrás. A maioria dos sacrifícios de Tal que foram rotulados como “furados”, eram na verdade sacrifícios posicionais profundos, em que várias pequenas compensações posicionais justificavam a entrega de uma peça, uma Torre, duas peças ou até mais material. O fato de não haver variantes concretas que conduzissem ao re-equilíbrio material, nem a um ataque vitorioso imediato, não implica que os sacrifícios estivessem incorretos. Eram apenas trocas de material por atividade de peças, por espaço, por linhas abertas, por exposição do Rei adversário etc. Com a Inteligência Artificial desvendando alguns dos mistérios do jogo de Tal, elas se tornam capazes de jogar num estilo semelhante ao dele. 

Para inaugurar esta seção com partidas de humanos e de computadores que tenham sido jogadas ao estilo Tal, aproveitarei a oportunidade para fazer uma homenagem póstuma ao co-criador de Komodo, Don Dailey, que faleceu recentemente, aos 57 anos, no dia 23/11/2013. 

Desde que Rybka foi descontinuada, Komodo passou a ser o melhor programa do mundo para análises postais e é a engine que melhor “compreende” posições com grande desequilíbrio material em que haja compensações posicionais. Também é a que avalia mais acuradamente quem este melhor e quanto está melhor. Em milhares de testes feitos com Komodo 4, Komodo 5r2 e Komodo 6, ficou claro que a única engine que rivaliza com Komodo nestes critérios ainda é Rybka 4. 

Por Hindemburg Melão Jr.

Um comentário:

Medeiros disse...

Esse tipo de arte, com banco de dados e algoritmos é fácil. Agora quero ver um programa para compor sinfonias.

Lances Finos