ctc-17 inteligência artificial busca competitiva e busca ...pauloac/ctc17/ctc17_cap2.2.pdf · ctc...

50
CTC-17 Inteligência Artificial Busca Competitiva e Busca Iterativa Prof. Paulo André Castro [email protected] www.comp.ita.br/~pauloac Sala 110, IEC-ITA

Upload: vominh

Post on 28-Jan-2019

216 views

Category:

Documents


0 download

TRANSCRIPT

CTC-17 Inteligência Artificial

Busca Competitiva e

Busca Iterativa

Prof. Paulo André Castro [email protected]/~pauloac Sala 110, IEC-ITA

CTC -17: Inteligência Artificial 2 / 50

Sumário

Busca Competitiva

Para Ambientes multiagentes...

Busca de Melhoria Iterativa

Quando a solução é um ponto não um caminho....

CTC -17: Inteligência Artificial 3 / 50

Busca Competitiva

Jogos com adversários

Formulação simples (ações bem definidas)

Totalmente observável (geralmente)

“Sinônimo” de inteligência

Primeiro algoritmo para jogar Xadrez criado em 1950 (Claude

Shannon)

Problemas bastante complexos:

Tamanho + limitação (aprox. 35100 nós em jogos de xadrez)

Incerteza devido as ações do oponente

Agente deve agir antes de completar a busca totalmente

CTC -17: Inteligência Artificial 4 / 50

Busca Competitiva

CTC -17: Inteligência Artificial 5 / 50

Jogo da velha - Minimax

CTC -17: Inteligência Artificial 6 / 50

Minimax

CTC -17: Inteligência Artificial 7 / 50

Resultado do algoritmo Minimax

CTC -17: Inteligência Artificial 8 / 50

Avaliação do Minimax

Problemas

Tempo gasto para determinar a solução ótima pode ser impraticável

para muitos problemas reais (percorrer a árvore inteira – todas as

folhas)

Complexidade: O(bm ) – como em busca em profundidade

Entretanto, Minimax traz solução ótima e pode ser

modificado para gerar métodos mais eficientes

Abordagens de Modificação

Substituir a função de utilidade por uma função de avaliação heurística,

e assim limitar a profundidade

Podar a árvore e evitar subárvores irrelevantes: Poda alpha-beta

CTC -17: Inteligência Artificial 9 / 50

Abordagem 1: Função Heurística

CTC -17: Inteligência Artificial 10 / 50

Aplicação do Minimax

CTC -17: Inteligência Artificial 11 / 50

Poda Alpha-Beta

Objetivo: Não expandir subárvores desnecessariamente

durante a busca

Idéia: Ninguém escolhe uma opção pior do que uma

opção já disponível

Manter dois parâmetros

α - melhor valor para MAX

β - melhor valor para MIN

CTC -17: Inteligência Artificial 12 / 50

Poda Alpha-Beta (α - β )

Teste de expansão - MAX não aceita α pior e MIN

não aceita β pior logo:

α – não pode diminuir (não pode ser menor que um

ancestral)

α já encontrado funciona como um limitante inferior

β – não pode aumentar (não pode ser maior que um

ancestral)

β já encontrado funciona como um limitante superior

CTC -17: Inteligência Artificial 13 / 50

Poda Alpha-Beta - Exemplo

CTC -17: Inteligência Artificial 14 / 50

Poda Alpha-Beta – Continuação do Exemplo

CTC -17: Inteligência Artificial 15 / 50

Poda Alpha-Beta – Continuação do Exemplo

CTC -17: Inteligência Artificial 16 / 50

Poda Alpha-Beta – Continuação do

Exemplo

CTC -17: Inteligência Artificial 17 / 50

Exercício

CTC -17: Inteligência Artificial 18 / 50

CTC -17: Inteligência Artificial 19 / 50

Nem todos os jogos são

determinísticos…

Como tratar problemas onde a situação do ambiente não depende exclusivamente

das decisões dos agentes? Ex. Gamão, War, poquêr, black jack, etc. …

Pode-se modelar o fator aleatório como um terceiro jogador..Por exemplo, em

jogos com dados, os dados seriam um terceiro jogador que age entre MAX e

MIN…Veja um exemplo:

CTC -17: Inteligência Artificial 20 / 50

Algoritmo Expectminimax

CTC -17: Inteligência Artificial 21 / 50

Valores exatos das utilidades importam

O comportamento não é mais preservado se utilizarmos um escalonamento que

apenas preserve a ordem das utilidades dos nós folhas

Para preservar o comportamento, deve-se utilizar uma transformação linear

positiva (Teoria da decisão)

CTC -17: Inteligência Artificial 22 / 50

Algoritmos Expectminimax

A introdução do elemento ao acaso, faz aumentar

enormemente a árvore de busca e o tempo para analisá-

la

A poda alfa-beta pode ser usada, porém é muito menos

efetiva

Jogos com incerteza são muitas vezes tratados com

outras técnicas tais como Teoria da decisão, Modelo

decisório de Markov, e redes bayesianas que serão

estudadas no segundo bimestre

CTC -17: Inteligência Artificial 23 / 50

Sumário

Busca Competitiva

Busca de Melhoria Iterativa

CTC -17: Inteligência Artificial 24 / 50

Algoritmos de Melhoria Iterativa

CTC -17: Inteligência Artificial 25 / 50

Exemplo: Estado Objetivo

CTC -17: Inteligência Artificial 26 / 50

Solução?

CTC -17: Inteligência Artificial 27 / 50

Subida de Encosta (Hill-Climbing) ou

subida de gradiente

É como escalar uma montanha com amnésia e em névoa espessa….

CTC -17: Inteligência Artificial 28 / 50

Hill Climbing

Determinar mínimos: basta encontrar os máximos da função objetiva

negativada: -f(x)

Subida de Encosta com reinicio aleatório: Ao encontrar um plateau ou um

máximo local não satisfatório. Reinicie o algoritmo a partir de outro ponto

inicial.

Abordagem: “Se não tiver sucesso na primeira vez, continue tentando.”

Subida de encosta estocástica: seleciona um movimento aleatório com

certa probabilidade ao invés de sempre seguir a direção de subida. A

probabilidade da seleção pode variar de com o grau de declividade.

Por exemplo, quanto menor a declividade maior a probabilidade de

selecionar aleatoriamente

CTC -17: Inteligência Artificial 29 / 50

Busca de Têmpera Simulada (Simmulated

Annealing)

CTC -17: Inteligência Artificial 30 / 50

Busca de Têmpera Simulada

(Simmulated Annealing) - 2

CTC -17: Inteligência Artificial 31 / 50

Resumo

Buscas de Melhoria Iterativa permitem resolver problemas

onde o caminho não é relevante e apenas a configuração final

importa

Outras possíveis idéias para melhorar busca local:

Paralelizar : buscas a partir de diversos pontos simultâneamente

Mesclar pontos intermediários que aparentam ser “boas” configurações

intermediárias, para criar novas configurações

Fazer pequenos desvios aleatórios na configuração…

Isso lembra algo?

Seleção Natural e algoritmos genéticos

CTC -17: Inteligência Artificial 32 / 50

Algoritmos Genéticos

As técnicas de computação evolucionária operam sobre uma população de

candidatos em paralelo,

Algoritmos Genéticos fazem busca em diferentes áreas do espaço de

solução, alocando um número de membros para a busca em várias regiões.

Os Algoritmos Genéticos (AGs) diferem dos métodos tradicionais de

busca e otimização, principalmente em cinco aspectos:

1. Trabalham com uma codificação do conjunto de parâmetros e

não com os próprios parâmetros.

2. Trabalham com uma população e não com um só elemento.

3. Utilizam informações de custo ou recompensa.

4. Utilizam regras de transição probabilísticas em oposição as determinísticas.

5. São baseados na técnica de gerar-e-testar

CTC -17: Inteligência Artificial 33 / 50

Modelagem de Algoritmos Genéricos

A modelagem de um problema através de Algoritmos

genéticos é baseada em:

Codificação da solução

Função de avaliação

Função de aptidão (fitness)

CTC -17: Inteligência Artificial 34 / 50

Função de Avaliação

Função de avaliação:

Prover uma medida de desempenho com respeito a um

conjunto particular de parâmetros.

Deve ser relativamente rápida, uma vez que, em cada

iteração, cada membro da população é avaliado e recebe um

valor de aptidão.

A avaliação de um membro (cromossomo) representando

um conjunto particular de parâmetros é independente da

avaliação de qualquer outro membro

CTC -17: Inteligência Artificial 35 / 50

Função de Aptidão

Função de aptidão:

Transforma a medida da função de avaliação em alocação de

oportunidades reprodutivas.

É sempre definida de acordo com outros membros da atual

população.

No algoritmo genético canônico, aptidão é definida como

fix=f(x)/f ’ onde f(x) é a avaliação associada ao

cromossomo x e f ’ é a soma das avaliações de todos

os membros da população.

A aptidão pode também ser associada à classificação de

um cromossomo na população ou outras medidas.

CTC -17: Inteligência Artificial 36 / 50

Codificação

O cromossomo deve, de algum modo, conter informação

sobre a solução a qual representa.

O modo mais usual de codificação é a seqüência binária.

O cromossomo, então deve ser algo como:

Cada bit na seqüência (gene) pode representar uma

característica da solução ou a série como um todo pode

representar um número.

CTC -17: Inteligência Artificial 37 / 50

Pseudocódigo de um AG

[Início] Gerar uma população aleatória com n cromossomos

Repetir até obter a solução (ou terminar)

1. [Avaliação] Determinar f(x) e fix de cada cromossomo x na população.

2. [Seleção] Selecionar elementos para criar uma população intermediária

//Quanto melhor o fix, maior chance de ser selecionado); uma porcentagem

dos mais adaptados é mantida, enquanto os outros são descartados (mortos).

3. [Recombinação (Crossover)] Com uma probabilidade de recombinação,

realizar uma recombinação sobre os pais para formar uma nova prole

//Se não ocorrer recombinação, a prole é uma cópia exata dos pais.

4. [Mutação] Com uma probabilidade de mutação, realizar mutação sobre a nova

prole em cada gene (posição no cromossomo).

5. [Atualização da população] Usar a nova população gerada para repetir os

passos 1-5 do algoritmo

Retornar a melhor solução na população atual.

CTC -17: Inteligência Artificial 38 / 50

Seleção através da Roleta

O pais são selecionados de acordo com sua função de aptidão.

Quanto melhor os cromossomos são, maior a chance de

serem selecionados. Imagine uma roleta onde são colocados

todos os cromossomos da população, o espaço ocupado

depende do valor da sua função de aptidão, como mostra a

figura:

CTC -17: Inteligência Artificial 39 / 50

Elitismo

Elitismo é o nome do método, aliado à seleção, que

primeiro copia o melhor cromossomo (ou alguns

melhores cromossomos) para a nova população. O

processo restante é feito do modo clássico.

O elitismo pode aumentar rapidamente o desempenho

do AG porque evita que se perca a melhor solução

encontrada até o momento.

CTC -17: Inteligência Artificial 40 / 50

Recombinação (Crossover)

Seleciona genes a partir dos cromossomos pais e cria uma nova prole.

O modo mais simples: 1. escolher aleatoriamente algum ponto (locus entre

genes) no cromossomo, 2. tudo que estiver antes desse ponto será copiado do

primeiro pai, 3. tudo que estiver depois será copiado do segundo pai.

Existem outros meios de realizar recombinação, por exemplo, podemos

escolher mais pontos de recombinação.

Recombinações desenvolvidas para problemas específicos podem

melhorar o desempenho do AG.

CTC -17: Inteligência Artificial 41 / 50

Mutações

Mutação permite evitar que a população fique presa em

um mínimo (máximo) local.

A mutação altera aleatoriamente a nova prole. Na

codificação binária, podemos mudar alguns bits de 1 para

0 e de 0 para 1:

A mutação depende tanto da codificação como da

recombinação.

CTC -17: Inteligência Artificial 42 / 50

Parâmetros - 1

Probabilidade de recombinação: indica o quão freqüente a

recombinação é executada.

Se não ocorre recombinação, a prole é a cópia dos pais.

Se ocorre recombinação, a prole é formada por partes dos pais.

Se a probabilidade de recombinação é 100%, então toda a prole será formada com

recombinação.

Se for 0%, a nova geração será formada por cópias exatas da população anterior

A recombinação é realizada com a esperança de que os novos

cromossomos tenham partes boas dos cromossomos anteriores e talvez

sejam melhores que seus pais. Entretanto é aconselhável deixar parte da

população sobreviver na geração seguinte.

CTC -17: Inteligência Artificial 43 / 50

Parâmetros - 2

Probabilidade de mutação: indica o quão freqüente

partes dos cromossomos sofrerão mutações.

Se não ocorrer mutação (probabilidade de mutação = 0%), a prole

não sofrerá mudanças após a recombinação.

Se ocorrer mutação, parte dos cromossomos será alterada.

Se a probabilidade de mutação for 100%, todos os cromossomos

serão alterados.

A mutação é realizada para prevenir que o AG caia em um

extremo local (mínimo ou máximo, depende das funções

usadas), porém ela não deve ocorrer com muita freqüência,

pois acarretaria em uma busca aleatória no espaço de

soluções.

CTC -17: Inteligência Artificial 44 / 50

Parâmetros - 3

Tamanho da população: indica quantos

cromossomos existem em uma população (em uma

geração).

Se existirem poucos cromossomos, o AG terá poucas

possibilidades de realizar a recombinação e apenas uma

pequena porção do espaço de estados será explorada.

Se existirem muitos cromossomos, o AG ficará lento.

Pesquisas mostram que após algum limite (que depende

principalmente da codificação e do problema) não é

vantajoso aumentar o tamanho da população pois não

tornará o algoritmo mais rápido.

CTC -17: Inteligência Artificial 45 / 50

Parâmetros - 4

Intervalo de Geração. Controla a porcentagem da

população que será substituída durante a próxima

geração.

Com um valor alto, a maior parte da população será

substituída, mas com valores muito altos pode ocorrer perda

de estruturas de alta aptidão.

Com um valor baixo, o algoritmo pode tornar-se muito lento.

CTC -17: Inteligência Artificial 46 / 50

Exemplo: 8 Rainhas

Codificação

Cromossomos compostos por 8 números (genes), a

posição do gene indica a coluna, o valor do número indica

a linha

CTC -17: Inteligência Artificial 47 / 50

Exemplo: 8 Rainhas

CTC -17: Inteligência Artificial 48 / 50

Recombinação: 8 Rainhas

CTC -17: Inteligência Artificial 49 / 50

Exemplo: 8 Rainhas

CTC -17: Inteligência Artificial 50 / 50

Exemplo: 8 Rainhas

Indíviduos mais aptos (maior função de aptidão) tem

maiores chances de serem selecionados