JEFERSON FIGUEIREDO CHAVES SÍNTESE DE ESTRUTURAS BIO-INSPIRADAS BASEADA EM REDES DE NEURÔNIOS PULSANTES Belo Horizonte – MG Dezembro de 2007 JEFERSON FIGUEIREDO CHAVES SÍNTESE DE ESTRUTURAS BIO-INSPIRADAS BASEADA EM REDES DE NEURÔNIOS PULSANTES Dissertação apresentada ao Curso de Mestrado em Modelagem Matemática e Computacional do Centro Federal de Educação Tecnológica de Minas Gerais, como requisito parcial à obtenção do título de Mestre em Modelagem Matemática e Computacional. Linha de pesquisa: Sistemas Inteligentes Orientador: Prof. Dr. Henrique Elias Borges Centro Federal de Educação Tecnológica de Minas Gerais Co-orientador: Prof. Dr. José Luiz Acebal Fernandes Centro Federal de Educação Tecnológica de Minas Gerais M ESTRADO EM M ODELAGEM M ATEMÁTICA E C OMPUTACIONAL C ENTRO F EDERAL DE E DUCAÇÃO T ECNOLÓGICA DE M INAS G ERAIS D IRETORIA DE P ESQUISA E P ÓS -G RADUAÇÃO Belo Horizonte – MG Dezembro de 2007 Folha de aprovação. Esta folha será fornecida pelo Programa de Pós-Graduação. Dedico este trabalho às mulheres que, sendo exemplos de dedicação e trabalho, sempre me motivaram: Maria Irene, Jusselma e Ana Beatriz. Agradecimentos Aos meus orientadores, Prof. Dr. Henrique Elias Borges e Prof. Dr. José Luiz Acebal que me ajudaram a entender um pouco mais o que é fazer pesquisa. Agradeço pelo orientação e conselhos dados nos momentos tempestuosos que, sem dúvida, me deixaram mais tranquilo nos momentos difíceis. Agradeço também pela autonomia e liberdade que tive. Vi que este presente não tem preço e desta maneira pude aprender muito. Ao amigo Bruno André Santos com quem publiquei alguns artigos e que tanto me ajudou no desenvolvimento deste trabalho. Ao amigo Geraldo Magela com quem tanto discuti e estudei em diversos momentos. À minha família que sempre me incentivou e me apoiou. À Ana Beatriz e sua família, que hoje considero minha também, pelo apoio e incentivo constante. Aos meus amigos do LSI que contribuíram com sua amizade e com palavras de incentivo. À CAPES pelo apoio financeiro individual recebido. Ao CNPq pelo apoio financeiro ao projeto ARTÍFICE. Ao Laboratório de Sistemas Inteligentes (LSI) pelos recursos disponibilizados para realização deste trabalho. Ao Centro Federal de Educação Tecnológica de Minas Gerais (CEFET-MG). “Seeing our understanding of nature as a mathematical construction has fundamentally different implications from seeing it as an empirical synthesis. One view identifies us as masters of the universe; the other identifies the universe as the master of us.” Robert Laughlin Resumo O problema de síntese de estruturas neuronais de coordenação de agentes autônomos, i.e., projetar um conjunto de estruturas neuronais de maneira a possibilitar o surgimento de comportamentos não pré-programados, é um grande desafio. Somando-se a este esforço de pesquisa, o presente trabalho propõe a síntese de um conjunto de micro-circuitos de neurônios pulsantes, cada qual projetado para desempenhar uma função específica e bem definida. Além disso, estes micro-circuitos devem ser acoplados entre si de modo a possibilitar a emergência de coordenações sensório-motoras. Para tanto, os diversos modelos de neurônios pulsantes disponíveis na literatura foram revisados. Para implementar os micro-circuitos propostos foi escolhido o modelo de neurônio pulsante de IZHIKEVICH (2003), basicamente devido à diversidade de fenômenos que ele modela, bem como à sua facilidade de implementação. O acoplamento entre os micro—circuitos foi implementado via projeções de um micro-circuito neuronal sobre outro, i.e., conexões sinápticas entre neurônicos pertencentes a diferentes circuitos. No entanto, tais sinapses incluem efeitos de evanescência da corrente no axônio bem como atrasos de condução axonal. Considerando a dificuldade de se realizar um estudo analítico rigoroso do conjunto de neurônios, foi utilizado métodos de simulação computacional para avaliar o impacto dos diversos parâmetros do sistema na dinâmica dos micro-circuitos neuronais e, assim, estabelecer os valores mais adequados destes parâmetros. Como resultado, foi possível mostrar que, mediante uma parametrização adequada da dinâmica dos neurônios individuais e dos mecanismos de acoplamento neuronal, pode-se coordenar com sucesso o comportamento de um robô de maneira a evitar a colisão com obstáculos. PALAVRAS-CHAVE: Neurônios Pulsantes; Micro-Circuitos Neuronais; Neurocomputação; Computação Bio-Inspirada. Abstract One of the most challenging problems in bio-inspired autonomous agents is the synthesis of artificial neuronal structures in a way that becomes possible to observe the emergence of behaviours that were not embedded into the agent. Joining this effort of research, the present work considers the synthesis of a set of micro-circuits of spiking neurons, each one playing a well defined and specific function. Moreover, in order to provide for the emergence of sensory-motor coordination, these micro-circuits should be properly coupled to each other. In such a way, the literature concerning spiking neurons models was reviewed. The IZHIKEVICH (2003) spiking neuron model was then chosen to implement the proposed micro-circuits, mainly due to the diversity of phenomena it models as well as its computational simplicity and easiness of implementation. The coupling of different neuronal micro-circuits was implemented via projections of one micro-circuit onto another one, i.e., synapses involving two neurons belonging to distinct circuits. However, such synaptic coupling model includes effects due to axonal current evanescence and also due to axonal conduction delay. Faced to the difficulty of studying this kind of system from an analytical perspective, some computational simulation was carried out aiming to establish the impact of several systems parameters on the micro-circuits dynamics. As a result, it was shown that, under a suitable parameterization of individual neurons as well as of the synaptic coupling between micro-circuits, it was possible to successfully coordinate the behaviour of a simulated navigational robot to prevent its collision with obstacles. PALAVRAS-CHAVE: Spiking Neurons; Neuronal Micro-Circuits; Neurocomputation; Bio-Inspired Computation. Lista de Figuras 1.1 Diagrama de blocos da arquitetura ARTÍFICE. . . . . . . . . . . . . . p. 16 1.2 Arquitetura ARTÍFICE operando em um robô simulado. . . . . . . . . p. 17 2.1 Neurônio típico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 23 2.2 Potencial de ação e potenciais pós-sinápticos, onde u representa o (f) potencial elétrico da membrana celular e t j o tempo de disparo do neurônio pré-sináptico (neurônio j). . . . . . . . . . . . . . . . . . . . p. 24 2.3 Sistema Tálamo-Cortical. . . . . . . . . . . . . . . . . . . . . . . . . . p. 26 2.4 Segundo arranjo topológico. . . . . . . . . . . . . . . . . . . . . . . . . p. 27 2.5 Sistema Valoracional. . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 28 3.1 Máquina de estado liquido. . . . . . . . . . . . . . . . . . . . . . . . . p. 35 3.2 Robô navegando no ambiente com obstáculos. . . . . . . . . . . . . . p. 36 3.3 Morfologia do agente. . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 37 4.1 Espaço de estados do modelo de Izhikevich. . . . . . . . . . . . . . . p. 42 4.2 Evolução temporal do modelo de Izhikevich. . . . . . . . . . . . . . . . p. 42 4.3 Diagrama de bifurcação do modelo de Izhikevich. . . . . . . . . . . . . p. 44 4.4 Impacto de diferentes constantes de tempo de decaimento do estímulo sináptico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 46 4.5 Função de modificação do peso sináptico através do STDP. . . . . . . p. 47 5.1 Anatomia das matrizes do sistema dinâmico. . . . . . . . . . . . . . . p. 49 5.2 Detector de Coincidências. . . . . . . . . . . . . . . . . . . . . . . . . p. 50 5.3 Robô simulado e seus sensores. . . . . . . . . . . . . . . . . . . . . . p. 51 5.4 Sistema de coordenação sensório-motora. . . . . . . . . . . . . . . . p. 52 5.5 Trajeto percorrido pelo robô no ambiente simulado. . . . . . . . . . . . p. 53 5.6 Percurso utilizado para análise da dinâmica dos componentes internos. p. 54 5.7 Dinâmica dos sonares e do motor do robô. . . . . . . . . . . . . . . . p. 55 5.8 Dinâmica dos neurônios N1 , N2 , e N5 . . . . . . . . . . . . . . . . . . . . p. 56 5.9 Dinâmica dos neurônios N5 , N6 , N9 e N8 . . . . . . . . . . . . . . . . . . p. 56 5.10 Outro trajeto onde o robô foi testado. . . . . . . . . . . . . . . . . . . . p. 57 Lista de Abreviaturas e Siglas ANN Artificial Neural Networks (Redes Neurais Artificiais) ASCS Agentes de software cognitivos situados CEFET-MG Centro Federal de Educação Tecnológica de Minas Gerais GPSI Grupo de Pesquisa em Sistemas Inteligentes LSI Laboratório de Sistemas Inteligentes SNN Spiking Neurons Networks (Redes de Neurônios Pulsantes) TNGS Theory of Neuronal Group Selection (Teoria de Seleção dos Grupos Neuronais) Sumário 1 Introdução p. 13 1.1 A arquitetura ARTÍFICE . . . . . . . . . . . . . . . . . . . . . . . . . . p. 15 1.2 Relevância do trabalho para a área de Sistemas Inteligentes . . . . . p. 17 1.3 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 18 1.4 O escopo do trabalho de pesquisa . . . . . . . . . . . . . . . . . . . . p. 18 1.5 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 19 1.6 Organização da dissertação . . . . . . . . . . . . . . . . . . . . . . . . p. 20 2 Alguns aspectos neurocientíficos do sistema nervoso p. 21 2.1 Estrutura neuronal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 22 2.2 Grupos, Circuitos e Sistemas neuronais . . . . . . . . . . . . . . . . . p. 25 2.3 Integração neural . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 28 3 Aspectos selecionados da modelagem de sistemas neurais biologicamente plausíveis p. 31 3.1 Alguns modelos computacionais envolvendo sistemas biologicamente plausíveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 34 3.2 Neurônios pulsantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 37 3.3 Considerações finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 38 4 Estudo dos Modelos matemáticos de neurônios e mecanismos de acoplamento neuronal p. 40 4.1 Modelo de neurônio pulsante de Izhikevich . . . . . . . . . . . . . . . p. 40 4.2 Sinapses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 45 4.3 Spike-timing-dependent plasticity, STDP . . . . . . . . . . . . . . . . . 5 Estruturas propostas p. 47 p. 48 5.1 Detector de Coincidências . . . . . . . . . . . . . . . . . . . . . . . . . p. 49 5.2 Circuito sensório-motor . . . . . . . . . . . . . . . . . . . . . . . . . . p. 51 5.2.1 Modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 51 5.2.2 Analise e discussão do resultados . . . . . . . . . . . . . . . . p. 53 6 Conclusão p. 58 6.1 Principais contribuições deste trabalho . . . . . . . . . . . . . . . . . . p. 58 6.2 Dificuldades encontradas . . . . . . . . . . . . . . . . . . . . . . . . . p. 59 6.3 Perspectivas de trabalhos futuros . . . . . . . . . . . . . . . . . . . . . p. 59 6.4 Considerações finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 60 Referências Bibliográficas p. 61 Anexo A -- Algoritmo principal p. 65 Anexo B -- Algoritmo de coordenação do robô p. 69 13 1 Introdução A concepção de sistemas genuinamente inteligentes, i.e., aqueles que apresentam um grau razoável de autonomia, é uma tarefa desafiadora (PFEIFER, 2001), (CLARK, 1998), (CLANCEY, 1997). Neste contexto, usa-se o termo autonomia no sentido dado por Haselager (2004). Segundo ele, entende-se por agentes autônomos aqueles que são capazes de operar sob todas as condições razoáveis sem recorrer a um projetista externo, operador ou controlador, e são capazes de lidar com eventos imprevistos em um ambiente desestruturado em busca de suas metas. No intuito de dotar agentes artificiais de tais habilidades, pesquisas recentes têm adotado como caminho a busca de inspiração nos seres vivos, mais especificamente naqueles que possuem sistema nervoso, visto sua reconhecida autonomia e adaptabilidade. Evidências experimentais demonstram que a presença do sistema nervoso é fortemente ligada a um repertório comportamental amplo, ou seja, expande de maneira dramática as possibilidades de interação do ser com seu meio (MATURANA; VARELA, 2004). Um exemplo claro do papel desempenhado pelo sistema nervoso é apresentado por Adams (2005), que usou os platelmintos do grupo dos policládidos (Polyclad flatworms) como objeto de inspiração em seu trabalho: Os platelmintos são um caso interessante por conta do seu primitivo sistema nervoso composto por aproximadamente 2000 neurônios. Estas criaturas são capazes de realizar tarefas críticas para a sobrevivência, mesmo quando seu sistema nervoso é completamente removido. Quando apresentados a um pouco de camarões, platelmintos descerebrados agarram o alimento com a parte do corpo mais próxima e a colocam imediatamente em suas bocas. Entretanto, quando um destes vermes com o sistema nervoso intacto é apresentado à comida, ele agarra o alimento com a porção mais próxima do seu corpo e dobra-se em torno do mesmo, agarra-o com 1 Introdução 14 a porção anterior do seu corpo e, então, coloca-o na boca. Um verme intacto apenas consome uma quantidade finita de alimento. Uma vez que seu intestino está cheio, seu habito alimentar não é mais disparado pela apresentação de alimento. Entretanto, um verme descerebrado não pára a alimentação depois da saciedade e continua tentando colocar comida na boca mesmo depois que o tubo digestivo esteja completamente cheio. Em organismos mais recentes na árvore evolutiva este papel não é diferente. Pelo contrário, com estruturas maiores e mais sofisticadas, o sistema nervoso expande o domínio de condutas possíveis, ao dotar o organismo de uma estrutura espantosamente versátil e plástica. Mais especificamente, o mecanismo-chave é o acoplamento das superfícies sensoriais e motoras, mediante uma rede de neurônios cuja configuração pode ser muito variada (MATURANA; VARELA, 2004). Apesar de necessário, apenas o sistema nervoso não é suficiente para permitir o surgimento de comportamentos mais elaborados. Chiel e Beer (1997) destacam o papel do corpo e do ambiente. Segundo eles, a despeito da maioria dos estudos de mecanismos de comportamento adaptativo geralmente focarem em neurônios e circuitos de neurônios, o comportamento depende também das interações entre o sistema nervoso, corpo e ambiente. A interface entre o sistema nervoso e o corpo atua de maneira analoga à um filtro: os sistemas nervoso e periférico co-evoluem e desenvolvem-se conjuntamente criando uma forte complementariedade entre eles. A estrutura corporal cria restrições e oportunidades para a coordenação neural; realimentações contínuas entre o sistema nervoso, o corpo e o ambiente são essenciais para um comportamento normal. Em vista disso, é de grande interesse dotar artefatos de hardware e/ou software de estruturas que desempenhem o mesmo papel que o sistema nervoso realiza nos seres vivos que o possuem. Além disso, é fundamental que tais estruturas levem em conta, na sua concepção, um forte acoplamento com um corpo. Como não se sabe o nível de realismo necessário para obter comportamentos interessantes (FURBER; TEMPLE, 2007), é desejável a síntese de estruturas flexíveis e eficientes computacionalmente que permitam a incorporação futura de outros mecanismos caso seja necessário. Uma das contribuições do grupo de pesquisas em sistemas inteligentes do CEFETMG, GPSI, para a construção de agentes inteligentes artificiais é a arquitetura ARTÍFICE, tema da próxima seção. 1.1 A arquitetura ARTÍFICE 15 1.1 A arquitetura ARTÍFICE O projeto ARTÍFICE (BORGES, 2002) vem continuamente sendo desenvolvido no Laboratório de Sistemas Inteligentes do CEFET-MG desde a sua criação. O projeto em questão trata-se de uma arquitetura para construção de sistemas inteligentes de propósito geral. Sua primeira versão foi apresentada por Santos (2003), e já era inspirada em organismos com sistema nervoso onde a operação deste último foi inspirada na TNGS (EDELMAN, 1987). Desde então, outras importantes contribuições foram dadas à arquitetura, destacando-se a modelagem de um mecanismo de percepçãoem-ação (PIRES, 2005) e a modelagem do processo cognitivo-emocional (CAMPOS, 2006). Recentemente, foi apresentada por Campos (2006) a última versão da arquitetura. Neste trabalho, toda a arquitetura constitui um sistema dinâmico discreto, assim como cada um de seus componentes funcionais que operam por meio de troca de estímulos (figura 1.1). Também nesta versão, tais componentes da arquitetura apresentam uma dinâmica de quasi-tempo real visto que utilizam-se de threads como mecanismos para sua dinâmica temporal. Entre os trabalhos que estão em desenvolvimento com o propósito de estender o projeto ARTÍFICE, destaca-se a iniciativa de adequação da arquitetura para operação em robôs reais (SOARES, 2007). Além de proporcionar um forte acoplamento entre estrutura coordenadora e corpo, este trabalho será especialmente relevante por ampliar as possibilidades de interação do agente com o mundo e, consequentemente, permitir também o surgimento de comportamentos mais elaborados. A figura 1.2 apresenta um ambiente 3D onde um robô, operando com a arquitetura, é simulado. Um dos problemas da implementação atual é a ausência de plasticidade, ou seja, a estrutura sempre realiza certos tipos pré-definidos de correlações entre seu estado e os estímulos que recebe. Com esta estrutura inata, hardwired e sem plasticidade, o agente não pode ser considerado autônomo. Além disso e pelo mesmo motivo, exibe um comportamento pobre em comparação com os animais que possuem sistema nervoso. Desde a terceira versão da arquitetura (SANTOS et al., 2004) já se havia aventado a possibilidade de uso de redes neurais auto-organizáveis como mecanismo da dinâmica temporal dos blocos funcionais. Em vista disto, paralelamente ao desenvolvimento da arquitetura, pesquisas com redes GBSB, generalized-brain-state-in-a-box, 1.1 A arquitetura ARTÍFICE 16 Figura 1.1: Diagrama de blocos da arquitetura ARTÍFICE. Fonte: Campos (2006). (HUI; ZAK, 1992), foram desenvolvidas no GPSI (GOMES; BRAGA; BORGES, 2005), (GOMES; BRAGA; BORGES, 2006), (OLIVEIRA, 2006), (REIS et al., 2006). Estes trabalhos produziram inovações na área de acoplamento de redes dinâmicas assim como resultados relevantes em aplicações de memória associativas hierárquicas. A despeito dos bons resultados, as redes GBSB não se apresentam adequadas ao atual referencial teórico. O principal ponto é que o sistema nervoso real pode ser entendido como um sistema físico aberto e distante do equilíbrio1 e, em contrapartida, as redes GBSB operam em direção a minimização de energia e portanto só produzem uma "resposta" quando convergem para algum atrator, ou seja, quando vão para o equilíbrio. Esta lacuna, i.e., a necessidade de um novo tipo de estrutura para os blocos funcionais, motivou fortemente o presente trabalho. No intuito de solucionar tal problema, buscou-se modelos de redes neurais que fossem adequados ao referencial já apresentado e que permitissem também o emprego dos princípios de acoplamento 1 mais detalhes nos capítulos 2 e 3 1.2 Relevância do trabalho para a área de Sistemas Inteligentes 17 Figura 1.2: Arquitetura ARTÍFICE operando em um robô simulado. Fonte: Soares (2007). já desenvolvidos para as redes GBSB. 1.2 Relevância do trabalho para a área de Sistemas Inteligentes As redes neurais artificiais possuíam originalmente o propósito de colaborar na compreensão do funcionamento do sistema nervoso, através de elementos computacionais primitivos que foram baseados nas propriedades neuronais que se conheciam naquela época (1943) (ANDERSON, 1995). Desde então, a área de pesquisa em redes neurais se consolidou e amadureceu, passando a ter um foco interdisciplinar, deixando de ter necessariamente uma preocupação apenas com a operação do sistema nervoso real, contribuindo, também, com a coordenação de inúmeros processos industriais (MEIRELES; ALMEIDA; SIMOES, 2003). Neste período, a neurociência avançou de maneira a esclarecer alguns pontos relativos à operação de mecanismos fundamentais no processo cognitivo dos seres vivos, porém apenas recentemente estas contribuições estão sendo usadas para compor sistema de coordenação de agentes inteligentes. Sendo assim, o presente traba- 1.3 Objetivos 18 lho se destaca por buscar contribuir ainda mais com a área de sistemas inteligentes através do uso de idéias resultantes de pesquisas recentes da neurociência. Este trabalho também se apresenta relevante no âmbito do grupo de pesquisas em sistemas inteligentes do CEFET-MG, GPSI, porque propõe uma estrutura eficiente e flexível que poderá ser incorporada na arquitetura ARTÍFICE, apresentada na seção 1.1. O uso das estruturas propostas permitirá o encapsulamento da complexidade inerente as redes, além de diminuir a distância entre os correlatos neurais e os inúmeros componentes da arquitetura desenvolvidos e em desenvolvimento. 1.3 Objetivos Este trabalho tem por objetivo geral contribuir para estabelecer uma nova perspectiva para a síntese de redes neurais biologicamente plausíveis adequadas para agentes inteligentes com uma fundamentação teórica consistente. Especificamente, o trabalho atual tem os seguintes objetivos: • compor um referencial teórico consistente, adequado ao que se pretende contemplar sobre síntese de sistema nervoso artificial, redes neurais biológicas e sistemas dinâmicos; • identificar e desenvolver, com base no referencial teórico obtido, alguns modelos de mecanismos neurais importantes para o processo cognitivo; • propor uma metodologia para simulação co-evolutiva das estruturas propostas; • implementar e validar, através da realização de alguns experimentos, um mecanismo de coordenação sensório-motora com redes de neurônios pulsantes utilizado o modelo de neurônio escolhido; 1.4 O escopo do trabalho de pesquisa Inúmeros trabalhos têm sido desenvolvidos, baseados em fortes evidências experimentais, com o propósito de sugerir substratos neurais da cognição (SETTINGS, 2000), (SHERMAN, 2006). Trabalhos desta natureza têm contribuído fortemente com o desenvolvimento de completos arcabouços conceituais de modo a levar em conta 1.5 Metodologia 19 a já citada influência do corpo e do ambiente no processo cognitivo (LEWIS, 2005), (SPORNS, 2003). Estas iniciativas são a fonte de inspiração deste trabalho. Tendo em vista este referencial, onde comportamentos complexos surgem de relações bem definidas em cada escala de organização, a preocupação do presente trabalho é reproduzir princípios organizacionais na escala de neurônios pontuados na literatura como importantes para o surgimento da cognição. Alguns trabalhos já foram desenvolvidos no GPSI e outros encontram-se em desenvolvimento de maneira a apresentar indicações de como as estruturas devem ser usadas e estabelecendo quais relações devem ser adotadas. São estes trabalhos bem como a evolução deles que se beneficiarão das estruturas propostas aqui, em especial do meio de acoplamento proposto. Sendo assim, a preocupação deste trabalho é conceber estruturas biologicamente plausíveis, na escala de neurônios, que operem em tempo real e que desempenhem funções específicas relativas à integração temporal no sistema nervoso. A maneira como ocorrem as transduções relacionadas às capacidades sensoras e efetoras específicas são tratadas aqui de maneira simplista mas poderão ser pesquisada em trabalhos futuros. 1.5 Metodologia O desenvolvimento deste trabalho envolveu conceitos e técnicas que perpassam várias áreas do conhecimento, fazendo-se necessário o levantamento bibliográfico para sua fundamentação e o estudo das tecnologias envolvidas para a modelagem e implementação do mesmo. Estas etapas são apresentadas a seguir: 1. revisão da literatura nas áreas da neurociência e sistemas inteligentes, no que diz respeito às redes neurais naturais e artificiais; 2. construção de uma abstração adequada e coerente dos processos neurais, que unifique, tanto quanto possível, os pontos de vista da neurobiologia e as necessidades da área de sistemas inteligentes; 3. realização de um estudo matemático-computacional do modelo de neurônio proposto por Izhikevich (2003), dos modelos de sinapse e do mecanismo de plasticidade implementado, spike-timing-dependent plasticity; 1.6 Organização da dissertação 20 4. construção em software de alguns micro-circuitos utilizando os mecanismos descritos na etapa anterior; 5. elaboração e execução de experimentos computacionais de maneira a validar a proposta; 6. realização de analises críticas quanto aos resultados obtidos. Para a realização deste trabalho foi utilizada a linguagem de programação do Matlab 7.0.4.352 (R14) Service Pack 2. 1.6 Organização da dissertação Este trabalho está dividido em seis capítulos, sendo que o segundo será utilizado para detalhar alguns aspectos organizacionais e operacionais do sistema nervoso, pois o entendimento destes conceitos são fundamentais para a compreensão do restante do trabalho. No terceiro capítulo serão apresentados alguns pontos referentes à modelagem de sistemas neurais biologicamente plausíveis. Além disto, será feita também uma análise de trabalhos correlatos no âmbito da área de Sistemas Inteligentes, visando contextualizar o presente trabalho. No quarto capítulo será realizado um estudo matemático e computacional dos mecanismos usados para compor os micro-circuitos: modelo do neurônio adotado, modelo da sinapse e de seu mecanismo de plasticidade. O quinto capítulo é dedicado à apresentação e validação dos micro-circuitos e mecanismos propostos. Por fim, no sexto e último capítulo conclui-se este trabalho de pesquisa. 21 2 Alguns aspectos neurocientíficos do sistema nervoso Desde o trabalho dos primeiros neuroanatomistas, o cérebro humano desperta a curiosidade acerca de seu funcionamento. Hoje alguns mecanismos já são bem conhecidos, mas uma imagem completa do funcionamento deste órgão ainda está longe de ser compreendida. O cérebro continua a ser "um mundo composto de numerosos continentes não explorados e grandes extensões de territórios desconhecidos"1 comparado com outros campos clássicos das ciências naturais (YEUNG, 2005). Este desconhecimento se deve, fundamentalmente, às condições restritivas nas quais os experimentos são realizados. Boa parte do conhecimento adquirido advém de pesquisas baseadas em lesões de regiões do sistema nervoso. Além disso, pesquisas in vitro também colaboraram com o avanço da neurociência, apesar de eliminarem a influência do locus no objeto de estudo. Apenas recentemente foram desenvolvidas técnicas eficientes de registro da atividade de neurônios individuais com dano mínimo ao tecido e também técnicas de imageamento com boas resoluções espaciais e temporais. Como já apontado na introdução deste trabalho, o sistema nervoso tem um papel importante no surgimento de comportamentos elaborados. Este fato se dá, fundamentalmente, em conseqüência das características das células que o compõe e também da maneira como elas se organizam. Desta forma, as seções subseqüentes têm como propósito apresentar princípios de organização de algumas escalas de observação do sistema nervoso baseado em obras da neurociência, maiores detalhes encontram-se em Lent (2001), LeDoux (2002) e Edelman e Tononi (2001). Sendo assim, na seção 2.1 será apresentada um pouco da fenomenologia na es1 “a world consisting of a number of unexplored continents and great stretches of unknown territory”, frase atribuída a Ramón y Cajal (1852-1934), histologista e neuroanatomista espanhol. 2.1 Estrutura neuronal 22 cala dos neurônios. Em seqüência serão caracterizados os micro-circuitos e grupos neuronais na seção 2.2, e, por fim, na seção 2.3 será apresentado como ocorre a coordenação e integração entre as estruturas neurais de maneira a permitir o surgimento de comportamentos complexos. 2.1 Estrutura neuronal Os principais constituintes do tecido nervoso são basicamente dois tipos de células: os neurônios e as células gliais. O primeiro, desde sua descoberta, sempre teve papel de destaque, sendo considerado a unidade básica do sistema nervoso e o segundo, uma célula responsável apenas por realizar funções de agregação e sustentação entre os neurônios. O conceito não está de todo errado, mas sabe-se hoje que as células gliais apresentam um papel mais fundamental e complexo do que este (LENT, 2001). Os neurônios têm como característica uma diferença de potencial elétrico sobre a membrana celular, na ausência de estímulos a tensão é negativa. Isso ocorre em conseqüência da diferença de concentração de certos íons, e.g., Na+ , Cl− , K+ , Ca++ , entre o interior da célula e o meio extracelular. Além deste importante fato, podese considerar que o que torna especial o papel do neurônio são suas características quanto à sua forma e quanto à maneira como ele produz e recebe estímulos de outras células. Maturana e Varela (2004) caracterizam de maneira geral os neurônios quanto à forma: Eles se distinguem por terem ramificações de formas específicas que se estendem por enormes distâncias, da ordem de dezenas de milímetros no caso dos maiores. Essa característica neuronal universal, presente em todos os organismos dotados de sistema nervoso, determina o modo específico pelo qual este participa dos organismos multicelulares, que integra ao pôr em contato elementos celulares situados em muitas partes diferentes do corpo. Mais especificamente, neurônios possuem três partes principais, figura 2.1. A primeira é o corpo celular ou soma, que está envolvida em importantes funções básicas 2.1 Estrutura neuronal 23 como armazenamento do material genético e produção de proteínas e de outras moléculas necessárias para a sobrevivência da célula. O corpo celular realiza nos neurônios o mesmo trabalho feito nas outras células. A principal diferença anatômica está nos anexos que os neurônios possuem, que são as outras duas partes, os dendritos e o axônio. Figura 2.1: Neurônio típico. Fonte: Wikipedia. Os dendritos2 , numerosos prolongamentos ramificados múltiplas vezes como pequenos arbustos, são as estruturas pelas quais o neurônio recebe estímulos provenientes dos demais neurônios a que se associa. O grande número de dendritos é útil à célula nervosa, pois permite multiplicar a área disponível para receber os estímulos aferentes. Estes são recebidos nos dendritos através de receptores sensíveis a determinadas substâncias, chamadas neurotransmissores, que provocam a abertura ou fechamento de canais iônicos permitindo ou bloqueando o trânsito de íons específicos e provocando assim variações no potencial elétrico da célula. O axônio é o prolongamento mais longo e fino, ramificando-se pouco no trajeto e muito na sua porção terminal. Cada neurônio tem apenas um, e é por ele que saem os estímulos eferentes, pulso conhecido como potencial de ação, dirigidos às outras células de um circuito neural. A propagação de um potencial de ação termina na porção final do axônio estimulando as vesículas sinápticas, que por sua vez liberam neurotransmissores em botões de contato, as sinapses, com os dendritos das células 2 do grego: "pequenos ramos de árvore" 2.1 Estrutura neuronal 24 seguintes. Há dois tipos de sinapses, as elétricas3 , que são aquelas onde existe o contato direto entre entre as membranas da célula que produz o estímulo (pré-sináptica) e da que recebe (pós-sináptica), e as sinapses químicas, onde há a chamada fenda sináptica entre as duas células. O primeiro tipo tem como principal função a sincronização de neurônios, porém é pouco modulável e sua presença é rara em animais vertebrados. O segundo tipo, mais comum, são as sinapses químicas, que podem receber outras influências permitindo a modulação do estímulo. Dado estas informações, o processo de comunicação entre os neurônios pode ser sintetizado assim: Um neurônio é perturbado por inúmeros estímulos excitatórios e inibitórios. O efeito observado na tensão elétrica da membrana são despolarizações (EPSP, excitatory postsynaptic potential) e hiperpolarizações (IPSP, inhibitory postsynaptic potential), respectivamente, figura 2.2. Dependendo da intensidade e da freqüência com que estas perturbações são recebidas, um potencial de ação é disparado na fronteira entre o corpo celular e o axônio. Este pulso propaga-se através do último provocando a liberação de neurotransmissores na fenda sináptica e assim fechando o ciclo perturbando outra célula. Figura 2.2: Potencial de ação e potenciais pós-sinápticos, onde u representa o poten(f) cial elétrico da membrana celular e t j o tempo de disparo do neurônio pré-sináptico (neurônio j). Fonte: Adaptado de Gerstner e Kistler (2002). 3 conhecidas como gap junctions 2.2 Grupos, Circuitos e Sistemas neuronais 25 2.2 Grupos, Circuitos e Sistemas neuronais Sabe-se hoje que o cérebro humano tem aproximadamente 100 bilhões de neurônios que se ligam em um complexo padrão de conexão. A despeito disto, em níveis mais altos de ordem anatômica é possível distinguir importantes princípios de organização. Deste modo serão apresentados três arranjos topológicos que segundo Edelman e Tononi (2001) parecem ser essenciais na compreensão da função global do cérebro. O primeiro arranjo é uma ampla e densa malha tridimensional segregada, mas também, integrada num conjunto de circuitos constituindo o chamado sistema tálamocortical. Uma das partes que compõe este sistema é o tálamo, estrutura encontrada no profundo interior do cérebro, que recebe entradas sensoras e outros estímulos internos. O tálamo é reciprocamente conectado ao córtex cerebral, lâmina retorcida que cobre a superfície do cérebro. O córtex por sua vez é dividido em seis camadas, cada uma enviando e recebendo conjuntos específicos de entradas e saídas. O córtex e o tálamo são tradicionalmente subdivididos num grande número de áreas que desempenham diferentes funções. Esta segregação funcional pode ser vista em muitas escalas espaciais diferentes. Exemplo disso é que a porção posterior do sistema tálamocortical é dedicada à percepção, enquanto a parte frontal é dedicada à ação e planejamento. Muitas destas áreas são montadas como mapas: neurônios vizinhos de uma área conectam-se com neurônios vizinhos de outra. Diferentes áreas corticais e seus núcleos talâmicos associados são também especializados: algumas destas áreas tratam de estímulos visuais, enquanto outras tratam de estímulos acústicos e outras de estímulos táteis. Observando apenas uma destas áreas, o sistema visual por exemplo, vê-se que diferentes regiões realizam diferentes submodalidades: algumas com a forma visual, outras com a cor, outras com movimentos, e assim por diante. Em cada uma destas áreas, diferentes grupos de neurônios ocupam-se preferencialmente com aspectos específicos de um estímulo. Apresentada a segregação do sistema tálamo-cortical é importante caracterizar como se dá a integração funcional neste sistema. A maioria destes grupos neuronais são conectados reciprocamente em certos padrões. Neurônios de um mesmo grupo numa dada localização são ligados fortemente, desta maneira muitos deles respondem simultaneamente quando um estímulo apropriado é apresentado. Grupos neuronais com diferentes localizações, porém com especificidades similares, são preferencialmente conectados uns nos outros. Por exemplo, grupos neuronais que respondem 2.2 Grupos, Circuitos e Sistemas neuronais 26 Figura 2.3: Sistema Tálamo-Cortical. Fonte: Adaptado de Edelman e Tononi (2001). a bordas verticais são ligados através de conexões recíprocas muito mais fortemente do que grupos neuronais que respondem a bordas em diferentes orientações. Regras similares parecem aplicar-se à outras áreas do córtex, sejam elas dedicadas à percepção ou à ação. Numa escala ainda maior, áreas corticais contêm um grande número de grupos neuronais que são ligados por caminhos recíprocos, convergentes e divergentes que conectam áreas dispersas à áreas locais e vice-versa. Estes caminhos são chamados projeções e é por meio deles que ocorre a integração das funções distribuídas do cérebro. Esta característica é chamada de reentrância e é por meio dela que uma perturbação em qualquer parte da malha que compõe o sistema pode ser rapidamente sentida em qualquer outro lugar do sistema. O segundo arranjo topológico é organizado não como uma malha mas como uma cadeia de ligações paralelas e unidirecionais que ligam o córtex ao conjunto de suas estruturas anexas (cerebelo, gânglio basal e hipocampo). O cerebelo encontra-se na parte posterior do cérebro. Ele é organizado em finas e paralelas microzonas, muitas das quais recebem conexões do córtex e, depois de um certo número de passos sinápticos, projeta para o tálamo, que por sua vez projeta para o córtex. Tradicionalmente é considerado que o cerebelo ocupa-se da coordenação e sincronia de movimentos, apesar do seu envolvimento com certos aspectos da linguagem parecer fundamental. Outro anexo é conhecido coletivamente como gânglios basais, que consiste em um conjunto de núcleos profundos no cérebro que recebe conexões de várias partes do córtex e, através de uma série de passos sinápticos, projeta para o tálamo, que por sua vez projeta para o córtex. Estes núcleos estão envolvidos no planejamento e 2.2 Grupos, Circuitos e Sistemas neuronais 27 Figura 2.4: Segundo arranjo topológico. Fonte: Adaptado de Edelman e Tononi (2001). execução de complexas tarefas motoras e atos cognitivos. Há ainda outra estrutura anexada ao córtex, o hipocampo, uma alongada estrutura que se encontra ao longo da borda mais baixa do córtex temporal do cérebro. Entradas de muitas áreas corticais diferentes são afuniladas no hipocampo, que trata estas entradas numa série de passos sinápticos e envia projeções de volta para várias das mesmas áreas corticais. Acredita-se que o hipocampo colabora em muitas funções, mas ele certamente tem como papel principal a consolidação de memórias de curto prazo em memórias de longo prazo no córtex. A despeito das maneiras especiais em que esses diferentes anexos corticais interagem com o córtex serem de grande importância, todos eles compartilham de um mesmo modo de organização: longos e paralelos caminhos envolvendo múltiplas sinapses deixam o córtex cerebral, atingem os apêndices corticais passando por um série de outros passos sinápticos e, passando ou não pelo tálamo, projetam-se no córtex. Em síntese, estes sistemas apresentam-se adequados para a execução de de várias rotinas motoras e cognitivas elaboradas, a maioria das quais isoladas tanto quanto possível das outras, característica esta que garante velocidade e precisão em sua execução. O terceiro tipo de arranjo topológico não se assemelha nem a uma malha de conexões nem a um conjunto de cadeias paralelas, mas a um conjunto de conexões difusas. O epicentro deste sistema é um pequeno número de neurônios que são concentrados em núcleos específicos no tronco encefálico e no hipotálamo e que recebem seus nomes técnicos de acordo com as substâncias que liberam: locus noradrenér- 2.3 Integração neural 28 gico, núcleo dopaminérgico, núcleos serotonérgicos, entre outros. Todos estes núcleos influenciam de maneira difusa muitas partes do cérebro, senão todas. Neurônios pertencentes à estes núcleos disparam a qualquer momento em que algo importante ou saliente ocorra, como um barulho alto, um flash de luz ou dor repentina. O disparo destes neurônios libera substâncias, chamadas neuromoduladores, que são capazes de influenciar não somente a atividade neural como também a plasticidade neural (mudança na força das sinapses dos circuitos neurais produzindo respostas adaptativas). Dada suas propriedades anatômicas únicas, suas características de descarga, seus efeitos em neurônios alvos e sinapses e sua origem evolucionária, este conjunto de núcleos é designado coletivamente como sistema valoracional. Inúmeras evidências indicam que este sistema ocupa-se de sinalizar para todo o cérebro a ocorrência de eventos importantes. Figura 2.5: Sistema Valoracional. Fonte: Adaptado de Edelman e Tononi (2001). 2.3 Integração neural As ligações entre as estruturas descritas na seção anterior já proporcionaram alguns indícios de como ocorre a integração sensorial no cérebro, porém este mecanismo não é suficiente para explicar como mapas diferentes e funcionalmente segregados podem compor um estado coerente sem um controlador de alta ordem. Este é o chamado binding problem, motivação de várias pesquisas e citado recorrentemente na literatura. Segundo Lewis (2005) estas pesquisas focam na integração temporal, onde a 2.3 Integração neural 29 abordagem se dá através de vários métodos de medição de correlações temporais, como trancamento de fase (phase locking) ou sincronia de fase (relação temporal fixa entre as oscilações de regiões independentes) obtidos a partir de dados coletados de EEG4 , campos potenciais locais e registros da atividade de células individuais. Sendo ainda mais claro, sincronia aqui é definida por uma janela temporal dentro da qual resquícios de algum evento anterior alteram a resposta de eventos subseqüentes (BUZSAKI; DRAGUHN, 2004). Ainda de acordo com Buzsaki e Draguhn (2004), neurônios corticais dos mamíferos formam redes de vários tamanhos que apresentam oscilações dependentes do comportamento. Estas oscilações se espalham sob uma faixa de freqüência de cinco ordens de magnitude. Essas oscilações são preservadas filogeneticamente, sugerindo uma funcionalidade relevante. Descobertas recentes indicam que essas oscilações de rede direcionam a seleção de entradas, ligam temporalmente neurônios em assembléias e facilitam a plasticidade sináptica, mecanismos que cooperativamente sustentam a integração temporal e a consolidação de longo prazo da memória. Oscilações de altas freqüências são restritas a pequenas regiões enquanto redes amplas coordenam-se através de oscilações de baixas freqüências. Dentro deste espectro de freqüências observado no cérebro, algumas faixas foram extensivamente estudadas, destacando-se principalmente a freqüência gama (30-80 Hz) (SETTINGS, 2000). Um dos trabalhos pioneiros que contribuiu para destacar a importância desta faixa foi a iniciativa de Freeman (1991), que verificou que a freqüência 40Hz tem um papel chave em modelos perceptuais do bulbo olfatório de coelhos. Recentemente inúmeros estudos demonstram que o grau de sincronia nesta faixa corresponde ao grau de engajamento atencional ou prontidão para a ação (LEWIS, 2005). Thompson e Varela apud Lewis (2005) argumentam que esta sincronia reflete a integração de muitas dimensões em um "ato cognitivo" unificado em detrimento de um agrupamento de componentes referentes a processos perceptuais. Não menos importante porém só recentemente descoberta, a faixa teta relaciona-se com processos emocionais. Oscilações síncronas na faixa teta (4-7 Hz) foram observadas na amígdala antecipando um choque e acompanhado de aumento da pressão arterial sugerindo medo (Paré e Collins, 2000) apud Lewis (2005). Dada a importância e citadas algumas freqüências estudadas na literatura, Lewis (2005) descreve alguns dos mecanismos de integração ao longo do sistema nervoso. 4 Eletroencefalografia, técnica de registro de potenciais elétricos resultantes da atividade de grupos de neurônios desenvolvidos no encéfalo 2.3 Integração neural 30 O primeiro mecanismo são as realimentações entre as estruturas neurais, ou simplesmente laços de retorno aninhados de auto-sincronização. O primeiro arranjo anatômico apresentado na seção anterior apresenta um ambiente propício para tal mecanismo. Através destes laços, realimentações positivas e negativas produzem fenômenos de auto-amplificação e auto-estabilização da atividade neural. Outro mecanismo de integração é a neuromodulação - que provoca efeitos globais e estabilização através do sistema valoracional também apresentado anteriormente. O último sistema que proporciona a integração é a plasticidade. Maturana e Varela (2004) apresentam de maneira geral como ocorre a plasticidade dos sistemas neuronais: As mudanças estruturais não ocorrem nas conexões que ligam grupos de neurônios, mas sim nas características locais dessas conexões. Ou seja, as modificações se dão no plano das ramificações finais e nas sinapses. Nesses lugares as alterações moleculares resultam em mudanças na eficácia das interações sinápticas, que podem modificar drasticamente o modo de operar de grandes redes neuronais. O marco pioneiro nesta área foi o trabalho de Hebb (1949) que é reconhecido como a primeira iniciativa no sentido de tratar explicitamente uma regra de aprendizado fisiológica para modificação sináptica. Segundo Hebb: Quando o axônio da célula A é próximo suficiente para excitar a célula B e repetidamente ou persistentemente toma parte no disparo da última, alguns processos de crescimento ou mudanças metabólicas ocorrem de maneira que aumente a eficiência da célula A como uma das células que provocam disparos em B. Apesar da grande contribuição e do pioneirismo, o trabalho de Hebb só foi verificado experimentalmente na ocasião da descoberta da potencialização de longo prazo, LTP. Neste fenômeno, freqüências particulares ou atividade constante de disparo de neurônios pré-sinápticos produzem mudanças químicas no neurônio pós-sináptico de maneira a alterar permanentemente a estrutura das sinapses. Por fim, estudos mais recentes de plasticidade Hebbiana têm investigado experimentalmente regras de aprendizado onde o timing entre os disparos do neurônio pré 2.3 Integração neural 31 e pós-sináptico têm papel fundamental. O principal fruto destes trabalhos foi a descoberta do spike-timing-dependent plasticity que será estudado em detalhes na seção 4.3. 32 3 Aspectos selecionados da modelagem de sistemas neurais biologicamente plausíveis É comumente considerada como a primeira iniciativa em direção à modelagem do sistema nervoso na escala de neurônios o trabalho de McCulloch e Pitts (1943). Com a instrumentação disponível na época, eles entenderam o funcionamento de um neurônio como uma porta lógica. Esta visão teve grande influência nos trabalhos de von Neumann e em sua arquitetura de computadores (ANDERSON; ROSENFELD, 1988): It is worth mentioning that the neurons of the higher animals are (relaylike) elements in the above sense. They have all-or-none character, that is two states: Quiescent and excited.... Following W. Pitts and W. S. McCulloch... we ignore the more complicated aspects of neuron functioning: Thresholds, temporal summation, relative inhibition, ... etc ... It can easily be seen that these simplified neuron functions can be imitated by telegraph relay or by vacuum tubes1 (NEUMANN, 1982)2 . Este cenário permitiu a origem da chamada metáfora do computador. Uma arquitetura de computadores foi criada tendo como inspiração os princípios que acreditavamse ser na época os que governavam a operação do cérebro, e hoje, mais de 60 anos depois, tenta-se explicar o funcionamento deste orgão como se fosse um computador. 1É válido mencionar que neurônios de animais superiores são elementos análogos à relés. Eles possuem a característica tudo-ou-nada, isto é, possuem dois estados: Quiecente e excitado.... De acordo com W. Pitts e W. S. McCulloch... nós ignoramos os aspectos mais complicados do funcionamento do neurônio: limiares de disparo, integrações temporais, inibição,... etc... É fácil perceber que as funções neuronais simplificadas podem ser mimetizadas por uma chave telegráfica ou por válvulas. 2 Este trabalho foi escrito em 1945 apesar de ter sido publicado apenas em 1982. 3 Aspectos selecionados da modelagem de sistemas neurais biologicamente plausíveis 33 Ou seja, tenta-se comparar duas coisas que possuem muito mais diferenças do que características em comum. O próprio Neumann (1958) apud Freeman (2007) reconhece mais tarde estas diferenças marcantes: Thus the outward forms of our mathematics are not absolutely relevant from the point of view of evaluating what the mathematical or logical language truly used by the central nervous system is. ... It is characterized by less logical and arithmetical depth than what we are normally used to. ... Whatever the system is, it cannot fail to differ considerably from what we consciously and explicitly consider as mathematics. A despeito disto, as influências de McCulloch e Pitts e de von Neumann ainda são visíveis e marcantes em trabalhos recentes nas áreas da neurociência e inteligência artificial. Um claro exemplo é destacado por Larson (2006), que apresenta visões diferentes de como o tempo é tratado na neurociência computacional: Due to the discrete time conceptualization, computer scientists are more comfortable explaining the function of brain systems in terms of chains of events with definite beginnings and definite ends. Physicists, on the other hand, are more comfortable explaining the brain in terms of dynamics, which do not require definite beginnings or definite ends. Computer scientists care more what the consequence of an event is in the brain, whereas physicists are more concerned with an concise account of the dynamics of what is occurring.3 A visão dos cientistas da computação sobre processo cognitivo apresentada por Larson (2006) é a mesma adotada nas ciências cognitivas tradicionais. Em ambos os casos o sistema nervoso é visto como um processador simbólico, que representa internamente um modelo de mundo e, segundo esta visão, apresenta cognição através de manipulações internas deste modelo, sendo o processo completo organizado em um esquema sequencial de sentir, processar e agir. 3 Em consequência da conceitualização do tempo discreto, cientistas da computação encontram-se mais confortáveis em explicar funções do sistema nervoso em termos de cadeias de eventos com inícios e fins definidos. Físicos, por outro lado, explicam o cérebro em ternos da dinâmica, que não requer inícios ou fins definidos. Cientistas da computação preocupam-se mais com as consequências de eventos no cérebro enquanto físicos preocupam-se mais com uma contabilização concisa da dinâmica do que está ocorrendo. 3 Aspectos selecionados da modelagem de sistemas neurais biologicamente plausíveis 34 No entanto, a cada dia cresce o número de trabalhos que compreendem a cognição como um processo dinâmico. Esta área em expansão, apesar de ser conhecida por vários nomes, tem sido chamada de Embodied Cognition. As pesquisas nesta linha, fortemente embasadas em evidências experimentais, têm buscado maneiras de tratar e estudar os crescentes dados multidimensionais obtidos sem desprezar as influências externas a que são submetidos os agentes estudados. Tendo em vista esta necessidade, pesquisadores da área têm preenchido esta lacuna através do uso da teoria dos sistemas dinâmicos, onde a ênfase está na interação entre a dinâmica interna do agente e as dinâmicas externas do corpo e do ambiente (SPORNS, 2003). Os princípios deste arcabouço determinam que níveis de ordem mais altos emergem de níveis de ordem mais baixos através de processos causais bidirecionais. Em vista disto, pode-se perceber que esta visão adequa-se à modelagem do sistema nervoso conforme exposto no capítulo 2. A seguir serão apresentados alguns trabalhos que corroboram a adequação deste arcabouço ao fenômeno estudado. Lewis (2005) usou a teoria dos sistemas dinâmicos para estabelecer uma ligação entre a neurobiologia e a teoria da emoção no âmbito da psicologia. Pesquisas experimentais recentes têm obtido sucesso no registro simultâneo da atividade de muitos neurônios de partes diferentes do sistema nervoso enquanto o animal realiza alguma tarefa sensório-motora ou cognitiva. Como resultado têm-se obtido grandes conjuntos de dados multidimensionais. Em vista disso, Briggman, Abarbanel e Jr (2006) propuseram uma metodologia de modo a permitir a análise das interações dinâmicas entre populações de neurônios. Outro trabalho que também tem como ponto de partida uma grande massa de dados e que se beneficia da abordagem dinâmica foi a pesquisa desenvolvida por Tsien (2007) e colaboradores. Através do registro de uma população de neurônios da área CA1 do hipocampo de roedores, eles puderam constatar que dado um mesmo episódio traumático, o estado da população observada sempre se encontrava na mesma região do espaço de estados. Freeman (2005), ao investigar processos perceptuais, obteve evidências por meio do uso de EEG, de que cada hemisfério do cérebro mantém uma rede com invariância de escala que gera e mantém um estado global caótico. Depois de décadas de pesquisa e resultados bem consolidados, o trabalho segue em direção à adaptação da teoria dos processos termodinâmicos distantes do equilíbrio desenvolvida por Ilya Prigogine (FREEMAN, 2007). 3.1 Alguns modelos computacionais envolvendo sistemas biologicamente plausíveis 35 Cabe destacar que, além destes breves exemplos apresentados, há várias outras pesquisas que adotam como princípio explicativo este arcabouço, a teoria dos sistemas dinâmicos. Estabelecida e justificada a linha adotada pelo presente trabalho, na seção seguinte serão enumeradas algumas características de redes neurais artificiais biologicamente plausíveis. 3.1 Alguns modelos computacionais envolvendo sistemas biologicamente plausíveis Por conta do forte caráter interdisciplinar do trabalho, há pesquisas correlatas tanto na área da neurociência quanto da inteligência artificial. Em determinados casos há até a dificuldade de se estabelecer em qual área do conhecimento está o trabalho. Um bom exemplo é a arquitetura Darwin que vem sendo desenvolvida no Neuroscience Institute (KRICHMAR; EDELMAN, 2003). A despeito do projeto contemplar a construção de um artefato "inteligente", há também uma motivação biológica. Tal artefato pertence a uma classe chamada brain-based-devices, onde a operação da arquitetura é analisada de maneira a obter indícios da operação de um sistema nervoso real. Tal caminho foi tomado devido a dificuldade de analisar a operação do sistema nervoso in vivo, visto que técnicas de registro de atividade de neurônios individuais são invasivas e portanto de conexão muito delicada. Apenas recentemente foram desenvolvidas técnicas eficientes de próteses intracranianas de maneira a permitir uma grande redução do dano ao tecido neuronal. Em um viés biológico, Maass, Natschläger e Markram (2002) desenvolveram toda uma teoria relativa a computabilidade realizada por micro-circuitos neurais. As estruturas propostas, Liquid-state machines, recebem entradas contínuas e variantes no tempo que representam estímulos aferentes e, depois de "processados" por uma rede recorrente, obtém-se uma saída de mesma natureza, i.e., contínua e variante no tempo, que representa uma integração temporal dos estímulos prévios. Apresentada de maneira esquemática na figura 3.1, esta estrutura pode ser entendida e dividida em dois blocos: rede recorrente e esparsa (que atuam como um filtro não linear LM , mapeando a entrada contínua em um espaço de alta dimensão, xM (t), chamado aqui de estado líquido) e camada de saída f M , readout neurons, que pode ser treinada usando-se métodos de regressão linear de maneira a projetar na saída o produto de alguma operação de integração temporal específica, y(t). 3.1 Alguns modelos computacionais envolvendo sistemas biologicamente plausíveis 36 Figura 3.1: Máquina de estado liquido. Fonte: Maass, Natschläger e Markram (2002). A despeito da fidelidade relativa a anatomia dos grupos neuronais, i.e., a recorrência e as ligações esparsas, as Liquid-state machines pecam ao exigir uma camada de saída treinada independentemente através de métodos de regressão. No intuito de sanar esta deficiência, Muresan e Savin (2007) implementaram uma estrutura análoga as Liquid-state machines onde a preocupação não era quanto a uma obtenção de uma saída específica da rede mas a manutenção de uma dinâmica auto-sustentável. Já na área de sistemas inteligentes, grande parte dos trabalhos concentram-se na abordagem do problema, i.e., o surgimento de um comportamento inteligente, com o uso de técnicas de computação evolucionária, em especial os algoritmos genéticos. Nolfi (1998) esclarece alguns pontos acerca dos problemas relacionados a este caminho: Se alguém deseja selecionar através de evolução artificial indivíduos capazes de resolver determinada tarefa que requeira uma competência especifica, o caminho mais simples é selecionar indivíduos levando em conta sua habilidade de resolver a tarefa, i.e., estabelecer um critério, fitness function, que pontue os indivíduos de acordo com sua facilidade em resolver o problema. Entretanto, é fácil mostrar que essa simples estrategia só funciona para tarefas simples. Com o crescimento da complexidade da tarefa, a probabilidade de que algum indivíduo da primeira geração a complete, pelo menos em parte, diminui, ou seja, a complexidade da tarefa e a probabilidade de termina-la tem uma relação inversa. Para tarefas complexas, todos os indivíduos da primeira geração são pontuados com o mesmo valor nulo, e, como conseqüência, o processo de seleção não pode operar. 3.1 Alguns modelos computacionais envolvendo sistemas biologicamente plausíveis 37 Este problema é reconhecido como bootstrap problem. Como solução para esse impasse Nolfi (1998) defende o uso de mecanismos autoorganizáveis: uma solução desejável para o bootstrap problem poderia ser um processo auto-organizável que produz evoluções incrementais que não requerem supervisão humana. A situação ideal surge quando populações coevoluem (i.e. no caso de populações em competição com um acoplamento ajustado, como no modelo predador-presa). Cada população através da co-evolução produz progressivamente desafios mais complexos para a outra população. Como conseqüência as populações em competição dirigem um a outra em direção ao aumento da complexidade produzindo uma "corrida armada" evolucionária. Os três trabalhos apresentados a seguir representam uma evolução nesta linha de trabalho: Paolo (2002) sintetizou redes plásticas de neurônios pulsantes através de técnicas evolucionárias para coordenar a navegação de um robô. Com propósito de explorar redes de neurônios pulsantes operando com STDP como mecanismo plasticidade, ele obteve resultados que indicam que a estrutura é bem robusta à ruidos e outros tipos de perturbações. Seguindo a mesma linha, Floreano et al. (2006) trabalharam na construção de um sistema de coordenação para navegação de robôs autônomos que também utiliza neurônios pulsantes. O circuito de neurônios foi obtido através do uso da técnica de algoritmos genéticos, onde cada gene representa a presença ou ausência de uma ligação sináptica. A estrutura sintetizada permitiu a navegação sem colisão com sucesso, figura 3.2. E, por fim, Florian (2006) também propôs um mecanismo de coordenação baseado em redes de neurônios pulsantes capaz de apresentar um comportamento cognitivo minimalista. Porém, o agente simulado realiza uma tarefa diferente de desviar de obstáculos. O agente em questão possui um reflexo de busca-puxa-libera. Em virtude do reflexo embutido no agente, ele interage com os objetos existentes no mundo artificial e, mediante estas interações, apresenta uma pequena evolução no comportamento, caracterizada pela diferenciação do tamanho relativo dos objetos com que interage e 3.1 Alguns modelos computacionais envolvendo sistemas biologicamente plausíveis 38 Figura 3.2: Robô navegando no ambiente com obstáculos. Fonte: Floreano et al. (2006). pela escolha, em função do contexto, de um entre três sub-comportamentos possíveis, figura 3.3. Figura 3.3: Morfologia do agente. Fonte: Florian (2006). Apesar do sucesso destas três implementações apresentadas, estes trabalhos ainda compartilham do mesmo problema relativo a como a técnica foi empregada. A "evolução" realizada através da técnica dos algoritmos genéticos produz como resultado agentes com comportamento adequado apenas para aquele ambiente. Uma mudança de ambiente necessitaria inevitavelmente de outro processo de evolução. Isso ocorre porque o critério de seleção otimiza a rede para aquela tarefa. Numa outra perspectiva, o presente trabalho propõe a síntese da rede por blocos e um mecanismo de acoplamento plástico entre eles de maneira a permitir o surgimento de outros reflexos. 3.2 Neurônios pulsantes 39 3.2 Neurônios pulsantes Pense em um neurônio não somente em termos de íons e canais, como muitos biólogos fazem, e não somente em termos de relações de entradas/saídas como muitos teóricos fazem, mas também como um sistema dinâmico que vê a entrada através do prisma da sua própria dinâmica (IZHIKEVICH, 2007). Reeve e Hallam (2005) realizaram um análise de modelos de redes neurais adequadas para a coordenação motora de robôs e concluíram que o realismo biológico é desejável mas conflita com o custo computacional. Através desta análise, eles concluíram que modelos de neurônios com dinâmica interna possibilitam um repertório amplo com um menor número de neurônios em relação às outras implementações que utilizam modelos mais tradicionais, como o de McCulloch e Pitts (1943) e modelos de neurônios sigmoidais. Dentre os novos modelos encontrados na literatura, uma classe que se destaca são os neurônios pulsantes, spiking neurons. Estes modelos matemáticos apresentam uma boa concordância com as medições de neurônios in vitro e in vivo, além de descreverem de maneira mais fiel a atividade do cérebro (GERSTNER; KISTLER, 2002). Há uma série de modelos pertencentes a esta classe, desde os compartimentalizados (modelos que tratam de cada uma das estruturas do neurônio), até os que tratam o neurônio como uma estrutura homogênea. Para uma ampla revisão dos modelos de neurônios pulsantes veja Gerstner e Kistler (2002), Bohte (2003), Berredo (2005), Izhikevich (2007). Entre os modelos de neurônios pulsantes, o que reproduz com mais detalhes as características de um neurônio real é o modelo de Hodgkin e Huxley (1952), que foi desenvolvido a partir de experimentos com o axônio de uma lula gigante. Este é o modelo mais completo, visto que além de tratar da tensão de membrana, descreve também a dinâmica das correntes iônicas. O problema com este modelo é que ele apresenta um alto custo computacional, visto que é descrito por quatro equações diferenciais não-lineares acopladas, o que inviabiliza o seu uso em simulações de redes com um número razoável de neurônios. Em contrapartida, Izhikevich (2003) desenvolveu um modelo de neurônio que tem 3.3 Considerações finais 40 como mérito apresentar várias características de neurônios reais aliado a um baixo custo computacional. Além disto, este modelo é capaz de reproduzir uma ampla gama de fenômenos. 3.3 Considerações finais Tendo em vista o início deste capítulo e toda a fenomenologia apresentada no capítulo 2, conclui-se claramente que o sistema nervoso não deve ser entendido como um computador. Neste contexto, a questão fundamental não é a que tem sido imposta majoritariamente na literatura4 , mas sim a inversa: É possível construir um cérebro com uma máquina de Turing? Posta a questão adequada, cabe dizer que há um amplo debate e não há uma resposta definitiva. Na busca de caminhos para a solução da questão imposta foi revisado neste capítulo algumas iniciativas, destacando-se os trabalhos desenvolvidos no GPSI. Tendo em mente que na construção de mecanismos inteligentes limitações ontológicas são inevitáveis, o desafio é então desenvolver maneiras de diminuir estas limitações e como conseqüência aumentar o nível de autonomia segundo definição de Haselager (2004). Nesta direção, a maneira como os algoritmos genéticos foram usados demonstra que este caminho não é uma boa solução já que não dá liberdade para o surgimento de outros comportamentos. Numa outra perspectiva, o presente trabalho propõe como solução a incorporação em agentes de uma estrutura sintetizada em blocos que apresentem reflexos inatos e que através de mecanismos plásticos permita o surgimento de outros comportamentos. Descrito o estado-da-arte, os problemas abertos e as características desejadas nortearam a escolha de um modelo de rede adequado, o qual será estudado em detalhes no próximo capítulo. 4É possível construir uma máquina de Turing com neurônios? (GERSTNER, 1999) 41 4 Estudo dos Modelos matemáticos de neurônios e mecanismos de acoplamento neuronal 4.1 Modelo de neurônio pulsante de Izhikevich O modelo de Izhikevich (2003) foi obtido através de metodologias da teoria das bifurcações e da redução de ordem do modelo de Hodgkin e Huxley (1952), mais detalhes sobre o processo encontram-se em Izhikevich (2007). O modelo é representado por um sistema de equações diferenciais da seguinte forma: dv = α v2 + β v + γ − u + I, dt du = a(bv − u), dt (4.1) (4.2) com um reset auxiliar depois do pulso (after-spike reset) dado por se v = +30mV, então ( v ← c, u ← u + d, (4.3) onde as variáveis do modelo são: • v, expresso em mV, representa o potencial de membrana do neurônio; • u, não mensurado fisicamente, contabiliza a ativação da corrente iônica de K+ e a inativação da corrente de Na+ , além de prover uma realimentação negativa 4.1 Modelo de neurônio pulsante de Izhikevich 42 para v; Os parâmetros fundamentais do modelo são representados por α , β e γ e seus valores típicos, 0.04, 5, 140, foram selecionados porque são os que melhor reproduzem a dinâmica de inicialização de um pulso de um neurônio cortical real. O conjunto de parâmetros de ajuste é composto por: • O parâmetro a determina a escala de tempo da variável u; • O parâmetro b descreve a sensibilidade da variável u, além de influenciar na bifurcação juntamente com o parâmetro I; • Os parâmetros c e d tratam, respectivamente, dos valores impostos à v e adicionado à u após um pulso. Os valores deste último conjunto apresentado não mudam em tempo de execução. Eles estabelece qual tipo de neurônio deseja-se simular, sendo possível reproduzir a dinâmica de mais de 20 tipos de neurônios reais. Por fim, o último parâmetro é a corrente I, medida em pA. Este parâmetro é a "entrada" do modelo de neurônio, i.e., o meio por onde o modelo recebe os estímulos externos, sejam de outros neurônios ou de outras estruturas. Uma descrição básica da operação deste modelo pode ser feita com o auxílio do espaço de estados do sistema visto na figura 4.1. Porém, antes disto, é preciso estabelecer algumas definições: v-nullcline e u-nullcline são as curvas que contém todos os estados quando dv/dt=0 e du/dt=0, respectivamente. Observando a figura pode-se ver que quando I=0 pA a nuliclinal de v tem dois pontos em comum com a nuliclinal de u, sendo um deles um ponto de equilíbrio estável, denotado por resting. Porém, quando o neurônio recebe algum estímulo via o parâmetro I, o modelo matemático pode sofrer uma bifurcação, i.e., o espaço de estados mudará qualitativamente. Isso acontece quando I=70 pA, o ponto de equilíbrio estável desaparece e surge uma órbita periódica, denotada aqui por spiking limit cycle attractor. Atingindo o valor máximo de v é feito o after-spike reset, que impõe para v o valor de c e adiciona a u o valor de d. O neurônio permanece então pulsando enquanto o estímulo (i.e., o valor de I) for suficientemente grande. Além de ter como mérito a reprodução de tantos padrões de disparo de neurônios reais conforme já apresentado, este modelo tem algumas características bem 4.1 Modelo de neurônio pulsante de Izhikevich 43 Figura 4.1: Espaço de estados do modelo de Izhikevich. Fonte: Izhikevich (2007). interessantes como, por exemplo, a histerese. Esta dependência da história prévia de evolução ocorre porque quando o neurônio pulsa a variável u não é reiniciada. O que de fato acontece é um incremento de maneira a preservar a história. A figura 4.2 exemplifica este fato. Em decorrência disso, o modelo do neurônio não apresenta limiar fixo assim como a maioria dos neurônios reais. Figura 4.2: Evolução temporal do modelo de Izhikevich. Além destes aspectos qualitativos associados ao modelo, foi realizado um estudo quantitativo relativo à natureza do ponto de equilíbrio e também as condições necessárias para a bifurcação do modelo. 4.1 Modelo de neurônio pulsante de Izhikevich 44 No equilíbrio, i.e., quando dv/dt=0 e du/dt=0, temos: α v2 + β v + γ − u + I = 0 (4.4) a(bv − u) = 0 (4.5) Isolando-se u em 4.5 e substituindo em 4.4 temos: α v2 + (β − b)v + (γ + I) = 0 (4.6) Os pontos de equilíbrio são: v± = b−β ± p (β − b)2 − 4α (γ + I) 2α (4.7) Como as transições de fase, i.e., bifurcações, tem papel fundamental na dinâmica do modelo, é relevante destacar sob quais condições esse fenômeno ocorre. Quando o modelo não recebe nenhum estímulo, i.e., I=0, o modelo tem 2 pontos de equilíbrio v+ e v− como demonstrado em 4.7. É fácil perceber que o ponto de bifurcação ocorre quando o radicando da equação 4.7 é nulo: (β − b)2 − 4α (γ + I) = 0 Portanto, a corrente crítica, ou seja, o menor valor de um estímulo para provocar uma bifurcação no modelo, é dada por: I= β 2 − 2β b + b2 − 4αγ 4α (4.8) Apresentadas as condições, a figura 4.3 apresenta um diagrama de bifurcação do modelo. Estão destacados no gráfico valores típicos de b e suas correntes mínimas para a bifurcação. Realizou-se um estudo da estabilidade do modelo através do estudo dos autovalores associados ao sistema linear equivalente nas vizinhanças dos pontos de equilíbrio so sistema. A matriz jacobiana que representa o sistema nas vizinhanças do ponto (v0 , u0 ) é dada por: 4.1 Modelo de neurônio pulsante de Izhikevich 45 Figura 4.3: Diagrama de bifurcação do modelo de Izhikevich. L= " 2α v0 + β −1 ab −a # (4.9) Os autovalores associados à jacobiana são: λ± = 2α v0 + β − a ± p (2α v0 + β − a)2 − 4 (−a(2α v0 + β ) + ab) 2 (4.10) O conjunto de parâmetros de ajuste do modelo foram estabelecidos através das restrições impostas pela equação 4.10 de maneira que o autovalor associado ao ponto de equilíbrio estável, v+ , seja um nó estável ou um foco estável. No primeiro caso o neurônio comporta-se como um integrador; na outra situação é exibido um comportamento resonador (há uma oscilação amortecida no retorno ao ponto de equilíbrio). O ponto v− é necessariamente um ponto de equilíbrio instável. Quanto à implementação do modelo, cabe dizer que neste trabalho as equações referentes ao modelo de neurônio de Izhikevich foram solucionadas utilizando-se dois métodos numéricos: o método modificado de Euler, que corresponde ao método de Runge-Kutta de ordem dois, e o método corretor-preditor. Em cada iteração do laço temporal do algoritmo, que tem como passo de tempo 1 ms, são executadas as se- 4.2 Sinapses 46 guintes equações: vk+0.5 = vk + 0.5(α v2k + β vk + γ − uk + I) (4.11) vk+1 = vk+0.5 + 0.5(α v2k+0.5 + β vk+0.5 + γ − uk + I) (4.12) uk+1 = uk + a(bvk+1 − uk ) (4.13) As equações 4.11 e 4.12 associadas à variável v correspondem à implementação do método de Runge-Kutta de ordem dois, por isso o coeficiente 0.5 que representa um passo de tempo de 0.5 ms, que foi usado aqui com o objetivo de obter melhor precisão. A equação 4.13 utiliza o valor recém calculado de v, i.e., vk+1 em detrimento de vk , com o propósito de evitar oscilações na solução, esta técnica constitui o método corretor-preditor. Tendo em vista que o modelo recebe estímulos via o parâmetro I, o sistema dinâmico é não autônomo e portanto depende explicitamente do tempo. Na impossibilidade de determinar analiticamente os melhores parâmetros foi utilizado como método de ajuste um processo iterativo de maneira a determinar os parâmetros adequados para cada situação específica. 4.2 Sinapses Além do modelo de neurônio, o modelo de sinapse adotado tem importância fundamental na operação do sistema. O modelo de sinapse usado foi apresentado no trabalho de Muresan e Savin (2007). A sinapse é entendida como um caminho de condutância variável com o tempo, g(t), que, mais especificamente, decai exponencialmente com uma constante de tempo associada, τs . dg −g = dt τs (4.14) A cada instante que algum potencial de ação atinge alguma sinapse é imposto um valor fixo a condutância da respectiva sinapse. A corrente que qualquer neurônio na rede recebe como estímulo na sua versão mais completa tem a seguinte forma: 4.2 Sinapses 47 I = ∑ Wi gi (t)(Ei −Vpos ) (4.15) i onde há a soma das contribuições de cada sinapse i composta por: Wi , peso associado a respectiva sinapse, que pode ser plástico ou não; gi (t), condutância variável com o tempo; Ei que representa o potencial reverso da sinapse; e por fim, Vpos que é o potencial de membrana do neurônio pós-sináptico, i.e., aquele que recebe o estímulo. Por fim, com o próposito de destacar as implicações deste modelo de sinapse, a figura 4.4 apresenta o impacto entre o acoplamento de neurônio com diferentes constantes de tempo associadas às sinapses. No primeiro gráfico da figura é apresentado a tensão de membrana de um neurônio integrador. Este neurônio, na ocasião de seu disparo produz estímulos direcionados aos seus pós-sinápticos (gráfico 2). Os estímulos têm características diferentes por que estão associados a sinapses com constantes de tempos diferentes, τs = 1ms e τs = 10ms respectivamente. O último gráfico apresenta a tensão dos neurônios pós-sinápticos. Figura 4.4: Impacto de diferentes constantes de tempo de decaimento do estímulo sináptico. 4.3 Spike-timing-dependent plasticity, STDP 48 4.3 Spike-timing-dependent plasticity, STDP O Spike-timing-dependent plasticity é uma regra de plasticidade Hebbiana levantada experimentalmente por Bi e Poo (1998) e amplamente usada em simulações em larga escala na neurociência e na construção de alguns agentes inteligentes artificiais (PAOLO, 2002), (FLORIAN, 2006). A regra em questão trata de uma valoração ou depreciação do peso referente à uma sinapse em função do timing entre o disparo do neurônio pré-sináptico e pós-sináptico associados à mesma sinapse. Figura 4.5: Função de modificação do peso sináptico através do STDP. O algoritmo implementado foi o proposto por Song, Miller e Abbott (2000): Cada sinapse tem uma variável LTP (long-term potencialization) e LTD (long-term depression) associada. A cada instante que um pulso chega a alguma sinapse, a variável LTP é incrementada com o valor A+ . A todo instante que um neurônio póssináptico dispara um potencial de ação a variável LTD é decrementada de A− . Nos instantes de tempo onde não ocorrem nenhuma destas situações estas funções decaem exponencialmente com suas respectivas constantes de tempo. A variável LTP é usado para reforçar as sinapses a cada momento em que um neurônio pós-sináptico dispara: wi j (t) → wi j (t) + wmax LTP. Analogamente, LTD tem como função depreciar as ligações sinápticas a cada instante que um neurônio présináptico disparar: wi j (t) → wi j (t) + wmax LTD. 49 5 Estruturas propostas De acordo com a fundamentação referente ao sistema nervoso apresentada no capítulo 2, a unidade funcional mais básica do córtex são os grupos neuronais que se caracterizam por um comportamento coletivo síncrono. Com o propósito de implementar mecanismos que contribuam para a integração temporal entre os grupos neuronais, alguns micro-circuitos auxiliares que desempenhem papéis simples são fundamentais. Nesta direção serão apresentados na primeira parte deste capítulo tanto estruturas simples mas fundamentais quanto estruturas mais sofisticados e não menos importantes. Na seção 5.2, que constitui a segunda parte, será apresentado e validado um mecanismo de coordenação sensório-motora para um robô simulado. No que se refere ao algoritmo principal, cabe dizer que houve uma preocupação em realizar uma implementação de maneira que os micro-circuitos fossem simulados facilmente quando acoplados. O algoritmo principal foi concebido de maneira que as características da rede, ou melhor dizendo, as características referentes a cada sinapse (e.g., pesos associados, atrasos de condução, tempo de decaimento do estímulo, valor instantâneo da condutância) foram todos armazenados em matrizes esparsas e quadradas com dimensão do número de neurônios simulados. Todas estas matrizes tem a forma da matriz apresentada na figura 5.1. É importante lembrar que este fato implica em uma diminuição da complexidade de espaço do algoritmo principal. Cada micro-circuito constitui um bloco da matriz sendo a ligação entre eles realizada por neurônios de projeção que não pertencem a nenhum dos dois grupos. Esta sub-rede, composta pelos neurônios de projeção, é a parte "plástica" do sistema, figura 5.1. Ainda relativo à implementação, outra característica que foi contemplada é a possibilidade do uso de atraso de condução axonal. No modo padrão cada estímulo leva um passo de tempo para chegar à um neurônio pós-sináptico, no entanto pode-se 5.1 Detector de Coincidências 50 Figura 5.1: Anatomia das matrizes do sistema dinâmico. ajustar outros valores de maneira a incorporar essa característica. O código fonte do programa principal encontra-se no anexo A. 5.1 Detector de Coincidências O detector de coincidências tem como propósito produzir um pulso em sua saída quando todas as suas entradas estiverem presentes em uma mesma janela de tempo. Um micro-circuito com esta função é fundamental para a detecção de sincronia ou, dizendo de maneira mais geral, para detecção de correlação de atividade entre outras estruturas e, portanto, pode ser parte integrante de um mecanismo de plasticidade Hebbiana entre grupos neuronais. O circuito proposto é composto de uma primeira camada de neurônios inibitórios Ii , uma segunda camada de neurônios que recebem estímulos de todas as entradas tomadas duas a duas Ei j e, por fim, um neurônio de saída que recebe estímulos de 5.1 Detector de Coincidências 51 todos os neurônios da segunda camada S, a figura 5.2 apresenta um exemplo com três entradas. Os neurônios de projeção N1 , N2 e N3 não são partes constituintes do micro-circuito, apenas suas sinapses com os outros neurônios do bloco pertencem à estrutura. Um detector de n entradas possui n! 2(n−2)! + n + 1 neurônios. As sinapses que compõe o circuito foram ajustadas de maneira que são necessários dois estímulos para que os neurônios da segunda camada Ei j pulsem e apenas um estímulo para os neurônios inibitórios pulsem. Especificamente os parametros impostos às sinapses foram os pesos das conexões e os tempos de decaimento do estímulo. É relevante destacar que os valores foram obtidos através de métodos iterativos visto que não podiam ser calculados analiticamente. Isso decorre dos neurônios receberem estímulos via a corrente I, que entra na equação diferencial como um parâmetro. Figura 5.2: Detector de Coincidências. No determinado instante em que algum neurônio Ni pulsa seus pós-sinápticos são estimulados, ou seja, o neurônio Ii (inibitório) e os neurônios que contabilizam a respectiva entrada i. O neurônio inibitório tem o propósito de anular, depois da janela 5.2 Circuito sensório-motor 52 de tempo especificada, o estímulo recebido pelos neurônios da segunda camada, Ei j . Assim sendo os neurônios da segunda camada pulsarão apenas quando suas duas entradas pulsarem na janela de tempo especificada. O neurônio de saída pulsa caso todas suas entradas pulsem. 5.2 Circuito sensório-motor Esta seção refere-se a implementação de um mecanismo minimalista com o propósito de validar a adequação do modelo a incorporação em agentes. Para se realizar o experimento foi utilizado o ambiente de simulação Player/Stage (GERKEY; T.VAUGHAN; HOWARD, 2003). Utilizou-se um robô Pioneer, figura 5.3, com quarto sensores de distância e que possui como atuador um motor que controla angulo de rotação e velocidade de translação. O código fonte encontra-se no anexo B. Figura 5.3: Robô simulado e seus sensores. 5.2.1 Modelo O circuito de coordenação sensório-motora desenvolvido é apresentado na figura 5.4. Este circuito estimula o sistema motor, que realiza os movimentos de translação e rotação, e recebe o retorno através da estimulação provocada pelos sensores. A interface do sistema de coordenação possui os seguintes elementos: Sensor Lateral Esquerdo (SLE), Sensor Frontal Esquerdo (SFE), Sensor Lateral Direito (SLD), Sensor Frontal Direito (SFD), Motor de Translação (MT ) e Motor de Rotação (MR). Os sensores recebem sinais dos sonares laterais e frontais e estimulam os neurônios internos NX correspondentes. O MR é estimulado pelos neurônios N7 e N8 que indicam o valor e o sentido ângulo de rotação, respectivamente. O MT é estimulado pelo neurônio N7 com um sinal que indica a velocidade de translação do robô. No interior do sistema de coordenação existem nove neurônios. Os neurônios N1 , N2 , N3 e N4 que são do tipo regular spiking foram ajustados para que sua freqüência de disparo diminua a medida que o robô se aproxime de algum obstáculo. 5.2 Circuito sensório-motor 53 Figura 5.4: Sistema de coordenação sensório-motora. Os neurônios N5 , N6 , N7 operam de maneira que suas freqüências de disparos serão próximas das freqüências de disparo de seus pré-sinápticos de menor freqüência. O neurônio N7 é estimulado com os sinais de menor freqüência dos blocos com os quais fazem sinapses nas áreas sensoras. Sua operação é semelhante a dos neurônios N5 e N6 , ou seja, pulsa de acordo com a menor freqüência de seus présinápticos. O neurônio N8 tem a função de determinar qual de seus pré-sinápticos, N5 ou N6 , pulsa na menor freqüência. Para isso ele precisa de um terceiro neurônio N9 que atua com um estimulação em uma freqüência fixa fazendo-o pulsar dentro de um intervalo [a,b]. O neurônio N5 envia estímulos inibitórios que fazem N8 pulsar abaixo do intervalo definido. Por outro lado, o neurônio N6 envia estímulos exitatórios que fazem N8 pulsa acima do intervalo definido. A saída de N8 indica, desta maneira, o lado em que se encontra o obstáculo mais próximo, possibilitando que o robô ajuste o ângulo de rotação de tal maneira que evite a colisão. As sinapses foram ajustadas de tal maneira que a corrente que cada neurônio pós- 5.2 Circuito sensório-motor 54 sináptico recebe decai com uma constante de tempo muito grande. Desta maneira cada estímulo inibitório anula um excitatório. 5.2.2 Analise e discussão do resultados A posição inicial do robô foi definida no canto inferior esquerdo do ambiente. Durante o deslocamento do robô foram marcados retângulos para indicar sua posição (figura 5.5). Como estes retângulos são marcados, pelo simulador, em intervalos de tempo constantes, eles também podem ser utilizados para se observar a velocidade. Para uma análise da dinâmica interna, foi registrado durante todo percurso o estado dos sensores, dos neurônios e do motor. Figura 5.5: Trajeto percorrido pelo robô no ambiente simulado. Para uma análise mais detalhada da velocidade e da dinâmica dos componentes internos, foi realizado um novo experimento cujo trajeto é mostrado na figura 5.6. O tempo gasto pelo robô no percurso apresentado foi de 15 segundos. Durante o trajeto, as dinâmicas dos sensores, da velocidade e do ângulo de rotação ocorrem da maneira apresentada na figura 5.7. Quanto aos sonares, quanto menor seu nível de ativação mais próximo o robô se encontra o objeto detectado. O sonar lateral da direita não altera seu valor durante todo percurso devido a ausência de obstáculos nesta região. Já o sonar frontal diminui de valor a medida que o robô se aproxima do obstáculo e volta ao seu nível máximo aproximadamente dois segundos após o robô iniciar a rotação. No momento em que o 5.2 Circuito sensório-motor 55 Figura 5.6: Percurso utilizado para análise da dinâmica dos componentes internos. sonar lateral da esquerda detecta o obstáculo (t=7.5 seg.) o sonar frontal da esquerda deixa de detectá-lo. Isso ocorre devido a rotação do robô. A menor velocidade do robô ocorre aproximadamente no intervalo de 8 a 10 segundos. Neste mesmo intervalo, o ângulo de rotação do robô é maior do que nos outros instantes. Em outras palavras, quanto mais próximo de um obstáculo, menor será sua velocidade e maior será o ângulo de rotação. Para cada segundo que se observa o comportamento do robô, ocorrem 1000 iterações internas. Por este motivo, foi necessário escolher apenas o intervalo de tempo [4.572 - 4.576] segundos para se observar a dinâmica dos elementos internos, como mostram as figuras 5.8 e 5.9. Na figura 5.8, os gráficos A e B mostram a dinâmica dos neurônios N1 e N2 , respectivamente. Esta dinâmica depende dos sensores com os quais estes neurônios estão ligados. O gráfico C mostra que a correntes que estimula o neurônio N5 . O gráfico D exibe os pulsos do do último. Pode ser observado que estes pulsos acontecem instantes após R1 atingir o nível alto de ativação. Na figura 5.9, os gráficos A e B mostram a dinâmica dos neurônios inibitório (N5 ) e exitatório (N6 ). O neurônio N9 (gráfico C) é o neurônio de referência que pulsa na freqüência constante. O gráfico D comprova a adequação dos ajustes das sinapses. O gráfico E mostra como os pulsos do neurônio inibitório e exitatório afetam o neurônio N8 . Como exemplo, considere o intervalo de [4.5734, 4.5745]. No instante 4.5734 o disparo do neurônio N5 leva o nível de estimulação de N8 para -1. No instante 4.5737 o disparo do neurônio N6 volta a ativação da corrente para 0. No instante 4.5740 há um pulso inibitório de N5 que anula o pulso exitatório do neurônio de referência N9 . Como um pulso anulou o outro, não há alteração na corrente. No instante 4.5744, o exitatório N6 pulsa. Como a corrente está no nível 0, este pulso gera um disparo, no instante seguinte (4.5745), no neurônio N8 . 5.2 Circuito sensório-motor 56 Figura 5.7: Dinâmica dos sonares e do motor do robô. Através da análise da rede operando pode-se concluir que o mecanismo cumpre o seu propósito. Testou-se também o robô operando em diferentes percursos e obtevese sucesso, figura 5.10. 5.2 Circuito sensório-motor Figura 5.8: Dinâmica dos neurônios N1 , N2 , e N5 . Figura 5.9: Dinâmica dos neurônios N5 , N6 , N9 e N8 . 57 5.2 Circuito sensório-motor Figura 5.10: Outro trajeto onde o robô foi testado. 58 59 6 Conclusão O desafio de construir sistemas de coordenação de agentes inteligentes a cada dia tem conquistado mais adeptos. Porém, poucos trabalhos são desenvolvidos numa perspectiva fiel ao objeto de inspiração mantendo uma abordagem plausível com os princípios fundamentais do processo cognitivo de maneira a permitir o aumento do nível de autonomia dos agentes. Neste trabalho foram propostos alguns circuitos com neurônios pulsantes com o propósito de contribuir para criação de robôs autônomos, cuja estrutura e funcionamento possuem bases biológicas no funcionamento do corpo humano, mais especificamente, seu sistema nervoso. Dentre os circuitos propostos um modelo minimalista de sistema de coordenação sensório-motora foi implementado e validado por meio da realização de experimentos. Para a execução deste trabalho foi feita uma pesquisa sobre a operação dos sistemas neurais reais (capítulo 2) e também foi pesquisado a maneira como estes sistemas são modelados (capítulo 3). Estes passos foram importantes porque contribuíram por apresentar as principais dificuldades e problemas encontrados hoje na construção de redes neurais biologicamente plausíveis para agentes artificiais. O Capítulo 4 destinou-se ao estudo dos mecanismos usados: modelo de neurônio pulsante escolhido, modelo de sinapse adotado e mecanismo de plasticidade implementado. Baseado nestas estruturas no capítulo 5 são apresentados os microcircuitos propostos, um sistema de coordenação sensório-motora e um algoritmo genérico que permita a simulação concomitante e acoplada das estruturas propostas. 6.1 Principais contribuições deste trabalho Este projeto contribuiu, de forma geral, com a geração de uma metodologia de construção de sistema nervoso artificial extensível. Os constituintes propostos pos- 6.2 Dificuldades encontradas 60 suem dinâmica interna e operam em tempo real. De uma forma específica, este projeto teve como principais contribuições: 1. Encapsulamento da complexidade inerente as redes. Um bloco depois de projetado pode ser tratado como uma caixa-preta onde o mesmo será usado de acordo com a função dinâmica que desempenha. 2. Estabelecimento de um método de acoplamento entre os circuitos através de plasticidade (STDP). Depois de ajustados os parâmetros e embutido os reflexos inatos a estrutura pode desenvolver outras relações. 3. Algoritmo adequado não só para a simulação e análise dos blocos desenvolvidos e em desemvolvimento como também adequado a simulação de estruturas criadas com outros modelos de neurônios descritos por equações polinomiais. 6.2 Dificuldades encontradas No decorrer do trabalho, foram encontradas algumas dificuldades, dentre as quais destacam-se: 1. O forte caráter interdisciplinar do trabalho foi um fator complicador em conseqüência do curto prazo para desenvolve-lo. Por outro lado essa perspectiva muito enriqueceu o trabalho. 2. O ajuste do modelo de neurônio para construção das estruturas. Por ser um sistema não autônomo no sentido matemático, a técnica para ajuste foi o uso de métodos iterativos. Através de um algoritmo onde os parâmetros eram alterados a cada iteração verificava-se a adequação dos valores correntes para a execução da necessidade específica. 6.3 Perspectivas de trabalhos futuros O presente trabalho estabelece um novo ponto de partida indicando investimentos promissores: 6.4 Considerações finais 61 1. usar métodos heurísticos mais sofisticados para determinar os parâmetros de um dado micro-circuito. 2. Determinar melhores condições iniciais para o circuito acoplador de maneira a garantir o surgimento de outras correlações entre as estruturas acopladas. 3. Implementar e acoplar algumas liquid-state machines através do algoritmos construído neste trabalho. 4. Criar circuitos maiores utilizado os micro-circuitos de maneira a implementar componentes emocionais, memória de longo prazo em agentes. 5. Implementar circuitos eletrônicos analógicos em robôs reais utilizando-se a mesma metodologia proposta neste trabalho. 6. Implementar os micro-circuitos na última versão da arquitetura ARTÍFICE, já adequada para robôs reais utilizando-se de técnicas de engenharia de software, e.g., padrões de projeto. 6.4 Considerações finais Diante dos objetivos propostos, pode-se dizer que este trabalho obteve êxito. Os experimentos feitos demostraram que estruturas minimalistas utilizando o modelo de Izhikevich adequam-se ao que se pretende incorporar em agentes inteligentes. Além disso há outros blocos modelados com sua base implementada. Desenvolver um trabalho que pretende contribuir com a arquitetura ARTÍFICE, onde há uma forte preocupação com a plausibilidade biológica, mostrou-se ser uma tarefa desafiadora e motivante. Trabalhar em um projeto junto com profissionais de outras áreas, e.g., físicos, cientistas da computação e engenheiros foi, sem dúvida, uma experiência riquíssima. Os diversos livros e artigos que estudados e utilizados para a construção deste trabalho contribuíram não só para um crescimento do autor com pesquisador como também para a construção de um novo indivíduo. 62 Referências Bibliográficas ADAMS, Bryan. Evolutionary, Developmental Neural Networks for Robust Robotic Behavior. 2005. Tese (Doutorado) — MIT, 2005. ANDERSON, J.A. An Introduction to Neural Networks. [S.l.]: Bradford Book, 1995. ANDERSON, J.A.; ROSENFELD, E. Neurocomputing: foundations of research. [S.l.]: MIT Press Cambridge, MA, USA, 1988. BERREDO, Roberto Coelho de. A Review of Spiking Neuron Models and Applications. 2005. Dissertação (Mestrado) — Universidade Federal de Minas Gerais, 2005. BI, G.; POO, M. Synaptic Modifications in Cultured Hippocampal Neurons: Dependence on Spike Timing, Synaptic Strength, and Postsynaptic Cell Type. Journal of Neuroscience, Soc Neuroscience, v. 18, n. 24, p. 10464, 1998. BOHTE, S.M. Spiking Neural Networks. 2003. Tese (Doutorado) — Academiegebouw of Leiden University, 2003. BORGES, Henrique Elias. Arquitetura Flexível para a Criação de Agentes de Software Cognitivos e Situados: teoria, metodologia e ferramentas. [S.l.], 2002. BRIGGMAN, K.L.; ABARBANEL, H.D.I.; JR, W.B.K. From crawling to cognition: analyzing the dynamical interactions among populations of neurons. Current Opinion in Neurobiology, Elsevier, v. 16, n. 2, p. 135–144, 2006. BUZSAKI, G.; DRAGUHN, A. Neuronal Oscillations in Cortical Networks. Science, American Association for the Advancement of Science, v. 304, n. 5679, p. 1926–1929, 2004. CAMPOS, Luciana Maria de Assis. Modelagem do Processo Cognitivo-Emocional de um Organismo Artificial numa Perspectiva Dinâmico-Interacionista. 2006. Dissertação (Mestrado) — Centro Federal de Educação Tecnológica de Minas Gerais, 2006. CHIEL, H.J.; BEER, R.D. The brain has a body: adaptive behavior emerges from interactions of nervous system, body and environment. Trends in Neurosciences, Elsevier, v. 20, n. 12, p. 553–557, 1997. CLANCEY, W.J. Situated Cognition: On Human Knowledge and Computer Representations. [S.l.]: Cambridge University Press, 1997. CLARK, Andy. Being There: Putting Brain, Body, and World Together Again. [S.l.]: MIT Press, 1998. EDELMAN, G.M.; TONONI, G. A Universe of Consciousness: how matter becomes imagination. [S.l.]: Basic Books, 2001. Referências Bibliográficas 63 EDELMAN, Gerald M. Neural Darwinism: The Theory of Neuronal Group Selection. [S.l.]: Basic Books, 1987. FLOREANO, D.; EPARS, Y.; ZUFFEREY, J.C.; MATTIUSSI, C. Evolution of Spiking Neural Circuits in Autonomous Mobile Robots. International Journal of Intelligent Systems, v. 21, n. 9, p. 1005–1024, 2006. FLORIAN, R.V. Spiking Neural Controllers for Pushing Objects Around. LECTURE NOTES IN COMPUTER SCIENCE, Springer, v. 4095, p. 570, 2006. FREEMAN, W.J. The physiology of perception. Scientific American, Scientific American, v. 264, n. 2, p. 78–85, 1991. FREEMAN, W.J. Emotion is from preparatory brain chaos; irrational action is from premature closure. Behavioral and Brain Sciences, Cambridge Univ Press, v. 28, n. 02, p. 204–205, 2005. FREEMAN, W.J. My legacy: A launch pad for exploring neocortex. In: Brain Network Dynamics Conference. [S.l.: s.n.], 2007. FURBER, S.; TEMPLE, S. Neural systems engineering. Journal of The Royal Society Interface, The Royal Society, v. 4, n. 13, p. 193–206, 2007. GERKEY, Brian P.; T.VAUGHAN, Richard; HOWARD, Andrew. The player/stage project: Tools for multi-robot and distributed sensor systems. Coimbra, Portugal, p. 317–323, 2003. GERSTNER, Wulfram. Spiking neurons. MIT Press, Cambridge, MA, USA, p. 1–53, 1999. GERSTNER, W.; KISTLER, W.M. Spiking Neuron Models: Single Neurons, Populations, Plasticity. [S.l.]: Cambridge University Press, 2002. GOMES, R.M.; BRAGA, A.P.; BORGES, H.E. A model for hierarchical associative memories via dynamically coupled GBSB neural networks. Proceeding of Internacional Conference in Artificial Neural Networks-ICANN, Springer, 2005. GOMES, R.M.; BRAGA, A.P.; BORGES, H.E. Storage capacity of hierarchically coupled associative memories. Ninth Brazilian Symposium on Neural Networks, 2006. HASELAGER, Willem F. G. Co-evolutionary robotics and the problems of autonomy. In: 8th Brazilian Society of Artificial Neural Networks (SBRN). [S.l.: s.n.], 2004. HEBB, Donald O. Organization of Behaviour. [S.l.]: Wiley New York, 1949. HODGKIN, AL; HUXLEY, AF. A quantitative description of ion currents and its applications to conduction and excitation in nerve membranes. J. Physiol.(London), v. 117, p. 500–544, 1952. HUI, S.; ZAK, SH. Dynamical analysis of the brain-state-in-a-box (BSB) neural models. IEEE Transactions on Neural Networks, v. 3, n. 1, p. 86–94, 1992. IZHIKEVICH, E.M. Simple model of spiking neurons. IEEE Transactions on Neural Networks, v. 14, n. 6, p. 1569–1572, 2003. Referências Bibliográficas 64 IZHIKEVICH, E.M. Dynamical Systems in Neuroscience: The Geometry of Excitability and Bursting. [S.l.]: The MIT Press, 2007. KRICHMAR, JL; EDELMAN, GM. Brain-based devices: intelligent systems based on principles ofthe nervous system. Intelligent Robots and Systems, 2003.(IROS 2003). Proceedings. 2003 IEEE/RSJ International Conference on, v. 1, 2003. LARSON, Stephen. Modeling Time in Computational Neuroscience. Dec 2006. Disponível em: <http://neurodudes.com/2006/12/29/modeling-time-in-computationalneuroscience>. LEDOUX, Joseph. Synaptic Self. How Our Brains Become Who We Are. [S.l.]: Penguim Books, 2002. LENT, Roberto. Cem Bilhões de Neurônios: Conceitos fundamentais de Neurociência. [S.l.: s.n.], 2001. LEWIS, M.D. Bridging emotion theory and neurobiology through dynamic systems modeling. Behavioral and Brain Sciences, Cambridge Univ Press, v. 28, n. 02, p. 169–194, 2005. MAASS, W.; NATSCHLÄGER, T.; MARKRAM, H. Real-time Computing Without Stable States: A New Framework for Neural Computation Based on Perturbations. Neural Computation, v. 14, n. 11, p. 2531–2560, 2002. MATURANA, Humberto R.; VARELA, Francisco J. A Árvore do Conhecimento: as bases biológicas da compreensão humana. 4. ed. São Paulo: Palas Athena, 2004. MCCULLOCH, W.S.; PITTS, W. A logical calculus of the ideas immanent in nervous activity. Bulletin of Mathematical Biology, Springer, v. 5, n. 4, p. 115–133, 1943. MEIRELES, MRG; ALMEIDA, PEM; SIMOES, MG. A comprehensive review for industrial applicability of artificial neural networks. IEEE Transactions on Industrial Electronics, v. 50, n. 3, p. 585–601, 2003. MURESAN, R.C.; SAVIN, C. Resonance or Integration? Self-Sustained Dynamics and Excitability of Neural Microcircuits. Journal of Neurophysiology, Am Physiological Soc, v. 97, n. 3, p. 1911, 2007. NEUMANN, John von. The Computer and the Brain. [S.l.]: Yale University Press, 1958. NEUMANN, John von. First Draft of a Report on the EDVAC. The Origins of Digital Computers: Selected Papers, Springer, 1982. NOLFI, S. Evolutionary Robotics: Exploiting the Full Power of Self-organization. Connection Science, Taylor AND Francis, v. 10, n. 3, p. 167–184, 1998. OLIVEIRA, Fábio Martins de. Construção de um Agente Inteligente por Cognição Situada: framework para Interconexão de Redes Neurais Artificiais. 2006. Dissertação (Mestrado) — Centro Federal de Educação Tecnológica de Minas Gerais, 2006. Referências Bibliográficas 65 PAOLO, E.A. Di. Spike timing dependent plasticity for evolved robots. Adaptive Behavior, v. 10, n. 3-4, p. 243–263, 2002. PFEIFER, Rolf. Understanding Intelligence. [S.l.]: The MIT Press, 2001. PIRES, Anderson Grandi. Modelagem de um Mecanismo de Percepção-em-ação para os Agentes de Software Cognitvos Situados e Extensão da Arquitetura Artífice. 2005. Dissertação (Mestrado) — Centro Federal de Educação Tecnológica de Minas Gerais, 2005. REEVE, R.; HALLAM, J. An analysis of neural models for walking control. Neural Networks, IEEE Transactions on, v. 16, n. 3, p. 733–742, 2005. REIS, A.G.; ACEBAL, JL; GOMES, R.M.; BORGES, H.E. Space-vector structure based synthesis for hierarchically coupled associative memories. Ninth Brazilian Symposium on Neural Networks, 2006. SANTOS, Bruno André. Aspectos Conceituais e Arquiteturais para a Criação de Linhagens de Agentes de Software Cognitivos e Situados. 2003. Dissertação (Mestrado) — Centro Federal de Educação Tecnológica de Minas Gerais, 2003. SANTOS, Bruno André; PIRES, Anderson Grandi; BORGES, Henrique Elias; ALMEIDA, Paulo Eduardo Maciel de. Modelagem Computacional de um Sistema Inteligente com Base na Arquitetura para Criação de Linhagens de Agentes de Software Cognitivos Situados. In: VII Encontro de Modelagem Computacional. Nova Friburgo, RJ: [s.n.], 2004. SETTINGS, M. Gamma activity as a functional correlate of cognition Special Issue. International Journal of Psychophysiology, Elsevier, v. 38, n. 3, 2000. SHERMAN, S.M. The neural substrates of cognition. Trends in Neurosciences, Elsevier, v. 29, n. 6, p. 295–297, 2006. SOARES, Alexandre Henrique Vieira. Arquitetura para criação de robôs autônomos emocionais-cognitivos numa perspectiva situada. 2007. Em fase de conclusão. SONG, S.; MILLER, K.D.; ABBOTT, LF. Competitive Hebbian learning through spike-timing-dependent synaptic plasticity. Nature Neuroscience, v. 3, p. 919–926, 2000. SPORNS, O. Embodied cognition. Handbook of brain theory and neural networks, p. 395–398, 2003. TSIEN, J. The Memory Code. Scientific American Magazine, Scientific American, v. 297, n. 1, p. 52–59, 2007. YEUNG, Luk Chong. A Mechanistic Model of Calcium-Dependent Synaptic Plasticity. 2005. Tese (Doutorado) — Brown University, 2005. 66 ANEXO A -- Algoritmo principal w=sparse(zeros(N,N)); % Matriz de pesos e conexoes tau_est=sparse(zeros(N,N)); % Constante de tempo do decaimento do estimulo atrasos=sparse(zeros(N,N)); % Atrasos de condução axonal g=sparse(zeros(N,N)); % Matriz de condutancias LTP=sparse(zeros(N,N)); LTD=sparse(zeros(N,N)); est_fut= [] ; new_est_fut = []; % Matriz de estimulos externos % tempo neuronio I_est=[ 1 1 t_total 1 valor 1 0 tau 10; 1]; linha=1; % e v de repouso % f u de repouso % h reset ponto fixo for t=1:tau:t_total % laço principal (tempo) fired = find(v>=30); % Verifica quais os neronios pulsaram Anexo A -- Algoritmo principal if ~isempty(fired) % Verifica se algum pulsou na iteração atual firings = [firings;t+0*fired,fired]; v(fired)=(1-h(fired))*c(fired) + h(fired)*e(fired); u(fired)=(1-h(fired))*(u(fired) + d(fired)) + h(fired)*f(fired); % Verifica quando o estimulo chegará nos pós for j=1:length(fired) for i=1:N if (s(i,fired(j))~=0) % (pos), (pre), tempo que o estimulo chegara est_fut=[est_fut ; i fired(j) (atrasos(i,fired(j))+t) t]; end; end; % for i=1:N end; % for j=1:length(fired) end; % if ~isempty(fired) for j=1:size(est_fut,1) if(est_fut(j,4)==t) if (s(est_fut(j,1),est_fut(j,2))==2) % O neuronio que disparou enfraquece as sinapses onde % ele é o pos LTD(est_fut(j,1),est_fut(j,2))=LTD(est_fut(j,1),est_fut(j,2)) + An; w(est_fut(j,2),:)=w(est_fut(j,2),:) + LTP(est_fut(j,2),:) * w_max; 67 Anexo A -- Algoritmo principal end end if(est_fut(j,3)==t) if (w(est_fut(j,1),est_fut(j,2))==2) % O neuronio que disparou pontencializa as sinapses onde % ele é o pre LTP(est_fut(j,1),est_fut(j,2))=LTP(est_fut(j,1),est_fut(j,2)) + Ap; w(:,est_fut(j,2)) = w(:,est_fut(j,2)) - LTD(:,est_fut(j,2)) * w_max; else w(est_fut(j,1),est_fut(j,2))=w(est_fut(j,1),est_fut(j,2))+w_in; end else new_est_fut = [ new_est_fut; est_fut(j,1) est_fut(j,2) est_fut(j,3)]; end; % if(est_fut(j,3)==t) end; % for j=1:size(est_fut,1) est_fut= new_est_fut ; new_est_fut = []; 68 Anexo A -- Algoritmo principal psc=w.*g; % Gera as contribuicoes de correntes dos pré I=sum(psc,2).*(-v); % Soma as contribuicoes while ((linha <= size(I_est,1) ) && (I_est(linha,1)==t) ) I(I_est(linha,2))=I(I_est(linha,2))+I_est(linha,3); linha=linha+1; end; v=v+(tau/2)*(alfa*v.^2+beta*v+gama-u+I); v=v+(tau/2)*(alfa*v.^2+beta*v+gama-u+I); u= u + tau * ( a.*-u + a.*b.*v ); g=g-g./(1+tau_est); LTP=LTP-(LTP/tau_stdp); LTD=LTD-(LTD/tau_stdp); end; % laço principal (tempo) 69 70 ANEXO B -- Algoritmo de coordenação do robô #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <stddef.h> #include <math.h> #include <libplayerc/playerc.h> //VARIAVEIS # define N 9 //Numero de neuronios # define REFLEXO 100 int corrente_saida[N]; //Corrente pos-sinaptica de cada neuronio float Sd1=0,Sd2=0, Se1=0,Se2=0; //Sensores float v[N], u[N]; //V e U de cada neuronio int conexoes_sinapticas[N][N]; //conexoes entre neuronios //colunas: qtde pre-sinapticos; estimulo p/ corpo celular que nao vai gerar //(ou diminuir) diparo e estimulo p/ corpo celular que vai gerar (ou aumentar) disparo; int integradores[N][3]={{0,0,0}, //0- pre-sinaptico: sensor {0,0,0}, //1- pre-sinaptico: sensor {0,0,0}, //2- pre-sinaptico: sensor {0,0,0}, //3- pre-sinaptico: sensor {2,0,50}, //4 - verificar quais valores para Subthreshold oscillations {2,0,50}, //5 {2,0,50}, //6 {3,0,50}, //7- Subthreshold oscillations Anexo B -- Algoritmo de coordenação do robô {0,0,0} //8- Subthreshold oscillations: oscilador de referencia }; FILE *interno, *externo; //Arquivos de log float a=0.02,b=0.2,c=-65,d=6; //Parametros das equacoes int area_sensora_esquerda; int area_sensora_direita; int translacao=0, rotacao_angulo=0,rotacao_sentido=0; int ciclo=0; playerc_client_t *client; playerc_position2d_t *position; playerc_sonar_t *sonar; //PROTOTIPOS int dinamica_neuronio(int i, float in); int iniciar_robo(); int identificar_regiao(int position_x, int position_y); void gerar_log(); int testar_neuronio(); void finalizar_robo(); int iniciar_variaveis(); int diferenciador(int neuronio); int integrador_menor_frequencia(int neuronio); int log_integrador1=0; //registra o estado do integrador de menor frequencia // para gerar arquivo de log int ativacao_diferenciador=0; int main(int argc, const char **argv) { int log = 1;//"1": gera arquivo de log - "0": nao arquivo de gera log iniciar_variaveis(); if (log){ //Abre arquivo interno=fopen("dinamica_interna.txt","a"); 71 Anexo B -- Algoritmo de coordenação do robô externo=fopen("dinamica_externa.txt","a"); if (interno==NULL || externo==NULL){ printf("Erro ao abrir arquivo\n"); return 1; } } if (!(iniciar_robo())) { //Inicia robo printf("\n\nErro ao iniciar robo.\n"); return 1; } for (ciclo=0;1;ciclo++){//loop principal //Ler estimulos while(playerc_client_read(client)==0); //Nao faz nada Sd1=sonar->scan[4]; //Sonar varia entre 0 (perto) e 5 (longe) Sd2=sonar->scan[7]; Se1=sonar->scan[3]; Se2=sonar->scan[0]; translacao=0; rotacao_angulo=0; rotacao_sentido=0; int i,cont0=0,cont1=0,cont4=0; for (i=0;i<REFLEXO*10;i++){//Nivel reflexo a=0.02;b=0.2;c=-65;d=6;//Tonic spiking //AREA SENSORA corrente_saida[0]=dinamica_neuronio(0, ((10*Sd1)+40)); corrente_saida[1]=dinamica_neuronio(1, ((10*Sd2)+40)); corrente_saida[2]=dinamica_neuronio(2, ((10*Se1)+40)); corrente_saida[3]=dinamica_neuronio(3, ((10*Se2)+40)); a=0.05; b=0.26; c=-60; d=0; //Subthreshold oscillations //Atualiza pre-sinapticos do neuronios 4 e 5 //Caso conexoes_sinapticas seja 1, nao pode voltar para 0. if (conexoes_sinapticas[4][0]==0) conexoes_sinapticas[4][0]=corrente_saida[0]; if (conexoes_sinapticas[4][1]==0) 72 Anexo B -- Algoritmo de coordenação do robô conexoes_sinapticas[4][1]=corrente_saida[1]; log_integrador1=0; int y; for (y=0;y<N;y++) //Conta as conexoes_sinapticas. log_integrador1+=conexoes_sinapticas[4][y]; ////Termino do log corrente_saida[4]=dinamica_neuronio(4,integrador_menor_frequencia(4)); if (conexoes_sinapticas[5][0]==0) conexoes_sinapticas[5][0]=corrente_saida[2]; if (conexoes_sinapticas[5][1]==0) conexoes_sinapticas[5][1]=corrente_saida[3]; corrente_saida[5]=dinamica_neuronio(5,integrador_menor_frequencia(5)); //AREA MOTORA //Atualiza pre-sinapticos do neuronio 6 if (conexoes_sinapticas[6][0]==0) conexoes_sinapticas[6][0]=corrente_saida[4]; if (conexoes_sinapticas[6][1]==0) conexoes_sinapticas[6][1]=corrente_saida[5]; corrente_saida[6]=dinamica_neuronio(6,integrador_menor_frequencia(6)); //Atualiza oscilador pre-sinaptico do neuronio 7 int est=0; if (i%10 == 0) est=200; corrente_saida[8]=dinamica_neuronio(8,est); //Atualiza pre-sinapticos do neuronio 7 conexoes_sinapticas[7][0]=(corrente_saida[4]*-1);//Inibe (negativo) conexoes_sinapticas[7][1]=corrente_saida[5]; //Estimula (positivo) conexoes_sinapticas[7][8]=corrente_saida[8]; //Estimula 73 Anexo B -- Algoritmo de coordenação do robô 74 //Log do neuronio 4 que possui o integrador de menor frequencia fprintf(interno,"\n%04d.%03d %d %d %d %d",ciclo,i,corrente_saida[0],corrente_saida[1], log_integrador1,corrente_saida[4]); int aux=diferenciador(7); //corrente_saida[7]=dinamica_neuronio(7, aux);//0 ou 200 corrente_saida[7]=dinamica_neuronio(7, aux);//0 ou 200 //fprintf(stdout,"\n%d.%d %3d %3d",ciclo,i,aux,corrente_saida[7]); //Log do neuronio 7 que possui o diferenciador (denominado no artigo como "Integrador 2") fprintf(interno," %d %d %d %2d %d",corrente_saida[4],corrente_saida[5],corrente_saida[8], ativacao_diferenciador,corrente_saida[7]); translacao += corrente_saida[6]; rotacao_angulo+= corrente_saida[6]; rotacao_sentido+=corrente_saida[7]; } //Reinicia valores por causa da janela de tempo ativacao_diferenciador=0; int m,n; for (m=0;m<N;m++){ for (n=0;n<N;n++) //reinicia valores; conexoes_sinapticas[m][n]=0; } //50 eh o valor da frequencia qdo o Tonic spiking eh estimulado com 60. if (rotacao_sentido>110) rotacao_sentido=1; //Direita - x erro else { if (rotacao_sentido<90) {rotacao_sentido=-1;} //Esquerda - x erro else rotacao_sentido=0; } //A variavel rotacao_angulo varia entre 10 e 20. //Conversao: 10=>20 graus; 20=>2 graus; Rotaciona entre 2 e 20. Quanto //mais proximo maior o angulo. fprintf(externo,"\n%05d %2.3f %2.3f %.3f %.3f %.3f %.3f %.3f %3.3f", Anexo B -- Algoritmo de coordenação do robô ciclo,position->px,position->py,Sd1,Sd2,Se1,Se2,((translacao/40.0)-2.8), (((float)(10-(rotacao_angulo/20.0)))*1.8+20)*rotacao_sentido); if (ciclo>100)//Envia estimulo apos estabilizacao playerc_position2d_set_cmd_vel(position,((translacao/40.0)-2.8),0, DTOR((((float)(10-(rotacao_angulo/20.0)))*1.8+20)*rotacao_sentido),0); if (log){fflush(interno);fflush(externo);} } //loop principal finalizar_robo(); if (log){fclose(interno);fclose(externo);}//Fecha arquivos return 0; } int diferenciador(int neuronio){ int i; for (i=0;i<N;i++) //Conta as conexoes_sinapticas. { ativacao_diferenciador+=conexoes_sinapticas[neuronio][i]; conexoes_sinapticas[neuronio][i]=0; //reinicia valor. } if (ativacao_diferenciador>0){ ativacao_diferenciador-=1; //decrementa pois o neuronio ira pulsar return integradores[neuronio][2];//retorna estimulo que aumenta disparo } return integradores[neuronio][1]; //valor: 0 } int integrador_menor_frequencia(int neuronio){ int i,cont=0; for (i=0;i<N;i++) //Conta as conexoes_sinapticas. cont+=conexoes_sinapticas[neuronio][i]; if (cont==integradores[neuronio][0]) { 75 Anexo B -- Algoritmo de coordenação do robô for (i=0;i<N;i++) //reinicia valores; conexoes_sinapticas[neuronio][i]=0; return integradores[neuronio][2];//retorna estimulo que gera disparo } else return integradores[neuronio][1];//retorna estimulo que NAO gera disparo } //Dinamica de cada neuronio int dinamica_neuronio(int i, float corrente_entrada){ int corrente_saida=0; v[i]+=((0.04*v[i]+5)*v[i]+140-u[i]+corrente_entrada); u[i]+=a*(b*v[i]-u[i]); if (v[i]>=30){ v[i] = c; u[i]+=d; corrente_saida=1; } return corrente_saida; } //Inicia variaveis relativas ao robo. int iniciar_robo(){ printf("\e[H\e[2J"); client = playerc_client_create(NULL, "localhost", 6665); if (playerc_client_connect(client) != 0) { fprintf(stderr, "error: %s", playerc_error_str()); return 0; } position = playerc_position2d_create(client, 0); if (playerc_position2d_subscribe(position, PLAYER_OPEN_MODE) != 0) { fprintf(stderr, "error: %s", playerc_error_str()); 76 Anexo B -- Algoritmo de coordenação do robô return 0; } sonar = playerc_sonar_create(client, 0); if (playerc_sonar_subscribe(sonar, PLAYER_OPEN_MODE) != 0) { fprintf(stderr, "error: %s", playerc_error_str()); return 0; } // Enable the robots motors playerc_position2d_enable(position, 0); return 1; } //Teste de neuronio int testar_neuronio(){ int corrente_entrada=0, corrente_saida=0, tempo=0, tempo_do_pulso=0; int ciclo=0; float v=-65,u=b*-65; for (corrente_entrada=0;corrente_entrada<100 ;corrente_entrada++){ for (tempo=0;tempo<1;tempo++){ v+=1*((0.04*v+5)*v+240-u-corrente_entrada); u+=a*(0.2*v-u); if (v>=30){ v = -65.0; u+=d; corrente_saida=98-(ciclo-tempo_do_pulso); tempo_do_pulso=ciclo; } fprintf(stdout, "\nCorrente entrada: %i Ciclo: %i: Corrente de saida: %i", corrente_entrada, ciclo, corrente_saida); ciclo=ciclo+1; } } return 0; 77 Anexo B -- Algoritmo de coordenação do robô } //Finaliza robo void finalizar_robo(){ // Shutdown and tidy up playerc_position2d_unsubscribe(position); playerc_position2d_destroy(position); playerc_sonar_unsubscribe(sonar); playerc_sonar_destroy(sonar); playerc_client_disconnect(client); playerc_client_destroy(client); } int iniciar_variaveis(){ int i,j; for (i=0;i<N;i++) { v[i]=-65; u[i]=b*-65; corrente_saida[i]=0; for (j=0;j<N;j++) conexoes_sinapticas[i][j]=0; } } 78