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.
Download

Programação Genética Evolving Machines