[Book] - Artificial Intelligence: A Modern approach - Cap 2.

Chapter 2 - Agentes inteligentes

Agentes e ambientes

agente → percebe o ambiente através de sensores, ele toma ação no ambiente através dos atuadores (actuators)

[File: 0af6d37f-cb12-4f56-8ceb-1ce9295868ba]

sequência de percepção → histórico de tudo que o agente já teve percepção na vida.

comportamento do agente → matematicamente pode ser definido como a função do agente

função do agente → função que dado uma sequência de percepção mapeia para ação. e.g: ambiente sujo → limpar

programa do agente → é diferente da função do agente, o programa é a implementação concreta rodando em algum canto / hardware.

image-vacuum-cleaner

[File: ffaa35e0-287f-4003-824c-76afd6a72643]

Racionalidade

O que é fazer a coisa certa?

A ideia de racionalidade e do agente ser racional é que ele maximiza uma função. Para definir o que é fazer a coisa certa temos que olhar para a função de desempenho.

Então podemos dizer que o agente é racional quando suas ações vão tentar maximizar a medida de desempenho.

Racionalidade não é o mesmo que perfeição. Racionalidade <> Perfeição

Racionalidade maximiza o desempenho esperado

Perfeição maximiza o desempenho real

Agentes racionais fazem ações que modificam as futuras percepções, aqui é usado o exemplo de atravessar a rua. Então sempre quando vamos atravessar a rua olhamos pra ver se não vem nenhum carro.

Essa parte de olhar antes de atravessar, para um agente seria o passo de buscar informações (information gathering)

Outro exemplo deste passo de busca de informações seria pela exploração do ambiente.

Um agente racional precisa ser autônomo.

PEAS (Performance | Environment | Actuators | Sensors)

[File: cdd6590a-2e09-4797-8262-c2c91dd97339]

[File: 7d07ea1a-83c2-4090-8fc6-27ee19cdd8af]

Completamente observável

os sensores permitem acesso a todo o ambiente (os aspectos relevantes ao problema);

Parcialmente observável

os sensores não detectam alguns aspectos do ambiente (e.g. limitação de sensores, ruídos).

Agente único

apenas um agente atua no ambiente (e.g. resolução de uma palavra cruzada)

Multi-agentes

diversos agentes atuam, em competição ou cooperação.

Determinístico

o próximo estado depende exclusivamente do estado atual e da ação do agente; Ou seja, não há incertezas!

Estocástico

quando há incertezas, os estados são descritos por meio de probabilidades

Episódico

ações do agente dependem apenas do estado atual (e.g classificação de peças defeituosas)

Sequencial

ações do agente dependem da sequência de estados anteriores; e podem afetar estados futuros (e.g jogar xadrez)

Estático

ambiente não muda enquanto agente não toma uma ação (e.g palavra-cruzada);

Dinâmico

ambiente pode mudar enquanto agente toma uma decisão (e.g carro autônomo).

Discreto vs Contínuo

depende a como os estados são tratados; o tempo é tratado e as ações são executadas;

No discreto temos a questão de como as coisas não são fluídas, há saltos / degraus de uma ação para outra;

e.g jogo de xadrez: move a peça x da posição a1 → b2;

e.g relógio digital

No contínuo o gráfico é fluido e contínuo, então no caso do exemplo do taxi, o carro não vai ir premeditadamente de a1 → b2, mas vai fazendo esse movimento contínuo no ambiente.

Conhecido vs Desconhecido

Refere-se a quanto o agente conhece o ambiente previamente;

Em um ambiente desconhecido, o agente deve aprender como atuar. Por exemplo, um agente que inicia um jogo novo precisará aprender o que cada comando faz.

[File: 51a63167-7a0b-43f2-a70b-b2c9b7bf27d8]

Estrutura dos agentes

agente = arquitetura + programa

Os programas que implementam a função do agente tem o mesmo formato geral:

recebem o estado do ambiente (percepções) e retornam uma ação.

def agenteMapa(ambiente):
    acao = mapa[ambiente]

    return acao

Tipos de agentes

  • Agentes reativos simples;
  • Agentes reativos baseados em modelo;
  • Agentes baseados em objetivo;
  • Agentes baseados em utilidade.

Agentes reativos simples

→**** Executam ações com base somente no estado atual

→ Utilizam regras do tipo se-então

def agente_reativo_simples(percepcao):
    estado = intepretar(percepcao)
    regra = obter_regra(estado, regras)
    return regra.acao

[File: 2ca9c242-2576-4e3b-9e46-94064bc6a131]

Este tipo de agente pode ocorrer de cair em loops infinitos, uma forma de mitigar isto seria randomizar suas ações.


Agentes reativos baseados em modelo

→ Considera a sequência de estados;

→ Pode lidar com ambientes parcialmente observáveis.

→ Transition model : sensor model (Esses modelos avaliam como o "mundo" se comporta, como ele evolui). Aqui foi usado de exemplo frenagem de carros;

def agente_reativo_modelo(percepcao):
    estado = atualizar_estado(estado, acao, percepcao, modelo)
    regra = obter_regra(estado, regras)
    acao = regra.acao
    return acao

[File: 9dbae9d1-4395-4f2e-95eb-d757edcfcec2]


Agentes baseados em objetivo

→ Regras do tipo se-então pode não ser suficiente para resolver todos os problemas;

→ Informação do objetivo para guiar as escolhas das ações.

→ O objetivo pode ser o destino de um trajeto, chegar ao fim dele dirigindo um carro.

def agente_objetivo(percepcao):
    estado = interpretar(percepcao)
    acao = obter_acao(estado, objetivo)
    return acao

[File: 5cc928fb-1fe9-4180-8165-fa637455085a]


Agentes baseados em utilidade

→ Saber somente o objetivo não garante que será realizada a melhor ação;

→ Necessário uma medida de utilidade.

→ Medida de performance.

→ Escolhe a ação que maximiza a utilidade esperada dos resultados da ação;

→ Nem todo agente baseado em utilidado são baseados em modelo, existem os agentes livres de modelo [tradução nossa]. Ele pode aprender qual ação é melhor em uma situação específica sem nunca

aprender exatamente como essa ação muda o ambiente.

→ Exemplo do táxi, de que há vários caminhos que chegam ao objetivo, mas qual deles é o mais seguro, ou mais rápido? Depende também o que tu quer maximizar, se a função de utilidade quiser maximizar a segurança, provavelmente irá entrar em conflito com o caminho rápido;

def agente_utilidade(percepcao):
    estado = interpretar(percepcao)
    acao = argmax(estado, acoes, f)
    return acao

[File: 818f66a8-1f4f-4a96-9558-141733dcd86b]


Agentes com aprendizagem

→ Qualquer um dos tipos de agentes vistos anteriormente podem ou não serem construídos como um agente com aprendizagem.

→ Alguns temas relacionados são o aprendizado de máquina e o aprendizado por reforço.

→ Compensação ou penalidade.

[File: cbeed2f6-82a1-4b5c-89da-fff3dcd48d72]

Representação de como os componentes de um agente trabalham, ou funcionam;

[File: c39578d7-9d8e-407a-9713-13f88690499d]

→ Atômico tem muito a ver com aquele exercício que o professor passou em aula de ir para outras cidades.

→ Factored pode se representado muito pelo exercício do aspirador.

→ Estruturado são os mais expressivos, o que mais se assemelha a forma como os seres humanos se expressam (objetos e relações/relacionamentos).


You'll only receive email when they publish something new.

More from jess
All posts