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...
-
Então a PEG consiste num algoritmo genético, porque
se inspira no princípio...
-
Sabemos que a PEG utiliza cromossomas lineares
(genótipo), compostos por...
-
Em que medida a sua formação académica em Bioquímica
e os seus...
-
Será possível estabelecer algum paralelo entre as
diferenças estruturais do...
-
Os algoritmos genéticos baseiam-se sempre numa grande
simplificação da...
-
Verificámos que a aplicação da PEG, o único algoritmo
genético disponível...
-
Como atrás referido, a PEG trabalha com genes
múltiplos. Comparando...
-
Os algoritmos genéticos baseiam-se na Teoria da
Evolução, o que faz lembrar...
-
Sabemos que acaba de publicar muito recentemente a 2ª
edição do seu livro...
-
Para facilitar a aplicação da PEG desenvolveu um
software, designado...
-
Qual a razão, ou razões, da PEG possuir uma
performance computacional tão...
-
Parece-nos que a PEG pode ainda ser considerada muito
recente, pois foi...
-
Por favor, fale-nos agora um pouco da empresa que
criou em 2000, a Gepsoft...
-
Sabemos que a PEG é capaz de resolver, com enorme
sucesso, devido ao seu...
-
Para terminar, perguntamos como tem sido a aceitação
da PEG por parte da...
-
Apesar das dificuldades de percurso que descreve,
acreditamos que o seu...
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.
***
|