You are here

Aulas 9 e 10 - Controlando o WorldServer3D com o Clarion

 

Controlando o WorldServer3D com o CLARION

 

    - Código fonte -

  • Arquivo WebStart do WorldServer3D. Link aqui
  • Arquivo com o código fonte do SimulationCLARION para Windows. Link aqui (atualizado em 15/07/2015 a pedido do Prof.Ricardo)
  • Arquivo com o código fonte do SimulationCLARION para Linux (lab.Unicamp). Link aqui
  • - Teoria sobre o Clarion :

    O Clarion (Connectionist Learning with Adaptive Rule Induction On-line) é uma arquitetura cognitiva híbrida, baseada tanto em regras (rule based), quanto em redes neurais (neural net-based), que é melhor utilizada em ambientes onde os agentes inteligentes recebem uma "personalidade" e um conhecimento inicial para depois poderem interagir com outros agentes em um ambiente não supervisionado. (R.Sun, M.Lynch, N.Wilson, "CLARION as a Cognitive Framework for Inteligent Virtual Agents", Proceedings of the 11th International Conference, IVA 2011,p.460-462,September, 2011).

    O paradigma Conexionista sobre qual o Clarion repousa é um movimento da ciência cognitiva que visa explicar as habilidades intelectuais humanas usando redes neurais, sendo sua principal característica encontrar e definir os pesos corretos das diversas ações que um agente pode executar a fim de cumprir com uma determinada tarefa (Connectionism IN Stanford Encyclopedia of Philosophy, link : http://plato.stanford.edu/entries/connectionism/).

    Para tal a arquitetura Clarion destaca 3 principios básicos que todas as arquiteturas cognitivas devem respeitar: o primeiro nos diz que nós, humanos, podemos aprender tendo ou não um conhecimento específico a priori, como também nosso processo de aprendizado é continuo e sempre baseado nas nossas experiências com o mundo; segundo, hão diferentes tipos de conhecimento, bem como também hão diferentes maneiras para adquirir esses conhecimentos; terceiro, processos motivacionais e meta-cognitivos são importantes neste contexto e devem ser incorporados em qualquer modelo psicologicamente baseado. (Kacprzyk J., Pedrycz W., "Springer handbook of Computational Inteligence", p.690-693, Springer Verlag Berlin,2015 - Link in Google Books: https://books.google.com.br/books?id=gLS4CQAAQBAJ&pg=PA690&lpg=PA690&dq=...).

    O Clarion, seguindo rigidamente este modelo, tem sua arquitetura cognitiva baseada em 4 sub-sistemas: o ACS (Action Centered Subsystem),o NACS (Non-action Centered Subsystem),o MS (Motivational Subsystem) e o MCS (Meta Cognitive Subsystem). O ACS controla as ações do agente, sejam estas externas (interação com o mundo), sejam internas (Mental Operations). O NACS é utilizado para o acumulo geral de conhecimento. O papel do MS é fornecer motivações subjacentes para a percepção, ação e cognição, em termos de dinamização e feedback. O papel do MCS é monitorar diretamente e modificar dinamicamente as operações nos outros subsistemas. Esses 4 subsistemas são divididos em 2 níveis de congnição, o implícito e o explícito. (Kacprzyk J., Pedrycz W., "Springer handbook of Computational Inteligence", p.690-693, Springer Verlag, Berlin,2015 - Link in Google Books: https://books.google.com.br/books?id=gLS4CQAAQBAJ&pg=PA690&lpg=PA690&dq=...).

    Esses quatro subsistemas possibilitam o aprendizado top-down (ou seja, da camada explícita - chunks and rules - para a implícita - neural networks - da arquitetura),bem como o aprendizado bottom-up (ou seja, da camada implícita para a explícita da arquitetura ), criando uma dicotomia para o conhecimento dividindo-o ainda em procedural x declarativo. Desta forma a arquitetura CLARION nos possibilita: aquisição de habilidades, aprendizagem implícita, raciocínio, resolução de problemas, tomada de decisões, tarefas na memória de trabalho, tarefas metacognitivas, tarefas de psicologia social, tarefas de personalidade, dinâmica motivacional, simulações sociais. Como exemplos de problemas já modelados com o Clarion citamos: Torre de Hanói / londres, tarefas duplas, tarefas espaciais, de aprendizagem e de navegação, aprendendo com as instruções, aprendizado por tentativa e erro, a alternância de tarefas, etc. (Samsonovich A., "Toward an Unified Catalog of Implemented Cognitive Architectures" IN Samsonovich A.,Johannsdottir K., Chella A., and Goertzel B., "Proceedings of Biologically Inspired Cognitive Architecures 2010", p.210-211,IOS Press, Washington DC, 2010).

    Acho interessante salientar que olhando segundo a perspectiva CLARION, arquiteturas como a SOAR são severamente limitadas pois lidam somente com a cognição explícita (explicit knowledge) e processos associativos de aprendizagem. (Goertzel B., Lian R., Arel I., Garis H., Chen S., "A world survey of artificial brain projects, Part II: Biologically inspired cognitive architectures", Neurocomputing, V.74, I.1–3,P.30–49, Elsevier, Dezembro, 2010).

    - Algumas Considerações acerca da tarefa de Controlar o WorldServer3D utilizando o framework Clarion

    Apesar de nunca ter programado em C# não senti dificuldade alguma na linguagem. Talvez pela formação em C e C++ a linguagem não apresentou-se como desafio, até mesmo porque o modelo de código deixado pelo Prof.Ricardo auxiliou muito na compreensão e na formatação do código fonte.

    O grande desafio porém foi o entendimento de como as estruturas se comunicavam e como o CLARION funcionava.

    Valendo-me da documentação disponibilizada, o primeiro passo tomado foi o estudo do exemplo disponibilizado pelo Prof.Ricardo à luz da arquitetura.

    Para compreensão daquilo que fizemos e em comparação ao código originalmente feito pelo Professor, toda linha acrescentada ou modificada foi marcado com a observação "//IA006 - André A. Silva"

    Como exemplo, mostro no quadro abaixo aquilo que considero o coração para o funcionamento correto da arquitetura: um ninho de ifs que determinada qual será a ação que o agente irá tomar:

    Figura 1: ninho de ifs que determinam qual ação o agente irá tomar

    Eu deixei comentado como observação, ao longo de todos os arquivos que foram modificados, campos com a linha de instrução "Console.WriteLine ()", tendo sido este o caminho que encontrei para facilitar o entendimento de "como as coisas funcionavam" dentro do programa.

    Basicamente foram 4 os namespaces que sofreram modificações:

    • ClarionSimulation (arquivo: ClarionAgent.cs)
    • ClarionDEMO (arquivo: Main.cs)
    • WorldServerLibrary (arquivo: WordServer.cs)
    • WorldServerLibrary.Model na classe public class Creature:Thing (arquivo: Creature.cs)

    A Classe Sack (arquivo Sack.cs) do namespace WorldServerLibrary.Model foi adicionada por último, tendo seu código sido originado da versão mais recente do exemplo disponibilizado pelo Prof.Ricardo.

    Para dar objetividade ao relatório e facilitar o entendimento do SimulationClarion, optei nesta tarefa em comentar todo código fonte, deixando-o o mais autoexplicativo possível. Nos quadros abaixo, selecionei os modificações que considero como as mais importantes feitas nos arquivos supracitados, contudo convido o(a) senhor(a) que agora lê este relatório que faça o download seu computador do código fonte que disponibilizei e leia com atenção as observações que fiz.

    Modificações na classe Creature (arquivo: Creatura.cs)

    Figura 2: novas propriedades na classe Creature (arquivo: Creatura.cs)

    Figura 3: novas funções na classe Creature (arquivo: Creatura.cs)

    Modificações na MainClass (namespace: ClarionDEMO) (arquivo: Main.cs)

    Figura 4: novas variáveis na classe (arquivo: Main.cs)

    Figura 5: criando jóias e comidas em posições randon (arquivo: Main.cs)

    Figura 6: tratamento da informação sensorial (arquivo: Main.cs)

    Figura 7: tratamento das ExternalActionSelected (arquivo: Main.cs)

    Modificações na classe ClarionAgent (namespace: ClarionSimulation) (arquivo: Main.cs)

    Figura 8: novas ClarionAgentActionType (arquivo: ClarionAgent.cs)

    Figura 9: novas constantes na classe ClarionAgent (arquivo: ClarionAgent.cs)

    Figura 10: novos DimensionValuePair na classe ClarionAgent (arquivo: ClarionAgent.cs)

    Figura 11: novos ExternalActionChunks na classe ClarionAgent (arquivo: ClarionAgent.cs)

    Figura 12: Modificações no construtor da classe ClarionAgent (arquivo: ClarionAgent.cs)

    Figura 13: Modificações no ACS Subsystem da ClarionAgent (arquivo: ClarionAgent.cs)

    Figura 14: Modificações no método MakePerceptionFromSensorialInput da ClarionAgent (arquivo: ClarionAgent.cs)

    Figura 15: novas FixedRuleDelegates na classe ClarionAgent (arquivo: ClarionAgent.cs)

    --------------

    - Pontos a serem melhorados no meu software:

    Existe um problema que foi identificado e que não tive tempo para tratá-lo. Como as jóias e as comidas tem sua posição gerada de maneira randômica, quando um jóia pertencente ao Leaflet é criada atrás de um outra que não pertence a nenhum LeafLet, o agente acaba adotando uma das duas ações: ou ele "colide" e fica parado gastando energia, ou ele simplesmente "não vê" a jóia. Este segundo problema é relativamente fácil de ser resolvido pois com seu deslocamento o próprio agente acaba "contornando" o obstáculo, contudo o primeiro problema apresentado faz com o agente fique parado. Estou trabalhando para solucionar esse impasse, contudo achei interessante apontá-lo aqui como melhoria futura.

    Outro ponto que não pude explorar é o fato da arquitetura Clarion apresentar cognição implícita e explicíta, o que permite um aprendizado pelo agente mesmo sem ter nenhum conhecimento a priori (R. Sun, P. Slusarz, and C. Terry, “The interaction of the explicit and the implicit in skill learning: a dual-process approach.,” Psychological review, vol. 112, no. 1, pp. 159-92, Jan. 2005 EM Freitas,CCS no link: http://www.dca.fee.unicamp.br/~gudwin/courses/IA005/2012/IA005-16.pdf). Neste exemplo do agente que pega as jóias de um Leaflet percebi o agente reagindo de maneira inteligente à uma tarefa, mas não aprendendo com os erros (como por exemplo, os que apontei acima). Acho que este aprendizado poderia ser algo bem interessante a ser desenvolvido.

    Outro ponto interessante a ser explorado são as memórias, principalmente a episódica, pois como o agente tem que "se aventurar" em busca das jóias, vários episódios interessantes podem ser gerados e explorados na memória episódica do agente.

    Uma outra dificuldade enfrentada: eu não consegui colocar os dois agentes (um com o SOAR e outro com o Clarion) no mesmo ambiente - um funciona e o outro não! Ainda estou estudando o que posso ter feito de errado ou se é mesmo alguma limitação do framework e/ou do Soar. Acho mais provável, porém, que seja alguma limitação do meu agente SOAR posto que enfrentei muitas dificuldades nesta arquitetura.

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer