You are here

Aulas 12 e 13 - LIDA

 

Atividades da Aula 12: A arquitetura LIDA

Nesta atividade estudamos de maneira introdutória a arquitetura lida e seu framework a partir do material disponibilizado na página do LIDA. Começaremos explicando alguns conceitos principais da arquitetura:

  • Arquitetura baseada em Codelets (o que é isso ?)

A arquitetura do LIDA é em parte composta de entidades em um nivel relativamente alto de abstração como Behaviors, nós de mensagens e etc, e parte por Codelets de baixo nível (pequenos trechos de códigos com funcionalidades bem definidas) que são executados de maneira independente um dos outros. Os Codelets são especializados para alguma tarefa simples e frequentemente tem o papel de monitorar as condições da percepção para identificar situações nas quais podem agir, ou seja são capazes de reconhecer uma condição ou problema no qual devem agir. Além disso os Codelets também tem ativadores. Assim que notam uma situação adequada, um "attention codelet" pode aumentar sua ativação em razão do encontro entre a situação e suas preferência. Isto permite que uma coalizão (coleção de codeletes relacionados), seja formada para competir no processo de cônsciencia global (explicado a seguir). 

  • PAM - Perceptual Associative Memory:

É a base de conhecimento de percepção do LIDA, ou seja essêncialmente trata-se de uma memória de reconhecimento dos estimulos de entrada, constituindo o começo do processo de cognição. Computacionalmente é representada por uma rede semântica de ativação chamada "SlipNet" onde cada nó nesta rede representa detecção de features, objetos, categorias e situações. A PAM age como um filtro, deixando passar a cada momento apenas as informações mais relevantes da memoria sensorial. Estas informações filtradas constitutem então a "atual percepção", que é passada para a "working memory (workspace)".

  • Behavior Network (Rede de Comportamentos):

Trata-se de uma implementação do módulo de seleção de açoes. É responsável por selecionar um comportamento que é executao ao final do ciclo de cognição. Esta seleção é feita levando em conta a ativação de cada "Comportamento" (Behavior), ativação esta que é alterada de acordo com o conteúdo atual da cosnciencia bem como pelo relacionamento do Behavior com outros que estão atualmente na rede de comportamentos.

 

  • Global Workspace Theory (Mecanismo de Consciência do LIDA)

É uma teoria de consciência funcional e cognição proposta por Baars, que descreve a funcionalidade da cosnciência como um processo pelo qual vários processadores contendo informações de 'codelets' vindas de diversas fontes como a PAM, a memória episódica transiente e a memória declarativa compentem para acessar um Workspace Global. O vencedor tem seu conteudo propagado pelo sistema cognitivo.

 

Vamos a seguir, tentar responder as seguintes questões:

  • Como a arquitetura LIDA implementa a percepção do ambiente ?

Inicialmente o input sensorial é taggeado com um significado semantico no seguinte fluxo: Os detectores de features de baixo nivel na memória sensorial são executados sobre o estímulo de entrada. O resultado desta deteção é então passado para a PAM (Perceptual Associative Memory) onde detectores de features de mais alto nível são executados e passam então a reconhecer abstrações de entidades como objetos, evnetos, ações e etc. A saída desta deteção na PAM é então enviada para o Worspace, e de lá enviada para a Memória Episódia Transiente e para a Memória Declarativa. As associações locais geradas por esetes modulos de memória são entao combinada com a percepção para gerar o "Modelo Situacional Atual", que é o "mapa interno" de como o agente "percebe" o ambiente.

  • Como a arquitetura LIDA guarda/armazena informações de memória ?

A working memory (Workspace) é composta de uma rede de nós slipnet ( rede semântica de ativação) e suas interconexões, com capacidade de decaimento. A memória episódica é implementada através de variantes da chamada "Sparce Distributed Memory" e a memória procedural é uma versão simplificada do mecanismo de "schema" de Drescher, o chamado "scheme net". Assim como o slipnet da PAM, o scheme net é um grafo direcional cujos nós são schemes de ação e cujas arestas representam a relação de "derivado de". Um scheme é composto de uma ação junto com seu cotexto e resultado. 

  • Como a arquitetura LIDA seleciona as ações que serão implementadas no ambiente ?
Através da Behavior Network: Ela elenca os Behaviors advindos da memória procedural como participantes de uma rede de Behaviors em que cada um pode afetar ao outro quanto à sua ativação. Assim, a ativação de cada um dos behaviors pode acabar amplificando ou inibindo a ativação dos outros behaviors conectados. O Behavior com maior ativação ao final do processo de seleção é o escolhido como ação para ser executado pelo agente no ambiente através do seu sistema sensorio-motor.
 
  • Como a arquitetura LIDA executa a ação selecionada no ambiente ?

Através do modulo de Sensory-Motor Memory. Este módulo contem algoritmos (planos motores) para a execução do atuador, sendo que o processo se dá inicialmente através da recepção dos Behaviors seleciodos pela Behavior Network . Em seguida é determinado o algoritmo apropriado para executar aquela ação. Os atuadores do agente então executam o algoritmo, e mesmo durante a execução este módulo recebe informações da memórial sensorial que consiste na implementação do chamado "Dorsal Stream". 

 

Atividades da Aula 13: LIDA - Exemplos de Implementação Prática

 

Atividade 1

Download do conteúdo do tutorial efetuado com sucesso!

Atividade 2 - Tutorial Project I

  • Basic Agent Exercise 0

 

Passamos pelo código para poder enteder a estrutura do projeto, em especial os arquivos de configuração e as classes Java de deteção de features (cor e formato) e de inicialização do projeto.

 

 

  • Basic Agent Exercise 1

 

Controle e familiarização com o toolbar e seus comandos, além das outras interfaces para Log e visualização das configurações. Especialmente quanto ao controle step by step da simulação e a duração dos tickets. Com duração 0ms a aplicação praticamente trava dado a grande quatidade de steps executadas.

 

  • Basic Agent Exercise 2

Até a Task 3 deste exercício, continuamos a explorar as interfaces do simulador agora em especial a PAM Table, PerceptualBuffer (referente a visualização dos nós do Workspace do LIDA Model, já descrito anteriormente) e o GlobalWorkspace (as coalizões são coleções de codelets como já explicado e quando selecionados são são propagados pelo sistema, no caso de um agente no framework apenas os modulos que se cadastraram como listener, "BroadcastListener", recebem essa propagação) .

Na Task 4, adicionamos um guiPanel para mostrar o conteúdo do CurrentSituationalModel, através da seguinte linha de código:

Resultando nesta aba da interface no simulador:

Assim como o PerceptualBuffer, o CurrentSituationalModule são modulos do WorkspaceBuffer, ou seja submodulos do Worspace, portanto ambos compartilham de instanciações de coalizões dos Attention Codelets.

  • Basic Agent Exercise 3

Nesta atividade vamos implementar algumas funcionalidades do framework como incluir um attention codelet, feature detector, listener e uma declaração de modulo. O diagrama a seguir mostra em pontilhado as partes a serem implementadas:

Durante as tarefas gradualmente foram adicionadas as definições dos elementos citados, com os trechos de código a seguir:

Por fim, como resultado temos a deteção do padrão "Círculo Azul"  e o consequente aperto do Botão 2:

  • Advanced Exercise 1

Neste tutorial vemos a capacidade de rodar o lida framework sem a interface gráfica e alterar o mecanismo padrão de log, por exemplo para utilizar outras classes ou configurar o nivel de log desejado e destino.

  • Advanced Exercise 2

Nesta atividade o parametro ticksPerRun for exercitado, executando inicialmente com valor padrão e depois com as seguintes alterações:

Notou-se que menos coalizões eram mostradas com os novos parametros no GlobalWorkspace, bem como após 10000 ticks, haviam apenas 80 broadcasts contra 120, após 10000 ticks com os parâmetros originais.

  • Advanced Exercise 3

Primeiro criamos um feature detector para identificar os casos em que nao há nenhum shape na tela, ou seja, todo o ambiente está branco:

 

Em seguida adicionamos este detector ao factoryData.xml, como uma nova task:

Adicionamos também um nó "empty", na declaração do PAM:

Continuando, temos uma nova task a ser adicionada no Attention Codelet:

No módulo ProceduralMemory, definimos uma ação para soltar os botões quando o nó "empty" for selecionado:

Por fim, no módulo SensoryMotorMemory, habilitamos a terceira ação para efetivamente executar o release dos botões:

O resultado é o de ter os botões não pressionados enquanto o ambiente está vazio (todo branco).

 

Atividade 3 - Tutorial Project II

  • Agent Exercise 1

Na tarefa 1 nos familiarirzamos com a interface. Em especial notamos o Environment bem mais elaborado neste projeto. Há um grid de célular que podem estar ocupadas com diversos tipos de "objetos" diferentes, além do proprio agente. É possivel obter detalhes dos objetos clicando sobre os mesmos e visualizando as informações no lado direito deste painel.

Na tarefa 2 exploramos o painel PAM Graph, que representa o grafo de nós slipnets já descritos anteriormente que compõe a PAM.

Na tarefa 3 executamos a simulação do agente, que passa a evitar os macacos e tenta explorar o ambiente quando sua saúde diminui sendo também capaz de comer algum hamburguer que encontrarn o caminho. Pausando a simulação podemos avaliar com mais detalhes os paineis de Running Task e Task Queue. Nela podemos ver todas as tarefas e os respectivos ticks em que foram executadas.

  • ALIfe Agent Exercise 2

Na tarefa 0, começamos a observar que o agente para de se mover quando sua saúde passa a atingir um nivel crítico, (abaixo de 0.33).

Para a tarefa 1 então criaremos um feature detector para identificar o caso de saúde em nível crítico (BadHealthDetector). Seguindo a orientação do tutorial, copiamos o exemplo da classe GoodHealthDetector, apenas ajustando o condicional para detectar a saude em casos menores ou iguais a 0.33. 

Na tarefa 2 adicionamos este detector ao factoryData.xml, especificamente na seção de <tasks> :

Na tarefa 3 adicionamos uma tarefa BadHealthDetector na <initialTasks> do módulo PerceptualAssociativeMemory.

Por fim, na quarta tarefa adicionamos a task "predatorFrontDetector" com base na "predatorOriginDetector" conforme orientado no tutorial.

Agora executamos novamente a simulação e notamos que o agente passa a executar as ações esperadas, ou seja, quando sua saude está abaixo de 0.33 ele continua a se movimentar, e se um macaco fica a sua frente ele foge. Há principal diferença é a de que justamente agora o agente tem a capacidade de "percepção" destas situações. Os feature detectors e as task adicionadas fazem com que o agente possa detectar a situação da saúde e agir. 

  • ALIfe Agent Exercise 3

Na tarefa 0, ajustamos o arquivo de configuração para executar o agente do excercicio 3 e voltamos a quantidade de comida para 10. Executamos o simulador e notamos que realmente o agente não reage ao ataque dos macacos. Essa falta de reação se dá justamente pela falta do Attention Codelet para levar a percepção até a conciência.

Na tarefa 1, criamos um novo Attention Codelet chamado PredatorAttentionCodelet. Ele permite que coalizões sejam enviadas para o GlobalWorkspace e com isso o agente passa a regir à presença de macacos.

Na tarefa 2 o parâmetro initialActivation do FoodAttentionCodelet é alterado de 1.0 para 0.1. Na simulação notamos que o agente para de comer os hamburgueres, sendo que isso acontece pois a ativação deste codelet fica muito baixa, fazendo com que mesmo que seja percebida a comida, a mesca acaba ignorada.

Na tarefa 3 restauramos o parametro alterado na tarefa 2 para 1.0.  Rodamos a simulação e em seguida paramos e alteramos o parametro refractoryPeriod do GoodHealthAttentionCodelet para 10. Rodamos novamente a simulação e percebemos que o numero de coalizões contendo "goodHealth" aparece com mais frequencia no Global Workspace.

  • ALIfe Agent Exercise 4

Nesta atividade na tarefa 0, apenas rodamos o simulador com o agente do exercicio 4 e vemos que o mesmo não se move a menos que sua saude esteja abaixo de 0.66.

Na tarefa 1, alteramos o scheme.10b da ProceduralMemory, para que o agente se mova caso a celula a sua frente esteja vazia. Rodamos a simulação e vemos este comportamento, mesmo que a saude esteja acima de 0.66.

Para a tarefa 2, primeiro no módulo PerceptualAssociativeMemory, alteramos a classe inicializadora para CustomPamInitializer. Já nesta classe adicionamos a obtenção do nó "food" da PAM e linkamos ele ao Objeto, assim quando um nó do tipo "food" for detectado, parte de sua ativação contribuirá com a ativação do Objetos linkado. 

Complementando a tarefa 2 e dando fim a este exercício, na tarefa 3 adicionamos uma estratégia de decaimento diferenciada para este objeto, assim a ativação do mesmo demora muito mais tempo para diminuir na PAM.

  

  • Advanced Exercise 1

Para este exercicio a proposta é tentar proteger o agente dos macacos, escondendo o mesmo nas árvores. Para isto, iniciamos o exercicio adicionando um attention codelet para o nó "tree":

Em seguida, adicionamos uma ação na Procedural Memory em um novo scheme 11:

Isto é suficiente para rodarmos a simulação e obter o comportamento esperado.

  • Advanced Exercise 2

Com base no módulo de seleção de ação fornecido no Framework,edu.memphis.ccrg.lida.actionselection.BasicActionSelection, deve-se criar uma nova classe que estenda FrameworkModuleImpl e implemente as interfaces "ActionSelection" e "BroadcastListener". Nessa classe devemos implementar um algoritmo de seleção de ação customizado. No xml, as seguintes alterações são necessárias para ter o nosso novo "CustomActionSelection" funcionando, entretanto não foi possível completar esta implementação.

T

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer