Na minha infância, um dos mistérios do mundo dos games era como o “computador” jogava contra a gente. Mais tarde, quando tive contato com minha primeira linguagem de programação, o Basic, é que comecei a entender os desafios em criar um adversário computacional para um jogo. Já na faculdade de ciências da computação, uma das matérias mais esperadas era a de Inteligência Artificial, porém infelizmente foi muito, muito fraca por diversos motivos que não vem ao caso agora. Desde então IA não tem sido um assunto do meu dia a dia, mas no mês passado uma iniciativa da Universidade de Stanford me despertou para o assunto novamente.
 
Durante este segundo semestre de 2011, será ministrada de forma aberta e gratuita a disciplina de Introdução à Inteligência Artificial pelos professores e escritores de IA Sebastian Thrun (Stanford) e Peter Norvig (Google). Até o momento deste post, houveram 190.000 inscritos no curso, o qual terá legendas para mais de 100 idiomas.
 
Para saber mais sobre esta iniciativa ou mesmo participar, consulte https://www.ai-class.com
 
O interessante da IA é que ela pode ser aplicada em praticamente todas os tipos de software, seja em um jogo onde a IA ajuda na construção de adversários, um site onde podemos prever a navegação dos usuários ou até em um aplicativo corporativo tradicional onde podemos manipular as informações para uma melhor tomada de decisão gerencial.
 
Pretendo registrar no blog algumas anotações pessoais sobre esta disciplina com o intuito de servir de consulta rápida futura.
Além disto, registrar algumas conclusões próprias sobre os temas discutidos ao longo da disciplina e algumas aplicações práticas que vejo em assuntos do meu dia a dia.
 

Terminologia

 
Inteligência Artificial
 
IA é a disciplina que aborda a incerteza e a gerência no processo de tomada de decisão.
 
Razões de incertezas: limitação dos sensores do ambiente, atuação de adversários que dificultam entender a situação, ambientes estocásticos (jogar os dados), performance (computador não consegue calcular a tempo), ignorância do que está ocorrendo.
 
Ambiente completamente observável
 
Tudo o que é necessário e influencia em uma ação está exposto.

  • todas as cartas estão visíveis e assim podemos tomar a melhor decisão.
  • os sensores podem ver todo o estado do ambiente

Exemplos: jogo de damas, jogo de xadrez
 
Ambiente parcialmente observável
Nem tudo está exposto para a tomada de decisão.

  • algumas cartas não estão visíveis
  • os sensores podem ver apenas uma fração do estado do ambiente
  • é comum o agente usar memória interna para entender qual é o estado do ambiente
    • histórico de jogadas anteriores para ajudar na tomada de decisão.

Exemplos: jogo de poker
 
Ambiente determinista
 
As ações de seu agente exclusivamente determinam a saída.

Por exemplo, ao mover uma peça no xadrez não há aleatoriedade, já é pré-determinado. Não importa para onde vai a peça, a saída é a mesma.
 
Exemplos: jogo de xadrez, jogo de damas
 

Ambiente estocástico
 
Há uma aleatoriedade na saída do agente. Por exemplo, o jogo de gamao. O movimento ainda pode ser determinista, porém a saída envolve jogar os dados, o que não tem como prever havendo uma aleatoriedade envolvida na saída dos dados.
 
No gamão, mesmo que eu queira mover X posições, não tenho poder sobre isso, pois é os dados que irão decidir a quantidade de posições.
Isto não ocorre no xadrez onde o jogador decide quantas posições quer mover.
 
Exemplos: jogo de poker, carro robô (outros carros influenciam a saída)
 

Ambiente Discreto
 
Ambiente onde há uma quantidade finita de escolhas de ação e de coisas que pode ser sentida.
Por exemplo, no xadrez há uma quantidade finita de posições no tabuleiro e uma quantidade finita de coisas a fazer.
Exemplos: jogo de damas, jogo de poker
 
Ambiente Contínuo
 
Ambiente onde há uma quantidade infinita de escolhas de ação e de coisas que pode ser sentida.
Exemplo: jogo de dardos. Há uma quantidade infinita de mirar os dardos e de acelera-los
 
Ambiente Benigno
 
Não possui um objetivo próprio.
O ambiente pode ser aleatório e estocástico.
Por exemplo, o clima. Ele é aleatório, afeta as escolhas de ações mas não está lá para prejudicá-lo.
Exemplo: carro robô
 
Ambiente antagonista
 
O ambiente tem um objetivo. Como no xadrez, o seu oponente está lá para vencê-lo.

É mais difícil encontrar as ações corretas em um ambiente antagonista pois seu oponente está constantemente te observando e contra-atacando conforme a suas ações.
Exemplos: jogo de damas, jogo de poker