7
1 Inteligência Artificial para Jogos Prof. Luiz Chaimowicz Busca com Adversários Múltiplos Agentes Ambiente Competitivo Objetivos Conflitantes Jogos Clássicos Xadrez, Damas, Jogo da Velha, Gamão, Go, Reversi (Othelo), etc... Sempre foram um grande desafio em IA Inteligência Artificial para Jogos Prof. Luiz Chaimowicz Jogos Clássicos em IA Características “gerais” dos Jogos Clássicos Determinísticos, completamente observáveis 2 Jogadores, turn taking Jogos de Soma-Zero (Zero-Sum Games) A função de utilidade dos jogadores adversários no final do jogo tem valor igual e oposto. Um caso especial do conceito matemático de Teoria dos Jogos Inteligência Artificial para Jogos Prof. Luiz Chaimowicz Jogos Clássicos em IA Em geral, são problemas difíceis. Xadrez: Jogadas possíveis: 35 (em média) Tempo de jogo: 50 jogadas, cada jogador Árvore com 35^100 nodos (=10^154). 10^40 distintos Árvore do Jogo Estado inicial: tabuleiro, primeiro jogador Função sucessora: <ação, estado> Teste de fim: chegou a um estado terminal? Função de utilidade: valor do estado terminal Inteligência Artificial para Jogos Prof. Luiz Chaimowicz Árvore do Jogo da Velha Inteligência Artificial para Jogos Prof. Luiz Chaimowicz Estratégias Ótimas O movimento do adversário é imprevisível Portanto a estratégia ótima leva ao melhor resultado considerando que o adversário sempre faz a melhor jogada possível Algoritmo MiniMax Jogadas alternam entre Max e Min Valor MiniMax: utilidade daquele estado considerando jogadas ótimas Utilidade(s) se s é um nodo terminal Maior MiniMax dos sucessores de s, se s é Max Menor MiniMax dos sucessores de s, se s é Min Inteligência Artificial para Jogos Prof. Luiz Chaimowicz Estratégias Ótimas Mais formalmente, função recursiva

Algoritmos IA

Embed Size (px)

Citation preview

Page 1: Algoritmos IA

1

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Busca com Adversários

Múltiplos AgentesAmbiente Competitivo

Objetivos Conflitantes

Jogos ClássicosXadrez, Damas, Jogo da Velha, Gamão, Go, Reversi (Othelo), etc...Sempre foram um grande desafio em IA

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Jogos Clássicos em IA

Características “gerais” dos Jogos ClássicosDeterminísticos, completamente observáveis2 Jogadores, turn takingJogos de Soma-Zero (Zero-Sum Games)

A função de utilidade dos jogadores adversários no final do jogo tem valor igual e oposto.

Um caso especial do conceito matemático de Teoria dos Jogos

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Jogos Clássicos em IA

Em geral, são problemas difíceis.Xadrez:

Jogadas possíveis: 35 (em média)Tempo de jogo: 50 jogadas, cada jogadorÁrvore com 35^100 nodos (=10^154). 10^40 distintos

Árvore do JogoEstado inicial: tabuleiro, primeiro jogadorFunção sucessora: <ação, estado>Teste de fim: chegou a um estado terminal?Função de utilidade: valor do estado terminal

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Árvore do Jogo da Velha

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Estratégias Ótimas

O movimento do adversário é imprevisívelPortanto a estratégia ótima leva ao melhor resultado considerando que o adversário sempre faz a melhor jogada possívelAlgoritmo MiniMax

Jogadas alternam entre Max e MinValor MiniMax: utilidade daquele estado considerando jogadas ótimas

Utilidade(s) se s é um nodo terminalMaior MiniMax dos sucessores de s, se s é MaxMenor MiniMax dos sucessores de s, se s é Min

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Estratégias Ótimas

Mais formalmente, função recursiva

Page 2: Algoritmos IA

2

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Exemplo: jogo com 2 jogadas

A estratégia ótima para Max, na verdade é a melhor solução para o pior casoO que ocorre se Min não jogar otimamente?

Max poderá jogar ainda melhor…Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Algoritmo MiniMax

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Algoritmo MiniMax

Faz uma caminhamento em profundidade completo da árvore!Se a profundidade é m e em cada estado existem b jogadas possíveis, a ordem de complexidade é O(bm)Ou seja esse algoritmo não é prático para jogos reais

Mas serve para análise matemática e como base para algoritmos mais eficientes

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Multiplayer games

O MiniMax pode ser estendido para jogos com múltiplos jogadores

Uso de um vetor de utilidades

AliançasPodem ocorrer naturalmente no processo de maximizar a função de utilidade

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Alpha-Beta Pruning

Problema com o MiniMax# de estados é exponencial

Pruning = PodaNão examinar grandes partes da árvore, diminuindo assim o custo

Alpha-Beta PrunningRetorna a mesma ação do MiniMax, mas elimina caminhos que não influenciam a decisão

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

α-β pruning example

Page 3: Algoritmos IA

3

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

α-β pruning example

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

α-β pruning example

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

α-β pruning example

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

α-β pruning example

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Alpha-Beta Pruning

α = o maior valor jáencontrado no caminho(melhor alternativa p/ MAX)β = o menor valor jáencontrado no caminho(melhor alternativa p/ MIN)Se v é pior que alpha, MAX vai evitá-lo

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Alpha-Beta Pruning

Page 4: Algoritmos IA

4

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Alpha-Beta Pruning

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Alpha-Beta Pruning

A eficiência do algoritmo depende da ordem em que os nodos são examinadosNa média, considerando que uma ordenação boa pode ser feita, o número de nodos a ser examinado é O(bm/2)

é como se o branching factor fosse reduzido para √b, ao invés de b

6 ao invés de 35 no xadrez

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Estados Repetidos

Uma causa do crescimento exponencial de estados e a ocorrência de estados repetidos

<a1,b1,a2,b2> = <a1,b2,a2,b1>Uma forma de evitar isso é construir uma “Tabela de Transposição”, que guarda a utilidade de estados já computadosTradeoff: Espaço x Tempo

Tentar guardar apenas os mais significativos

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Decisões Imperfeitas, em Tempo Real

Minimax mesmo c/ Alpha Beta Prunning não é factível para jogos complexosSolução: Parar a busca antes de chegar ao finalÉ necessário:

Função de Avaliação (Evaluation Function): fornece uma estimativa da utilidade daquele estado (Heurística)Teste de Parada (Cutoff Test): decide em quando parar a busca

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Funções de Avaliação

Devem tentar manter a mesma ordenação da função de utilidade finalNão podem demorar muitoDevem estar relacionadas com as “chances de ganhar o jogo”

Chances? Jogo é determinístico!?Incerteza computacional ao invés de incerteza da informação

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Funções de Avaliação

Análise de características (features) do estado correnteDivisão em classes de equivalência

Conjuntos de estados com características similaresPara cada classe, determina-se por experiência:

%Vitórias, %Empates, %Derrotas

Função de avaliação é calculada como uma média ponderada.

Ex. 72% Vitória, 20% Derrota, 8% empateEval(S) = (0.72 x 1) + (0.2 x -1) + (0.08 x 0) = 0.52

Requer muitas classes e experiência...

Page 5: Algoritmos IA

5

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Funções de Avaliação

Uma forma mais fácil é dar valor diretamente as features

Xadrez: Peão = 1, Cavalo / Bispo = 3, etc...“Estrutura de peões”, “Proteção do rei”, etc...

A função de avaliação é computada através de uma combinação linear ponderada

Eval(S) = w1.f1 (s) + w2.f2 (s) + ... + wn.fn (s) Funções não lineares também podem ser usadas

Um par de bispos tem mais valor que o dobro de um sóLeva em consideração as outras peças

De novo, experiência / aprendizado é necessário

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Teste de Parada

If Cutoff-Test(State, Depth) return Eval(state)Forma mais comum: profundidade fixaProblemas: e se na próxima jogada...

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Teste de Parada

A função de avaliação somente deve ser aplicada a estados que não vão sofrer mudanças bruscas de valor

Quiescence Search

Efeito Horizonte: jogada catastrófica que vai acontecer inevitavelmente em um futuro próximo, fora do horizonte de busca

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Poda

Singular ExtensionsUltrapassar a profundidade limite para ações que são “claramente melhores”Na prática, diminui o branching factor (poda)

Forward PrunningIgnorar certos movimentos possíveisHumanos fazem isso inconscientementeNão há garantias...Interessante para movimentos simétricos

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Xadrez na Prática

Suponha uma função de avaliação e um PC que consiga investigar 10^6 nodos/s200 x 10^6 nodos por jogada (3 minutos)Branching Factor: 35: 35^5 = 50 x 10^6Minimax = 5 jogadas (jogador mediano)Alpha-Beta = 10 Jogadas (expert)Para virar um Grande-Mestre:

Função de avaliação bem ajustadaBanco de jogadas (abertura e término)Supercomputador...

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Jogos Não-Determinísticos (sorte)

Exemplo: GamãoAs jogadas possíveis são determinadas depois que se jogam os dadosNão é possível construir uma árvore como no caso do xadrez e aplicar o minimaxSolução:

Incluir nodos intermediários com as chancesAlgoritmo: ExpectiMinimax

Page 6: Algoritmos IA

6

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Jogos Não-Determinísticos (sorte)

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

ExpectiMinimax

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

ExpectiMinimax

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Estado da Arte de Alguns Jogos

XadrezDeep Blue bateu Kasparov em 1997

Máquina paralela: 30 RS/6000 + 480 Custom126 Milhões de nodos/s (330 Max) = média 14 níveisCom uso de Extensions podia chegar a 40 níveisAlpha-Beta c/ função de avaliação com 8000 featuresBanco de dados

4000 aberturasTodos os fechamentos possíveis p/ 5 peças (muitos p/ 6)Análise de 700.000 jogos (consensus)

Hardware x Software : qual é mais importante?Desde 92, PC’s tem batido supercomputadoresPrograma Fritz em um PC x Kasparov em 2003: empate

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Estado da Arte de Alguns Jogos

DamasEm 1952 Arthur Samuel (IBM) fez um dos primeiros programas

Função de avaliação aprendida em jogos consigo mesmo

Chinook (Vice-Campeão US-Open em 1990)Roda em PC’sAlpha-Beta SearchBanco com 444 bilhões de posições (<8 peças)Chinook x Tinsley

Com o uso de bancos de posições, uma pequena busca leva a um resultado já resolvido

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Estado da Arte de Alguns Jogos

Othello (Reversi)Espaço de busca: 5 a 15 movimentosLogistello (1997) 6 x 0 Campeão MundialComputadores são melhores que humanos

Page 7: Algoritmos IA

7

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Estado da Arte de Alguns Jogos

GoAté 1997 não existiam programas bonsHoje em dia, são melhores

Go4++ (nível amador fraco)Reconhecimento de padrões + pequena busca

Programas irão requerer técnicas mais sofisticadas de tomada de decisão

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Estado da Arte de Alguns Jogos

GamãoIncerteza faz com que técnicas de busca não sejam satisfatóriasEsforço na construção de funções de avaliação sofisticadasTD-Gammon está entre os 3 melhores do mundo

Aprendizado por reforçoRedes NeuraisBusca de 2 a 3 níveis

Inteligência Artificial para Jogos Prof. Luiz Chaimowicz

Estado da Arte de Alguns Jogos

BridgeDifícil para computadoresParcialmente Observável

Cartas escondidasBlefesComunicação

Bridge Baron (1997)GIB (2000)

12o lugar em 35 contra humanos