sábado, 27 de setembro de 2008

Grande Debate: Criacionismo X Evolucionismo



Gostaria de convidar a todos os interessados na temática sobre as origens, para um debate que será realizado pela UFPB no dia 10 de Outubro às 9 h da manhã no campus de Rio Tinto. Estarei debatendo com o professor Cristiano Bonneau que estará defendendo o evolucionismo.

O debate constará de dois momentos: no primeiro cada debatedor terá 45 minutos para explanar a sua teoria e no segundo o público poderá fazer perguntas para ambos os debatedores.

Antecipadamente queremos agradecer a iniciativa por parte da Universidade Federal da Paraíba, e ao professor Joel Santos que mediará o debate.

Conto com a presença de todos.

Atenciosamente:

Ronaldo Xavier.  

quarta-feira, 3 de setembro de 2008

Algoritmos Genéticos, um Problema Para a Teoria da Evolução

(Por: Ronaldo Xavier Pimentel Júnior)


Alguns evolucionistas mais fervorosos têm dito que os algoritmos genéticos (AG´s) são a resposta para o processo de aumento da informação genética nos seres vivos, contudo, demonstraremos nesse texto que os algoritmos genéticos são uma arma poderosíssima contra a Teoria da Evolução, comprovando a impossibilidade de mutações aleatórias terem produzido todos os seres vivos como os conhecemos.
Inicialmente gostaríamos de familiarizar o leitor com o conceito de Algoritmo Genético, uma vez que, o tema não é de conhecimento da maioria das pessoas.
John H. Holland, pesquisador da Universidade de Michigan, propôs nos anos 70 um algoritmo matemático[i] cuja finalidade seria a otimização de sistemas complexos, ou seja, ter respostas mais eficientes e precisas para certos tipos de problemas com muitas variáveis. Esse algoritmo pretendia simular matematicamente todo o mecanismo da suposta evolução biológica, principalmente no que diz respeito à seleção natural e combinação genética.
Nessa analogia feita através do algoritmo genético, a melhor resposta para um determinado tipo de problema seria o indivíduo mais evoluído possível, ou seja, por tentativa e erro, cruzamentos, reproduções, mutações e seleção natural, supostamente simulando a natureza, se chegaria a uma resposta para determinado problema matemático, de engenharia, ou cotidiano, uma ideia que funciona dentro das limitações que demonstraremos posteriormente.
O algoritmo genético (AG) clássico seria construído basicamente na seguinte ordem:

1. População Inicial;
2. Enquanto condição não satisfeita faça;
3. Seleção;
4. Cruzamentos;
5. Mutações;
6. Fim enquanto;
7. Solução Melhor indivíduo.

E a analogia com a biologia continua da seguinte forma:

a. Cromossomo (genótipo) - cadeia de bits que representa uma solução possível para o problema;
b. Gene - representação de cada parâmetro de acordo com o alfabeto utilizado (binário, inteiro ou real);
c. Fenótipo - cromossomo codificado;
d. População - conjunto de pontos (indivíduos) no Espaço de Busca;
e. Geração - iteração completa do algoritmo genético que gera uma nova população;
f. Aptidão - saída gerada pela função objetivo para um indivíduo da população.

Dadas as informações, trabalharemos os principais problemas de se aplicar tal modelo computacional à Teoria da Evolução.

Problema 1: Algoritmos genéticos demandam um programador
É interessante como alguns evolucionistas gostam de usar o algoritmo genético como argumento favorável à teoria da evolução, mas esquecem que por trás do processo existe um programador inteligente que deve escolher certas variáveis para que a resposta possa surgir, a natureza e o acaso não dispõem de tal programador, pelo menos não no modelo evolucionista.

Problema 2: Algoritmos genéticos demandam uma população inicial
O engraçado é ver, que é necessário que se tenha uma população pré-existente pra que se possam aplicar os princípios da seleção natural e das mutações, ou seja, não se pode explicar o surgimento da população através deste método. Com isso, vemos que é fundamental que se tenha uma população inicial pré-existente, a qual a teoria da evolução não possui, diferentemente do que ocorre com o modelo criacionista.

Problema 3: As mutações são limitadas
Alguns evolucionistas têm argumentado que se pode ter informação nova a partir das mutações, e que os algoritmos genéticos têm demonstrado isso. Primeiro, o que temos observado na natureza é que existe recombinação da informação pré-existente (o mesmo que os AG fazem), e que dentro da variabilidade, que é limitada pelo programador (quantidade de bits), não surgirão respostas fora dos parâmetros da programação.
Por exemplo, vamos supor que eu queira criar uma peça para um relógio, um ponteiro, ele não deve ser demasiadamente fino pois seria de difícil visualização, nem poderia ser demasiadamente grosso pois ficaria muito pesado para o mecanismo, deve ser feito de um material leve, mas que seja ao mesmo tempo resistente e durável. Desse modo, se quisesse aplicar um AG, teria que ter inicialmente uma população de relógios com diversos tipos de ponteiros de espessuras diferentes e materiais diferentes, eles cruzariam entre si, e desses cruzamentos surgiriam indivíduos desejáveis (ex. com ponteiro leve e grosso) e indesejáveis (ponteiros pesados e finos) as mutações permitiriam criar ligas metálicas que seriam crossovers dos materiais iniciais que não existiam na população inicial. No final, após diversas gerações o que teríamos? UM PONTEIRO! Incrível como ele não se transformou em um mostrador digital. E por que isso não aconteceu? Porque não existia essa informação no programa inicial. Com isso queremos demonstrar que, teríamos sim, um ponteiro leve, com uma liga forte, e com uma espessura que fosse visível ao usuário do relógio, contudo, esse ponteiro continuaria sendo um ponteiro, e é esse o ponto! Exatamente o que criacionistas têm dito o tempo inteiro, temos especiação, micro-evolução (variações dentro de uma mesma espécie), mas não encontramos a macro-evolução (répteis se transformando em aves). Tal limitação é clara, e é demonstrável, por esse poderoso simulador chamado de Algoritmo Genético.

Problema 4: O problema do tempo
Os algoritmos genéticos só passaram a ser usados efetivamente a partir do final da década de 80, começo dos anos 90, e o motivo era muito simples, os computadores não eram rápidos o suficiente para trabalhar com a sobrecarga de informações (overflow), ou seja, como haviam muitas variáveis, existiam alguns trilhões e trilhões de respostas ou superpopulações (tal quantidade varia conforme o problema), e essa quantidade enorme de informação precisava ser testada por um simulador de “seleção natural” que escolhe os indivíduos mais aptos, causa reproduções destes, escolhe os mais aptos até que se chegue a um indivíduo que se tenha uma melhor resposta ao problema.
E talvez você esteja se perguntando, e daí? A evolução tem milhões de anos pra isso. Veja que, um computador consegue em 1 segundo, dependendo do modelo, fazer bilhões de cálculos, ou seja, o computador consegue fazer a reprodução dentro da população inicial ocorrer muito rapidamente e mesmo assim, dependendo da sofisticação do problema, e do tipo de máquina, teremos horas, ou dias de cálculos, para se chegar a uma melhor solução do problema. Assim nos mostra o pesquisador Marcio Nunes:

“Devido ao grande número de variáveis que um AG trata e às populações elevadas e alto número de gerações para a cobertura do espaço de soluções, os AG's possuem um custo computacional elevado.”[ii]

Quando aplicamos o mesmo princípio à natureza, sabemos que o processo de reprodução é trilhões de vezes mais lento, o que demandaria um tempo maior do que o estimado pela própria Teoria da Evolução para uma transformação “simples” do tipo bactéria pra ameba (seriam trilhões e trilhões de anos), outro problema seria a super população final, quando se trabalha com AG tem-se populações da ordem de milhões de bilhões, e estamos falando disso, em problemas relativamente simples se comparados com a evolução de uma célula, veja um exemplo prático com seres humanos:
Nossa população é algo na casa dos 7 bilhões de indivíduos, a taxa de crescimento é de 2%, ou seja, se o homem estivesse aqui há um milhão de anos ou coisa parecida, como os evolucionistas sugerem, a população seria em torno de 10^8600 (dez elevado a 8600), ou seja, o número 1 seguido de 8600 zeros; para que se tenha uma ideia do que isso significa, o número de elétrons no universo é da ordem de 10^80 (dez elevado a oitenta)[iii]. Agora, o que acontece se aplicarmos as taxas de crescimento a seres que crescem mais rápido? Teríamos o mesmo fenômeno que ocorre no AG, uma explosão populacional que não é observada empiricamente, logo a Terra não pode ser tão velha como querem os evolucionistas.

Surgem então dois problemas:
1 – Os evolucionistas não podem ter tempo em excesso pois isto ocasionaria uma superpopulação;
2 – Os evolucionistas não têm como recombinar os genes nas supostas mutações para evolução sem os trilhões de anos necessários demonstrados pelo AG;
Conclusão: Por não existir terceira hipótese, e por serem as hipóteses existentes autodestrutivas, a evolução segundo o algoritmo genético não pode ter ocorrido.

Problema 5: Algoritmos genéticos apresentam erros
Quando se programa com AG deve-se ter extremo cuidado para que o resultado não culmine em máximos ou em mínimos, o que impossibilitaria a existência da melhor resposta, tal controle deve ser feito pelo programador que deve definir critérios como: tamanho da população, escolhas de parâmetros, etc. Lembre-se que a teoria da evolução não tem o programador, vejamos o que nos ensina o professor Marcio Nunes de Miranda:

“Além da forma como o cromossomo é codificado, existem vários parâmetros do algoritmo genético que podem ser escolhidos para melhorar o seu desempenho, adaptando-o às características particulares de determinadas classes de problemas. Entre eles os mais importantes são: o tamanho da população, o número de gerações, a probabilidade de cross-over e a probabilidade de mutação. A influência de cada parâmetro no desempenho do algoritmo depende da classe de problemas que se está tratando. Assim, a determinação de um conjunto de valores otimizado para estes parâmetros dependerá da realização de um grande número de experimentos e testes.”[iv]

Isso é outro problema sério, AG funciona em computação porque a figura do programador é imprescindível, e ele que vai fazer “experimentos e testes”, uma vez que, sem o ajuste preciso dos parâmetros não se obtêm os melhores resultados.
Se fosse algo tão simples, como querem os evolucionistas, poderíamos criar através de AG um computador mais poderoso que o cérebro humano; por simulação colocaríamos um monte de Pentium´s pra se reproduzir com Atlon´s, e por tentativa e erro, mutações, cruzamentos, chegaríamos à fabulosa máquina. Mas veja que isso nem se quer é tentado, e o irônico, é que é exatamente isso que os evolucionistas alegam, que criaturas sem cérebro (bactérias) teriam chegado a seres humanos com aumento aleatório na informação. Desculpa, mas não é isso que a evidência computacional registra! Vejamos alguns ajustes necessários quando se trabalha com AG, como nos ensina o professor da USP André Carvalho:

“Tamanho da População. O tamanho da população afeta o desempenho global e a eficiência dos AGs. Com uma população pequena o desempenho pode cair, pois deste modo a população fornece uma pequena cobertura do espaço de busca do problema. Uma grande população geralmente fornece uma cobertura representativa do domínio do problema, além de prevenir convergências prematuras para soluções locais ao invés de globais. No entanto, para se trabalhar com grandes populações, são necessários maiores recursos computacionais, ou que o algoritmo trabalhe por um período de tempo muito maior.
Taxa de Cruzamento. Quanto maior for esta taxa, mais rapidamente novas estruturas serão introduzidas na população. Mas se esta for muito alta, estruturas com boas aptidões poderão ser retiradas mais rapidamente dando um valor alto, a maior parte da população será substituída, mas com valores muito altos pode ocorrer perda de estruturas de alta aptidão. Com um valor baixo, o algoritmo pode tornar-se muito lento.
Taxa de Mutação. Uma baixa taxa de mutação previne que uma dada posição fique estagnada em um valor, além de possibilitar que se chegue em qualquer ponto do espaço de busca. Com uma taxa muito alta a busca se torna essencialmente aleatória.
Intervalo de Geração. Controla a porcentagem da população que será substituída durante a próxima geração. Com um valor alto, a maior parte da população será substituída, mas com valores muito altos pode ocorrer perda de estruturas de alta aptidão. Com um valor baixo, o algoritmo pode tornar-se muito lento.”
[v]

Interessante que os evolucionistas não comentam tais dificuldades, querem apenas passar a ideia de que o algoritmo genético é a solução para todos os problemas do surgimento da informação, agora vemos que as coisas não são tão simples, e daí a obrigatoriedade de um designer inteligente para projetar um modelo de AG que realmente funcione.

Problema 6: Os vários tipos de seleção natural
Os algoritmos não se baseiam só no fortuito, ou seja, existem AG’s que já trabalham com uma seleção artificial para viabilizar o processo, tal situação não é concebível no modelo evolucionista, vejamos:

1 – GENITOR:
“Cada indivíduo selecionado e cruzado com seu parceiro é colocado no lugar do pior indivíduo da população anterior. A aptidão é atribuída de acordo com um "ranking", ou seja, a aptidão de cada indivíduo assume valores discretos.”[vi]

A seleção natural encontrada na natureza não atua dessa forma, uma vez que não cria “ranking”, com valores discretos, nem tem tal capacidade gerencial, tal atribuição é produto de uma mente inteligente.

2 – CHC (Cross generational elitist selection, heterogeneous recombination and Cataclysmic mutation):
“Os N melhores indivíduos são coletados levando-se em consideração a população atual e a população gerada após o cruzamento. Remove-se os indivíduos duplicados. (...) O ponto de cross-over é sempre a metade do cromossomo. Para se solucionar o problema de convergência prematura para mínimos locais é utilizada uma alta taxa de mutação, sempre preservando o melhor indivíduo da população. A partir da primeira seleção aleatória, utiliza-se o cross-over diretamente nas populações subsequentes.”[vii].
Mas uma vez, percebemos que, algumas regrinhas devem ser obedecidas para que o AG funcione, tais como: remoção dos duplicados, o ponto de crossover é sempre a metade do cromossomo, alta taxa de mutação e o melhor indivíduo é sempre preservado. Nenhum dos critérios citados é obrigatoriamente característica da seleção natural como vemos na natureza. Percebemos que a finalidade da seleção por CHA é acelerar o processo do AG, uma vez que, mesmo para um computador, o processo natural não é simples, nem rápido.

3 – ALGORITMOS HÍBRIDOS

“Muitos autores consideram que os AG's nem sempre são a melhor solução para problemas de otimização específicos. Desta forma, os algoritmos híbridos utilizam os AG's como ponto de partida para métodos de otimização tradicionais, como o "Simulated Annealing", método de Powel, entre outros. A desvantagem destes algoritmos é a introdução de um "overhead" computacional devido à busca baseada em populações, característica dos AG's. A mistura das técnicas tradicionais com os AG's introduzem uma espécie de aprendizado no AG, pois os cromossomos utilizados foram resultado da técnica denominada "hill-climbing", utilizada nos métodos de otimização tradicionais, que utilizam derivadas.”[viii]

Usar derivadas na seleção natural biológica? Nem pensar! Mas é isso que é necessário, ainda que se tenham problemas, que de tão simples, comparados com a complexidade da vida, não podem se equiparar. Ou seja, a aplicação de técnicas de AG são extremamente complexas para serem recriadas de maneira aleatória pela natureza, tal ideia é tão improvável quanto acharmos um porta aviões na praia, e concluirmos que, foi obra do mar e dos relâmpagos.

Problema 7: As situações biológicas são muito mais complexas do que as simulações por AG
“Buscas em problemas reais são repletos de descontinuidades, ruídos e outros problemas. Métodos que dependam fortemente de restrições de continuidade e existência de derivadas são adequados apenas para problemas em um domínio limitado.”[ix]

Os problemas reais, como demonstrado pelo professor André Carvalho, não são tão simples quanto as situações herméticas propostas em problemas de engenharia, ou seja, quando se trabalha com organismos vivos temos uma quantidade enorme de variáveis como: meio ambiente, informações em um código genético criptografado e compactado, infindáveis possibilidades climáticas, interdependência, cadeia alimentar, reprodução sexuada e assexuada, mutações deletérias, doenças, tipos de alimentação, complexidade irredutível. Além de outras inúmeras variáveis que a seleção natural tem que dar conta pra transformar um coacervado em um homem.

Considerações Finais
Como demonstramos, a teoria da evolução não pode argumentar que o AG serve de evidência para o modelo evolucionista, ao contrário, tal modelo aponta para um projetista (programador) que controla e opera com uma quantidade enorme de variáveis.
Vimos também que o processo de tentativa e erro é limitado por parâmetros, é lento, e demanda um tempo que a evolução não dispõe.
Percebemos que o resultado da aplicação de AG é uma superpopulação na busca de um indivíduo mais adaptado, tais quantidades no mundo real seriam maiores que o número de elétrons do universo, e, portanto, o resultado virtual produzido pela máquina, contradiz o observado na natureza.
Ademais, a complexidade da vida, do organismo mais simples, não pode ser comparado com o que é feito com AG´s, de modo que, tais evidências apontam para um criador infinitamente inteligente, capaz de projetar máquinas extremamente complexas, onde a mais simples, é mais complexa do que qualquer coisa já feita pelo homem. Tais estruturas não podem ser criadas de maneira fortuita, uma vez que os próprios AG´s são limitadíssimos e demandam obrigatoriamente um programador, fica claro desse modo que, algoritmos genéticos depõem contra a Teoria da Evolução e não a favor dela.

___________________
Notas:
[i] Conjunto de regras e operações bem definidas e ordenadas, destinadas à solução de um problema, ou de uma classe de problemas, em um número finito de etapas.
[ii] MIRANDA, Marcio Nunes. Algoritmos Genéticos: Fundamentos e Aplicações. Disponível em: http://www.gta.ufrj.br/~marcio/genetic.html. Acesso: 1 set.2008.
[iii] Conforme o astrofísico Sir Arthur Eddington.
[iv] MIRANDA, Marcio Nunes. Algoritmos Genéticos: Fundamentos e Aplicações. Disponível em: http://www.gta.ufrj.br/~marcio/genetic.html. Acesso: 1 set.2008.
[v] CARVALHO, André Ponce de Leon F. de. Algoritmos Genéticos. Disponível em: http://www.icmc.usp.br/~andre/research/genetic/index.htm#cara. Acesso: 1 set.2008.
[vi] MIRANDA, Marcio Nunes. Algoritmos Genéticos: Fundamentos e Aplicações. Disponível em: http://www.gta.ufrj.br/~marcio/genetic.html. Acesso: 1 set.2008.
[vii] Ibid.
[viii] Ibid.
[ix] CARVALHO, André Ponce de Leon F. de. Algoritmos Genéticos. Disponível em: http://www.icmc.usp.br/~andre/research/genetic/index.htm#cara. Acesso: 1 set.2008.