Inteligência Artificial - Aula15 - Algoritmos Genéticos

4.298 visualizações

Publicada em

Algoritmos genéticos: solução de problemas de otimização com inspiração na seleção natural.

Publicada em: Ciências
  • Seja o primeiro a comentar

Inteligência Artificial - Aula15 - Algoritmos Genéticos

  1. 1. 14/06/14 Inteligência Artificial Algoritmos Genéticos
  2. 2. Introdução ● Na sub-área da inteligência computacional, diversos algoritmos possuem inspiração na natureza ● Entre eles temos os Algoritmos Genéticos, que são inspirados no processo de seleção natural identificado por Darwin 14/06/14
  3. 3. Introdução ● A ideia é “evoluir” soluções para problemas de otimização imitando o que ocorre na natureza ● Pode ser visto como um melhoramento sobre o Simulated Annealing, onde teremos várias soluções candidatas em vez de apenas uma 14/06/14
  4. 4. Aplicações ● Otimização de funções ● Alocação de espaço e tempo ● Roteamento ● Controle robótico ● Treinamento de redes neurais ● Problemas de otimização combinatória em geral ● Qualquer problema onde Simulated Annealing e Hill Climbing são aplicáveis ● Qualquer problema que não saibamos resolver de outra forma, mas que saibamos como avaliar a qualidade de uma solução candidata 14/06/14
  5. 5. Seleção Natural ● Primeiramente, vamos relembrar como se dá o processo de seleção natural propriamente dito ● Cada ambiente possui seus desafios, obstáculos, predadores, presas, alimento, clima, etc... ● Indivíduos não aptos ao ambiente em que se encontram morrem e, em média, deixam menos descendentes ● Indivíduos aptos ao ambiente vivem mais e, em média, deixam mais descendentes 14/06/14
  6. 6. Seleção Natural ● A reprodução dos indivíduos pode ser sexuada ou assexuada ● No caso da reprodução assexuada, os descendentes herdam características tanto do pai quanto da mãe ● Isto permite que boas “soluções” sejam mescladas e “testadas” no ambiente ● Em ambos os casos, os descendentes sofrem pequenas mutações (por falhas naturais no processo de replicação de DNA) ● Humanos possuem, em média, 60 mutações! ● Isto permite que novas características sejam introduzidas na população ● O que, por sua vez, pode criar novas maneiras de resolver antigos problemas em determinados ambientes ● A maioria das mutações é inofensiva, seguidas pelas prejudiciais ● Mas se apenas 1 indivíduo em 1 bilhão for “premiado” com uma boa mutação, isso basta para que ele comece a superar os outros e propagar seus genes, tornando-se algo comum ao longo de muitas gerações 14/06/14
  7. 7. Seleção Natural ● Este processo se repete ao longo de muitas gerações e pode ser observado em espécies com tempo de vida mais curto ● Na medida em que as gerações avançam, surgem indivíduos cada vez mais aptos aos seus ambientes 14/06/14
  8. 8. Algoritmos Genéticos ● Agora imagine que um ambiente é um problema ● Um indivíduo é uma solução ● E os genes são os valores da solução 14/06/14
  9. 9. Algoritmos Genéticos ● Com isto, podemos aplicar o processo de seleção natural a problemas quaisquer e obter soluções cada vez melhores ao longo do tempo! 14/06/14
  10. 10. Algoritmos Genéticos ● Para resolver problemas utilizando Algoritmos Genéticos, precisamos dos seguintes componentes: ● Representação: como transformar uma solução em uma sequência de genes (um cromossomo)? ● Crossover (Cruzamento): como podemos mesclar 2 soluções? ● Mutação: como podemos causar pequenas variações aleatórias em nossas soluções? ● Fitness: como calcular a aptidão de um indivíduo? Ou em outras palavras, o custo/erro/utilidade de uma solução? ● Seleção: como faremos a seleção dos mais aptos? 14/06/14
  11. 11. Representação ● Algoritmos Genéticos são versáteis em termos de representação, bastando que as operações de crossover e mutação sejam adequadamente escolhidas ● Mas uma representação muito popular é a de vetores ● Mais especificamente, podemos usar vetores de bits 14/06/14
  12. 12. Representação - Exemplo ● Problema da mochila: um ladrão invade uma casa com sua sacola e precisa roubar os objetos que somem o maior valor possível, desde que caibam na sacola ● Vamos supor os seguintes objetos: 1.Notebook ($3000, tamanho 4) 2.Tablet ($1500, tamanho 3) 3.Celular ($1000, tamanho 2) 4.Colar ($700, tamanho 2) 5.Anel ($400, tamanho 1) ● E supunha que a sacola tem capacidade 5 14/06/14
  13. 13. Representação - Exemplo ● Podemos representar uma solução como uma sequência de bits que diz se o ladrão deve ou não levar um objeto 01010 = Tablet + Colar 00111 = Celular + Colar + Anel 14/06/14
  14. 14. Representação - Exemplo ● Um outro problema é o do caixeiro viajante: encontre o caminho mais curto que passe por todas as cidades (nós em um grafo) e retorne ao início sem repetir cidades ● A representação binária já não é tão adequada, sendo melhor usar uma representação de permutação CBADE (cidade C, depois B, A, D, E e retorna para C) DABEC 14/06/14
  15. 15. Representação - Exemplo ● Já para um problema contínuo, como achar o máximo de uma equação, necessitamos de uma representação contínua ● 2x - 3y + 5z - 4w + 2xy – 3xz + 1 ● Quais os valores de x,y,z e w que maximizam a função? 0.1 1.7 9.1 -3 (o valor de cada variável) -1 0.2 5.2 1.4 14/06/14
  16. 16. Representação ● Portanto, não existe uma forma única de representar um problema para aplicar um algoritmo genético ● Cada problema tem uma representação mais adequada! 14/06/14
  17. 17. Fitness ● Agora que já definimos como as soluções para o nosso problema serão representadas, precisamos definir como elas serão avaliadas 14/06/14
  18. 18. Fitness ● No caso do problema da mochila, queremos o maior valor possível sem ultrapassar o limite da mochila ● Podemos representar a “aptidão” de uma solução como a soma dos valores dos objetos e com uma penalidade para soluções que passam do limite de volume 14/06/14
  19. 19. Fitness 01010 =Tablet + Colar 1500 + 700 = 2200 Tamanho 3 + 2 = 5, ok 00111 = Celular + Colar + Anel 1000 + 700 + 400 = 2100 Tamanho 2 + 2 + 1 = 5, ok 10101 = Notebook + Celular + Anel 3000 + 1000 + 400 = 4400 Tamanho 4 + 2 + 1 = 7, estourou, penalidade de 10000 Fitness final = -5600 14/06/14
  20. 20. Fitness ● No caso do caixeiro viajante, bastaria somar o custo de cada trecho do caminho na solução ● No caso da maximização de função, poderíamos simplesmente computar o resultado da função com os valores da solução 14/06/14
  21. 21. Seleção ● Agora que já medimos a qualidade de cada solução, podemos proceder para a seleção ● Um método simples seria selecionar as N (a definir) melhores soluções ● Mas isto tem a desvantagem de tornar o algoritmo mais propenso a cair em máximos locais ● Uma solução mais usada é a da roleta 14/06/14
  22. 22. Seleção ● Com a roleta, cada solução tem uma probabilidade de ser selecionada proporcionalmente ao seu fitness ● Com isso, mesmo as piores soluções podem se reproduzir, apesar de mais raro 14/06/14
  23. 23. Seleção - Exemplo ● No problema da mochila, usamos o exemplo com as 3 soluções com os seguintes fitness: 2200, 2100, -5600 ● Primeiro devemos subtrair o menor valor (-5600) de todos os valores para eliminar os negativos ● 2200 - (-5600) = 7800 2100 - (-5600) = 7700 -5600 – (5600) = 0 ● Agora calculamos o fitness total: 7800 + 7700 + 0 = 15500 ● E as proporções: 7800 / 15500 = 0,503225806 7700 / 15500 = 0,496774194 0 / 15500 = 0 ● Estas são as probabilidades de selecionar cara solução! 14/06/14
  24. 24. Mutação ● Na mutação, devemos alterar algum elemento do cromossomo aleatoriamente, com uma probabilidade pequena (a definir) 14/06/14
  25. 25. Mutação 14/06/14
  26. 26. Mutação - Exemplo 01010 → 01011 (tablet + colar → tablet + colar + anel) BCADE → CBADE 0.1 8 3.4 2.1 → 0.1 8.1 3.4 2.1 ● As mutações ajudam a evitar máximos locais e a encontrar soluções inéditas 14/06/14
  27. 27. Crossover ● No crossover, mesclaremos pares de soluções que foram selecionadas previamente ● Parte da premissa de que se as 2 são boas, suas combinações provavelmente também serão 14/06/14
  28. 28. Crossover 14/06/14
  29. 29. Crossover ● O tipo de crossover na animação anterior é o crossover por ponto único ● Ele consiste em escolher um ponto aleatoriamente nos cromossomos e trocar o conteúdo dos vetores a partir daquele ponto ● Também existe o crossover com 2 pontos, onde o vetor é dividido em 3 partes que são trocadas entre os 2 indivíduos ● E há também o crossover uniforme, onde cada elemento pode ser puxado de um pai diferente 14/06/14
  30. 30. Crossover - Exemplo 01010 = tablet + colar 00111 = celular + colar + anel Filhos: 01011 = tablet + colar + anel 00110 = celular + colar ● Note que nenhuma solução envolve o Notebook e portanto seria impossível que ele aparecesse na população apenas com crossover ● Por isso que é necessário aplicar mutações depois dos cruzamentos! ● Após aplicar mutações, estas 2 soluções seguirão para a próxima geração (próxima iteração do algoritmo) ● Uma variação disto, chamada de seleção elitista, poderia manter as boas soluções da geração atual para a próxima geração também ● Evita que percamos as melhores soluções até o momento 14/06/14
  31. 31. Algoritmos Genéticos 14/06/14
  32. 32. Algoritmos Genéticos – Exemplo Completo ● Vamos tentar resolver o problema da mochila por completo, considerando a seguinte população inicial gerada aleatoriamente: 01000 10000 00100 00110 01100 14/06/14
  33. 33. Algoritmos Genéticos – Exemplo Completo ● Primeiro passo: avaliação 01000 → 1500 (tamanho 3) 10000 → 3000 (tamanho 4) 00100 → 1000 (tamanho 2) 00110 → 1700 (tamanho 4) 01100 → 2500 (tamanho 5) 14/06/14
  34. 34. Algoritmos Genéticos – Exemplo Completo ● Segundo passo: seleção Soma dos fitness = 9700 01000 → 1500 / 9700 = 0,154639175 10000 → 3000 / 9700 = 0,309278351 00100 → 1000 / 9700 = 0,103092784 00110 → 1700 / 9700 = 0,175257732 01100 → 2500 / 9700 = 0,257731959 ● 2 indivíduos foram selecionados aleatoriamente de acordo com as probabilidades ● Usaremos elitismo: os 2 pais serão mantidos na próxima geraãço juntamente com seus 2 filhos 14/06/14
  35. 35. Algoritmos Genéticos – Exemplo Completo ● Terceiro passo: cruzamento 10000 01100 ● Este ponto de crossover foi escolhido aleatoriamente Filhos: 10100 01000 14/06/14
  36. 36. Algoritmos Genéticos – Exemplo Completo ● Quarto passo: mutação 10100 → 10100 (não mudou nada) 01000 → 01001 (mudou o último bit) 14/06/14
  37. 37. Algoritmos Genéticos – Exemplo Completo ● Repetindo: avaliação da nova população 10000 → 3000 (tamanho 4) 01100 → 2500 (tamanho 5) 10100 → 4000 (tamanho 6) → -6000 01000 → 1500 (tamanho 3) 14/06/14
  38. 38. Algoritmos Genéticos – Exemplo Completo ● Repetindo: seleção ● Soma dos fitness: 25000 (somando 6000 em cada um para eliminar o negativo) 10000 → 9000 / 25000 = 0,36 01100 → 8500 / 25000 = 0,34 10100 → 0 / 25000 = 0 01000 → 7500 / 25000 = 0,3 ● 2 pais selecionados aleatoriamente de acordo com as probabilidades 14/06/14
  39. 39. Algoritmos Genéticos – Exemplo Completo ● Repetindo: cruzamento ● Ponto de crossover escolhido aleatoriamente 10000 01000 ● Filhos: 10000 01000 ● Sim, são iguais! Sem problema. 14/06/14
  40. 40. Algoritmos Genéticos – Exemplo Completo ● Repetindo: mutação 10000 → 10001 01000 → 01010 14/06/14
  41. 41. Algoritmos Genéticos – Exemplo Completo ● Repetindo: avaliação da nova população 10000 → 3000 (tamanho 4) 01000 → 1500 (tamanho 3) 10001 → 3700 (tamanho 5) 01010 → 2200 (tamanho 5) 14/06/14
  42. 42. Algoritmos Genéticos – Exemplo Completo ● Repetindo: seleção ● Soma dos fitness: 10400 10000 → 3000 / 10400 = 0,2884615 01000 → 1500 / 10400 = 0,1442307 10001 → 3700 / 10400 = 0,3557692 01010 → 2200 / 10400 = 0,2115384 ● 2 indivíduos selecionados aleatoriamente de acordo com as probabilidades 14/06/14
  43. 43. Algoritmos Genéticos – Exemplo Completo ● Repetindo: cruzamento ● Ponto de crossover escolhido aleatoriamente 10000 10001 ● Filhos: 10001 10000 ● Iguais aos pais, sem problema. 14/06/14
  44. 44. Algoritmos Genéticos – Exemplo Completo ● Repetindo: mutação 10011 10010 14/06/14
  45. 45. Algoritmos Genéticos – Exemplo Completo ● Repetindo: avaliação da nova geração 10001 → 3400 (tamanho 5) 10000 → 3000 (tamanho 4) 10011 → 4100 (tamanho 7) → -5900 10010 → 3700 (tamanho 6) → -6300 14/06/14
  46. 46. Algoritmos Genéticos – Exemplo Completo ● Melhor fitness (3400) não mudou em relação à geração anterior, podemos parar (é apenas um critério de parada possível entre vários) ● Melhor solução: 10001 → Notebook + Anel 14/06/14
  47. 47. Programação Genética ● Também é possível evoluir programas completos com algoritmos genéticos, é a chamada Programação Genética ● Uma forma comum de representar um programa é através de árvores sintáticas 14/06/14
  48. 48. Programação Genética 14/06/14
  49. 49. Algoritmos Genéticos Interativos ● Uma variação dos algoritmos genéticos permite que humanos selecionem as suas soluções preferidas em uma população, dispensando o cálculo do fitness ● Pode ser usado em tarefas mais subjetivas, como geração automática de arte (visual, musical, literária, etc...) ● A vantagem é que, implicitamente, acabamos usando funções de fitness muito mais complexas ● A desvantagem é que não podemos rodar o algoritmo por várias gerações automaticamente, visto que um humano deve analisar cada solução e fazer a seleção manualmente, tornando o processo muito mais lento 14/06/14
  50. 50. Algoritmos Genéticos Interativos 14/06/14
  51. 51. Algoritmos Genéticos Interativos 14/06/14
  52. 52. Algoritmos Genéticos Interativos 14/06/14
  53. 53. Algoritmos Genéticos Interativos 14/06/14

×