Interview with C. Ferreira, 2006


Dr. Ferreira's interview from September 23, 2006 for ALAGAMARES.
 

Interview with Cândida Ferreira
By Ricardo Carvalho


Cara Dra. Cândida Ferreira, em primeiro lugar, agradecemos a gentileza que teve em nos conceder esta entrevista. Em 2002, através da European Network of Excellence in Evolutionary Computing (EvoWeb), tomámos conhecimento da existência da Programação de Expressão Genética (PEG), conceito este por si criado. Como surgiu a ideia que lhe deu origem e, em traços gerais, em que consiste e para que serve este novo algoritmo?

Obrigada eu, Ricardo, pelo seu interesse e pelo convite para esta entrevista. É um prazer para mim estar aqui e se este fórum disponibilizado pela ALAGAMARES conseguir entusiasmar ainda que seja uma só pessoa pela Programação de Expressão Genética, já não era nada mau. Espero no entanto que consigamos despertar a curiosidade de muito mais gente para estas técnicas novas da computação evolutiva.

É difícil de saber como é que a ideia surgiu, pois foi mais um processo que uma ideia. Mas eu estava a morrer de tédio na altura, a ensinar bioquímica num departamento da Universidade dos Açores perdido na Ilha Terceira sem possibilidades de fazer investigação naquilo que era a minha área na altura, a biologia molecular. Por isso virei-me para os computadores e a modelação e comecei a estudar e a implementar algoritmos genéticos. E quando estava a tentar implementar um dos algoritmos mais complexos (a Programação Genética) que envolve a criação de estruturas em árvore (programas de computador claramente segmentados e representados em diagramas), muito naturalmente utilizei os meus conhecimentos em bioquímica e biologia molecular e acabei com um algoritmo com uma organização estrutural única e muito mais poderoso que a Programação Genética. Este novo algoritmo, o qual eu designei por Programação de Expressão Genética, também serve para evoluir programas de computador que são, a maior parte das vezes, modelos matemáticos.
 

Então a PEG consiste num algoritmo genético, porque se inspira no princípio darwiniano da evolução das espécies e na genética. Não é assim? Sabemos que os algoritmos genéticos não são novos, porque já John Holland (1975) e David Goldberg (1989) os apresentaram e aplicaram computacionalmente há várias décadas. Que inovações apresenta a PEG face aos outros algoritmos mais conhecidos, nomeadamente face aos Algoritmos Genéticos (AG) e à Programação Genética (PG)?

É verdade que a Programação de Expressão Genética é também um algoritmo genético pois utiliza o mesmo princípio darwiniano da selecção natural para evoluir modelos computacionais ou, duma forma mais geral, descobrir soluções para problemas. Assim, todos os algoritmos genéticos (AG, PG, PEG, e outros) têm pelo menos três coisas em comum: (1) utilizam populações de indivíduos (soluções para o problema); (2) introduzem variação genética na população usando um ou mais operadores genéticos como por exemplo a mutação ou a recombinação; e (3) seleccionam, de acordo com a aptidão, os indivíduos que depois se reproduzem para criar a nova geração.

Quanto às diferenças, há várias, mas a PEG, por ser um algoritmo tão inovador e tão versátil, oferece algumas vantagens não só relativamente à Programação Genética (o algoritmo com mais afinidades com a PEG) mas também aos Algoritmos Genéticos. Por exemplo, os Algoritmos Genéticos de Holland são essencialmente usados em problemas de optimização de parâmetros, com os parâmetros representados duma forma muito simples num genoma linear. Este sistema funciona bastante bem e até melhor que a maior parte dos métodos matemáticos que existem para resolver o mesmo tipo de problema mas, mesmo assim, por vezes a evolução do AG como que encrava num determinado ponto e já não consegue encontrar melhores soluções. A PEG, devido ao facto de evoluir estruturas em árvore e por ser um sistema multigénico (isto é, pode evoluir múltiplas árvores), pode também ser utilizada para optimização de parâmetros (a PG não pode, pois só consegue evoluir sistemas com uma árvore só) e, ao contrário dos AG, quase nunca encrava durante a pesquisa e portanto pode continuar indefinidamente à procura da melhor solução para o problema.

Mas as principais diferenças e inovações existem entre a PEG e a PG. Antes de mais nada, estes dois algoritmos partilham ainda uma outra coisa: ambos evoluem estruturas em árvore. Mas similarmente ao que acontece na natureza, as estruturas evoluídas pela PEG estão codificadas numa estrutura muito mais simples: um genoma linear de tamanho fixo. E este genoma foi concebido de forma a que todas as estruturas lá codificadas, quando expressas, resultem sempre em estruturas válidas. Assim, na PEG, temos árvores de diferentes formas e tamanhos codificadas numa estrutura linear de tamanho fixo. E como o genoma está completamente separado das estruturas que codifica (o fenótipo, que neste caso corresponde evidentemente às árvores), é possível aplicar no genoma o mesmo tipo de modificações genéticas que ocorrem na natureza: mutação, recombinação, transposição, etc. E uma vez que a organização estrutural do genoma garante invariavelmente a formação de estruturas válidas, a PEG, ao contrário da PG, é um sistema evolutivo artificial que simula lindamente a natureza e, como ela, é extremamente eficiente e inventivo.

Quanto à Programação Genética, ela é muito mais limitada, pois as estruturas em árvore que ela evolui não estão codificadas num genoma autónomo e simples e portanto só é possível fazer modificações nestas árvores podando ou enxertando ramos aqui e acolá. Evidentemente, o poder transformador deste tipo de modificação fica muito aquém do que é possível alcançar-se com sistemas semelhantes ao sistema da vida, mais formalmente conhecidos por sistemas genótipo/fenótipo. No caso da vida, trata-se evidentemente do sistema DNA/proteínas e no caso da PEG, do sistema cromossoma/árvores.

Depois da invenção deste sistema básico cromossoma/árvores, não foi difícil expandir este sistema para criar outros sistemas ligeiramente mais complexos e mais poderosos como, por exemplo, sistemas multigénicos e sistemas multicelulares, coisas completamente inacessíveis a sistemas evolutivos rudimentares como a PG.
 

Sabemos que a PEG utiliza cromossomas lineares (genótipo), compostos por genes estruturados numa cabeça e numa cauda, que correspondem ao genoma e estão sujeitos a operadores genéticos conhecidos. Mas estes também codificam árvores de expressão (fenótipo), sendo estas o objecto do processo de selecção. É na criação destas duas entidades distintas, o genoma e a árvore de expressão (genótipo/fenótipo), com funções específicas mas traduzíveis uma na outra através da linguagem Karva, por si criada, que reside o segredo do tão elevado desempenho deste novo algoritmo?

É verdade. Mas é importante frisar aqui que o genoma neste meu sistema pode ser modificado por todo e qualquer tipo de operador genético (incluindo a mutação, que é o mais poderoso de todos eles) sem qualquer tipo de restrição e que, mesmo assim, a sua expressão resulta sempre em estruturas válidas (na natureza acontece o mesmo: uma proteína é uma proteína é uma proteína).

Antes da PEG, outras pessoas tentaram criar sistemas genótipo/fenótipo (e eles ainda hoje existem), mas as estruturas criadas por estes sistemas são a maior parte das vezes estruturas inválidas e por isso eles nunca conseguiram ir muito mais além que a Programação Genética em termos de eficiência.
 

Em que medida a sua formação académica em Bioquímica e os seus conhecimentos da Teoria da Evolução foram importantes para a concepção de um sistema de vida artificial como a PEG?

Eu penso que a minha formação em bioquímica e a minha investigação em biologia molecular, juntamente com o meu interesse em evolução, contribuíram grandemente para a criação da PEG. Na altura eu estava praticamente a aprender a programar e, dada a minha paixão pela teoria da evolução, comecei por programar alguns algoritmos simples tirados basicamente dos livros do Dawkins. O importante é que eu fiz tudinho por mim própria pois nem sequer sabia na altura que havia pacotes prontinhos a usar que só com umas modificações me resolviam o problema. Por isso quando estava a tentar implementar a Programação Genética, eu também comecei do zero e portanto fiz tudo à minha maneira, aplicando aquilo que sabia da bioquímica e da evolução. Por isso nunca me passou pela cabeça criar um sistema tipo PG sem um genótipo e fenótipo definidos (na verdade, na altura, eu nem sequer tinha reparado que a PG não tinha um genótipo autónomo e separado do fenótipo) e concentrei todos os meus esforços a arranjar forma de codificar árvores complexas em sistemas lineares simples, pois é assim que na natureza estas coisas funcionam (a informação para codificar todos os seres vivos está codificada na estrutura linear do DNA). Foi um processo extremamente criativo com montes de ideias e alguns impasses, mas sempre que as coisas pareciam não avançar eu tentava convencer-me a mim própria que não havia de ser muito difícil evoluir artificialmente umas meras estruturas em árvore já que a natureza consegue fazer coisas muito mais sofisticadas com o sistema DNA/proteínas. Portanto foi só uma questão de destilar exactamente aquilo que era importante para o sistema funcionar. Primeiro, tinha que ter um genótipo autónomo. Segundo, tinha que poder aplicar a mutação e outros operadores genéticos sem qualquer tipo de restrição. Terceiro, o genoma tinha que codificar sempre para estruturas válidas. Quarto, tinha que ser suficientemente flexível para poder acomodar níveis superiores de complexidade (genes múltiplos, para começar). E por último, tinha que poder explorar alguns dos truques que a própria vida explora, como a neutralidade e a duplicação de genes ou pequenas sequências.
 

Será possível estabelecer algum paralelo entre as diferenças estruturais do DNA, do RNA e das proteínas, que existem em todos os seres vivos, e as diferenças entre os Algoritmos Genéticos, a Programação Genética e a PEG, esta última, conforme já referido, por si idealizada e implementada computacionalmente?

É realmente possível e, de facto, a complexidade e o comportamento dessas macromoléculas foram importantíssimos não só para a concepção das estruturas fundamentais da PEG mas também para compreender a posição da PEG relativamente aos Algoritmos Genéticos e à Programação Genética. O sistema DNA/proteínas da vida na terra é um sistema genótipo/fenótipo onde a informação codificada no DNA é expressa em proteínas. O DNA é uma estrutura linear extremamente simples, composta exclusivamente por quatro elementos: as bases A, G, T e C. Funcionalmente, o DNA é praticamente inerte, mas a combinação das bases três a três permite codificar para elementos com uma actividade química muito mais elevada e diversa: os aminoácidos. E a organização espacial destes aminoácidos resulta em estruturas com uma riqueza funcional ilimitada: as proteínas. Assim, uma estrutura linear praticamente amorfa dá origem, através da aplicação de regras de expressão verdadeiramente simples, a estruturas extremamente complexas capazes de executar uma diversidade virtualmente infinita de funções. E foi através de mutações na estrutura simples do DNA que na natureza se criou toda a diversidade de seres vivos, passados e presentes.

No sistema genótipo/fenótipo da PEG, o cromossoma e as árvores correspondem respectivamente ao DNA e às proteínas. Os cromossomas da PEG são também estruturas lineares compostas por genes que depois são expressos em árvores. Estas árvores exibem um grau de complexidade muito superior às estruturas lineares que lhe deram origem e, similarmente às proteínas, podem desempenhar um número virtualmente infinito de funções. Assim, no sistema da PEG temos programas de computador extremamente sofisticados codificados em sistemas simples lineares. E como na natureza, é mutando os cromossomas que na PEG se consegue uma grande diversidade de programas. Mas tanto na Programação Genética como nos Algoritmos Genéticos não existe um sistema genótipo/fenótipo definido e as estruturas básicas destes algoritmos (cromossomas nos AG e árvores na PG) são aquilo que o Richard Dawkins chama replicadores simples, isto é, estruturas que funcionam ao mesmo tempo como genótipo e fenótipo. As estruturas usadas nos AG – os cromossomas – são semelhantes ao DNA na medida em que são estruturas lineares extremamente simples. E dada a sua simplicidade, a diversidade de funções que estas estruturas podem desempenhar é bastante limitada. Na Programação Genética, os replicadores (as árvores) são consideravelmente mais complexos, mas como estas estruturas não são codificadas num genoma linear, elas só podem ser transformadas através de modificações nelas aplicadas directamente. Isto faz lembrar um pouco o que se pensa ter acontecido nos primórdios da vida na terra, onde replicadores simples do tipo do RNA acumulavam tanto a função de genótipo como fenótipo. No entanto, a explosão da vida na terra, em toda a sua diversidade e esplendor, só foi possível quando estes replicadores simples evoluíram para sistemas mais complexos com um genótipo e um fenótipo perfeitamente definidos e autónomos. À escala dos algoritmos genéticos artificias (a vida é obviamente o algoritmo genético supremo), foi mais ou menos isto que aconteceu com a invenção da PEG: os replicadores rudimentares dos AG e da PG foram suplantados pelos replicadores sofisticados da PEG com genótipo e fenótipo definidos.
 

Os algoritmos genéticos da actualidade baseiam-se sempre numa grande simplificação da Biologia, porque trabalham com um número limitado de operadores genéticos e um número muito diminuto de cromossomas, a maioria deles unigénicos. Mas a realidade biológica é muito mais complexa. Por exemplo, o corpo humano contém cerca de 100 triliões de células, onde se encontra, no núcleo de cada uma, o genoma, que agora sabemos conter mais de 30.000 genes. Esta super-simplificação da realidade não faz com que os algoritmos genéticos, e por razões idênticas também as outras ferramentas da inteligência artificial, fiquem sempre condicionados à abordagem de problemas muito simples?

Sem dúvida. Não há nada mais complexo que os seres vivos e mesmo a bactéria mais simples é prodigiosamente complexa. Quando comparados com os seres vivos, os programas ou modelos criados pela PEG ou outros sistemas de inteligência artificial são ridiculamente simples. Mas não é com os feitos da vida na terra que temos que comparar os produtos da inteligência artificial: é com aquilo que nós, os seres mais inteligentes, somos capazes de resolver com os métodos tradicionais da matemática e da estatística. E aí, sim, aquilo que se consegue criar com estes sistemas evolutivos é espantoso e estes métodos estão-se a tornar cada vez mais importantes para compreendermos e explorarmos melhor o mundo à nossa volta. É que não é muito difícil ficarmos completamente atados de pés e mãos quando temos que resolver problemas com dezenas, centenas, ou milhares de variáveis só com a ajuda dos métodos tradicionais. No entanto, com a ajuda destas novas tecnologias, problemas desta complexidade são resolvidos com a mesma destreza que os problemas mais simples pois, em todos os casos, os mesmos princípios da evolução são aplicados para descobrir boas soluções.
 

Verificámos que a aplicação da PEG, o único algoritmo genético disponível na actualidade que considera genes múltiplos, permite resolver problemas de grande complexidade, muito deles difíceis, ou até mesmo impossíveis, de abordar através dos métodos clássicos da análise numérica, da investigação operacional e da estatística. Em que áreas científicas a PEG pode ser aplicada com maior sucesso? Pode dar-nos alguns exemplos práticos em que esteja a ser utilizada e a produzir bons resultados?

Fundamentalmente, a PEG é usada para criar modelos matemáticos e consequentemente não há limites quanto às suas aplicações: como os modelos matemáticos, a PEG tem aplicação em virtualmente todas as áreas científicas e tecnológicas. Posso, no entanto, dar alguns exemplos concretos onde a PEG, através do uso do software desenvolvido pela Gepsoft, está a produzir bons resultados: criação de novos medicamentos e drogas, diagnóstico de doenças, DNA microarrays, física de alta energia, ondas e marés, serviços financeiros, detecção de fraude, consistência de cimentos e lamas, corridas de cavalos e carros, desenho de electrodomésticos, circuitos analógicos e digitais, filtros, estudos populacionais, relações parasita-hospedeiro, propriedades de pavimentos, desenho de linhas de produção, performance de compressores e bombas, chuvas e evaporação, etc.
 

Como atrás referido, a PEG trabalha com genes múltiplos. Comparando cromossomas de idênticas dimensões mas com diferentes números de genes, existem vantagens óbvias dos cromossomas que utilizam mais genes, ainda que alguns deles possam ser transformados em genes neutros pelo próprio algoritmo? E no que respeita às populações de cromossomas, existe vantagem evolutiva para a PEG em considerar populações diminutas, da ordem de apenas 30 cromossomas? O conhecido fenómeno de Deriva Genética, que ocorre em pequenas populações isoladas, possui algum tipo de paralelo na PEG? O uso de uma população fundadora mais ampla, por exemplo da ordem de 1000 cromossomas, não possibilita uma pesquisa, no universo de soluções para determinado problema, igualmente eficaz em menor número de gerações?

Na natureza, a informação genética está armazenada em genes e são as diferentes estruturas expressas por estes genes (proteínas) que depois se organizam para formar coisas ainda mais complexas (ribossomas, microtúbulos, membranas, etc.), que por sua vez se organizam em estruturas ainda mais complexas (células, tecidos, órgãos, etc.), culminando com o organismo. Olhando para as coisas desta perspectiva, não é difícil imaginar o grau de complexidade que se alcançaria com um sistema unigénico que codificasse para uma única proteína: por mais complexa que essa proteína fosse, ela nunca ia deixar de ser uma simples proteína, para sempre incapaz de fazer parte de estruturas que a transcendessem. Similarmente, na PEG os cromossomas estão organizados em genes e cada gene codifica para uma árvore (programa) diferente, que por sua vez se organizam em programas mais complexos. Evidentemente os níveis de organização possíveis na PEG são muito mais limitados que no sistema DNA/proteínas da vida, mas a ideia é a mesma: a organização de estruturas simples dá origem a estruturas mais complexas e, no caso da PEG, apesar de ser possível codificar todas as estruturas evoluídas num único mega-gene, é muito mais fácil evoluir bons programas se a informação estiver dividida em genes mais pequenos. E quando isso acontece há sempre lugar para fragmentos neutros que, como na natureza, podem chegar a ser mesmo genes completos.

Quanto ao tamanho das populações usadas na PEG, é quase uma questão de gosto pois, de uma forma ou de outra, consegue-se sempre uma boa evolução: quando se usam populações pequenas com cerca de 30 indivíduos são precisas evidentemente mais gerações do que as que seriam necessárias se se usassem, por exemplo, populações com 1000 indivíduos. Como num computador o processamento de populações mais numerosas demora mais tempo, o tempo que é necessário para processar, por exemplo, 1000 gerações de 30 indivíduos é mais ou menos o mesmo que é necessário para processar 30 gerações de 1000 indivíduos. É certo que há diferenças no perfil e na dinâmica destas populações, mas os resultados finais conseguidos em ambos os casos não são muito diferentes pois, como na natureza, a PEG tem ao seu dispor poderosos operadores genéticos que dão excelentes resultados mesmo com populações pequenas desde que, evidentemente, se deixe o sistema evoluir por um número suficiente de gerações. Por exemplo, o fenómeno da deriva genética que refere está sempre em acção e ocorre tanto em populações pequenas como em grandes, mas com os operadores certos, como por exemplo a mutação, é sempre possível manter as populações saudáveis (isto é, com uma diversidade razoável ao nível do genoma) e até explorar a deriva genética para explorar caminhos deferentes. No entanto, a deriva genética pode ser problemática se as populações não tiverem ao seu dispor operadores genéticos poderosos como a mutação. Evidentemente isto nunca acontece na natureza, mas nos sistemas evolutivos artificiais como a Programação Genética e os Algoritmos Genéticos onde a maior parte das vezes a diversidade das populações depende totalmente da recombinação, os resultados da deriva genética acabam quase sempre por ficar expostos pois estas populações não têm forma de sair dos buracos onde caíram. De facto, sem a ajuda da mutação, mesmo quando se usam populações muito grandes, sistemas como a PG ou os AG acabam mais tarde ou mais cedo por estagnar e só com populações gigantescas e extremamente dispendiosas em termos computacionais é que a PG consegue funcionar devidamente. E claro, neste caso populações pequenas da ordem dos 30 indivíduos são impraticáveis e pura e simplesmente não funcionam.

Em sistemas como a PEG a evolução pode continuar sem problemas mesmo quando se dá uma extinção em massa e só sobrevive um indivíduo (a população fundadora mais pequena que se pode imaginar) pois a mutação entra logo em acção e cria logo na geração seguinte a diversidade genética necessária para continuar o processo evolutivo.
 

Os algoritmos genéticos baseiam-se na Teoria da Evolução, o que faz lembrar o mito existente de que o darwinismo é uma teoria do acaso, uma espécie de acaso cego. Mas acreditamos que assim não acontece, devido ao carácter acumulativo do processo. No entanto, tal como Dawkins explica, o processo de selecção natural, apresentado por Darwin, não imagina qualquer objectivo, não tem imaginação nem olhos, e tudo se passa como se o criador da vida, a existir, fosse um “relojoeiro cego”. Nestas condições, como é então possível assegurar, no domínio computacional, sem testar todo o infinito domínio de soluções possíveis, que algoritmos baseados nesta teoria podem conduzir à solução óptima de determinado problema?

Esta pergunta é muito boa, pois expõe aqui algumas diferenças entre o que se passa na natureza e o que se passa nos sistemas evolutivos computacionais. O que se passa nos sistemas computacionais (e aqui eu estou-me a referir somente a algoritmos genéticos do tipo da PEG, pois os sistemas computacionais de vida artificial têm obviamente outros objectivos) faz lembrar um pouco a selecção artificial que a nossa espécie tem praticado ao longo dos milhares de anos que fomos apurando raças de animais domésticos e as mais variadas plantas e árvores de fruto. Só que no caso dos sistemas computacionais o processo de selecção consegue ainda ser mais direccionado, pois nós sabemos exactamente aquilo pretendemos. É certo que não conhecemos todos os detalhes quanto à estrutura e conteúdo das soluções mas, e ao contrário do que acontece na natureza, nós sabemos como determinar rigorosamente a aptidão de todos os indivíduos criados (soluções potencias para o problema). E usando a aptidão de cada indivíduo para os diferenciar e seleccionar, estamos a encaminhar a evolução exactamente na direcção que pretendemos, isto é, no sentido de soluções cada vez mais rigorosas para o problema específico que se está a tentar resolver.
 

Sabemos que acaba de publicar muito recentemente a segunda edição do seu livro “Gene Expression Programming: Mathematical Modeling by an Artificial Intelligence” (2006), através da editora alemã Springer-Verlag, e até já o lemos porque teve a amabilidade de nos oferecer uma cópia do mesmo. Em nossa opinião, trata-se de um livro espantoso, bem estruturado, didáctico e pleno de informação nova. Em traços gerais, qual o seu conteúdo e que informação adicional inclui face à primeira edição?

No meu livro eu descrevo o meu sistema da PEG, começando por dar uma perspectiva biológica às estruturas e mecanismos usados tanto na PEG como nos Algoritmos Genéticos e a Programação Genética. Depois continuo com a descrição detalhada dum algoritmo genético, usando o sistema mais simples da PEG como exemplo. E por último, continuo com a descrição de vários algoritmos que exploram a organização básica da PEG, desde algoritmos para optimização de parâmetros, regressão simbólica e síntese lógica, até algoritmos para indução de polinómios, redes neuronais e árvores de decisão. E independentemente da sofisticação do algoritmo, todos eles são explicados totalmente no livro sem ser necessário recorrer a outras fontes para perceber como funcionam coisas complicadas como as redes neuronais ou as árvores de decisão. De facto, com os exemplos dados no livro, tanto simples como complexos, penso ter conseguido mostrar não só o funcionamento de todos estes algoritmos mas também o alcance que eles podem ter em termos de aplicações práticas.

Relativamente à segunda edição, ela foi consideravelmente expandida e revista, com um total de 7 capítulos na primeira edição de 12 na segunda. Isto reflecte não só materiais novos (por exemplo, os capítulos sobre as árvores de decisão e as funções automaticamente definidas são totalmente novos), mas também uma organização diferente. Com esta nova organização penso ter conseguido chamar mais a atenção para as dimensões e o alcance deste novo sistema, pois a PEG não é somente um único algoritmo: ela é um sistema evolutivo extremamente flexível que pode ser usado para criar estruturas matemáticas e lógicas altamente sofisticadas, desde modelos matemáticos convencionais até estruturas mais complexas como as redes neuronais e as árvores de decisão. E o mais importante é que a criação destas estruturas com a PEG não se trata dum mero exercício académico: graças à alta performance da PEG, estas estruturas podem ser eficientemente exploradas para criar modelos altamente eficazes.
 

Para facilitar a aplicação da PEG desenvolveu um software, designado inicialmente, em 2001, por Automatic Problem Solver, o qual foi agora renomeado para GeneXproTools. Esta última versão, a 4.0, parece-nos extremamente potente, bem programada e versátil. Pode falar-nos um pouco de como surgiu a ideia de desenvolver esta aplicação, de como a comercializa e quais as suas potencialidades? E pode ser experimentada antes de ser adquirida?

É difícil dizer como surgiu a ideia para criar o GeneXproTools, pois quando se cria um sistema como a PEG e se começam a ver os resultados, começam-se logo a fazer castelos no ar. Penso que depois é só uma questão de se começar a trabalhar no interface e voilá: uma aplicação que torna a PEG acessível a toda a gente. É verdade que com uma aplicação como o GeneXproTools no mercado, se torna um bocadinho mais difícil para os inimigos da PEG continuarem a ignorá-la ou mesmo a apropriarem-se dela. E isto foi talvez a razão mais forte para arrancar com a Gepsoft e o GeneXproTools.

Acho que das potencialidades do GeneXproTools já falámos um pouco quando falámos da PEG e para o que ela serve. Mas em traços largos, o GeneXproTools implementa alguns dos algoritmos que eu desenvolvi e é uma ferramenta para criar modelos de regressão, classificação, análise de séries temporais e síntese lógica. Ele é comercializado através do website da Gepsoft onde se pode também fazer o download do software para experimentar antes de se adquirir.
 

Qual a razão, ou razões, da PEG possuir uma performance computacional tão revolucionária, quando comparada com a Programação Genética? É verdade que a sua eficácia de cálculo pode ultrapassá-la em várias ordens de grandeza? E que possibilidades este novo algoritmo computacional, implementado para já no GeneXproTools, abre aos utilizadores individuais e às pequenas empresas, que não têm possibilidades de acesso a supercomputação?

As razões para a superioridade da PEG já foram abordadas em várias perguntas e, como já sabe, têm a ver com a existência dum sistema genótipo/fenótipo que permite codificar estruturas complexas com formas e tamanhos diferentes em estruturas lineares simples com tamanho fixo. E igualmente importante é que este novo sistema não podia ser mais perfeito: ele garante duas coisas que são verdadeiramente essenciais para uma boa evolução: primeira, não há qualquer restrição quanto ao tipo de modificações que podem ser feitas no genoma e, segunda, todas as modificações causadas no genoma resultam sempre em programas válidos. Estes são de facto os ingredientes essenciais para uma evolução eficiente. Talvez seja um bocado exagerado dizer que a Programação Genética está tão longe da PEG como a vida na terra como a conhecemos hoje está longe dos primeiros replicadores que apareceram há mais de 6 biliões de anos, mas acho que em termos teóricos se pode estabelecer este paralelo entre a PEG e a PG, pois ele ajuda a compreender a diferença em performance entre as duas técnicas. E de facto, quando se contabilizam essas diferenças ao longo dum conjunto vasto de aplicações, a PEG supera a PG entre 100 a 60.000 vezes. Esta é uma das razões pelas quais o GeneXproTools está a ter tanto sucesso pois, como diz, estas ferramentas estão agora acessíveis a toda a gente: tanto utilizadores individuais como pequenas empresas. A título de curiosidade, a PG usa normalmente sistemas com milhares de computadores para tentar resolver problemas que, com a PEG, se resolvem em poucos segundos num computador pessoal.
 

Parece-nos que a PEG pode ainda ser considerada muito recente, pois foi apresentada faz somente 5 anos. Para além do livro atrás citado, existem mais fontes de informação sobre a PEG, nomeadamente on-line? Existe alguma bibliografia dos livros e artigos publicados até à data sobre o assunto? E pode indicar-nos algum artigo de carácter introdutório, escrito em português, para recomendarmos aos nossos leitores interessados neste tema?

Não há dúvidas que a PEG é ainda bastante recente, mas já existem imensas coisas on-line. Por exemplo, todos os meus artigos sobre o assunto e a primeira edição do meu livro estão acessíveis on-line de graça. Há também outros artigos publicados por outras pessoas que também estão acessíveis on-line, uns grátis outros não. Os links para todos estes artigos e livros podem ser encontrados na GEP Online Bibliography, uma página que eu mantenho no site oficial da PEG. Quanto a publicações em português, receio bem que não há muitas, mas eu traduzi logo no princípio o primeiro artigo que eu publiquei on-line sobre a PEG. Este artigo é, no entanto, ligeiramente diferente da versão final publicada na revista Complex Systems em 2001 e vale sempre a pena ler esta versão. Ambos os artigos estão acessíveis através da minha página pessoal.
 

Por favor, fale-nos agora um pouco da empresa que criou em 2000, a GEPSOFT. Verificámos que através dela comercializa o citado software, o GeneXproTools, e que também foi criado um website da empresa. Qual o seu endereço? O software e o novo livro podem ambos ser adquiridos on-line?

A Gepsoft foi criada em Portugal em 2000. Logo na altura criou-se o website da empresa (https://www.gepsoft.com) e saímos logo nesse ano com o primeiro produto, o componente COM GEPSR, que não teve muito sucesso comercial e que foi abandonado depois da versão 2.0. Foi também em 2000 que começámos a trabalhar no APS e em 2001 ganhámos o 3º prémio da Microsoft Portugal para a Ciência com a primeira versão do APS, que agora dá pelo nome de GeneXproTools. E como a maior parte dos nossos clientes estavam no Reino Unido e nos EUA, a Gepsoft mudou-se para a Inglaterra em agosto de 2001 e já saímos aqui com mais duas versões do GeneXproTools que vai agora na versão 4.0. Tanto o software como a 2ª edição do meu livro podem ser adquiridos on-line, mas a Gepsoft só comercializa o software. A comercialização do livro é totalmente da responsabilidade da Springer-Verlag, mas eu mantenho uma página sobre o livro no site da PEG com links para a amazon.com e a amazon.co.uk onde o livro pode ser adquirido.
 

Sabemos que a PEG é capaz de resolver, com enorme sucesso, devido ao seu enorme poder de generalização, variados problemas de regressão simbólica, de classificação, de síntese lógica e até de previsão de séries temporais. Mas existem outras áreas que podem também ser abordadas pela PEG, tais como a arquitectura de redes neuronais, a resolução de árvores de decisão e a optimização de parâmetros. Existe intenção da GEPSOFT em expandir e integrar, em futuras versões do GeneXproTools, estas outras ferramentas, tornando-o num pacote mais amplo de inteligência artificial?

Essas são de facto as nossas intenções e foi já tendo isso em vista que mudámos o nome do APS para GeneXproTools.
 

Para terminar, perguntamos como tem sido a aceitação da Programação de Expressão Genética por parte da comunidade científica? É verdade que, ao contrário do que seria de esperar, tem encontrado alguma resistência à publicação deste seu trabalho, tanto em revistas científicas como em alguns fóruns internacionais, e que ele não tem sido reconhecido por alguns especialistas internacionais da computação evolutiva? E como vê o actual panorama da computação evolutiva no nosso país, em Portugal? Pensa que no futuro, com algumas mudanças, poderá vir a ganhar alguma relevância e/ou reconhecimento internacional?

Eu penso que teria sido praticamente impossível para mim publicar o meu trabalho se não fosse a Web e a Internet, pois a PEG é realmente revolucionária e os principais líderes da Programação Genética viram logo quão poderosa ela era e, como se sentiram ameaçados, fizeram tudo por tudo para impedir que ela visse a luz do dia, pelo menos sob o meu nome. Por isso eu vi-me forçada a avançar com a publicação on-line do meu artigo inicial sobre a PEG. E felizmente isso abriu-me uma série de portas, pois o meu artigo acabou igualmente por chegar às mãos de pessoas impecáveis que também viram logo o poder da PEG e fizeram os possíveis para me ajudar: recebi logo vários convites para publicar o meu artigo em boas revistas e ele acabou por ser publicado sem grandes atrasos na revista Complex Systems; fui convidada para escrever um livro sobre a PEG (que o John Koza, o líder da PG, pouco depois boicotou, mas que felizmente em 2005 uma outra editora me convidou para publicar com eles a segunda edição); tenho recebido vários convites para apresentar artigos em conferências, revistas e monografias; vários convites para apresentar a PEG em várias universidades; fui convidada para dar umas quantas entrevistas (incluindo esta), tudo coisas que têm ajudado imenso a espalhar a PEG.

Quanto ao panorama da computação evolutiva no nosso país, receio bem que não lhe posso dar uma resposta informada, pois eu vim duma área completamente diferente e saí de Portugal logo depois de ter criado a PEG. Evidentemente que sempre que vejo qualquer coisa ou alguém de Portugal em conferências ou revistas, dou sempre uma olhada mas até à data ainda não encontrei nada particularmente relevante que se distinguisse do que se está a fazer um pouco por toda a parte. Talvez a forma de nos tornarmos importantes fosse abraçarmos aquilo que temos de único mas, e avaliando pelas reacções (ou ausência de reacções) que a PEG teve em Portugal entre o pessoal da computação evolutiva, não me parece que isso vá acontecer tão cedo. Curiosamente, em termos percentuais, Portugal é um dos países europeus para onde a Gepsoft tem vendido mais, logo a seguir ao Reino Unido e à Suécia, o que mostra, que pelo menos nas outras áreas, as pessoas são mais abertas e estão dispostas a abraçar o que é nosso (aproveito aqui para agradecer a toda a gente que nos tem apoiado desde o princípio).
 

Apesar das dificuldades de percurso que descreve, acreditamos que o seu trabalho, pela qualidade e carácter inovador já demonstrados, dará frutos e terá o reconhecimento devido num futuro, seguramente, muito próximo. Aproveitamos para desejar, a si e aos seus projectos futuros, os maiores sucessos e, mais uma vez, agradecemos a sua disponibilidade para esta entrevista. Um bem haja!

Muito obrigada por tudo: à Alagamares pela oportunidade e o espaço e ao Ricardo Carvalho a amabilidade de me convidar para esta entrevista. Agradeço especialmente o entusiasmo e o interesse manifestado pelo meu trabalho e o esforço e cuidado com que estruturou esta entrevista.
 


Reprint of article by Ricardo Carvalho posted September 23, 2006 at ALAGAMARES.
 

***


Last update: 23/July/2013
 
© Candida Ferreira
All rights reserved.