Part IX: Episodic Memory
Episodic memory (EpMem) é um mecanismo no Soar que automaticamente captura, armazena e temporalmente indexa o estado do agente.
1. A Short Demonstration
Primeiro é feito um exemplo de captura do episódio e o que contem a sua memória.
Foi feito um programa em SOAR com os seguintes comandos:
epmem --set trigger dc
epmem --set learning on
watch --epmem
Depois de fazer click no botão de “Step” duas vezes é obtida a seguinte saída:
A massagem apresenta a criação de um Episode com ID 1. Pode-se ver o conteúdo da episodic memory usando o comando epmem --print que tem como parâmetro o ID do episódio. Assim a saída do comando epmem --print 1 é
É possível obter uma imagem gráfica do conteúdo da memória utilizando o comando
command-to-file epmem.gv epmem --viz 1
2. Episodic Storage
Episodic storage é automático e captura o estado-maior (top-state) do agente na working memory. Para habilitar o armazenamento do Episodic Memory é necessário executar o seguinte comando:
epmem --set learning on
Por padrão, episodic memory armazena novos episódios cada vez que um elemento da Working Memory é adicionada à Working Memory que tem o identificador output-link.
O seguinte parâmetro importante é o momento quando episodic memory armazena os episódios. Por padrão, este processo acontece no final da fase de saída. Mas SOAR permite que o processo aconteça no final da fase de decisão. Esto se pode habilitar com o seguinte comando:
epmem --set phase selection
Para habilitar a saída com a informação do episodic memory é necessário executar o seguinte comando:
watch --epmem
3. Agent Interation
Os agentes interagem com a episodic memory através de estruturas especiais na working memory. SOAR automaticamente cria um epmem link em cada estado, e cada epmem link tem uma sub-estrutura especializada: um command link e um result link para o feedback da episodic memory.
A saída do SOAR ao executar o comando print --depth 10 <s> é:
Como será descrito mais na frente, o agente, através de regras, enche e mantêm o command link e a arquitetura enche e mantêm o result link
4. Cue-Based Retrieval.
O método principal como um agente pode obter o conhecimento da episodic memory é chamado
cue-based retrieval: o agente solicita da episodic memory um episódio que mais se aproxime a uma sugestão nos elementos da working memory. A sintaxe do comando é (<cmd> ^query <cue>), onde <cue> forma a raiz da sugestão. O comando retorna o episódio mais recente com a máxima contagem.
5. Temporal Progression
Outra maneira para que o agente possa obter informação da episodic memory é obtendo o episódio que está temporalmente, antes ou depois do último episódio que foi obtido. A sintaxe do comando são:
(<cmd> ^previous <id>) para obter o episódio passado, e (<cmd> ^next <id>) para obter o episódio seguinte. Aqui <id> é o identificador do episódio.