Article, News, Philosophy, Science

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 ?