Olá, nosso convidado desta semana
é Stephanie Forrest
ela é Professora de Ciências da Computação
na universidade do Novo México
aí está, direto do Adaptive Comp. Lab
Stephanie também é prof. externa
do SantaFe Institute e copresidente do ISB
Steph tem trabalhado na intersecção entre
computação e biologia,
é expert em algoritmos genéticos
que estamos estudando nesta unidade.
Então, bem vinda Steph.
Obrigado, é um prazer estar aqui.
Eu sei que você estuda GA faz tempo
nós trabalhamos em projetos de GA
mas eu queria que você desse sua visão,
sobre por que GA são relevantes para
o estudo de sistemas complexos.
Primeiro lugar por que GA podem ser vistos
como um modelo de evolução darwiniana
Sobre uma perspectiva do modelo,
ele captura um dos mais importantes e
misteriosos processos da Terra: evolução.
A segunda, é que este modelo de evolução
pode ser visto como um tipo de estratégia.
Uma estratégia utilizada na natureza, mas
também adaptado como um algoritmo
computacional para ajudar no design
de sistemas. Então GA tem sido utilizados
na engenharia.
Então, apenas para lhe acompanhar
Por que evolução é um mistério?
Bem, primeiro de tudo,
ninguém... você não pode olhar para ela
Eu penso que isto é uma coisa
Então é um processo
que, voltando a Darwin, é proposto
como uma explicação para
como o mundo em que vivemos é o que é.
Mas isso não é algo que podemos observar.
É difícil de estudar experimentalmente.
Existem sistemas experimentais
que você pode estudar em tubos de ensaio,
como viroses e bactérias sofrem evolução
então podemos estudá-los experimentalmente
Mas eu penso isso:
quando nós confrontamos o mundo
é de alguma forma um mistério como o mundo
se tornou o que é, mesmo pensando,
Eu tendo a acreditar que o mundo
foi produzido por evolução,
isto não é sempre trivial de entender o
como que isto acontece mecanicamente?
Eu imagino, uma coisa ou outra.
Outro mistério, são as "transições
principais" onde o sistema está evoluindo,
sofre uma mudança organizacional
importante e a ação evolucionária
se coloca em um nível diferente
de organização. E, penso hoje, a maioria
das pessoas em evolução não entenderiam
como as mudanças acontecem.
Você diz que GA são modelos para evolução.
Você acha que eles podem nos dar
algum insight sobre evolução biológica?
Sim, eu penso.
Como? Você pode perguntar.
Bem, eles tem sido utilizados
para modelar processos evolucionários.
Não apenas biológicos, inclusive.
Em ciências sociais, você pode pensar,
GA como uma modelagem para como
uma inovação se difunde.
As pessoas têm escrito livros sobre isso
e a ideia é essa: ideias e
modas difundem-se, através de populações
um processo parecido a evolução darwiniana
Então você pensa que a evolução é útil,não
só para biologia, mas em outros campos?
Absolutamente!
Eu não diria que é a única ideia.
Eu penso que é uma importante ideia
para a maioria dos sistemas complexos.
O que você está estudando agora?
Em que você está excitada?
Particularmente no campo dos GA.
A dez anos atrás eu comecei a me
interessar em meu próprio campo,
eu sempre fui interessada no meu campo,
mas mais interessada em software.
Em como a infraestrutura do software
que é uma grande coleção de softwares.
Por exemplo, todos os programas alocados
em computadores conectados a internet.
Como essa coleção se distribui ao
longo do tempo e se não está
sujeito ao processo evolucionário.
Eu me tornei interessada mais diretamente
se seria possível para evoluir software.
Nós poderíamos desenvolver um programa,
ao invés de contratar um programador
treinado para escreve-lo,
poderíamos utilizar processos
evolucionários para produzir programas.
E, apesar de eu não poder dizer
que eu tenha resolvido este problema,
isso me leva a um problemamais simples
que é utilizar evolução para desenvolver
softwares de reparação.
Então a ideia é esta, você me dá um
problema de erro e eu
faço um número de cópias, tipicamente
40 cópias deste programa e cada uma destas
tem algumas mutações randômicas,
não diferente da evolução e então nós
utilizamos um GA para selecionar os
indivíduos mais ajustados, isso é passado
(em nosso caso é medido por
testes de regressão) e depois de algumas
gerações, a evolução produz um programa
que em muitos casos repara os erros.
Isso é impressionante!
Você colocará programadores na rua?
Potencialmente. Não pensei nisso
mas este software é um grande gargalo.
manutenção de software é um gargalo.
Se você olha para a economia da computação
,onde o dinheiro é gasto, 90% do custo
do software vai para manutenção.
E manutenção, a maior parte é reparo.
Corrigir problemas em software.
Um estudo que tem alguns anos agora
estimou que o custo dos
erros de software são
0,6% do PIB americano, que é significante.
Então, mesmo que nós não
colocarmos todos os programadores na rua,
poderemos aumentar sua produtividade,
talvez ainda, propondo correções para
eles checar e decidir se querem aceitar,
ou tomando tarefas tediosas de
corrigir erros e deixar os programadores
livres para abordar erros mais complexos.
Isto seria um resultado aceitável.
Então, quão distante isto está de ser
um produto comercial?
Está distante de ser um produto comercial
Nós pensamos em comercializar isto, mas
nós temos optado por 'fonte aberta',
domínio público e então nossos programas
estão disponíveis em nosso website.
Tenho que mencionar,
não estou sozinha neste trabalho.
Faço ele em colaboração com um professor
da Universidade de Virginia,
que sabe mais a respeito
de engenharia de software e
linguagem de programação.
Seu nome é Westley Weimer.
E nós dois estamos, eu penso, surpresos
com o quão bem tem sido este projeto
E recentemente
completamos um grande estudo com 150 erros
selecionados randomicamente
resolvemos de forma confiável, 50% deles
na primeira tentativa.
Isto é impressionante.
Obrigado!
É melhor do que a maioria pode fazer.
Melhor do que eu posso fazer
Você não precisa.
Você tem o seu GA para isso.
Certo.
Mas agora como utilizamos e introduzimos
isto na computação tradicional
ainda é uma questão aberta para nós.
Então você mecionou esta ideia
de algoritmo genéticos
automaticamente criando programas, não
apenas corrigindo-os.
Eu sei que há um grande campo chamado
programação genética que tem tentado isto.
Quão difícil você imagina este problema?
Nós olhamos um exemplo em nossa
aula de criar um programa simples
para mover um robô ao redor de uma
tela e ter que fazer algumas coisas
Mas a questão é quão difícil isto para
avançar para programas complexos?
Você pensa que isto irá acontecer?
Eu não penso que isto seja imediato.
De fato, eu destacaria o problema da P.G.
é o problema de começar de rascunhos.
E uma das razões que possibilitou
nosso sucesso, como no reparos de erros,
é ter começado com um
programa 99,999% correto.
É correto em tudo, menos em um.
E nós estamos tentando consertar este um.
O pessoal da P.G. começa de outro objetivo
e eu não sei que objetivo será
o melhor no longo prazo. Minha teoria é
para conseguir o que fizemos com programas
é olhar adiante, começar a pensar sobre
como adicionar funcionalidades naquilo que
já está funcionando. E talvez esta
seja a diferença de evolução e
origem da vida. Eu não sei.
Ok. muito obrigado. Isto foi ótimo.
É sempre um prazer. É divertido e
sistemas complexos são extraordinários.
Ok, obrigado.