Por que Não Evoluímos os Softwares: Um Cientista da Computação Considera a Teoria Darwinista

Código-fonte: a informação é o coração dos sistemas cibernéticos / ®

Por Andrew Jones (adaptação)

A ideia básica da evolução darwiniana faz muito sentido à primeira vista: ancestralidade comum com modificação interminável moldada pela seleção natural. No entanto, se você cavar mais fundo, há razões para duvidar.

Os biólogos são treinados para usar a ancestralidade comum como um princípio organizador para todos os seus dados, e para a maioria dos biólogos o mecanismo darwiniano vem no mesmo pacote. Evidentemente, eles não vêem muita razão para duvidar desse mecanismo. Há exceções à regra, é claro, entre os biólogos que leram Mike Behe ​​ou Stephen Meyer cuidadosamente, por exemplo. Alguns proponentes do Design Inteligente acreditam na ancestralidade comum, mas não na seleção natural como responsável por todo o design biológico.

Por outro lado, cientistas da computação e engenheiros de software são treinados em princípios de design, e também têm experiência real de como sistemas funcionais complexos são criados e alterados de forma construtiva. Em particular, os engenheiros de software sabem o quão complexo pode ser implementar uma mudança “simples”. Dessa perspectiva, a história darwiniana é muito menos plausível. A seleção natural parece um pouco “fácil demais” se comparada ao mundo real.

Uma perspectiva diferente

Assim, os cientistas da computação têm uma perspectiva diferente sobre a biologia que poderia ser frutífera. Enquanto todos os dados biológicos ainda são criados e curados por biólogos, os cientistas da computação começaram a encorajar e provocar os biólogos a testar adequadamente as idéias da evolução darwiniana. Por exemplo, Winston Ewert propôs a hipótese do gráfico de dependência como uma explicação superior que explica a organização de dados biológicos de alto nível em termos de design.

Ainda mais recentemente, apareceu um outro artigo que aborda a biologia a partir de uma perspectiva da ciência da computação, desta vez perguntando se os algoritmos evolucionários e, em particular, a programação genética (PG) mostram o que um darwinista deve esperar.

Roman Yampolskiy começa afirmando alguns princípios:

Primeiro, uma teoria científica séria deve ser suficientemente precisa para ser simulada. Isso é controverso, mas acho que é um bom instinto: transformar qualquer ideia em um programa de computador obriga você a pensar sobre ela e defini-la com muita precisão. Na ciência, a precisão traz clareza e ajuda a evitar o pensamento positivo (viés de confirmação) e conclusões plausíveis, mas erradas.

Segundo, se você simular algo que deveria ser real, os resultados da simulação devem corresponder à realidade. Portanto, se a evolução darwiniana é uma teoria científica correta, devemos ser capazes de simulá-la e obter resultados que se parecem com o que vemos na biologia hoje.

Previsões darwinistas

Ele então argumenta que se Darwin soubesse sobre a biologia moderna e nossa capacidade de simular, ele poderia ter feito algumas previsões fortes:

Suas previsões podem ter incluído o seguinte: (1) simulações da evolução produzirão resultados estatisticamente semelhantes, pelo menos no que diz respeito à complexidade dos artefatos produzidos e (2) se os algoritmos evolutivos (AEs) continuassem produzindo resultados não triviais, os cientistas os executariam para sempre.

Da mesma forma, ele seria capaz de fazer algumas previsões, que seriam capazes de falsificar sua teoria, tais como (1) simulações representativas da evolução não produzirão resultados semelhantes aos observados na natureza, (2) os pesquisadores não serão capazes de evoluir softwares ou outros artefatos complexos ou novos, e (3) não haverá projetos executando AEs a longo prazo, pois suas saídas poderiam rapidamente parar de melhorar e se estabilizar. No que diz respeito ao conhecimento cultural público e geral, seria razoável prever que pessoas instruídas iriam reconhecer o AE mais antigo e o algoritmo evoluído mais complexo. Da mesma forma, até mesmo as crianças em idade escolar reconheceriam o organismo digital mais complexo já desenvolvido.

Após examinar o estado da arte dos algoritmos evolutivos, Yampolskiy descobre que ambas as previsões darwinistas não foram cumpridas e que todas as três falsificações estão confirmadas. Ele então discute várias possíveis razões pelas quais isso pode ser:

  • Nós falhamos em implementar a evolução darwiniana corretamente? Improvável.
  • Talvez o problema seja que software não é como biologia? É verdade que software feito por humanos é frequentemente mais “frágil” que sistemas biológicos. Mas o software não precisa ser “frágil”; não há qualquer lei que impeça os algoritmos genéticos de criar softwares robustos como na biologia.
  • Será que Darwin está errado?

Existem recursos computacionais insuficientes para simular a evolução? Talvez. Yampolskiy calcula que o poder computacional de todos os organismos supera largamente nossos recursos computacionais.

Problemas mais profundos

Mas também há problemas mais profundos. Citando Mewada et al . (enfase adicionada):

Algoritmos genéticos não se adaptam bem à complexidade. Ou seja, quando o número de elementos expostos à mutação é grande, geralmente há um aumento exponencial no tamanho do espaço de pesquisa. Isso torna extremamente difícil usar a técnica em problemas como projetar um motor, uma casa ou um avião. A fim de tornar tais problemas tratáveis ​​à busca evolutiva, eles devem ser divididos na representação mais simples possível. Por isso, normalmente vemos algoritmos evolutivos codificando designs para pás de ventiladores em vez de motores, formas de construção em vez de planos de construção detalhados e aerofólios em vez de projetos de aeronaves inteiras. O segundo problema de complexidade é a questão de como proteger peças que evoluíram para representar boas soluções a partir de mutações destrutivas adicionais, particularmente quando a sua avaliação de aptidão exige que elas se combinem bem com outras partes.

Yampolskiy conclui que o mecanismo de darwiniano não faz o que esperavam. Ele estabelece um desafio para a comunidade de algoritmos evolutivos de resolver isso.

Além disso, se algoritmos evolutivos fossem capazes de “quebrar a banca” da programação geral, então isso equivaleria a Inteligência Geral Artificial (AGI). Isso não aconteceu: a “Singularidade” (onde agentes inteligentes artificiais parecem capazes de criar agentes ainda mais inteligentes, tornando os seres humanos inúteis) não acontecerá em breve. Em vez disso, a AGI teria que aparecer de outra maneira:

[Se] a programação genética (PG) pudesse programar, implicaria que PG = AGI (inteligência geral artificial), mas não vemos nenhuma evidência experimental para tal afirmação. Na verdade, é mais provável que, uma vez que tenhamos o AGI, ela possa ser usado para criar uma função de adequação inteligente para a PG e, assim, desenvolver o software. A programação genética não será a causa da IA, mas um produto dela. No entanto, os métodos de neuroevolução para otimizar arquiteturas e parâmetros de aprendizado profundo continuam sendo uma forte possibilidade de criação de AGI.

Resumindo, Yampolskiy acredita que a AGI pode ser possível no futuro, mas que seria baseada em redes neurais e “aprendizado profundo”: muito mais parecido com um cérebro do que com a evolução darwiniana.

Uma sugestão implícita

Se você pensar bem, isso faz muito sentido. Sempre que somos capazes de rastrear com rigor a causa da criatividade no universo, parece haver um cérebro em algum lugar, em vez de, por exemplo, um bando de animais tentando matar um ao outro.

A sugestão provocativa implícita no artigo de Yampolskiy é que, embora a evolução simulada não seja criativa (com forte implicação de que a evolução não é criativa), um dia poderemos simular uma inteligência que seja criativa.

E isso me faz outra pergunta: e se a inteligência humana fosse projetada? E se a inteligência humana for inteligência artificial? De qualquer forma, parece mais razoável concluir que  não foi a evolução que fez isso.

 


Original: Andrew Jones. Why We Don’t Evolve Software: A Computer Scientist Considers Darwinian Theory. January 3, 2019.


1 Comentário

  1. É interessante notar nesta pesquisa como dois algoritmos bio-inspirados, os algorítimos genéticos e as redes neurais artificias, produzem resultados diferentes. O primeiro restringe suas soluções a problemas mais simples, porque, como o autor menciona, em problemas complexos o espaço de busca cresce exponencialmente. Enquanto o segundo tipo de algoritmo, resolve problemas cada vez mais complexos, visto que, já é bastante noticiado que as redes neurais profundas têm superado os seres humanos em muitas tarefas de reconhecimento de padrões, justamente onde o ser humano sempre foi muito melhor que as máquinas.

    Essa tendência ressalta o que o autor diz, que é mais plausível que os sistemas de inteligência artificial gerem algorítimos evolutivos do que o contrário.

    Ora, se supormos que a evolução, e consequentemente os algoritmos evolutivos, estão corretos, então estamos dizendo que um mecanismo que somente consegue criar sistemas simples, conseguiu, por acaso, criar um sistema extremamente complexo como o cérebro humano, sobre o qual as redes neurais são inspiradas.

    Se supormos que o cérebro humano é produto de design, então concluímos que ele pode sim conceber um mecanismo evolutivo, o que é plausível pelo que já foi explanado.

    Fica claro então, que pelo estado da arte, a evolução, representada por meio dos algorítimos evolucionário, está equivocada, enquanto um projeto de design explica melhor os sistemas complexos existentes.

Faça um comentário

Seu e-mail não será publicado.


*