[Book] - Artificial Intelligence: A Modern approach - Cap 2.
July 28, 2025•1,060 words
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.
[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).