A03 Inteligência artificial 1 - ProgJogos/rvia-2sem2014 GitHub Wiki
Nesta aula, vamos começar a trabalhar inteligência artificial de forma mais prática. Vamos experimentar com algoritmos simples de decisão e execução de ações e com o uso de sensores básicos.
De certa forma, a principal pergunta de um algoritmo de inteligência artificial é "o que fazer agora?".
A principal dificuldade é a relação complexidade-computação. Toda computação (cálculo) leva tempo e recursos, logo é praticamente impossível avaliar todas as alternativas possíveis em muitos problemas. A solução para esse dilema passa por encontrar um viés, ou recorte, aceitável para diminuir o número de cenários para avaliar. Soluções ótimas (ou seja, a melhor decisão possível) nem sempre são possíveis ou desejáveis: podem tornar um adversário computacional previsível ou "chato". A decisão entre um algoritmo ou outro depende de muitos fatores, mas transcende questões apenas técncias, pois está muito relacionada a qual o tipo de experiência desejado.
O mecanismo de escolha de ação de um agente ou algoritmo está profundamente relacionado ao tipo de informação percebida e as estruturas e algoritmos usados para armazená-la e interpretá-la. Para analisar esse tipo de problema, são utilizados conceitos como heurísticas, grafos e modelos.
Heurística é um método ou processo criado com o objetivo de encontrar soluções para um problema. É um procedimento simplificador (embora não simplista) que, em face de questões difíceis envolve a substituição destas por outras de resolução mais fácil a fim de encontrar respostas viáveis, ainda que imperfeitas. Kahneman, Daniel.
Heurísticas são essenciais tanto no processo cognitivo humano e animal quanto na descrição e criação de sistemas de inteligência artificial. É importante pensar que cada heurística tem seu valor dentro de um conjunto de limitações e presupostos, que deve ser respeitado sob o risco de resultados inesperados ou simplesmente errados.
Alguns tipos de heurística:
- heurísticas de julgamento: processos de julgamentos ou previsões parciais baseados em similaridade e enquadramento, muitas vezes sem se dar conta disso.
- heurística de afeto: processo no qual as pessoas deixam que suas simpatias, antipatias e afinidades pessoais determinem suas crenças e ações.
- heurística de disponibilidade: processo de julgar a frequência de dados segundo a facilidade com que similaridades vêm à mente, dada à limitada capacidade de manter concentração/atenção e empreender considerável esforço mental ao mesmo tempo.
- heurística de avaliabilidade: processo no qual as tomadas de decisão são feitas e mudam conforme o quadro dado. Por ex. um julgamento ou tomada de decisão mediante avaliação conjunta dos elementos/fatores envolvidos tende a ser diferente de uma decisão tomada baseada numa avaliação isolada dos mesmos elementos
Respondem a percepções, interpretam as entradas, verifica uma regra correspondente e age seguindo uma relação entrada-ação já determinada. Não levam em conta a história de percepções anteriores ou o histórico do resultado de suas ações.
Conseguem lidar com um ambiente parcialmente observável. O seu estado é guardado e descreve uma parte do mundo que não está sendo percebido: este é o modelo de mundo. Logo, o modelo incorpora conhecimento de estados anteriores para então verificar regras e determinar ação.
Guardam informações sobre os objetivos desejáveis e que são usadas na hora de escolher entre múltiplas alternativas de ações para alcançar esses objetivos. É mais flexível, mas pode acabar por ser menos eficiente.
Além de conhecerem objetivos desejáveis, estes agentes incorporam alguma forma de avaliar qual dentre esses objetivos é o mais útil a cada momento. Agentes baseados em utilidade dependem de um grau maior de complexidade.
Pode operar em ambientes inicialmente desconhecidos. Existe numa lógica um pouco dualista: a parte que avalia como o aprendizado está se passando e outra que avalia e decide a performance. A parte de aprendizado usa um algoritmo "crítico" para avaliar os resultados das últimas ações e alterar adequadamente os critérios para futuras escolhas. A parte de perfomance é mais semelhante aos agentes vistos anteriormente. Também é importante um outro susbsistema responsável por criar ações que gerem perguntas interessantes.
Um exemplo desse tipo de algoritmo são os chamados algoritmos genéticos.
Inteligência artificial também é usada para outros fins além de decidir uma ação de um agente. Algumas áreas a que podemos aplicar as abordagens e conceitos discutidos são:
- Planejamento de longo prazo: estabelecer objetivos e alcançá-los
- Aprendizado: melhorar automaticamente a partir da experiência
- Comunicação: entendimento, interpretação de fala e texto humano
- Movimento: coordenação de movimentos, navegação e mapeamento
- Percepção: reconhecimento de padrões siginificativos a partir do input de sensores
Mais especificamente, na área de jogos:
- Modelagem da experiência de jogadores: entender e interpretar o estado emovcional e habildiade do jogador, para alterar o jogo de acordo. Exemplos: AI Director, equilíbrio dinâmico de jogos.
- Geração de conteúdo procedural: ambientes e elementos do conteúdo do jogo baseados em algoritmos e dados de forma automática.
- Data mining: interpretação e utilização dos dados de jogo dos jogadores.