You are here

Aula 12

Aula 12 - LIDA 1: Entendendo a Arquitetura

 

Objetivos

O objetivo da aula de hoje é iniciar o estudo da arquitetura cognitiva LIDA. A arquitetura LIDA foi desenvolvida pelo grupo do Prof. Stan Franklin, da University of Memphis, nos EUA, e talvez seja a mais sofisticada das três arquiteturas estudadas nesse curso. A arquitetura é disponibilizada em Java, e seu código pode ser obtido aqui. É necessário preencher um formulário aceitando a licença de uso, e o link definitivo para o código é enviado por e-mail. Caso tenha problemas em fazer o download da arquitetura, contacte o professor. Infelizmente, das três arquiteturas estudadas, essa talvez seja também a mais difícil de compreendermos e estudarmos, pois ela demanda o entendimento de diversos modelos do processo cognitivo, antes de podermos explorar o código. Na aula de hoje, portanto, acompanharemos um tutorial desenvolvido pelo grupo do Stan Franklin, para compreendermos o modelo teórico da arquitetura. Na próxima aula, faremos um estudo mais aprofundado do uso da arquitetura, já utilizando o framework com exemplos de código.

Atividade 1

Acesse o tutorial do LIDA aqui. O grupo do Stan Franklin nos dá algumas opções para varrer o tutorial. O Full Tutorial é muito longo, e não teríamos chance de realizá-lo inteiro dentro do tempo da aula. Recomendamos portanto o estudo do Ciclo Cognitivo, que pode ser feito durante a aula. Havendo dúvidas, você pode consultar partes do tutorial completo (que possui até trechos com áudio - traga seu fone de ouvido !!!) ou o professor. O Full Tutorial pode ser uma opção para você acompanhar durante a semana, preparando-se depois para a próxima aula, sedimentando o conhecimento adquirido na aula de hoje.

Atividade 2

A atividade 1 nos dará uma bagagem teórica inicial para começarmos o tutorial do software, propriamente dito. Para seguir esse tutorial, obtenha o PDF com o tutorial aqui. Siga o tutorial até o final. Neste tutorial ainda não haverá nenhuma atividade de programação. O tutorial somente introduz elementos sobre a estrutura do framework de software. Algum apoio adicional pode ser obtido a partir de algumas transparências que eu elaborei sumarizando a arquitetura LIDA. Documente sua compreensão do tutorial no seu relatório de atividades.

Atividade 3

Procure na página do grupo do Stan Franklin, no Google Scholar e também na internet em geral, informações sobre o funcionamento dos seguintes módulos operados pela arquitetura:

  • Arquitetura baseada em Codelets (o que é isso ?)
  • PAM - Perceptual Associative Memory
  • Behavior Network (Rede de Comportamentos)
  • Global Workspace Theory (Mecanismo de Consciência do LIDA)

Coloque em seu relatório sua compreensão sobre esses tópicos, levando em consideração principalmente as seguintes questões:

  • Como a arquitetura LIDA implementa a percepção do ambiente ?
  • Como a arquitetura LIDA guarda/armazena informações de memória ?
  • Como a arquitetura LIDA seleciona as ações que serão implementadas no ambiente ?
  • Como a arquitetura LIDA executa a ação selecionada no ambiente ?

 

Relatório

 
Ciclo Cognitivo do LIDA
O ciclo cognitivo é composto de quatro processos:
  • Percepção: É a percepção da cena atual. Reconhecimento de objetos, identificação de individuos, categorizacao, reconhecimento de relações, situações, sentimentos e eventos Percepções de baixo nível ocorrem no PAM, e as de alto nível resultuam dos codelets que operam no Workspace com informações do PAM e da memória Sensorial. 

  • Recuperação de memória: É a busca da memória episódica, memórias de eventos, definições de o que, quando e onde. A episódica existe de duas formas, a transiente que dura algumas horas, ou um dia e a declarativa que pode durar uma vida. Elas estão interligadas no workspace.

  • Propagação consciente: os Attention codelets (pequenos processos) utilizam informações do Workspace e competem entre si para levar ítens de interesse a consciência. A informação vencedora é propagada através do aparato consciente.

  • Ações: O automatismo sensório-motor (SMA), que foi instanciado em resposta à ação escolhida agora executa a ação selecionada. Ele é responsável por pegar informações sensoriais e controlar os esforços. A informação sensorial necessário vem diretamente da memória sensorial, sem o auxílio do mecanismo de consciência. Uma vez que a ação é executada, não importando se internamente e/ou externamente completam o ciclo cognitivo.
 
Além disso as estruturas cognitivas são divididas em dez módulos:
  • Memória sensorial: Detém estímulos sensoriais recebidas, que podem ser internos (gerados por processos internos ou propriocepção) ou externos, gerados pelo ambiente. A memoria sensorial alimenta o PAM a caminho da consciencia.

  • Memória perceptiva-associativa (PAM): A percepção é a compreensão dos estímuos recebidos, o inicio da compreensão. Isso inclui reconhecimento e categorização de objetos, identificação de individos, relações e situações, etc. Esta informação constitui a percepção atual, que é repassado para o workspace. É importante ressaltar que todos estes processos são pré-consciente.

  • Workspace: implementa os buffers pré-conscientes do workspace, incluindo a memória de longa duração. O workspace conterá a percepção atual, percepções anteriores que ainda não tenham se deteriorado e as estruturas que estão sendo construídas por Codelets para a compreensão de conceitos de alto nível (relações, situações, idéias). O workspace tambem contém assossiações das memórias transientes e declarativas.

  • Memória episódica transiente: é a memória episódica que decai depois de algumas horas ou um dia, utilizada para eventos (o que, quando, onde algo aconteceu). 

  • Memória declarativa: é a memória episódica de longo prazo. Ela pode ser dividida em memória auto-biográfica de eventos e memória semantica de fatos. Podemos dizer aqui que a memória retém o que aconteceu, mas perde quando e onde. Essa memória pode durar muito, até a vida toda, porém ela pode decair.

  • Attention codelets: São uma classe especial de Codelets com objetivo de trazer informações para a consciência com seus próprios conjuntos de preferências para o tipo de informação que quer trazer para a consciência.

  • Global workspace: é responsável por transmitir a informação que chegou a consciencia. A informação vencedora filtrada, ou seja, a mais relevante, importante, urgente, insistente, que é mais relevante para o agente no momento. Ou seja, as diversas coalizões formadas por attention codelets provenientes do workspace no global workspace. 

  • Memória procedimental: Onde é armazenado os diversos procedimentos que podem ser escolhidos para execução. Cada procedimento consiste em um contexto, uma ação e um resultado. Com um pouco de confiabilidade, o resultado está previsto para ocorrer quando a ação entrar em contexto.

  • Seleção de ação: É o mecanismo que decide a ação a ser tomada no momento em resposta à situação atual, isto é, o conteúdo da consciência. A seleção é feita de entre os vários procedimentos que foram instanciados e ainda não decairam. A ação selecionada depende muito do ambiente corrente. Os objetivos também afetam fortemente a seleção de ação. Uma única ação é escolhida a cada vez, ou seja, em cada ciclo cognitivo.

  • Memória sensório-motora: Guarda as informações recebidas de sensores de estimulo, internos ou externos. Ela também mantém detectores que começam a dar sentido aos estimulos. Em uma escala de tempo muito mais rápida essa memória se realimenta várias vezes em cada execução automatismo sensório-motor (SMA), que opera sem benefício de consciência.
 
O tutorial faz uma introdução ao conhecimento básico necessário para desenvolver agentes baseados no Modelo LIDA usando o LIDA framework.

O modelo LIDA é baseada principalmente na teoria Global Workspace(Baars 1988, 2002). Ele implementa e cobre uma série de teorias psicológicas e neuropsicológicas no ciclo cognitivo LIDA. Todo agente autonomo, seja ele humano, animal ou artificial, deve freqüentemente observar (sentido) seu ambiente e selecionar uma resposta apropriada (ação). Agentes mais sofisticados, como seres humanos, processam (dar sentido) essas observações a fim de facilitar a tomada de sua decisão. 

A vida de um agente no lida pode ser vista como uma sequencia contínua de ciclos cognitivos (sentir, atender e agir), ou seja,  durante cada ciclo  o agente primeiro toma consciência de sua situação atual, atualiza a representação dessa situação e através de um processo competitivo ele decide que parte da situação representada é a que mais precisam de atenção. Transmitindo esta parte, o conteúdo atual da consciência, permite ao agente escolher uma ação apropriada e executá-lo, completando o ciclo. 
Todo esse mecanismo foi estudado e descrito acima no Ciclo Cognitivo do LIDA.

O LIDA Framework constitui num esqueleto de aplicacoes, capturando as funcionalidades genericas, promovendo reusabilidade de código e redução significativa no esforço necessário para desenvolvimento de aplicações.

A relação entre o Framework e o Modelo é que cada modulo descrito no modelo, pode ou não estar implementado no framework.

  • A idéia geral de um módulo esta especificado na interface FrameworkModule
  • Modulos particulares estão tipicamente especificados por uma interface, por exemplo PM na interface ProceduralMemory
  • A unidade de tempo no modelo é representado no framework por um mecanismo interno medido em unidades "tick".
  • Execuções assíncronas no modelo são representados no framework por execuções concorrentes de tarefas, gerenciados pelo TaskManager
  • A comunicação entre os módulos é implementada por listeners implementanado a inteface ModuleListener
  • Nós e links no modelo são implementados utilizando NodeStructures
  • A ativação de nós, links e outros elementos do modelo LIDA é alcançado pela implementação da interface Activable
Em mais detalhes, podemos ver os itens abaixo:
  • Módulos: O framework do LIDA prove implementações concretas para os módulos independentes de domínio (como PAM, memória episódica, memória declarativa, workspace, codelets (building-structure e attention), global workspace, PM, action selection, memória motor-sensorial) e implementações abstratas padrões para módulos dependentes de dóminio (como ambiente e memoria sensorial).
  • Listeners: A comunicação entre os módulo do LIDA é realizada através do mecanismo de broadcasts a serem ouvidos pelos Listeners, que devem ser implementados nos módulos. Essa comunicação é identificada por flechas na figura do modelo do LIDA. Os módulos no framework possuem uma interface Listener que especifica os métodos necessários para implementar essa comunicação. É importante ressaltar que essa não é a única maneira de relação entre módulos. Os módulos podem ser associados com um ou mais módulos utilizando o método addAssociatedModule, que permite uma associação muito mais próxima entre módulos.
  • Tarefas:  Os processos do modelo LIDA são implementados no framework usando tarefas. Cada agente possue um único gerenciador de tarefas. Cada módulo tem um mecanismo chamado TaskSpawner, que iteragem com o TaskManager. Esse gerenciador de tarefas controla o tempo da aplicação utilizando a unidade de medida "tick". Cada tarefa é agendada para ser executada em um "tick" específico. Uma vez a tarefa é concluida, ela retorna para o TaskSpawner que originalmente a rodou, e esse TaskSpawner tem a oportunidade de processar o resultado da tarefa, baseado no estado, determinando a necessidade de agendamento de execução posterior.
  • Gerenciador de tarefas: Gerencia a execução de cada tarefa recebida pelo TaskSpawner, agendando as execuções em uma fila de execução. O ciclo é decai todos os modulos, executa todas as tarefas agendadas no tick corrente e espera sua finalização, atualiza a GUI, incrementa o tick.
  • Nós, ligações e estruturas de nós: São as principais estruturas de dados do framework que podem ser ativadas e decairem com relação ao tempo. Os nós podem representar características, objetos, eventos, conceitos, sentimentos, ações. Ligações conectam um nó a outro estabelecendo relações ou nós a outras ligações, formando estruturas mais complexas. As ligações possuem um atributo de categoria que descreve qual a natureza da relação estabelecida por ela. Estruturas de nós são as estruturas formadas pelos conjuntos de nós e ligações e é a informação a ser trocada pelos módulos. Ela segue uma arquitetura baseada em grafo.
  • Ativação e Estratégia: a ativação é representada por um número de 0.0 a 1.0 e indica a saliência de um elemento na memória. Estratégias por sua vez, controlam a ativação e o decaimento dos elementos que podem ser ativados.
  • ElementFactory: elementos, como nós, ligações tarefas, devem ser criados requisitando o ElementFactory que encapsula os construtores para diferentes tipos de elementos. 
  • GUI: O LIDA framework possui uma implementação gráfica que permite acompanhar em tempo real o conteudo dos módulos.

A inicialização do Framework é um pacote que contém as classes envolvidas do setup de um agente em tempo de execução. Ela acontece na seguinte sequencia:

  1. Carrega as definições dos tipos de elementos encontrados no arquivo de configuração secundário chamado de "factory data file"
  2. Uma instancia do agente é criada baseada no conteudo do arquivo de declaração do agente
  3. Se a GUI do LIDA estiver habilitada, ela é criada usando a informação encontrada no arquivo de configuração da GUI
  4. O agente é carregado
  5. A GUI é carregada e mostrada
O framework LIDA já tem implementado por padrão alguns módulos:
  • Environment (abstract)
  • Sensory Memory (abstract)
  • Perceptual Associative Memory
  • Transient Episodic Memory
  • Declarative Memory
  • Workspace
  • Structure-Building Codelets
  • Attention Codelets
  • Global Workspace
  • Procedural Memory
  • Action Selection
  • Sensory-Motor Memory 
O módulo de Environment foi projetado para ser o provido pelo usuário. O framework prove uma classe básica abstrata, que deve ser extendida implementando o ambiente em Java ou servindo como uma interface entre um ambiente não Java e o agente. Os metodos getState e ProcessAction devem ser implementados de forma a permitir que o ambiente seja sensorizado e as ações sejam processadas.
O módulo de Memórial Sensorial também é provida como uma classe abstrata, uma vez que memórias sensoriais tipicamente variam grandemente entre domínios.

 

 

 

 

 

 

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer