Thursday, March 23, 2006

Bits, chess and two smoking barrels



Vamos comecar pelo básico. Um computador sabe somar? Aposto que esta pergunta pode disparar muitas respostas e uma grande polêmica que vai, invariavelmente, acabar no Quarto Chinês. Pois vou falar um pouco sobre o que eu penso.
Considerem a seguinte pergunta: Uma pessoa com educacão básica sabe somar? Com certeza este questionamento não irá construir uma polêmica tão grande. Talvez sobre educacão, e acabe descambando para política (esse política era pra dar num link pra http://www.christianitytoday.com/, mas o blogspot não quis participar da minha piadinha ácida :( ), mas não sobre cognicão e inteligência artificial.
O ponto é que a pergunta "Uma entidade sabe somar?" Não é definida suficientemente fora de contexto. Quando nos perguntamos isto a respeito de humanos, esta mistura é aceitável, porque como a maioria das pessoas concorda sobre a resposta, considera-se que não há polêmica. Entretanto, esta "cortesia" de se ser mais tolerante com o significado não é extendida quando nos referimos a computadores ou calculadoras ou ábacos. (eu pessoalmente acho isto preconceituoso, mas como estou aqui para convencer _outras_ pessoas do que eu penso, vou tentar contornar esta situacão)
Sejamos "intolerantes", então. Vamos redefinir a pergunta de saber somar em outros termos. O que é somar? Admitamos que somar dois números consista em receber dois valores diferentes, e devolver o valor que corresponda a "soma" deles (me falta o conhecimento matemático para definir melhor isto, mas para meus propósitos esta definicão já é suficiente). Ok, já sabemos o que é "somar" duas quantidades. Agora, o que é "saber" fazer alguma coisa? Admitamos que "saber" executar alguma tarefa seja executar esta tarefa de modo que o resultado esteja correto (para meu argumento, correto só precisa ser passível de inspecão humana). Simplificando, isto tudo significa que "saber somar" significa ser capaz de executar a tarefa "pegar dois valores e devolver sua "soma" " de maneira correta. Um computador é capaz de fazer isto? Sim. Tentem!

Menu Iniciar -> Programas -> Acessórios -> Calculadora

O fato de que nem todas as somas em computadores devolvem resultados corretos não implica na sua incapacidade de somar, pois eu duvido que alguém aqui seja capaz de somar 120982508475230948745 com 3104872476301844587 e encontrar o resultado correto. E mesmo assim, todos nós concordamos que seres humanos são capazes de somar. (para quem se aventurou, o meu computador disse que o resultado é 1.2408738095153279 * 10^20. Sim kiko, este não é o valor exato, mas é bem mais perto do que eu chegaria de cabeca, eu acho)
OK. Concordamos, por um processo lógico simples, que computadores "sabem somar". Agora, vocês querem saber "como" eles fazem isso? (all hail arq0 :D) Eles simplesmente consultam uma tabela de verdadeiro/falso para os dígitos do número, e, dependendo da condicão, devolvem um certo dígito novo. A tabela foi feita de forma que isto "funcione". Alguém pode dizer que simplesmente consultar numa tabela não conta como somar, mas experimentem somar dois números num papel para ver o que vocês pensam: no final das contas o algoritmo vai se resumir a manipular os símbolos + 1 2 3 4 5 6 7 8 9 0 no papel e consultar uma tabela que diz algo do tipo "se d1 = 5 e d2 = 7 então resultado = 2 e vai 1". E isto é _exatamente_ a tabela que está dentro de um computador, com a diferenca que a dele é em base 2.
Vejam só, agora já concordamos que computadores "somam tanto quanto humanos". O próximo passo é, de acordo com o título, determinar se computadores "sabem jogar xadrez". O argumento é semelhante, e vai algo por estas linhas: Se concordamos que "jogar xadrez" significa saber as restricões de movimentos das pecas, e saber executar somente movimentos legais, um computador joga xadrez (de novo, experimentem! ChessMaster will do the trick). Se consideramos "saber" jogar xadrez como sendo a capacidade de julgar se uma determinada posicão é boa ou ruim, e portanto ir até esta posicão ou evitá-la, um computador _também_ faz isso (MiniMax). E a parte mais interessante: vamos considerar que "se uma entidade A é capaz de produzir um resultado _vitória_ dentro do conjunto de regras do xadrez, jogando contra uma entidade B um número considerável de vezes, onde a entidade B já se considera que "saber jogar", então a entidade A também sabe jogar". Em termos porcos, se alguém ganha de outro alguém que é bom, aquele primeiro alguém também é bom. E vejam só que surpreendente! Um computador já ganhou em um match do Gary Kasparov (e eu acho que ninguém aqui vai _ousar_ dizer que o Kasparov joga mal)... Portanto, se admitimos que jogar xadrez constituí em saber as regras, prever movimentos, e ganhar consistentemente de entidades que jogam xadrez, um computador sabe jogar xadrez.
Ficaria a critério do leitor encontrar outros exemplos diversos sobre coisas mal definidas que, quando são bem definidas, nos levam à conclusão de que computadores sabem fazê-la. Entretanto, eu pretendo encontrar uma lógica subjacente a isto tudo: Esta lógica consiste em criar uma abstracão da seguinte maneira: Se nós temos um determinado evento, podemos considerar que uma entidade "saber fazer" este evento significa que esta entidade é capaz de, dadas _todas_ (este "todas" e o próximo são, really, a chave do argumento) as entradas necessárias para a execucão do evento, ela devolve uma saída "satisfatória" em _todos_ os critérios. Essa abstracão "caixa-preta" é o que nos permite finalmente chegar ao argumento do quarto chinês e dizer que aquilo é bullshit. Pois, se a pessoa dentro do quarto chinês responde a _todas_ as entradas como se entendesse chinês em _todas_ as saídas (mesmo que lá dentro só exista uma tabela bem grande), ela efetivamente entende chinês. Logo, se um computador responde a _todas_ as entradas de maneira satisfatória em _todas_ as saídas, ele é sim, capaz de "pensar". Pois o que nós fazemos, se não responder todas as entradas de forma satisfatória?

Phew. Me xinguem a vontade agora :)
(Strong AI rules)
--- Seção "Do dia" ---

Música do dia:
Pink Floyd - Pow R Toc H

Piada do dia: (tem uma!!!)
Reunião de animais. O leão chega e diz pra todo mundo, se exibindo: "Com o meu forte rugido, toda a savana teme o meu poder!", ao que o tubarão responde "Pois isso não quer dizer nada, eu e meus afiados dentes somos os soberanos dos mares". Nisso, os ursos rapidamente se levantam em falam "Grande coisa! Nós, com nossas garras e grunhidos (?) somos as feras mais temidas do norte."
A galinha, lah no fundo, meio bêbada, olha pra eles e diz "Grande merda! Voces ficam tudo gritando, e eu só preciso dar um espirrinho pra cagar o mundo todo."
Fato imbecil do dia:
A minha turma mudou do colégio, mas continuam se arriando só porque eu não via Chaves :(
Frase do dia:
"Esta afirmativa é verdadeira e não pode ser provada."
(ou algo parecido com potências de números primos...)
-Kurt E. Gödel (a primeira trema do blog! yay!)

PS: O post ficou comprido então eu nao reli antes de publicar. Perdoem os erros que podem ter aparecido...

6 Comments:

Blogger Paulo Becker said...

Se computadores não sabem somar, então nós também não sabemos. Acho que isso é pretty much given.

Agora, um ponto beirando entrar na discussão de IA: se o comportamento de uma réplica é indistinguível do comportamento do original (ou seja, se um simula o outro), então para todos os efeitos a réplica É o original. E eu não estou falando em testes de Turing. Aqui, o que eu quero dizer por indistinguível é imitar o original para todos os conjuntos de entradas e saídas possíveis. De novo, aí está o problema.

9:22 AM  
Blogger Felipe Rijo said...

Kasparov não joga nada de xadrez.. meu macaco adestrado ganha dele sem olhar pro tabuleiro.

3:17 PM  
Anonymous Anonymous said...

Não conheço as instruções e a ALU dos microprocessadores modernos, mas os chips de 4 e 8 bits (Intel 4004, 808x, Zilog Z80, etc) sabiam efetivamente SOMAR sem consultar tabelas: a única "tabela" que havia era que 0+0=0, 0+1=1, 1+0=1 e 1+1=0 e vai um. Isso era feito como resultado da combinação inteligente de algumas portas lógicas construídas com transistores, no tables here. A soma era efetuada do LSB ao MSB bit a bit.

As CPU de hoje tem tabelas para multiplicação direta (sem usar somas sucessivas como eu usava), mas não sei se também têm tabelas para somar mais rápido, é possível. No meu tempo memória era mais caro que velocidade, então eu tirava uma raíz quadrada pelo método de Newton em assombrosos 500ms...

Quanto à exatidão dos resultados, havia uma cadeira na Engenharia chamada Teoria dos Erros, à qual nunca dei muita bola, mas que estudava a fundo o tema, que é tremendamente importante na Ciência da Computação e na Estatística. Ah, se eu soubesse...

10:46 AM  
Blogger Luiz Scheidegger said...

A essa "tabela" que eu me refiro... o PC nao olha pra uma tabela linhas/colunas, mas quem programou a soma olhou... eh uma abstracao tipo "0 + 0 vem 0 -> 0 vai 0 | 0 + 0 vem 1 -> 1 vai 0 | 0 + 1 vem 0 -> 1 vai | e assim por diante :)

12:17 PM  
Blogger Felipe Rijo said...

update is due.

10:22 PM  
Anonymous Anonymous said...

Pensar (racionalmente, sob regras finitas e pré-definidas) é fácil; até um monte de relé velho corretamente conectado consegue. Já fazê-lo a partir de regras "sacadas" do que vai acontecendo (Mars Rover, p.ex.) precisou mais grana pra acontecer, e ainda por cima a "besta eletro-mecânica" fazia um monte de merda caminhando entre pedrinhas que um filhote de pinto tiraria de letra se pudesse respirar a -100°C e quase sem oxigênio. Já sentir e expressar sentimentos...

6:53 PM  

Post a Comment

Subscribe to Post Comments [Atom]

<< Home