Upload
neemias-gabriel
View
356
Download
1
Embed Size (px)
Citation preview
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
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
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
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...
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
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
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