Pular para conteúdo
26.8.10

A ciência da inspiração, parte 1

Inspiração: 1. Ato ou efeito de inspirar; 2. Pensamento ou idéia que nos vem de repente; 3. Produto da imaginação ou entusiasmo criativo.

A arte dos algoritmos

A ciência da computação nasceu com o conceito de algoritmo, criado conjuntamente em 1936 pelo experimento mental de Alan Turing, conhecido como Máquina de Turing, enquanto quase ao mesmo tempo Alonzo Church criava o cálculo lambda. Um algoritmo é uma seqüência finita de instruções bem definidas e não ambíguas, cada uma das quais pode ser executada mecanicamente num período de tempo finito e com uma quantidade de esforço finita.

O conceito de algoritmo é freqüentemente ilustrado pelo exemplo de uma receita, embora muitos algoritmos sejam mais complexos. Eles podem repetir passos (fazer iterações) ou necessitar de decisões (tais como comparações ou lógica) até que a tarefa seja completada. Um algoritmo corretamente executado não irá resolver um problema se estiver implementado incorretamente ou se não for apropriado ao problema.

Roger Alsin é um programador sueco bem menos conhecido, mas que aborda a arte dos algoritmos de uma forma impensável na época de seus criadores... No final de 2008, ele resolveu brincar um pouco com alguns algoritmos, mais precisamente algoritmos genéticos. Ele criou um pequeno programa que evolui cadeias de “DNA digital” para renderização de polígonos, eis as instruções aplicadas:

(0) Cria uma cadeia de DNA aleatoriamente (início do programa); (1) Copia a seqüência de DNA atual e aplica uma pequena mutação; (2) Usa o novo DNA para renderizar polígonos em uma tela; (3) Compara a tela com a imagem original (a ser copiada); (4) Se a imagem se parece mais com a imagem original do que a imagem gerada pelo DNA pai, substituir o DNA antigo pelo DNA atual; (5) Repetir a partir do passo 1.

Então, Alsin colocou como meta aos seus algoritmos tentar recriar (ou copiar da melhor forma possível) a Mona Lisa de Da Vinci usando apenas 50 polígonos semi-transparentes... Após 904.314 gerações, o algoritmo genético de Alsin chegou a uma imagem bastante próxima da original, se considerarmos que algoritmos não são exatamente mestres da pintura (ou pelo menos, ainda não são). Você pode ver a imagem final no início do artigo, ou ver as diversas gerações no weblog de Alsin.

Em 1992, John Koza – cientista da computação – usou algoritmos genéticos para desenvolver programas para realizar certas tarefas. Ele chamou seu método de programação genética. Koza foi pioneiro neste método de programação, que hoje é cada vez mais utilizado no mundo.

O aspecto mais bizarro e intrigante da programação genética é que seus algoritmos – verdadeiras “entidades de software” – não sofrem as restrições dos hábitos de pensamento e das inclinações intelectuais sutis dos programadores humanos. Como exploram irrefletidamente todo o espectro de soluções possíveis para um determinado problema, os algoritmos genéticos podem trazer soluções puramente alienígenas. Por exemplo, a NASA utilizou a programação genética para produzir o projeto ideal de um suporte a ser usado na Estação Espacial Internacional. Como relatou o U.S. News and World Report, o resultado parecia ter saído de um romance de ficção científica:

“Surgiu, de 15 gerações e 4.500 projetos diferentes, um suporte que nenhum engenheiro humano projetaria. O conjunto grumoso e com a extremidade arredondada lembrava o osso de uma perna, irregular e um tanto orgânico. Testes em modelos confirmam sua superioridade sobre os projetos humanos com suporte estável. Nenhuma inteligência fez os projetos. Eles apenas se desenvolveram.”

Outro exemplo espantoso da total estranheza da programação genética bem-sucedida é o código e computador que foi desenvolvido para ajudar um paciente a controlar uma mão protética com base em sinais nervosos erráticos captados por eletrodos presos ao pulso do paciente. O software desenvolvido analisava misteriosamente os sinais nervosos e os traduzia com precisão perfeita nos movimentos que o paciente queria fazer.

Mas aqui está a parte realmente estranha – o método pelo qual o software realizou esse feito incrível está totalmente além da compreensão dos pesquisadores humanos. Como relatou a Scientific American:

“O código desenvolvido era tão confuso e indecifrável quanto um inseto esmagado. O programa que prevê os gestos consiste numa única linha de código tão longa que enche uma página inteira e contém centenas de expressões parentéticas embutidas. Ele nada revela sobre por que o polegar se move de uma certa maneira – só revela que se move.”

Eis que, como num passe de mágica, essas receitas de bolo que ajustam a si mesmas acabam por trazer resultados imprevisíveis, bolos de sabores que nós humanos jamais poderíamos imaginar.

Para alguns ateus entusiastas de inteligência artificial, esta é a prova cabal de que o argumento do Design Inteligente está descartado, e de que os problemas podem ser solucionados através de gerações aleatórias de algoritmos – assim como a vida pode ser explicada como uma evolução aleatória da matéria inorgânica que, de alguma forma, tornou-se orgânica.

Estão mal-informados, pois conforme o próprio Alsin – ele mesmo um ateu – explica em seu weblog, a programação genética não prova absolutamente nada além de que pode ser utilizada para resolver problemas além da atual capacidade humana:

(1) Não existe um objetivo claro nos algoritmos, pois o problema que estão tentando solucionar é o seu próprio meio-ambiente de desenvolvimento. Eles não possuem um sentido, são mero mecanismo de solução de um problema específico; (2) A réplica da Mona Lisa não é a imagem do DNA digital e muito menos do “corpo” dos algoritmos genéticos, ela apenas demonstra o seu nível de adaptação ao meio-ambiente, ou o quanto foram bem sucedidos na solução do problema; e finalmente: (3) A programação genética nada diz sobre o problema da Criação, pois toda ela foi desenvolvida por seres humanos, e nós fomos criados por um evento químico extremamente fortuito nos primórdios do planeta, ou por um ser (ou seres) além de nossa compreensão atual, mas certamente não por uma máquina humana!

Da mesma forma, a magnífica capacidade computacional de nossa tecnologia nada nos diz sobre o que diabos são a inspiração e a criatividade humanas. Nossas máquinas são produto de nossa criatividade, mas não podem (ao menos por enquanto) criar elas mesmas. Tudo o que podem fazer é computar informação, seguirem receitas de bolo e, quando muito, modificar tais receitas para trazer resultados inesperados. Mas quem dita à receita somos nós. Mesmo que um dia máquinas possam nos imitar quase que a perfeição, ainda assim serão imitadores, computadores, e não seres que interpretam e reavaliam a informação de forma subjetiva, única.

Ainda assim, o mistério, a magia das soluções trazidas pelos algoritmos genéticos permanece insondável. Isso irá requerer uma análise mais profunda sobre como exatamente à mente humana cria novos conceitos e idéias a partir de outros já existentes – ou algumas vezes, aparentemente a partir do nada...

Na continuação, como a relação dos módulos da mente primitiva nos tornou humanos, demasiadamente humanos.

***

Pequeno glossário de alguns termos técnicos utilizados no artigo:

Máquina de Turing – Modelo abstrato de um computador, que se restringe apenas aos aspectos lógicos do seu funcionamento (memória, estados e transições) e não à sua implementação física. Numa máquina de Turing pode-se modelar qualquer computador digital.

Cálculo lambda – O cálculo lambda pode ser considerado como uma linguagem de programação abstrata, isto é, as maneiras como funções podem ser combinadas para formar outras funções, é uma linguagem pura, sem efeitos colaterais, e sem complicações sintáticas.

Algoritmo – é explicado nos primeiros parágrafos do artigo :)

Polígono – Um polígono é uma figura geométrica plana limitada por uma linha poligonal fechada : p.e. o hexágono é um polígono de seis lados. A palavra “polígono” advém do grego e quer dizer muitos (poly) e ângulos (gon).

Mutação – Em Biologia, mutações são mudanças na sequência dos nucleotídeos do material genético de um organismo. No caso da programação dos algoritmos genéticos, as mutações são induzidas propositadamente (e não aleatoriamente) a cada nova geração.

Linha de código – Em Programação, são as linhas de código que contém as informações (código fonte) que determinam como um programa deve proceder. No caso do software que analisa sinais nervosos, todo o código está agrupado (desde a origem) em uma única linha, sendo incompreensível para a cognição dos próprios programadores (é o resultado dos algortitmos genéticos).

***

Crédito das imagens: [topo] Roger Alsin (sim, pois foi ele quem criou o programa que copiou a Mona Lisa de Leonardo Da Vinci); [ao longo] Andrea Ruester/Corbis

Marcadores: , , , , , , , , , ,

6 comentários:

Blogger Samuel Otemi disse...

Cara, que legal!

26/8/10 19:13  
Blogger raph disse...

Essa é mais uma série que estou curioso pra saber onde vai dar (sim, eu escrevo uma parte por vez mesmo)...

Abs e obrigado!
raph

26/8/10 22:39  
Anonymous Heverton disse...

Ver as imagens da Mona Lisa do ínicio até o fim foi...bem legal. Também estou muito curioso pelo próximo post da série. E como anda o Projeto Ouroboros?

27/8/10 09:44  
Blogger raph disse...

O Projeto Ouroboros eu escrevo aos poucos, geralmente no sábado ou domingo. Ainda deve demorar, já tem mais ou menos um ano que começou e podem levar, quem sabe, uns 3 anos, por aí...

Mas os posts do blog me ajudam no Ouroboros, por isso volta e meia me coloco nesses desafios meio bizarros de tentar entender essas coisas estranhas - como a questão de "quem ou o que chega aos resultados dos algoritmos genéticos"...

Claro que eu só inicio uma série de artigos se tenho mais ou menos uma boa idéia para "atacar" o problema. Tem muitas, muitas séries que não iniciei e provavelmente jamais vá iniciar hehe.

Abs
raph

27/8/10 10:03  
Anonymous cotrim disse...

Vocé ja pensou em refurtar o relojoerio cego de Darkins?

29/8/10 12:21  
Blogger raph disse...

Bem, se você ler meus artigos verá que boa parte deles são algma espécie de refutação a um relojoeiro cego... Mas a questão principal é que algo surgir do nada de forma aleatória não faz sentido algum, este seria em si o maior "passe da mágica" da história.

Não fazer idéia da causa, e supor que ela é aleatória ou "cega", é uma boa forma de se livrar do problema :)

Recomendo ver principalmente, "Reflexões sobre o nada" e "Onde estarão os memes?". Estão na lista do "Reflexões sobre..." na coluna direita do blog.

Dito isso, saiba que considero Dawkins principalmente pelo "Gene egoísta" e o conceito de Meme. Embora não concorde com a abordagem "mística" com a qual ele elaborou os memes, o aplaudo por ter tido a coragem de abordar o problema... Já a sua campanha anti-teísta é uma grande perda da tempo.

Uma pena porque ele poderia ter usado esses anos todos de forma bem mais construtiva apenas divulgando ciência tão bem quanto ele fazia no início (quando não era uma "campanha").

Abs
raph

29/8/10 17:24  

Postar um comentário

Toda reflexão é bem-vinda:

‹ Voltar a Home