Computação Evolutiva
A Computação Evolutiva (EC) tem sido sido muito utilizada nos últimos anos, e a cada ano que passa, surgem novas aplicações para as técnicas desenvolvidas; apesar de ser uma área relativamente nova, pouca gente está dando a devida atenção ao que (ao menos na minha visão, e vou explicar porque) provavelmente terá um futuro promissor e revolucionário em relação à como podemos gerar a inovação a até mesmo aprender com ela, principalmente no que se relaciona com Algoritmos Evolutivos (EAs).
Em Março de 2003, uma reportagem foi publicada na revista Scientific American, com autoria de Koza, John R. e outros autores. O título desta reportagem (que eu recomendo pra quem não tem a minima noção do que estou falando) era: “Aperfeiçoando Inventos“, e esse foi o meu primeiro contato com a CE, que até hoje, como à muita gente, me deixou assombrado.
Enfim, como eu ia dizendo, esta reportagem falava sobre a utilização da Programação Genética (GP) no campo da eletrônica, um exemplo foi a criação de filtros low-pass que permitem a passagem de sinais de baixa frequência e atenuam sinais de alta frequência. Não sei se esta foi a primeira vez em que tal aplicação foi utilizada para a GP, mas o que eu achei absolutamente interessante nesta reportagem, não foi nem tanto a aplicação no campo da eletrônica (que tem seu mérito no pioneirismo), mas o que me surpreendeu foi que as invenções criadas utilizando GP eram altamente competitivas com as invenções criadas por humanos, no artigo o autor citava que a GP conseguiu reproduzir 15 invenções já patenteadas, alguns dos inventos representavam novas criações produzindo a mesma funcionalidade de suas criações anteriores enquanto que outras apresentavam melhorias.
Atualmente sei que existem cerca de 36 invenções que competem com invenções humanas, destas 36 invenções, 15 infringem ou repetem a mesma funcionalidade de invenções patenteadas no século XX e 6 delas também infringem ou duplicam a funcionalidade das invenções pateteadas anteriormente no século XXI, enquanto que 2 destas 36 invenções, foram patenteadas como novas invenções.
Mas o que isto realmente significa ? Significa apenas que temos mais algumas invenções ? Obviamente não, e aí é onde está a falta de atenção dada para a EC; maioria vê simplesmente apenas o resultado das inovações, o produto final, e deixam de ver o que realmente merece atenção: a maneira como elas foram criadas.
Para entendermos melhor a importância disto, é necessário saber o que a Programação Genética precisa para que estas invenções sejam criadas.
O que precisamos na Programação Genética, resumidamente é: uma estrutura que represente uma solução do problema, no caso do filtro low-pass, uma estrutura que represente as posições, ligações e componentes do circuito eletrônico; precisamos também de uma maneira de podermos recombinar duas destas estruturas, uma maneira de mutarmos cada uma destas estruturas e uma função, que aplicada sobre esta estrutura, nos diga o quão boa ela é, uma medida quantitativa, no caso do filtro low-pass, esta medida pode ser dada como a eficiência em que ela tem de deixar apenas sinais de baixa frequência passarem através do filtro.
Agora podemos perceber o que está acontecendo com a EC, chegamos em um dado momento em que podemos criar novas invenções de maneira completamente automatizada, ou como diria o autor do artigo, John Koza, inventamos uma máquina de gerar invenções.
Muitas destas invenções criadas utilizando a GP, são de difícil compreensão, mas sabemos que funcionam, a maneira como são criadas é como se dissessemos ao computador: “preciso de um circuito que bloqueie sinais de baixa frequência” e esta máquina geraria esta invenção, este circuito, que até então não sabiamos como criar, o circuito seria desconhecido para nós.
Agora imagine a seguinte situação: ainda não haviamos inventado o filtro low-pass, e então utilizariamos a GP para criar um, o resultado seria um filtro low-pass totalmente desconhecido, do qual poderiamos aprender com esta invenção criada por um computador. Além da GP apenas criar uma invenção, ela cria algo do qual podemos aprender, nos diz muito mais do que uma simples invenção.
Recentemente, foi publicado um artigo na Science com o título: “Distilling Free-Form Natural Laws from Experimental DataDistilling Free-Form Natural Laws from Experimental Data“, que demonstra o resultado de um novo método criado para realizar a regressão simbólica através de um conjunto de dados de sensores, a técnica inovadora utiliza derivadas parciais de cada par de variável para realizar comparações com os individuos gerados utilizando um Algoritmo Evolutivo semelhante à Programação Genética (GP). Sem nenhum conhecimento de física, cinemática ou geometria, o algoritmo descobriu algumas importantes leis de geometria (pra quem tem maior interesse, visite o site da universidade).
Este avanço significou um importante passo na regressão simbólica utilizando dados brutos empíricos coletados através de sensores. Mas o que mais isto significa ?
Comecemos por definir o que significa uma equação matemática: uma equação matemática, ou mais precisamente uma função matemática, dita a relação entre as variáveis dependentes e independentes de um domínio. Na física por exemplo, essa função matemática pode representar o conhecimento de uma lei natural, como as Leis de Newton por exemplo. Ou seja, uma função pode muito bem representar uma pequena parte do nosso conhecimento em relação ao mundo que nos cerca.
Ao realizar a regressão simbólica (descobrir a função que dita uma relação etnre as variáveis), não só descobrimos mais uma equação matemática, mas descobrimos uma lei natural e a partir disto, conseguimos prever com precisão qual o comportamento de um pêndulo por exemplo, ou como os planetas estão se afastando cada vez mais uns dos outros em relação à sua distância.
Como eu disse antes, o que devemos prestar atenção nisto tudo, é a forma como estas leis são descobertas, no caso da pesquisa publicada na Science, esta descoberta foi automatizada, ou seja, não foi necessário o conhecimento de física ou geometria para encontrar a função que dita a relação entre o movimento de alguns corpos, mas apenas os dados brutos coletados por sensores. O que realmente é importante aqui, é que estamos gerando conhecimento científico passível de testes rigorosos de forma automatizada, sem a necessidade do conhecimento prévio de geometria ou física.
Filosoficamente pensando, partindo do pressuposto que a da ciência da natureza, a Física, contém como princípios juízos sintéticos a priori, estamos claramente gerando estes juízos sintéticos a priori de forma automatizada, ou seja, podemos descobrir relações geométricas sem prévio conhecimento de geometria, um exemplo prático, é que poderiamos descobrir o Teorema de Pitágoras ou outras relações utilizando medições brutas de triângulos sem o conhecimento prévio do mesmo teorema. Ando meio sem tempo, mas ainda irei tentar realizar a regressão simbólica do clássico Teorema de Pitágoras utilizando imagens de triângulos, assim ficaria evidente que podemos descobrir juízos sintéticos a priori de forma automatizada.
Enfim, existem tantos experimentos que podemos ainda construir utilizando AEs que é só uma questão de tempo para que novas e importantes descobertas científicas sejam feitas.
O que mais podemos descobrir utilizando a Computação Evolutiva e o que o futuro nos reserva ?
Excelente introdução e idéia geral sobre GP.
Li o livro Biologia Digital do Peter J. Bentley a alguns anos atrás e fiquei impressionado com a capacidade dessa programação.
Estou estudando Matemática no Instituto Prandiano e descobrindo a verdadeira natureza da ciência, a aplicabilidade e a curiosidade em desvendar a physis.
Vou aproveitar e fazer uma pergunta que me deixa encucado. Você saberia me dizer se uma solução do problema do Caixeiro Viajante seria mais otimizada do que via um algoritmo Ant Collony ou outra solução?
Me orgulho em saber que um brasileiro é tão especializado nesse tipo de programação e tem se dedicado tanto a isso. Meus parabéns.
Olá Daniel ! Que bom que podemos compartilhar alguns gostos com brasileiros também =)
Cara, como o problema do TSP é um problema NP-completo e por sua vez passível de otimização utilizando heurísticas e etc, não se pode dizer de modo geral assim que a técnica X vai gerar uma solução mais otimizada que a técnica Y, o máximo que se pode dizer é por exemplo: Utilizando um GA com tais e tais operadores e de tal forma, uma solução razoável é encontrada antes do que a utilização de um algoritmo Ant Colony implementado de tal forma. Porque maioria dos algoritmos dependem do tempo, então entram várias questões, como o conceito que você usa para definir o “mais otimizado” deve estar no tempo e não independente. Um GA pode ficar rodando 3 meses e achar uma solução melhor que uma Ant Colony rodando em 4 meses por exemplo, mas executando-se de novo o mesmo GA ele pode não encontrar esta mesma solução, pelo fato de ser um método estocástico e não-determinístico; então essa afirmação não é tão simples assim, e se você precisa fazer ela, precisa também delimitar bem o seu contexto e a esfera de comparação entre as técnicas.
Eu tenho a revista SCIAM com a matéria Aperfeiçoando Invenções… É muito intrigante! Naquela época imaginei um Sistema Operacional programado inteiramente pela Programação Genética! Já imaginou isso?! Os computadores iriam funcionar como queríamos, mas nós não saberíamos como!
Este ano comecei a estudar eletrônica e, como sou fã da robótica, comecei a estudar os robôs analógicos (BEAM Robotic) e não tive como evitar em pensar: Será que é possível utilizar a Programação Genética para o desenvolvimento dos circuitos eletrônicos de robôs analógicos?! Pelo que vejo, ainda não existem robôs analógicos muito complexos no mundo… Não poderia a GP inventá-los?! Imagine quando o novíssimo memristor estiver disponível na “sopa” de componentes?! Abx!
Muito bom se houvessem recursos suficientes pra criar um SO usando apenas GP =)
Acredito que dê sim pra usar GP para circuitos eletrônicos de robôs analógicos, os filtros low pass que foram criados é um exemplo dessa possibilidade. Mas antes de se fazer isso, deve-se ter um ambiente pra poder simular estes circuitos em computador mesmo, tudo depende basicamente disto e do recurso computacional, mas conceitualmente acredito que é tão possível quanto os filtros low pass.
Abraço !