Evolving Inventions John R. Koza, Martin A. Keane Matthew J. Streeter Scientific American – Jun 2003 EVOLUÇÃO DE MÁQUINAS A evolução é um poderoso processo criativo. Desde a complicada química de uma célula até a estrutura elaborada do cérebro, a evolução tem produzido maravilhas de complexidade inimaginável. A evolução faz isto com uns poucos processos simples: mutação, recombinação sexual e seleção natural Agora os programadores estão implementando versões em software dos mesmos processos para atingir o santo gral a inteligência artificial. EVOLUÇÃO DE MÁQUINAS • Uma técnica chamada de programação genética, já tem conseguido projetar programas de computador e circuitos eletrônicos que realizem determinadas tarefas. Alguns destes circuitos foram patenteados com sucesso nos EEUU. Em outros casos duplicaram circuitos já patenteados. Outros representam novas invenções e foram obtidas combinando as funcionalidade de invenções prévias Design Genético A primeira aplicação prática (comercial) da programação genética será o design. Design é especialmente adequado para a programação genética já que se procuram soluções que são muito boas mais não são matematicamente perfeitas. Existem grandes e complexos compromisso entre diferentes aspectos do desenho e o melhor equilíbrio entre estes fatores é difícil de antever. O design implica na descoberta de arranjos topológicos de coisas (em oposição a simplesmente otimizar um conjunto de números), e esta tarefa é muito adequada a programação genética. O processo evolucionário Três processos propagam os organismos de uma geração para a seguinte na programação genética. Alguns bons indivíduos são copiados inalterados (reprodução asexuada). Outros formam casais para reprodução sexuada ou cruzamento, na qual partes são intercambiadas entre os organismos para produzir a cria. Um pequeno número muda aleatóriamente mutação. Os organismos que não são escolhidos serão extintos. Cruzamento e mutação A evolução atua como uma busca no espaço de todos os possíveis organismos (representados pelo plano ( o eixo X e o Y representam uma dada propriedade e o eixo Z a adaptação do individuo). O cruzamento procura no espaço de uma forma criativa, ocasionalmente combinando duas características boas, pulando para uma nova região do espaço onde indivíduos mais adaptados se encontram (setas em vermelho). A mutação tende a encontrar indivíduos melhores nas “proximidades”(setas em verde) . Exemplo com funções • O cruzamento das funções (a + 1) – 2 e 1 + (a ⋅ a) pode ser o resultado de usar a parte (a + 1) para substituir um a da segunda função dando como resultado a função1 + ((a + 1) ⋅ a). • Recombinando (cruzando) pode se chegar a melhores indivíduos • Além da reprodução sexual o algoritmo copia (intocados) alguns indivíduos, para garantir que a próxima geração (como um todo) seja ao menos tão boa como a anterior • Finalmente parte das funções sobrem mutação: por exemplo, a + 1 pode mutar para (3 ⋅ a) + 2 . Dando como resultado 1 + ((3 ⋅ a) + 2 ) ⋅ a) Filtro Passa-baixos • Um filtro passa baixos é usado geralmente em sistemas de som para mandar aos “woofers” (alto-falantes que reproduzem melhor os sons baixos) os sinais a serem reproduzidos. • Para criar o filtro usando a programação genética, o usuário humano define os componentes disponíveis para criar o circuito (resistores, capacitores e indutâncias) e define a adaptação (fitness) de cada circuito candidato. Por exemplo a função transferência para o circuito o a potência que passa até 1kHz. • Os circuitos começam com um “embrião” elementar que consiste num único fio ligando a entrada e a saída, o embrião elementar cresce pela progressiva aplicação de funções que constroem o circuitos, inserindo componentes. Outros mecanismos modificam o padrão de conexões entre componentes, inserção em serie ou paralelo ou inserção de uma conexão especifica. Exemplo de mutação de componentes Filtro passa-baixos: Processo Genético Resistores Capacitores Indutâncias Filtro passa-baixos • Este processo de desenvolvimento fornece a topologia do circuito assim como o dimensionamento (valor) dos componentes. • O sistema sintetiza o circuito sem o conhecimento da engenharia elétrica. • A maior parte da população inicial de circuitos rudimentares gerados aleatoriamente, não se comportam como filtros, mais alguns poucos tem uma indutância ente a entrada e a saída, outros tem um capacitor entre a entrada e a terra, ambos criando um efeito passa baixo. Estes serão escolhidos com mais freqüência no processo evolutivo • O resultado é muito parecido com o filtro patenteado em 1917 por George A. Campbell da AT&T. Como fazé-lo? • Definir uma linguagem de criação de circuitos. – Regras: • Incluir valores máximos/mínimos de componentes • De mutação e de combinação para obter circuitos válidos • Definir uma função adaptabilidade • O resto vira um GA normal Outros exemplos • Controladores de processos • Sistemas classificadores • Receitas de cozinha??!!! Ver que o problema está na função de adaptabilidade!!!! Humanos Vs Programação genética • Humano • Programação genética Tempo de processamento • A evolução natural teve bilhões de anos de “tempo de processamento” para elaborar seus “produtos”. A programação genética não seria útil se tomasse tanto tempo. A programação genética roda com populações de 10.000 a 100.000 indivíduos que vão a evoluir por dezenas ou centenas de gerações. • Para melhorar a performance do processo geralmente se utilizam clusters de computadores. A evolução na natureza acontece quando os organismos estão distribuídos em populações semi-isoladas. O mesmo acontece com a programação genética eles rodam em um computador ou numa rede de computadores. Cada computador realiza a pesada tarefa de avaliar o “fitness” de um individuo. Depois se comparam of “fitness” calculados e se realiza am as “operações genéticas” Tempo de processamento • Se avaliar a “fitness” de um individuo levar 1 minuto de tempo de computação. Rodar uma população de 100.000 indivíduos por 100 gerações pode levar 19 anos. • Com o aumento da potência dos computadores e melhores linguagens de descrição de produtos, a programação genética ocupará uma posição de destaque nos próximos anos. Medidas de inteligência. Teste de Turing? A programação genética pode rotineiramente reproduzir invenções humanas, apenas 50 anos após que Alan M. Turing predice que a inteligência humana e das máquinas seriam competitivas. Nestes 50 anos tivemos duas vertentes principais, para tentar atingir esta metas: 1. Deduções lógicas: construir programas projetados para analisar situações e problemas logicamente 2. Bancos de dados contendo conhecimento e experiências humanas acumuladas (Sistemas especialistas). Turing chamou este procedimento de “busca cultural”. Teste de Turing (Cont.) A programação genética produz inteligência que concegue competir com a humana com um mínimo de intervenção humana para cada problema e sem a utilização de deduções lógicas ou bancos de dados de conhecimento humano. IA imita a inteligência humana PG imita a inteligência da natureza (Deus) Teste de Turing (Cont.) No teste de Turing para inteligência de máquinas um juiz recebe mensagens e tenta decidir se a mensagem veio de um humano ou de uma máquina. No caso apresentado, o juiz é o escritório de patentes e no caso não consigue distinguir entre uma invenção humana e uma gerada por programação genética. A programação genética não atingui os níveis de cognição associado ao teste de Turing test. Mais passou no teste de criatividade e inventividade que poucos humanos conseguem passar: Obter uma patente. Teste de Turing (Cont.) Não se pode esperar uma boa máquina filha na primeira tentativa. Deve-se experimentar: testar variações ver se as variações são melhores ou piores e continuar o processo de forma indefinida Estrutura da máquina filha = Material Hereditário Mudanças na máquina filha = Mutações Seleção Natural = Julgamento do experimentador Programação Genética cumpriu de várias maneiras a promessa de Turing de atingir uma máquina inteligente!!!. Conclusões • Programação Genética materializa uma versão computarizada da evolução para criar movas invenções. Iniciando com milhares de objetos selecionados aleatoriamente, o método seleciona os melhores indivíduos e aplica processos como cruzamento, mutação para criar as sucessivas gerações. Conclusões (cont.) • Depois de dezenas de gerações, a população de indivíduos gradualmente satisfazem algum critério definido em graus diferentes. No fim, o melhor individuo é escolhido como a solução do problema proposto. • Na eletrônica, esta técnica consiguiu até algumas patentes. Outras invenções incluem antenas, algoritmos para reconhecer proteínas, controladores. Conclusões (cont.) • No final desta década, com o aumento da potência de cálculo dos computadores, a programação genética será usada como uma ferramenta de rotina concorrendo de igual a igual com inventores humanos.