You are here

Parte 02 - Setting Up & Using the ACS

Este tutorial apresenta um uso básico do ACS, através do exemplo "HelloWorld - Simple.cs"; a ideia principal desse exemplo é a seguinte:
 
  • São dadas 2 entradas - "Hello" e "Goodbye" - e duas saídas - também "Hello" e "Goodbye";
  • O agente deve aprender que deve retornar uma saída igual a entrada;
 
Como apresentado no próprio tutorial, a lógica desejada é a seguinte:
 
Se alguém diz "olá" ou "até logo", devo responder "olá" ou "até logo".
 
 
Para implementar essa lógica simples o exemplo demonstra o uso de uma "reinforcement trainable backpropagation network", criada no nível inferior do ACS.
 
Para apresentar o funcionamento básico do Clarion, bem como as principais etapas de um agente, esse tutorial é divido nas seguintes partes:
 
  • Inicialização do ambiente ("World") e do agente;
  • Inicialização da informação sensorial ("Sensory Information");
  • Percepção e ação;
  • Processamento dos resultados e fornecimento de feedback
 
 

Inicialização do ambiente ("World") e do agente

 
Toda essa inicialização é realizada pelo seguinte trecho de código:
 
 
 
Como ambiente o tutorial indica que são criados todos os objetos descritivos, entre os quais está o próprio agente - objeto da classe "Agent", criado através do método "World.NewAgent()".
 
Todos os objetos descritivos devem ser criados a partir do singleton "World", já disponível na biblioteca Clarion.
 
No tutorial são outros exemplos de objetos descritivos os pares de entrada - DV "hi" e "bye" - que posteriormente farão parte da informação sensorial de entrada para cada ciclo cognitivo, e os pares de saída - os "ExternalActionChunk"(s) "sayHi" e "sayBye" - que representam os conjuntos de informação de saída, definidos pelo ciclo cognitivo.
 
 
Já a etapa de inicialização do agente corresponde à criação dos objetos funcionais que serão utilizados; no exemplo uma IDN - Implicit Decision Network - criada no nível inferior do ACS. Esse objeto é criado a partir do uso de um outro singleton - "AgentInitializer" - através do método "InitializeImplicitDecisionNetwork()", no qual é passado como parâmetro um objeto "Factory" que irá criar o objeto funcional sendo configurado - no caso um "SimplifiedQBPNetwork.Factory" é utilizado. Não está apresentado no tutorial, mas esse método de inicialização pode receber uma lista variável de parâmetros que são fornecidos para a configuração do objeto "Factory":
 
 
Uma vez criada, devem ser associadas à rede neural suas ENTRADAS e SAÍDAS; neste caso, as entradas são os pares DV "hi" e "bye" e as saídas são os 2 "ExternalActionChunk"(s) "sayHi" e "sayBye".
 
Todo objeto funcional deve ser ATIVADO no agente depois de configurado, através do método "Agent.Commit()", tal como representado no trecho acima.
 
 
 

Inicialização da informação sensorial ("Sensory Information")

 
Uma vez definidos os parâmetros iniciais, o tutorial apresenta o ciclo de execução, com os seguintes passos:
 
  1. Especificação da informação sensorial, fornecida parao agente como entrada para o ciclo cognitivo;
  2. Captura e armazenamento da ação selecionada pelo agente, considerando as entradas recebidas;
  3. Atualização do estado do ambiente, considerando a ação escolhida pelo agente;
  4. Fornecimento de feedback para o agente, indicando a adequação/inadequação da sua ação;
  5. Registro da performance do agente.
 
Assim, o primeiro passo do ciclo é a geração da informação sensorial fornecida para o agente; isso corresponde à criação de um objeto descritvo "SensoryInformation" que, como todos os demais, é obtido através do singleton "World", através de seu método "NewSensoryInformation()".
 
No exemplo estudado, são fornecidas como informação sensorial graus de ativação para os pares DV "hi" e "bye":
 
 
 
Uma vez que esses pares DV também são entrada da rede neural, seus diferentes graus de ativação serão considerados no ciclo cognitivo. É possível verificar que, no exemplo, as ativações são invertidas: quando "hi" está máximo, "bye" está mínimo e vice-versa.
 
 
 

Percepção e ação

 
Uma vez criada a informação sensorial, ela é passada para o agente através do seu método "Agent.Perceive()", como demonstrado acima.
Com esse estímulo o ciclo cognitivo é executado e o agente seleciona uma ação de saída, neste caso, através da IDN criada no nível inferior do ACS.
 
Como indicado pelo tutorial, uma das formas mais simples de obter esse resultado, é utilizando o método "Agent.GetChosenExternalAction()"; a informação recebida é um dos "ExternalActionChunk"(s) configurados como saída da rede neural.
 
 
 

Processamento dos resultados e fornecimento de feedback

 
No exemplo estudado, a saída fornecida pelo agente é analisada frente as opções possíveis, "sayHi" ou "sayBye":
 
 
A adequação da resposta é verificada a partir da análise de qual foi a entrada fornecida via "SensoryInput", medida a partir dos níveis de ativação dos pares "hi" e "bye": se a maior ativação foi fornecida para o "hi", a ação correta para o agente é a "sayHi"; se a maior ativação foi fornecida para o "bye", a ação correta é o "sayBye".
 
 
Essa avaliação é fornecida de para o agente na forma de feedback, através do método "Agent.ReceiveFeedback()": a adequação da resposta, levando-se em conta o conjunto de "SensoryInformation" fornecido, é indicada por uma escala de 0.0 até 1.0, sendo 0.5 o nível neutro, valores menores feedback negativo, maiores positivos.
 
 
 

Comentários finais

 
Ainda são indicados nesse primeiro tutorial uma primeira informação a respeito do uso e configuração das capacidades de logging do Clarion, através do comando:
 
World.LoggingLevel = TraceLevel.Warning;
 
É indicado que a biblioteca Clarion utiliza o mesmo mecanismo de níveis de log existentes no C# via enumeração "System.Diagnostics.TraceLevel"
 
 
Outro ponto apresentado é a finalização do agente via método "Agent.Die()".
 
 
Através deste tutorial ficou claro que para o uso do framework Clarion é preciso ter maiores conhecimentos teóricos sobre IA e métodos de cognição, uma vez que é preciso configurar os elementos que farão parte da simulação, como por exemplo as Implicit Decision Networks.
 

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer