SOAR: Tutoriais 7, 8 e 9
Objetivos
Desenvolver as atividades dos tutoriais 7, 8 e 9 do Soar. No tutorial 7, é apresentado como funciona o mecanismo de Reiforcement Learning do Soar. No tutorial 8, é apresentado como funciona o mecanismo de memória semântica do Soar. No tutorial 9, é apresentado como funciona o mecanismo de memória episódica do Soar. Esses três mecanismos são desenvolvimentos mais recentes na arquitetura do Soar.
Relatório das Atividades
Atividade 1
O Tutorial 7 do Soar trata do recurso de aprendizagem por reforço (Reinforcement Learning – RL). No SOAR, o recurso de RL permite a um agente alterar o seu comportamento ao longo do tempo, mudando as preferências de indiferença com valor numérico, na memória procedural, em resposta a sinais de recompensa. Esse mecanismo contrasta com o chunking. Enquanto o chunking é uma forma de aprendizado que "executa uma única vez" (one-shot), aumentando o desempenho de execução do agente pelo resumo dos resultados de metas intermediárias, o RL é uma forma incremental de apendizado que altera o comportamento do agente de forma probabilística.
Para exemplificar o uso do RL no SOAR, foi usado um exemplo: um agente que pode mover-se para a esquerda ou para a direita. Embora desconhecido do agente, o movimento em uma direção é preferível ao movimento na outra direção. Após decidir por uma direção, o agente recebe uma realimentação, uma recompensa, indicando o quão boa foi a decisão tomada. No caso, receberá uma recompensa de valor -1 pelo movimento para a esquerda e +1 pelo movimento para a direita. Pelo uso de RL o agente aprenderá rapidamente que mover-se para a direita é preferível.
O código para esse agente é mostrado na Fig. 1.1, que captura a tela do Visual Soar, e as explicações a seguir referem-se a elementos nessa figura. O recurso de RL é desabilitado por padrão no SOAR. As instruções para habilitá-lo são mostradas em _firstload, sendo a primeira linha para ligá-lo e a segunda para definir a política de exploração probabilística que determinará a alteração dos valores númericos para as preferências. O código em elaborations/done determina que o agente pare quando uma direção é escolhida. O código em elaborations/reward atualiza o valor para a recompensa na estrutura state.reward-link.reward.value. É responsabilidade do agente a manutenção dessa estrutura, refletindo a realimentação adequada ao mecanismo de RL, uma vez que o SOAR não remove ou modifica valores nessa estrutura. A única operação do agente é move e, juntamente com o o seu código, são mostradas as regras que atualizam os valores numéricos para as preferências, left-right*rl*left e left-right*rl*right. São essas regras que determinam a alteração probabilística dos valores numéricos, de acordo com a política especificada, levando ao aprendizado da preferência pela direção direita.
|
Fig. 1.1 – Código do agente left-right, exemplo de uso de RL no SOAR. |
Ao executar o programa, percebe-se o aumento das escolhas pela direção direita e a consequente redução das escolhas pela direção esquerda.
Atividade 2
O Tutorial 8 do Soar trata do recurso de memória semântica (Semantic Memorry – SMem). Esse é um mecanismo que permite a um agente, intencionalmente, o armazenamento e a recuperação de objetos persistentes. Essa informação suplementa aquela contida na memória de curto prazo e outras memórias de longo prazo, como as regras na memória procedural.
|
Fig. 2.1 - Código smem-tutorial, exemplo do uso de memória semântica no SOAR. |
Atividade 3
O Tutorial 9 do Soar trata do recurso de memória episódica (Episodic Memory – EpMem). Esse é um mecanismo que automaticamente captura, armazena, e temporariamente indexa o estado do agente, suportando o endereçamento por conteúdo de forma que o agente possa recuperar suas próprias experiências anteriores. Essa informação suplementa aquela contida na memória de curto prazo e outras memórias de longo prazo, como as regras na memória procedural.
|
Fig. 3.1 - Código epmem-tutorial, exemplo de uso de memória episódica no SOAR. |