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.