Desenvolvimento de Sistemas Baseados em Conhecimento Busca Adversarial Busca Adversariais ou Jogos • Em ambientes multiagentes, há pouca previsibilidade – Ações dos outros agentes – É preciso tratar as contingências • Em ambiente competitivos, há conflito de objetivos – Ex. negociação em comércio eletrônico • Nestes casos, temos “Busca contra adversário, ou simplesmente “jogo” • Em economia, na “teoria dos jogos”, estuda-se vários tipos de “jogos” Busca Adversariais ou Jogos • A IA trabalha com um tipo particular de jogo – – – – Two-player Turn-taking Zero-sum (se um ganha, o outro perde) Perfect information (observável) • Histórico – – – – Xadrez: desde anos 50, hoje atingiu nível de mestre Damas e Othelo: hoje, melhor que qualquer humano Gamão: hoje, nível de campeão Go, nível amador Busca Adversariais ou Jogos • Aplicações atrativas para métodos IA desde o início. – Sinônimo de inteligência – Ações bem definidas e ambiente acessível – Abstração (representação simplificada de problemas reais) • Porém desafiador: – Complexidade » Xadrez: 35 movimentos possíveis por turno, 25 jogadas por jogador por partida => 3550 10154 (1040 nós distintos) – Incerteza devido ao outro jogador; – Problema “contingencial”: agente deve agir antes de completar a busca Formulando o Problema • Formulação – – – – Estado inicial: posições do tabuleiro + de quem é a vez Estado final: posições em que o jogo acaba Operadores: jogadas legais para um dado estado da partida Função de utilidade (objetivo ou payoff): valor numérico para os estados finais (pontuação) » Xadrez = +1, 0, -1; gamão = [-192,+192] • Busca: algoritmo minimax – Idéia: maximizar a utilidade (ganho) supondo que o adversário vai tentar minimizá-la (todos jogam otimamente!) » O agente é MAX e o adversário é MIN – Minimax faz busca cega em profundidade Algoritmo Minimax Max(X) x x x x x x x Min(O) xo x xo x x o ... xo x xo x ... ... ... ... ... xo x o x o xo x o o x xx xo x x xo o -1 0 +1 o x Max(X) Min(O) ... Função utilidade x Algoritmo Minimax • Passos – Gera a árvore inteira até os estados terminais. – Aplica a função de utilidade nas folhas. – Propaga os valores dessa função subindo a árvore através do minimax – Determinar qual o valor que será escolhido por MAX • Formalmente: o valor minimax de um nó n é dado por – Minimax-Value(n) = Utility(n), maxssucesssors(n)Minimax-Value(s), minssucesssors(n)Minimax-Value(s), se n é terminal se n é um nó Max se n é um nó Min Algoritmo minimax (exemplo) A MAX a1 b1 3 b2 12 a3 a2 B 3 MIN 3 C 2 c1 b3 8 2 Min node c2 4 D 2 d1 c3 6 14 Max node d2 5 d3 2 Algoritmo Minimax Algoritmo Minimax (críticas) • É completa e ótima mas... • Problemas – Tempo gasto é totalmente impraticável, porém o algoritmo serve como base para outros métodos mais realísticos. – Complexidade: O(bm) • Para melhorar (combinar duas técnicas) 1) Podar a arvore onde a busca seria irrelevante: poda alfa-beta (alfa-beta pruning) 2) Substituir a profundidade n de min-max(n) pela estimativa de minmax(n): função de avaliação Alpha-Beta Pruning • Função: – Não expandir desnecessariamente nós durante o minimax (mas devolvendo o mesmo resultado) • Idéia: não vale a pena piorar, se já achou algo melhor • Mantém 2 parâmetros – - melhor valor (mais alto) encontrado até então para MAX – - melhor valor (mais baixo) encontrado até então para MIN • Teste de expansão: – não pode diminuir (não pode ser menor que um ancestral) – não pode aumentar (não pode ser maior que um ancestral Alpha-Beta Pruning Lembrar que min-max faz busca em profundidade [-∞,+∞] A O melhor para MIN é 3 e para MAX é +∞ [-∞,3] B 3 [-∞,+∞] A [-∞,3] B 3 12 Nada mudou... Alpha-Beta Pruning [3,+∞] A [3,3] B 3 12 Agora dá para saber que MIN vai escolher no máx. 3 8 [3,+∞] A [3,3] B 3 12 [-∞,2] C 8 2 Não vale mais a pena para MAX explorar C, porque MIN vai escolher no máx. 2 e MAX já tem 3 Alpha-Beta Pruning [3,14] A [3,3] B 3 12 [-∞,2] C 8 2 Realisticamante, 14 é o melhor para max por enquanto [-∞,14] D 14 [3,3] A [3,3] B 3 12 [-∞,2] C 8 2 [2,2] D 14 5 2 Alpha-Beta Pruning 3 MAX 3 MIN MAX 0 3 2 2 0 3 5 0 2 1 Alpha-Beta Pruning - Algoritmo Funções de Avaliação • Reflete as chances de ganhar: baseada no valor material – ex. valor de uma peça independentemente da posição das outras • Função Linear de Peso de propriedade do nó: – w1f1+w2f2+...+wnfn – Ex. Os pesos (w) no xadrez poderiam ser o tipo de pedra do xadrez (Peão-1, ..., Rainha-9) e os (f) poderiam ser o número de cada peça no tabuleiro • Escolha crucial: compromisso entre precisão e eficiência Funções de Avaliação X X 0 tem 5 possibilidades X tem 6 possibilidades 0 0 X h=6-5=1 0 0 X h=5-4=1 X 0 h = 4 - 6 = = -2 Funções de Avaliação Minimax de duas jogadas (two-ply) aplicado à abertura do jogo da velha Funções de Avaliação • Quando aplicar a função de avaliação? – Definir uma profundidade máxima ou iterativa não funciona devido à incerteza inerente ao problema – Solução: Procura Tranqüila (Quiescence search): – Idéia: evitar avaliação em situações a partir das quais pode haver mudanças bruscas – No caso do jogo da velha, toda posição é tranqüila mas no xadrez não.... (ex. um peça de xadrez a ser comida) – Algoritmo: Se a situação (nó) é “tranqüila”, então aplica a função de avaliação, senão busca até encontrar uma situação “tranqüila” Funções de Avaliação • Ainda pode ser complexo... – bm = 106, b=35 m=4 • Olhar para frente 4-ply (quatro lances) é pouco para um nível profissional! – 4-ply ≈ novato humano – 8-ply ≈ PC típico, mestre humano – 12-ply ≈ Deep Blue, Kasparov Jogos com Elementos de Acaso • Há jogos com elementos de imprevisibilidade maior do que os tratados – Ex. gamão – Não sabemos quais são as jogadas legais do adversário – A árvore de jogos (game tree) usada não vai servir! Jogos com elementos de acaso • Nova árvore de jogos – Inclui nós de acaso, além dos nós MAX e MIN – Os ramos dos nós de acaso, correspondem ao resultados do jogar dos dados do gamão, por exemplo » Cada ramo pode ter uma probabilidade associada – Não podemos mais falar de valor-minimax de um nó, mas sim de valor-minimax esperado (expectiminimax value) • Expectiminimax (n) = Utility(n), se n é terminal maxsSucesssors(n) Expectiminimax(s), minsSucesssors(n) Expectiminimax(s), sSucesssors(n) P(s).Expectiminimax(s), se n é um nó Max se n é um nó Min se n é um nó de acaso Árvore do jogo de Gamão nós de acaso Probabilidades Implementação 2 (I2) • Título do problema: – Jogo da Velha (Tic-tac-toe) • Objetivo: – Implementar um agente que participe de um jogo da velha contra um jogador humano : • Tecnologia a ser usada: – Algoritmo Alpha-Beta Pruning (Slide 16)