1 - Modelagem Matemática e Computacional / CEFET-MG
Transcrição
1 - Modelagem Matemática e Computacional / CEFET-MG
FÁBIO MARTINS DE OLIVEIRA MODELAGEM DE COMPONENTES DE SOFTWARE PARA A CRIAÇÃO DE REDES NEURAIS ARTIFICIAIS HIERÁRQUICAS NA ARQUITETURA ARTÍFICE Belo Horizonte – MG Outubro de 2005 FÁBIO MARTINS DE OLIVEIRA MODELAGEM DE COMPONENTES DE SOFTWARE PARA A CRIAÇÃO DE REDES NEURAIS ARTIFICIAIS HIERÁRQUICAS NA ARQUITETURA ARTÍFICE 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. Paulo Eduardo Maciel de Almeida Centro Federal de Educação Tecnológica de Minas Gerais Co-orientador: Prof. Dr. Henrique Elias Borges Centro Federal de Educação Tecnológica de Minas Gerais MESTRADO EM MODELAGEM MATEMÁTICA E COMPUTACIONAL CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DIRETORIA DE PESQUISA E PÓS-GRADUAÇÃO Belo Horizonte – MG Outubro de 2005 Oliveira, Fábio Martins de O48m 2005 Modelagem de Componentes de Software para a Criação de Redes Neurais Artificiais Hierárquicas na Arquitetura ARTÍFICE / Fábio Martins Oliveira – Belo Horizonte: CEFET-MG/DPPG, 2005. 117 p. Dissertação (mestrado) CEFET-MG.DPPG 1. Redes Neurais Artificiais. 2. Inteligência Artificial. 3. Sistemas Inteligentes. 4. Sistemas Dinâmicos. CDD: 005.131 Folha de aprovação do projeto. Esta folha será fornecida pelo Programa de PósGraduação página. e deverá substituir esta “Dedico este trabalho aos meus pais, ao meu irmão e a minha esposa que sempre acreditaram no meu potencial e que tanto colaboraram nos momentos de alegria e tristeza”. AGRADECIMENTOS À Deus, pelas bênçãos e proteção durante toda minha vida. Ao meu orientador do mestrado, Prof. Dr. Paulo Eduardo Maciel de Almeida, que sempre acreditou no meu potencial e foi paciente nos momentos de dificuldade que passei durante o curso. Ao meu co-orientador, prof. Dr. Henrique Elias Borges, pelo apoio ao projeto e confiança depositada em mim. À minha esposa Alessandra, pelos momentos de apoio e compreensão durante todo o desenvolvimento deste trabalho, não me deixando desanimar nem desistir dos meus ideais. Ao meu amigo Rogério Gomes pela experiência passada que foi fundamental para realização deste trabalho. Ao CNPq, pelo apoio financeiro recebido via projeto ARTÍFICE, do qual este trabalho faz parte. “O estudo nos torna capazes de adquirirmos o auto-conhecimento de nós mesmos, e de tudo o que nos cerca, sem dúvida alguma, nos lança rumo ao futuro certo, ao progresso, ao discernimento, que nos fazem viver melhor o dia a dia, ajudando-nos a sobreviver e não sermos vítimas de meras casualidades.” SILVA, José Geraldo da. Chama Ardente. São Paulo: Scortecci, 1992. SUMÁRIO LISTA DE FIGURAS.................................................................................................11 LISTA DE TABELAS ................................................................................................15 LISTA DE ABREVIATURAS E SIGLAS ...................................................................17 LISTA DE ABREVIATURAS E SIGLAS ...................................................................17 RESUMO...................................................................................................................19 ABSTRACT...............................................................................................................20 1 INTRODUÇÃO .......................................................................................................21 1.1 Relevância...........................................................................................................22 1.2 Motivação ............................................................................................................22 1.3 Estado da arte .....................................................................................................24 1.4 Objetivos .............................................................................................................25 1.4.1 Objetivos Gerais ...........................................................................................25 1.4.2 Objetivos Específicos....................................................................................25 1.5 Metodologia de Pesquisa ....................................................................................26 1.6 Organização do trabalho .....................................................................................27 2 SISTEMAS DINÂMICOS E REDES NEURAIS ARTIFICIAIS ................................28 2.1 Introdução aos Sistemas Dinâmicos ...................................................................28 2.1.1 Espaço de Estados .......................................................................................29 2.1.2 Atratores .......................................................................................................30 2.1.3 Estabilidade ..................................................................................................31 2.2 Redes Neurais Artificiais .....................................................................................34 2.3 Modelos de Redes Neurais Artificiais Dinâmicas ................................................35 2.3.1 Redes de Hopfield ........................................................................................36 2.3.2 Redes Generalized-Brain-State-in-a-Box e Brain-State-in-a-Box .................38 2.4 Aprendizado em Redes Neurais Artificiais ..........................................................42 2.4.1 Aprendizado Hebbiano .................................................................................42 2.5 Memória ..............................................................................................................44 2.5.1 Associação de Padrões ................................................................................45 2.5.2 Learning........................................................................................................49 2.5.3 Forgetting......................................................................................................50 2.6 Redes Neurais Artificiais Acopladas....................................................................51 2.6.1 Redes de Redes Neurais Artificiais...............................................................51 2.6.2 Arquitetura de RNA Dinâmicas Acopladas ...................................................54 2.7 Considerações Finais ..........................................................................................59 3 COMPONENTES DE SOFTWARE PARA GERAÇÃO DE REDES NEURAIS ARTIFICIAIS ACOPLADAS ...................................................................................60 3.1 Introdução ...........................................................................................................60 3.2 Modelagem dos componentes ............................................................................62 3.2.1 Visão Lógica dentro do Projeto ARTÍFICE....................................................62 3.2.2 Visão Use-Case ............................................................................................67 3.3 Considerações Finais ..........................................................................................78 4 EXPERIMENTOS ...................................................................................................80 4.1 Considerações Iniciais.........................................................................................80 4.2 Experimentos ......................................................................................................80 4.2.1 Experimento 1 – Projeto de RNA ..................................................................80 4.2.2 Experimento 2 – Execução e Análise de Convergência ...............................83 4.2.6 Experimento 3 - Acoplamento.......................................................................93 4.2.6 Experimento 4 – Learning...........................................................................100 4.2.6 Experimento 5 – Forgetting.........................................................................104 4.3 Considerações Finais ........................................................................................107 5 CONCLUSÃO.......................................................................................................109 5.1 Dificuldades Encontradas..................................................................................109 5.2 Contribuições do Trabalho ................................................................................110 5.3 Trabalhos Futuros .............................................................................................111 5.4 Considerações Finais ........................................................................................112 REFERÊNCIAS.......................................................................................................113 ANEXO A – ARQUITETURA ARTÍFICE-0.6.0 .......................................................117 LISTA DE FIGURAS Figura 1.1 - Agente em seus domínios fenomênicos. ..........................................23 Figura 2.1 - Trajetória bidimensional de um sistema dinâmico . ........................30 Figura 2.2 - Bacia de atração e separatriz. ............................................................31 Figura 2.3 - Modelo de McCullock e Pitts. .............................................................35 Figura 2.4 - Rede de Hopfield. ................................................................................37 Figura 2.5 - (a) Função de ativação da rede BSB, com valores contínuos entre 1 e 1 e truncados neste limite, e (b) visualização da mudança dos estados de ativação da rede até o equilíbio em um dos vértices do hipercubo formado pelos limites -1 e 1 das ativações......................................................40 Figura 2.6 - Exemplo de padrões armazenados. ..................................................46 Figura 2.7 - Exemplo de recuperação de padrão com ruído................................46 Figura 2.8 - Módulo da Rede de Redes..................................................................52 Figura 2.9 - Arquitetura Modular de Rede de Redes. ...........................................53 Figura 2.10 - Arquitetura Redes de Redes para sete redes. ...............................53 Figura 2.11 - Rede GBSB acoplada........................................................................55 Figura 2.12 - Esquema de redes.............................................................................55 Figura 3.1 – Organização em pacotes do projeto ARTÍFICE-0.6.0. .....................63 Figura 3.2 – Pacotes que foram acrescidos ao pacote cssaNervousSystem. ...64 Figura 3.3 - Componentes do sistema nervoso....................................................64 Figura 3.4 - Pacote annStructure. ..........................................................................65 Figura 3.5 – Pacote annTools.................................................................................66 Figura 3.6 - Diagrama de Casos de Uso. ...............................................................67 Figura 3.7 - Diagrama de seqüência para o caso de uso ANN Design. ..............74 Figura 3.8 - Diagrama de seqüência para o caso de uso Execute ANN..............75 Figura 3.9 – Diagrama de seqüência para o caso de uso Analyse ANN.............76 Figura 3.10 - Diagrama de seqüência para o caso de uso Coupling ANN..........77 Figura 3.11 – Diagrama de seqüência para o caso de uso Learning. .................77 Figura 3.12 – Diagrama de seqüência para o caso de uso Forgetting. ..............78 Figura 4.1 – Módulo de projeto (aprendizado) da rede. .......................................81 Figura 4.2 – Teste de projeto de uma RNA............................................................82 Figura 4.3 – Módulo de execução de redes GBSB. ..............................................83 Figura 4.4 – Execução da rede GBSB com estado inicial p1. ..............................84 Figura 4.5 – Execução da rede GBSB com estado inicial p7. ..............................85 Figura 4.6 – Execução da rede GBSB com estado inicial p8. ..............................86 Figura 4.7 – Região de ciclo limite........................................................................87 Figura 4.8 – Análise de convergência da rede GBSB para β = 0.3......................88 Figura 4.9 - Estados espúrios. ...............................................................................89 Figura 4.10 – Análise de convergência da rede GBSB para β = 0.2....................89 Figura 4.11 – Análise de convergência da rede GBSB para β = 0.15..................90 Figura 4.12 – Análise de convergência da rede GBSB para β = 0.1....................90 Figura 4.13 – Análise de convergência da rede GBSB para β = 0.06..................91 Figura 4.14 - Análise de convergência da rede GBSB para β = 0.06...................92 Figura 4.15 – Módulo de acoplamento de redes GBSB........................................93 Figura 4.16 – Esquema geral do experimento. .....................................................95 Figura 4.17 – Teste de acoplamento inicializando-se a rede A. ..........................96 Figura 4.18 – Resultado do teste de acoplamento inicializando-se a rede A.....96 Figura 4.19 - Interface do módulo Learning. .......................................................101 Figura 4.20 – Execução da rede GBSB para o estado inicial instável p4..........103 Figura 4.21 – Teste de learning. ...........................................................................103 Figura 4.22 – Execução da rede GBSB para o estado inicial estável p4...........104 Figura 4.23 - Interface do módulo Forgetting. ....................................................105 Figura 4.24 - Execução da rede GBSB para o estado inicial estável p3............106 Figura 4.25 – Teste de forgetting. ........................................................................106 Figura 4.26 - Execução da rede GBSB para o estado inicial instável p3. ........107 Figura A.1 – Modelo Conceitual da Arquitetura ARTÍFICE versão 0.0.6...........117 LISTA DE TABELAS Tabela 4.1 – Resultado da convergência da rede GBSB para β = 0.3 ................88 Tabela 4.2 – Resultado da convergência da rede GBSB para β = 0.3 ................91 Tabela 4.3 – Padrões encontrados na convergência da rede GBSB. .................92 Tabela 4.4 – Padrões correlacionados armazenados. .........................................94 Tabela 4.5 - Acoplamento das redes variando-se γ, com a rede A inicializada no padrão p1............................................................................................................97 Tabela 4.6 - Acoplamento das redes variando-se β, com a rede A inicializada no padrão p2............................................................................................................97 Tabela 4.7 - Acoplamento das redes variando-se γ, com a rede A inicializada no padrão p2............................................................................................................97 Tabela 4.8 - Acoplamento das redes variando-se β, com a rede B inicializada no padrão p3............................................................................................................98 Tabela 4.9 - Acoplamento das redes variando-se γ, com a rede B inicializada no padrão p3............................................................................................................98 Tabela 4.10 - Acoplamento das redes variando-se β, com a rede B inicializada no padrão p4. .....................................................................................................98 Tabela 4.11 - Acoplamento das redes variando-se γ, com a rede B inicializada no padrão p4. .....................................................................................................99 Tabela 4.12 - Acoplamento das redes variando-se β, com a rede C inicializada no padrão p5. .....................................................................................................99 Tabela 4.13 - Acoplamento das redes variando-se γ, com a rede C inicializada no padrão p5. .....................................................................................................99 Tabela 4.14 - Acoplamento das redes variando-se β, com a rede C inicializada no padrão p6. ...................................................................................................100 Tabela 4.15 - Acoplamento das redes variando-se γ, com a rede C inicializada no padrão p6. ...................................................................................................100 LISTA DE QUADROS Quadro 3.1 - Descrição do caso de uso ANN Design...........................................68 Quadro 3.2 - Descrição do caso de uso Execute ANN - Hopfield. ......................69 Quadro 3.3 - Descrição do caso de uso Execute ANN – GBSB/BSB. .................70 Quadro 3.4 - Descrição do caso de uso Analyse ANN - Hopfield. ......................71 Quadro 3.5 - Descrição do caso de uso Analyze ANN – GBSB/BSB. .................71 Quadro 3.6 - Descrição do caso de uso Coupling ANN. ......................................72 Quadro 3.7 - Descrição do caso de uso Learning. ...............................................73 Quadro 3.8 - Descrição do caso de uso Forgetting..............................................73 Quadro 3.9 - Descrição do caso de uso View File. ...............................................74 LISTA DE ABREVIATURAS E SIGLAS ANN - Artificial Neural Networks ASCS - Agente de Software Cognitivo Situado BSB - Brain-State-in-a-Box GBSB - Generalized-Brain-State-in-a-Box GPSI - Grupo de Pesquisas em Sistemas Inteligentes IA - Inteligência Artificial LSI - Laboratório de Sistemas Inteligentes MLP - MultiLayer Perceptron NoN - Network of Networks RNA - Rede Neural Artificial, Redes Neurais Artificiais TNGS - Teory of Neuronal Group Selection UML - Unified Modeling Language RESUMO O projeto ARTÍFICE, desenvolvido pelo Grupo de Pesquisas em Sistemas Inteligentes do CEFET-MG, visa a construção de agentes de software segundo as abordagens da cognição situada. Para criação dos agentes, se faz necessária a implementação de estruturas capazes de modelar os processos biológicos a partir das teorias cognitivas contemporâneas. As Redes Neurais Artificiais (RNA), que têm seus princípios fundamentais assentados nos trabalhos de modelagem biológica de processos neurofisiológicos, cognitivos e comportamentais, são estruturas capazes de atender as necessidades do projeto ARTÍFICE. Nesse contexto, este trabalho propõe a extensão da arquitetura ARTÍFICE-0.6.0 para a construção de componentes de software que possuam funções de projeto, execução, análise e acoplamento de RNA de Hopfield, BSB e GBSB. A partir do estudo da arquitetura ARTÍFICE-0.6.0 foram elaborados os modelos de projeto que incluem as estruturas de RNA. Os componentes de RNA desenvolvidos foram testados a partir de experimentos, baseados em aplicações de memória associativa, que validam o funcionamento dos mesmos. Os experimentos realizados com uma rede GBSB mostraram como ocorre o aprendizado, ou seja, a memorização de padrões, nessa estrutura, bem como analisaram evolução e convergência para os estados de equilíbrio do sistema. Através de experimentos com redes GBSB acopladas foi possível analisar a evolução e verificar que padrões globais podem emergir a partir dessa estrutura. Os componentes de software desenvolvidos neste trabalho contribuíram para implementação de um novo tipo de estrutura para construção do sistema nervoso do Agente de Software Cognitivo Situado, dentro do projeto ARTÍFICE. Acredita-se também que este trabalho representou o início da construção de um framework capaz de auxiliar no desenvolvimento de aplicações complexas de diferentes estruturas de RNA e tecnologias que envolvem essa área de estudo. PALAVRAS-CHAVE: redes neurais artificiais, inteligência artificial, sistemas inteligentes, sistemas dinâmicos. ABSTRACT The ARTÍFICE project, developed by the Intelligent System Research Group of the CEFET-MG, aims the construction of software agents according to the approach of situated cognition. For the creation of agents, it is necessary the development of structures which are able to model the biological processes from the contemporary cognitive theories. Artificial Neural Networks (ANN) have their roots in biological modeling neurophysiologic, cognitive and behavioral processes research. They seem to be structures capable to satisfy ARTÍFICE project demands. In this context, the present work proposes the extension of ARTÍFICE 0.6.0 architecture for the construction of software components which possess design, execution, analysis and coupling functions of ANN, Hopfield, BSB and GBSB. From the study of ARTÍFICE0.6.0 architecture, there has been created project models that include the ANN structures. The ANN components developed had been tested by means of experiments based on associative memory applications, validating their functioning. These experiments, carried through with GBSB networks, showed how learning takes place, i.e., how pattern memorization occurs in this structure. They also analyzed evolution and convergence for the equilibrium states of the system. Through experiments with coupled GBSB networks, it has been possible to analyze ANN dynamics and to verify that global patterns could arise from the coupled structure. The software components developed in this work contribute to the implementation of a structure capable to represent the nervous system for the Cognitive Situated Software Agents proposed by ARTÍFICE project. This work represents the beginning of a framework construction capable to assist in the development of complex applications using different ANN structures and technologies that involve this study area. KEYWORDS: artificial neural networks, artificial intelligence, intelligent systems, neurodynamic, dynamic systems. 21 1 INTRODUÇÃO As abordagens tradicionais das ciências cognitivas, também chamadas de objetivistas, tentam explicar o funcionamento da mente, onde o cérebro é visto com um processador de informações com entrada, processamento e saída (SANTOS, 2003). Além disso, o mundo é objetivo, ou seja, ele existe independente de nós seres humanos. Em virtude dos limites de aplicabilidade das ciências cognitivas, novas abordagens e modelos vão surgindo. Segundo Santos (2003), uma dessas novas abordagens é a chamada “cognição situada”, que toma como ponto de partida o fato de que a cognição é um processo de um organismo que tem um corpo, que por sua vez é um objeto físico num determinado contexto no ambiente. Nessa abordagem, também chamada de não-objetivista, o conhecimento e o aprendizado surgem das interações do sujeito com o mundo do qual faz parte (OLIVEIRA; CAMPOS; BORGES, 2004). Baseado nos fundamentos das ciências cognitivas, a Inteligência Artificial fornece mecanismos que auxiliam na construção de softwares a partir dessas abordagens, como, por exemplo, as Redes Neurais Artificiais (RNA). As RNA são modelos matemáticos que se assemelham às estruturas neurais biológicas e que têm capacidade computacional adquirida por meio de aprendizado e generalização (BRAGA; CARVALHO; LUDERMIR, 2003). Assim como o sistema nervoso é composto por bilhões de células nervosas, uma RNA também é formada por unidades que nada mais são que pequenos módulos de simulação do funcionamento de um neurônio natural. Segundo Raposo e Vaz (2004), as RNA possibilitam representar processos cognitivos, uma vez que são capazes não só de armazenar e manipular dados, mas também da aquisição, representação e manipulação de conhecimento. Esta manipulação inclui a capacidade de deduzir ou inferir novos conhecimentos, novas relações sobre fatos e conceitos a partir do conhecimento existente e utilizar métodos de representação e manipulação para resolver problemas complexos que são freqüentemente não-quantitativos por natureza (RAPOSO; VAZ, 2004). 22 Este trabalho faz parte do projeto “ARTÍFICE – Arquitetura Flexível para Criação de Linhagens de Agentes de Software Cognitivos Situados” (BORGES, 2002), que propõe o desenvolvimento de uma arquitetura flexível para a construção de agentes de software cognitivos. Essa arquitetura contém componentes que fazem parte da organização do agente de software e os relacionamentos entre eles, representando aspectos da cognição humana baseados nas abordagens não-objetivistas das ciências cognitivas. 1.1 RELEVÂNCIA Atualmente, o grande objetivo das pesquisas em Inteligência Artificial (IA) é capacitar o computador a executar funções que são desempenhadas pelo ser humano usando conhecimento e raciocínio (REZENDE, 2003). No entanto, para desenvolver organismos computacionais inteligentes é preciso analisar os aspectos relativos ao conhecimento humano, como se dá este conhecimento, o conceito de inteligência, como surge o comportamento inteligente, como ocorre o raciocínio humano, etc. O “sonho” de construir máquinas inteligentes não é recente. O homem, desde a antiguidade, procurou desenvolver dispositivos artificiais, metálicos, de madeira ou de marfim, dotados de movimento e inteligência. Assim, este trabalho se torna relevante na disseminação da construção de softwares com capacidade de agir inteligentemente como os seres humanos, ajudando na tomada de decisões e resoluções de problemas das mais diversas áreas do conhecimento. Espera-se difundir o desenvolvimento de técnicas que permitam incorporar no ambiente computacional, mesmo que de forma limitada, algumas das funcionalidades dos sistemas biológicos, no que se refere a seus aspectos de inteligência. Além disso e, principalmente, este trabalho contribui para o desenvolvimento de sistemas computacionais inteligentes pela construção de RNA interconectadas. 1.2 MOTIVAÇÃO O Grupo de Pesquisas em Sistemas Inteligentes (GPSI) do CEFET/MG tem como objetivo o desenvolvimento de uma arquitetura flexível para agentes denominados como Agentes de Softwares Cognitivos Situados (ASCS). Santos (2003) afirma que 23 no domínio das relações e interações, o agente é uma unidade simples que possui um comportamento em um meio, e é visto como um todo por alguma unidade externa que o observa. Já no domínio da dinâmica estrutural interna, o agente é considerado como uma unidade composta por vários componentes e correlacionamentos. A representação do agente pode ser observada na Figura 1.1: Figura 1.1 - Agente em seus domínios fenomênicos. FONTE – SANTOS, 2003. p. 59. Justamente neste domínio que se encontra a estrutura para a construção de agentes inteligentes segundo as abordagens cognitivas e situadas. Segundo a Teoria da Seleção dos Grupos Neurais (TNGS – Theory of Neuronal Group Selection) (EDELMAN, 1992), as correlações entre células neurais no cérebro humano, localizados em áreas que realizam funções específicas, formam os grupos neurais, os mapas locais e mapas globais. Os grupos neurais (GN), são conjunto de neurônios (entre 50 e 10000) fortemente interconectados por sinapses, que trabalham na mesma freqüência e estão localizados numa mesma região do cérebro. Um mapa local é um conjunto de grupos neurais distintos, interconectados através conexões reentrantes, ou seja, sinapses que ocorrem em ambos sentidos, com funcionalidades semelhantes. Os Mapas Globais, por sua vez, são conjuntos de mapas locais distintos interconectados através das sinapses de células neurais destes mapas, que proporcionam um comportamento global do cérebro como um todo. 24 A arquitetura para construção de agentes de software inteligentes, baseada nas abordagens cognitivas situadas, pode ser observada em Santos (2003). No entanto, o GPSI ainda não possui uma ferramenta de apoio à construção dos Mapas Locais e Globais, que representarão funções específicas do cérebro humano. O que pode ser visto, até o momento, são que as correlações entre Mapas Locais, formando os Mapas Globais, possuem uma estrutura semelhante à arquitetura de Redes de Redes (Network of Networks - NoN) apresentadas por Guan, Anderson e Sutton (1997), que será detalhada no capítulo 4. Diante disso, motivou-se o desenvolvimento de componentes, a partir das idéias de Redes de Redes, que pudessem auxiliar na construção de agentes de software segundo as teorias da Cognição Situada. 1.3 ESTADO DA ARTE São diversos os trabalhos na área de RNA, mas há relativamente poucos que tratam de projetos de interconexão de redes para resolução de problemas gerais. Em Anderson (2002) e Anderson (2003 a), é apresentada uma estrutura de Redes de Redes Neurais Artificiais (NoN, do termo inglês Network of Networks) para processamento de operações aritméticas, como ocorrem no cérebro humano. Nesses artigos, o autor discute como é realizado o processamento aritmético em seres humanos e como este pode ser representado em computador através desta arquitetura, aumentando e melhorando todo processo. Na arquitetura NoN, supõe-se que o elemento computacional básico, como no cérebro, não é o neurônio, mas sim uma pequena rede de neurônios. Ou seja, as unidades elementares computacionais no sistema nervoso não são simples unidades como nas RNA tradicionais, mas módulos compostos de muitas unidades interconectadas. Têm-se ainda trabalhos voltados para processamento de imagens, como Guan, Anderson e Sutton (1996) (1997), onde os autores mostram a aplicação da arquitetura NoN no processo de regularização de imagens. Este processo visa a redução da degradação de imagens digitais por ruídos e embaçamento. Os autores fazem ainda uma comparação da implementação do processo utilizando a arquitetura NoN e uma rede de Hopfield, onde se pode observar há uma melhoria significante na imagem aplicando-se a primeira técnica, ocorrendo justamente o contrário com a segunda. Existem alguns 25 projetos de construção de computadores paralelos capazes de executar softwares que implementam habilidades cognitivas humanas (ANDERSON, 2003 a), baseados em estruturas de interconexão de RNA. Gan e Wei (1990) discutem como formar representações compactas de armazenamento de padrões, preservando informações críticas, e apresenta um modelo de RNA interconectadas para memória associativa. Outros trabalhos de armazenamento e recuperação de padrões são ainda encontrados na literatura, como Correa (2004), são apresentadas estruturas de RNA realimentadas, as Redes Neurais Celulares, que são versões localmente acopladas do modelo de Hopfield. O autor utilizou-se dessas redes para avaliar o desempenho de diversos métodos de construção de memórias associativas. Gomes (2005) apresenta uma estrutura de RNA acopladas baseada na TNGS. Essa estrutura possibilita o acoplamento de redes GBSB para aplicações de memória associativa. 1.4 OBJETIVOS 1.4.1 Objetivos Gerais Este trabalho faz parte do projeto ARTÍFICE, que propõe o desenvolvimento de uma arquitetura flexível para a construção de agentes de software cognitivos. Nesse contexto, a proposta aqui é a implementação de RNA com objetivo de construir agentes de software inteligentes. Além disso, pretende-se contribuir para implementação de um tipo de estrutura que irá representar o sistema nervoso do ASCS, bem como o desenvolvimento de outros projetos de RNA, através do desenvolvimento de componentes de software que possuam funções de projeto, execução, análise e interconexões (acoplamento) entre RNA realimentadas. 1.4.2 Objetivos Específicos 1. Construção do modelo lógico dos componentes de software a serem desenvolvidos, em conformidade com a arquitetura ARTÍFICE, versão 0.6.0; 26 2. Implementação dos componentes de software para projeto, execução e análise de RNA de Hopfield, BSB e GBSB1, estendendo a arquitetura ARTÍFICE e propiciando novas possibilidades de criação do ASCS; 3. Implementação dos componentes de acoplamento de estruturas de RNA de Hopfield, BSB e GBSB do projeto ARTÍFICE; 4. Implementação de uma interface para integração dos componentes; 5. Realização de testes nos componentes, a partir da interface de integração, através da resolução de problemas gerais. 1.5 METODOLOGIA DE PESQUISA Para desenvolvimento dos componentes propostos nesse projeto, foi adotada a seguinte metodologia de trabalho, sendo dividida em 4 (quatro) etapas: 1. Revisão bibliográfica: estudo geral da arquitetura do projeto ARTÍFICE, levantamento de informações sobre RNA e possibilidades de acoplamento, sistemas dinâmicos e aplicações de RNA na implementação de memórias associativas; 2. Projeto dos componentes de software: modelagem dos componentes de software, utilizando a Linguagem de Modelagem Unificada (UML), seguindo a abordagem das visões de casos de uso e lógica definidas pela mesma. Para elaboração dos diagramas foi utilizado o plugin Omondo for UML do software Eclipse; 3. Implementação: implementação dos componentes em linguagem Java, utilizando-se o software Eclipse; __________________________ 1 As redes BSB e GBSB consistem de um conjunto de neurônios altamente interligados que realimentam a si próprios, e suas unidades da rede BSB podem assumir valores de ativação contínuos, dentro do intervalo [-1, 1]. 27 4. Testes e análise de resultados: realização de testes seguindo aplicações publicadas em artigos científicos. 1.6 ORGANIZAÇÃO DO TRABALHO Inicialmente, no capítulo 2, apresenta-se o referencial teórico necessário à realização deste trabalho. No capitulo 3, apresenta-se a modelagem UML dos componentes de software desenvolvidos. No capitulo 4 serão vistos os experimentos realizados a partir dos componentes desenvolvidos e discutidos os resultados. No capítulo 5 são feitas as considerações finais do trabalho, abordando as dificuldades encontradas, bem como as contribuições e idéias para trabalhos futuros. 28 2 SISTEMAS DINÂMICOS E REDES NEURAIS ARTIFICIAIS Neste capitulo não se pretende abordar profundamente a teoria de sistemas dinâmicos, bem como de RNA, mas sim discutir as idéias que foram necessárias ao desenvolvimento do trabalho. Uma pequena introdução aos sistemas dinâmicos, apresentada na seção 2.1, se faz necessária para o entendimento das abordagens utilizadas pelas RNA (seção 2.2) estudadas neste trabalho. Os modelos de RNA utilizados no desenvolvimento deste serão discutidos na seção 2.3 e o aprendizado na seção 2.4. Uma breve discussão sobre memória, mais especificamente memória associativa, é feita na seção 2.5, como forma de introduzir a teoria que será necessária para o entendimento dos experimentos realizados através dos componentes de software desenvolvidos neste trabalho. Foi adotada a seguinte convenção de nomenclatura no texto: vetores são representados por letras minúsculas, em negrito e no estilo itálico, enquanto matrizes serão semelhantes com diferenciação de letras maiúsculas. Variáveis não vetoriais são representadas por letras minúsculas e no estilo itálico. 2.1 INTRODUÇÃO AOS SISTEMAS DINÂMICOS Segundo Corrêa (2004), a teoria dos sistemas dinâmicos visa a compreensão, de forma qualitativa ou geométrica, de soluções para sistemas de equações diferenciais ou de diferenças. De acordo com o autor, procura-se estudar sistemas mais complexos cujas soluções não são possíveis de se obterem usando técnicas tradicionais de resolução. Sistema dinâmico é um sistema cujo estado varia com o tempo, e o seu comportamento é visto como um todo, e não dividido em partes separadas (HAYKIN, 2001). Os sistemas dinâmicos podem ser descritos por três propriedades: 29 • Estado do sistema: é a representação do sistema em algum instante de tempo. O símbolo x(t) = [x1(t),..., xn(t)] será usado denotar o estado de um sistema no tempo t; • Espaço de Estados: é um conjunto de possíveis estados de um sistema; • Regra de Transição de Estados: regra utilizada para o cálculo de uma mudança de estado em um dado instante de tempo. O símbolo T é usado denotar a função de transição de estado que mapeia um estado inicial x(t), após algum período de tempo h, em um novo estado x(t+h): ( ) x ( t + h ) = T x (t ) , t , t + h . (2.1) O modelo mais utilizado para representar os sistemas dinâmicos é o modelo do espaço de estados, onde se tem um conjunto de variáveis de estado cujos valores contém informação suficiente para prever a evolução futura do sistema. Suponha que x1(t),..., xn(t) representem as variáveis de estado de um sistema dinâmico nãolinear, onde t é a variável independente e N é a ordem do sistema. As variáveis de estado são agrupadas em um vetor de estados x(t). A dinâmica de um sistema linear ou não pode ser especificada como uma equação diferencial de primeira ordem como: ( ) d (t ) x = F x (t ) , dt (2.2) onde a função F( . ) é, em geral, uma função não-linear de seu argumento. 2.1.1 Espaço de Estados O espaço de estados é uma ferramenta importante para analisar a dinâmica de um sistema não-linear. Em um instante de tempo t, o estado observado do sistema é representado por um único ponto no espaço de estados N-dimensional. Mudanças 30 de estado do sistema com o tempo t são representadas como uma curva no espaço de estados, como pode ser observado a seguir na Figura 2.1: Figura 2.1 - Trajetória bidimensional de um sistema dinâmico . FONTE - HAYKIN, 2001. p. 718. Essa curva é chamada de trajetória ou órbita do sistema. Pode-se observar que a velocidade instantânea da trajetória é representada pelo vetor tangente em t = t0, mostrado através da linha tracejada na Figura 2.1. 2.1.2 Atratores Os atratores são os estados que representam os estados de equilíbrio de um sistema dinâmico, ou seja, as regiões do espaço de estados para as quais as órbitas do sistema tendem a convergir. Cada atrator é envolvido por uma região chamada bacia de atração. A fronteira entre duas bacias de atração é chamada de separatriz, conforme mostra a Figura 2.2 a seguir: 31 Figura 2.2 - Bacia de atração e separatriz. FONTE - ADAPTADO DE HAYKIN, 2001. p. 726. Segundo Haykin (2001), o atrator pode ser um único ponto no espaço de estados, que nesse caso é chamado de atrator pontual, ou ainda uma região na forma de órbita periódica chamada ciclo limite. Um ciclo limite constitui a forma típica de um comportamento oscilatório que surge quando um ponto de equilíbrio de um sistema não-linear se torna instável. 2.1.3 Estabilidade Um estado x* é um estado de equilíbrio ou ponto fixo quando, ao atingi-lo, o sistema não se transforma e mantém as suas características organizacionais. O ponto de equilíbrio do sistema, mostrado na Figura 2.2, ocorre quando F (x * ) = 0 , o vetor velocidade dx é nulo no estado de equilíbrio x* e, portanto a função constante dt x ( t ) = x * é uma solução da equação ( ) d (t ) x = F x (t ) . dt Conforme Cook2 apud Haykin (2001), no contexto de um sistema dinâmico nãolinear com estado de equilíbrio x*, as definições de estabilidade e convergência são as seguintes: __________________________ 2 COOK, PA. Nonlinear Dynamical Systems. London: Prentice-Hall International, 1986. 32 Definição 1: Diz-se que o estado de equilíbrio x* é uniformemente estável se para qualquer ε positivo existe um δ positivo tal que a condição x (0 ) − x * < δ, (2.3) x ( t ) − x * < ε, (2.4) implica para todo t > 0. Esta definição afirma que a trajetória do sistema pode ser mantida na vizinhança do estado de equilíbrio x*, se o estado inicial x(0) for suficientemente próximo a x*. Definição 2: Diz-se que um estado de equilíbrio x* é convergente se existir um δ positivo tal que a condição x (0 ) − x * < δ, (2.5) implica x ( t ) → x * quando t → ∞. (2.6) Essa definição afirma que se o estado inicial x(0) for muito próximo do estado de equilíbrio x*, então a trajetória descrita pelo vetor de estado x(t) se aproximará de x* quando o tempo t se aproximar do infinito. Definição 3: Diz-se que um estado de equilíbrio x* é assintoticamente estável se ele for estável e convergente. 33 Definição 4: Diz-se que um estado de equilíbrio x* é assintoticamente estável ou global e estaticamente estável se ele for estável e todas as trajetórias do sistema convergirem para x* quando t se aproxima do infinito. Esta definição afirma que o sistema irá entrar em equilíbrio em um estado estável para qualquer condição inicial do mesmo. A partir das definições anteriores, necessita-se de um método para determinação da estabilidade do sistema. Segundo Haykin (2001), pode-se aplicar o método direto de Lyapunov, que utiliza uma função escalar contínua do vetor de estado chamada função de Lyapunov. Uma função escalar V(x) é chamada de uma função de Lyapunov se satisfaz os dois teoremas a seguir: Teorema 1: O estado de equilíbrio x* é estável se em uma pequena vizinhança de x* existir uma função positivamente definida V(x) tal que a sua derivada em relação ao tempo é negativamente semidefinida naquela região. Teorema 2: O estado de equilíbrio x* é assintoticamente estável se em uma pequena vizinhança de x* existir uma função positivamente definida V(x) tal que a sua derivada em relação ao tempo é negativamente definida naquela região. Como visto, os teoremas apresentados exigem que a função de Lyapunov V(x) seja positivamente definida. Para tal, V(x) deve satisfazer as seguintes condições, dado um espaço de estados S: 1. A função V(x) tem derivadas parciais continuas em relação aos elementos do vetor de estado x; 2. V(x*) = 0; 3. V(x) > 0 se x ≠ x*. Sabendo-se que V(x) é uma função de Lyapunov, segundo o Teorema 1 o estado de equilíbrio x* é estável se 34 d V ( x ) ≤ 0 para x ∈ U − x * , dt (2.7) onde U é uma pequena vizinhança em torno de x*. De acordo com o Teorema 2, tem-se ainda que o estado de equilíbrio x* é assintoticamente estável se d V ( x ) < 0 para x ∈ U − x * . dt (2.8) O problema no cálculo da estabilidade está em se encontrar a função de Lyapunov V(x), tendo em vista que é uma questão de tentativa e erro e os teoremas apresentados não fornecem base para obtê-la. 2.2 REDES NEURAIS ARTIFICIAIS Segundo Haykin (2001), uma rede neural é um processador maciçamente paralelamente distribuído constituído de unidades de processamento simples, que têm a propensão natural para armazenar conhecimento experimental e torná-lo disponível para uso. As RNA foram desenvolvidas, originalmente, na década de 40, pelo neurofisiologista McCulloch e pelo matemático Pitts da Universidade de Illinois. Eles fizeram uma analogia entre células nervosas vivas e o processo eletrônico, simulando o comportamento do neurônio natural, onde o neurônio possuía apenas uma saída, que era obtida através de uma função de entrada da soma do valor de suas diversas entradas. O conhecimento de uma RNA está codificado na estrutura da rede, onde se destacam as conexões (sinapses) entre as unidades (neurônios) que a compõem. Nestas redes artificiais obtidas por simulação em computadores, são associadas a cada conexão um peso sináptico (valor numérico) que caracteriza a força da conexão entre dois neurônios. O aprendizado em uma RNA é realizado por um processo de adaptação dos seus pesos sinápticos. A operação de uma unidade de processamento, proposta por McCulloch e Pitts pode 35 ser resumida da seguinte maneira: • sinais são apresentados à entrada; • cada sinal é multiplicado por um número, ou peso, que indica a sua influência na saída da unidade; • é feita a soma ponderada dos sinais que produz um nível de atividade; • se este nível de atividade exceder um certo limiar (threshold) a unidade produz uma determinada resposta de saída. O modelo de McCullock e Pitts é ilustrado abaixo: Figura 2.3 - Modelo de McCullock e Pitts. Neste trabalho serão abordados os modelos Redes Neurais Artificiais Dinâmicas, que se aproximam dos aspectos teóricos do projeto ARTÍFICE, apresentados na seção 2.3 a seguir. 2.3 MODELOS DE REDES NEURAIS ARTIFICIAIS DINÂMICAS As RNA dinâmicas, conforme afirma Gomes (2005), podem ser vistas como sistemas dinâmicos não-lineares. Elas possuem uma propriedade muita importante que é a estabilidade, que é vista como uma propriedade global de todo o sistema, e, 36 além disso, apresentam uma arquitetura simples, de uma única camada, sem neurônios escondidos e que se aproximam da descrição dos grupos neurais da TNGS de Edelman (GOMES, 2005). As RNA podem ser de diferentes estruturas, de acordo com a função interna utilizada para calcular o estado de ativação de seus neurônios. As principais diferenças são relativas ao tipo de função de ativação utilizada (linear, sigmoidal, gaussiana, etc). Outro elemento importante diz respeito à maneira como os neurônios armazenam as informações, como exemplo as redes de Hopfield, onde as saídas da rede são realimentadas na entrada para o aprendizado da mesma. Neste trabalho serão detalhadas as redes dinamicamente orientadas de Hopfield e Generalized-Brain-State-in-a-Box, além da rede Brain-State-in-a-Box, um modelo particular da anterior. 2.3.1 Redes de Hopfield A estrutura recorrente de Hopfield, descrita inicialmente por Hopfield (1982), constituiu um grande avanço na fronteira do conhecimento em RNA (BRAGA; CARVALHO; LUDERMIR, 2000). Nas RNA tradicionais, como ocorrem nos modelos MLP, o fluxo de sinais é sempre em um único sentido, da camada de entrada para camada de saída. Existem algumas arquiteturas que implementam o fluxo de dados no sentido reverso, ou seja, a saída da rede é realimentada na entrada até alcançar a estabilidade da rede. As redes de Hopfield implementam esta arquitetura, como pode ser observado na Figura 2.4 a seguir: 37 Figura 2.4 - Rede de Hopfield. FONTE - ALMEIDA, 2003. Unidade III, p. 2. Segundo Braga, Carvalho e Ludermir (2000), essa arquitetura é um modelo matricial não-linear recorrente, ou seja, as saídas estão ligadas as entrada por um atraso de tempo. Essa recorrência implica ao modelo que a resposta da rede sempre depende do seu estado no intervalo de tempo anterior. É importante notar que nessa arquitetura não existe auto-realimentação, ou seja, a saída de um neurônio não é aplicada em sua entrada. A dinâmica de uma rede de Hopfield é definida através da seguinte equação: ⎛ n ⎞ x i( t +1 ) = φ⎜ ∑ Wij x i( t ) + θ j ⎟, j = 1,..., n , ⎝ i =1 ⎠ (2.9) onde W é a matriz de pesos simétrica e Wii = 0, para todo i (não existem autorealimentações), xi(t) o estado do neurônio i no instante de tempo t, θ é o vetor limiar de ativação dos neurônios, e a função de ativação φ(x) definida pela expressão: ⎧− 1, se x < 0 ⎪ φ( x ) = ⎨ x se x = 0 ⎪+ 1, se x > 0 ⎩ (2.10) 38 Como pode ser observada na equação 2.9, a evolução de uma rede de Hopfield é feita de forma assíncrona, ou seja, as saídas dos neurônios são calculadas em instantes de tempo distintos. A estabilidade da rede de Hopfield ocorre quando, aplicada a equação 2.9 a um vetor de estado arbitrário x, tem-se x(t+1) = x(t). As redes de Hopfield podem ser utilizadas para armazenamento e recuperação de informações, onde a matriz de pesos pode ser obtida através da seguinte equação: p W = ∑ x i x it − pI n , (2.11) i =1 onde p é o número de padrões (estados) a serem armazenados na rede, xi e xit os vetores de estados e suas respectivas transpostas, e In Є Rnxn é a matriz identidade. Conforme o trabalho original de Hopfield (Hopfield, 1982), associa-se, a cada estado da rede, um valor de energia para os mesmos. Este valor decresce à medida que os estados da rede são obtidos através da função de atualização. Para problemas relativos à memória associativa, a função de energia da rede pode ser obtida por: 1⎛ n E = − ⎜⎜ ∑ 2 ⎝ i =1 n ∑W j =1 ij ⎞ x i x j ⎟⎟ , ⎠ (2.12) onde n é o número de neurônios e Wij é o ij-ésimo elemento de W. 2.3.2 Redes Generalized-Brain-State-in-a-Box e Brain-State-in-a-Box A arquitetura de estado-cerebral-em-uma-caixa (Brain-State-in-a-box) foi descrita por Anderson (1995). Ela consiste de um conjunto de neurônios altamente interligados que realimentam a si próprios, diferentemente das redes de Hopfield. As unidades da rede BSB podem assumir valores de ativação contínuos, dentro do intervalo [-1, 1]. 39 Dada uma matriz de pesos simétrica nxn, onde n é o número de neurônios da rede, cujos maiores autovalores têm suas componentes reais positivas, e considerando x(0) o vetor de estado inicial e β é uma constante positiva chamada de fator de realimentação, a equação de atualização dos estados, que é feita de forma síncrona, ou seja, as saídas dos neurônios são calculadas no mesmo instante de tempo, é dada por (ANDERSON, 1995): x ( t +1 ) = φ (x ( t ) + βWx ( t ) ). ⎧+ 1, ⎪ φ( θ ) = ⎨θ , ⎪− 1, ⎩ (2.13) se θ > 1 se − 1 ≤ θ ≤ 1 (2.14) se θ < −1 A função de ativação φ(θ) opera sobre valores contínuos entre -1 e 1, conforme a Figura 2.5(a). Desta maneira, a rede pode ser vista como um vetor de ativações dentro de um hipercubo. Através das atualizações síncronas (ou seja, todas as unidades têm suas ativações calculadas e só depois disso atualizadas) contínuas, o vetor navega dentro deste hipercubo até atingir um de seus vértices (BRAZ, 1998), como pode ser observado na Figura 2.5(b): 40 (-1, 1, 1) (1, 1, 1) T (-1, 1, -1) 1 (1, 1, -1) v (-1, -1, 1) (1, -1, 1) -1 (-1, -1, -1) (a) (1, -1, -1) (b) Figura 2.5 - (a) Função de ativação da rede BSB, com valores contínuos entre -1 e 1 e truncados neste limite, e (b) visualização da mudança dos estados de ativação da rede até o equilíbio em um dos vértices do hipercubo formado pelos limites -1 e 1 das ativações. FONTE - BRAZ, 1998. p. 20. O algoritmo da rede BSB minimiza a função de energia definida pela equação: E( x ) = − β t x Wx , para − 1 ≤ x i ≤ 1. 2 (2.15) A matriz de pesos W deve satisfazer as seguintes condições: • A matriz de pesos W é simétrica: W =W t. • (2.16) A matriz de pesos W é dominantemente diagonal, isto é W jj ≥ ∑ W ij i≠ j onde Wij é o ij-ésimo elemento de W. para j =1, 2 ,K, n , (2.17) 41 • A matriz de pesos W é positivamente semidefinida, isto é, em termos de autovalores de W, tem-se λmin ≥ 0 , (2.18) onde λmin é o menor autovalor da matriz de pesos W. Portanto, a função de energia E da rede BSB decresce com o aumento do número de iterações, isto sempre que o estado x(t+1) for diferente de x(t). Os pontos mínimos da função de energia E definem os estados de equilíbrio da rede, caracterizados por x ( t +1 ) = x ( t ) . (2.19) Segundo Haykin (2001), um estado de equilíbrio x é estável, ou seja, para um vértice do hipercubo unitário ser um atrator pontual fixo, deve haver uma bacia de atração N(x) no hipercubo unitário tal que para todos os vetores de estado iniciais x(0) em N(x) o modelo BSB converge para x. Além disso, para que todo vértice do hipercubo unitário seja um atrator pontual fixo, a matriz de pesos W deve satisfazer a condição: • A matriz de pesos W é fortemente dominantemente diagonal, isto é W jj ≥ ∑ Wij +α para j =1, 2 ,K , n , i≠ j (2.20) onde α é uma constante positiva. As redes BSB são um caso particular do modelo Generalized-Brain-State-in-a-Box (GBSB). Segundo Lillo et al. (1994), a dinâmica do modelo GBSB é definida por: ( ) x ( t +1 ) = g (I n + βW )x ( t ) + βb , (2.21) 42 onde In Є Rnxn é a matriz identidade, b Є Rn é o vetor bias (limiar de ativação do neurônio) da rede e a matriz de pesos W Є Rnxn não é necessariamente simétrica. Pode-se notar que, no modelo BSB, a matriz de pesos W é simétrica e b=0. A função de energia no modelo GBSB é definida por E( x ) = − 1⎡n 2 n ⎢∑ x i + ∑ 2 ⎣ i =1 i =1 ⎤ n x x W β + ∑ βbi x i , ∑ ij ⎥ i j j =1 ⎦ i =1 n (2.22) onde x = [xi,...,xn] é um vetor de valor real, Wij é ij-ésimo elemento de W e bi é o iésimo elemento de b. 2.4 APRENDIZADO EM REDES NEURAIS ARTIFICIAIS A propriedade que é de importância primordial para uma rede neural é a sua habilidade de aprender a partir de seu ambiente e melhorar o seu desempenho através da aprendizagem (HAYKIN, 2001). O aprendizado, ou projeto de uma RNA, se dá através do processo de ajuste de seus pesos. Este processo ocorre quando a rede neural é estimulada por seu ambiente, passando então por alterações em seus parâmetros e respondendo de maneira diferente ao ambiente, já que ocorreram modificações em sua estrutura interna. 2.4.1 Aprendizado Hebbiano A regra de aprendizado de Hebb propõe que o peso de uma conexão sináptica deve ser ajustado se houver sincronismo entre os “níveis de atividade” das entradas e saídas (BRAGA; CARVALHO; LUDERMIR, 2000). Segundo Barreto (2002), a lei de Hebb diz: Ajuste a intensidade da conexão entre os neurônios A e B de uma quantidade proporcional ao valor da ativação simultânea 43 dos dois neurônios. Se no entanto A tenta excitar B e não consegue, a conexão é enfraquecida. Quando dois neurônios de lados distintos da sinapse são ativados sincronicamente, ocorrerá um fortalecimento desta sinapse. Entretanto, se os neurônios são ativados assincronamente, a sinapse é enfraquecida ou mesmo eliminada. A sinapse hebbiana possui algumas características como (BRAGA; CARVALHO; LUDERMIR, 2000): a) Mecanismo interativo: qualquer alteração em uma sinapse hebbiana depende de ambos os lados da sinapse, isto é, a interação entre as atividades pré e pós-sinápticas; b) Mecanismo Local: a sinapse hebbiana é uma transmissão com sinais contínuos, produzindo modificações locais; c) Mecanismo dependente do tempo: qualquer alteração na sinapse hebbiana depende diretamente do momento em que ocorrem as atividades pré e póssinapticas. d) Mecanismo correlacional ou conjuncional: as mudanças em uma sinapse hebbiana podem ser causadas através das correlações entre as atividades pré e pós-sinápticas e, ainda, a ocorrência conjunta destas atividades também ocasionam alterações nesta sinapse. A expressão matemática que representa a lei de Hebb é: ΔW ij = nx i o j , onde, (2.23) 44 • Wij = intensidade da conexão entre os neurônios i e j; • ∆Wij = acréscimo da intensidade da conexão entre os neurônios i e j; • n = constante positiva que define a taxa de aprendizado; • xi = estado de ativação do neurônio i; • oj = saída do neurônio j. 2.5 MEMÓRIA A memória nos seres vivos se dá através da interação dos mesmos com o meio ambiente, atuando como ponto de partida para definir o comportamento futuro dos organismos. Para a memória começar a ser utilizada, um padrão de entrada deve ser armazenado através do processo de aprendizagem. Este padrão armazenado pode então ser recuperado para ser utilizado pelo organismo, sempre que necessário. Existem dois tipos de memória segundo o tempo de retenção (HAYKIN, 2001): a) Memória de curto prazo: conhecimento armazenado por um curto intervalo de tempo, representando o estado atual do ambiente; b) Memória de longo prazo: conhecimento armazenado por um longo, ou permanente, espaço de tempo. Segundo Haykin (2001), existem algumas características relevantes para a memória: • A memória é distribuída, ou seja, as atividades de diferentes neurônios ocorrem simultaneamente ou quase simultâneas, dependendo de estímulos internos e externos, transformando padrões de entrada em outros padrões de saída; 45 • Os padrões de estímulo, também chamados de chave, bem como os padrões de resposta, armazenados, de uma memória associativa, tratam-se de vetores de dados; • Uma informação é armazenada na memória através de atividades que ocorrem nos neurônios; • A informação contida em um estímulo possui o endereço de armazenamento e recuperação desta; • A memória possui resistência a ruídos e a falhas; • Os padrões armazenados podem interagir entre si, já que a memória não é suficientemente grande para isolá-los entre si, podendo, portanto, ocorrer erros no processo de recuperação das informações. 2.5.1 Associação de Padrões Uma das tarefas básicas do processo de aprendizagem é a associação de padrões. Uma memória associativa é uma memória distribuída inspirada no cérebro, que aprende por associações (HAYKIN, 2001). O processo de associação é descrito por: x → y. (2.24) Onde x representa o padrão de entrada da rede e y o padrão armazenado. Logo, dada um padrão de entrada x, a rede tenta associá-lo com o padrão armazenado y e tenta recuperá-lo. Um exemplo prático de aplicação de memórias associativas pode ser observado em (COLLEN apud CORREA, 2004). Suponha um modelo de Hopfield, trabalhando como uma memória associativa, para armazenamento de imagens binárias. O 46 sistema possui n = 841 neurônios e m = 10 padrões armazenados, apresentados na Figura 2.6: Figura 2.6 - Exemplo de padrões armazenados. FONTE – COOLEN3 apud CORRÊA, 2004. p. 49. Conforme o autor mostra, apresentando-se como condição inicial do sistema uma versão corrompida com ruído do 10 padrão da Figura 2.6, a evolução do estado da rede produz a recuperação do padrão original em quatro iterações (Figura 2.7). Figura 2.7 - Exemplo de recuperação de padrão com ruído. FONTE – COOLEN3 apud CORRÊA, 2004. p. 49. Segundo Lillo et al. (1994), as características de uma RNA para memórias associativas são: • Cada padrão é armazenado como um ponto de equilíbrio assintoticamente estável no sistema; • O número de pontos de equilíbrio assintoticamente estáveis da rede que não correspondem aos padrões armazenados (estados espúrios) é mínimo; __________________________ 3 COOLEN, A. C. C. Concepts for neural networks – a survey. In: Landau, L; Taylor, J. A beginner’s guide to the mathematics of neural networks. Springer, 1998, p. 13-70. 47 • Uma estrutura de interconexão não-simétrica facilita a implementação das RNA; • A habilidade em controlar a bacia de atração do ponto de equilíbrio corresponde a cada padrão armazenado; • Capacidade de adicionar padrões (learning) para serem armazenados como pontos de equilíbrio assintoticamente estáveis ao conjunto padrões existentes, sem afetar o equilíbrio existente na rede; • Capacidade de remover padrões (forgetting) do conjunto padrões existentes armazenados como pontos de equilíbrio assintoticamente estáveis, sem afetar o equilíbrio existente na rede. De acordo com Hui e Zak (1992), o modelo BSB pode ser usado para implementação de memórias associativas, onde cada padrão armazenado é um ponto de equilíbrio assintoticamente estável, conforme equação 2.13. No entanto, existem algumas dificuldades na implementação de memórias associativas utilizando-se redes neurais: 1. Controlar a extensão das bacias de atração de cada padrão armazenado; 2. Minimizar o número de pontos de equilíbrio assintoticamente estáveis na rede que não foram armazenados com o vetor de padrões. Isto significa diminuir o número de padrões espúrios, ou seja, padrões não apresentados durante o aprendizado, mas que, uma vez atingidos, mostram-se estáveis. Isto ocorre em função do grau de dependência entre os padrões apresentados com outros padrões existentes (BRAZ, 1998). A utilização de uma RNA para armazenamento de padrões, ou seja, implementação de uma memória associativa, pode ser feita através do aprendizado Hebbiano que, nesse caso, é realizado da seguinte forma: 48 p W = ∑ x i x it , (2.25) i =1 onde W é a matriz de pesos, p é o número de padrões que se deseja armazenar na memória e xi Є Rnx1 o padrão a ser armazenado. Uma outra forma de aprendizado é: p W = ∑ x i x iτ , (2.26) i =1 onde x iτ é a pseudo-inversa do vetor xi , dada por: x τ = ( x t x ) −1 x t . (2.27) Segundo Lillo et al. (1994), a matriz W para memórias associativas, utilizando-se redes GBSB, pode ser obtida através da equação: W = ( DV − B )V τ + Λ( I n − VV τ ), (2.28) onde V = [v1, …, vr] Є Rnxr é a matriz de r padrões a serem armazenados contendo n neurônios cada, V τ é a pseudo-inversa de V, B = [b, ...,b] Є Rnxr é a matriz que consiste do vetor coluna b (bias) repetido r vezes, In Є Rnxn é a matriz identidade, D Є Rnxn é uma matriz fortemente dominante diagonal e Λ Є Rnxn. Para a escolha de D, b e Λ, deve-se: • Selecionar uma matriz fortemente dominante diagonal D Є Rnxn; • Selecionar os componentes do vetor b da seguinte forma: n Dii < ∑ Dij + bi , i = 1,K , n , j =1 j ≠i e (2.29) 49 n b = ∑ ε i v i , ε i > 0 , i = 1,K , n. (2.30) i =1 • Selecionar os componentes da matriz Λ segundo: n Λii < −∑ Λij − bi , i = 1,K , n. (2.31) j =1 j ≠i As demonstrações das equações acima relacionadas podem ser obtidas em (Lillo et al.,1994). Nas seções 2.5.2 e 2.5.3 serão apresentadas, em mais detalhes, duas características das RNA para memórias associativas: learning e forgetting. As demonstrações dos teoremas a serem apresentados nestas seções não são abordadas nesse trabalho, tendo em vista que o objetivo desse é apenas apresentar as técnicas e desenvolver os componentes capazes de implementar as mesmas. Maiores detalhes podem ser encontrados em Zak, Lillo e Hui (1996). Exemplos de aplicações das técnicas serão apresentados no Capítulo 4, com a utilização dos componentes desenvolvidos. 2.5.2 Learning Learning é a capacidade de uma RNA de adicionar novos padrões para serem armazenados como pontos de equilíbrio assintoticamente estáveis ao conjunto padrões existentes. Este processo de aprendizado deve ser possível sem afetar o equilíbrio do sistema como um todo. Zak, Lillo e Hui (1996) propõem um aprendizado iterativo, onde o teorema que será descrito a seguir permite iterativamente computar a pseudo-inversa de uma matriz. Teorema 3: Dado U Є Rnx(r+1) uma matriz particionada retirando-se sua última coluna tal que 50 U = [V M y ], (2.32) k = V τ y. (2.33) u = (I n − VV τ )y . (2.34) e ⎧u τ ⎪ z = ⎨ k tV τ ⎪ ⎩1 + k t k se u i ≠ 0 para todo i . se u i = 0 para todo i . (2.35) onde V τ é a pseudo-inversa de V . Então, ⎡V τ − kz ⎤ Uτ = ⎢ ⎥. ⎣ z ⎦ (2.36) Aprender novos padrões requer atualizar a matriz de pesos W. Para isto, é necessário aumentar as matrizes V e B, e recalcular a pseudo-inversa de V, através do teorema acima. Esse procedimento garante que novos padrões sejam armazenados como pontos de equilíbrio assintoticamente estáveis. 2.5.3 Forgetting Forgetting é a capacidade que uma RNA possui de remover padrões do conjunto padrões existentes armazenados como pontos de equilíbrio assintoticamente estáveis, sem afetar o equilíbrio existente na rede. Zak, Lillo e Hui (1996) discutem um método para atualizar a matriz de pesos, onde se pretende remover padrões específicos da memória. Este método é descrito pelo teorema a seguir: Teorema 4: Dado U Є Rnx(r+1) uma matriz particionada retirando-se sua última coluna tal que: 51 U = [V M y ], (2.37) e dada a pseudo-inversa U Є Rnx(r+1) uma matriz particionada retirando-se sua última coluna tal que: ⎡S ⎤ Uτ = ⎢ ⎥. ⎣z ⎦ (2.38) Então, yz ⎧ ⎪S + S 1 − zy V =⎨ ⎪S − Sz τ z ⎩ τ se zy ≠ 1 (2.39) se zy = 1. onde V τ é a pseudo-inversa de V . 2.6 REDES NEURAIS ARTIFICIAIS ACOPLADAS Esta seção visa apresentar informações relativas ao acoplamento de RNA, abordando alguns autores que tratam desse assunto e desenvolvem trabalhos na área. 2.6.1 Redes de Redes Neurais Artificiais A arquitetura Network of Networks (NoN), que será apresentada aqui como Redes de Redes, foi desenvolvida por Sutton, Anderson e colaboradores consiste em um modelo baseado em sistemas distribuídos aninhados (GUAN; ANDERSON; SUTTON, 1997). Nesse modelo, supõe-se que o elemento computacional básico, como no cérebro, não é o neurônio, mas sim uma pequena rede de neurônios (ANDERSON, 2003 b), chamada de módulo. Dito de outro modo, a arquitetura de redes de redes é baseada na suposição de que as unidades elementares computacionais no sistema nervoso não são unidades simples (neurônios artificiais) 52 como nas tradicionais RNA, mas módulos compostos de muitas unidades interconectadas (ANDERSON, 2003 a). O modelo de redes de redes tem sido testado amplamente em simulação computacional, mas é muito difícil testar experimentalmente porque ele trabalha em uma escala quase inacessível da organização do sistema nervoso (ANDERSON, 2003 a). Esta pequena rede, composta entre 103 e 104 neurônios, são sistemas não-lineares dinâmicos e seu comportamento é determinado pelos seus estados atratores. Os atratores são os estados que representam os estados de equilíbrio de um sistema dinâmico. Um estado em um módulo interfere no estado em um módulo adjacente devido à influência dos pesos das atividades nos estados atratores. Os módulos têm uma região linear, onde entradas de diferentes módulos são adicionadas linearmente formando uma superposição de estados atratores, e uma região não-linear, onde o módulo escolhe um estado atrator do conjunto de atratores (ANDERSON, 2003 a). A soma dos potenciais atratores iniciais formam um único atrator final, como mostra a Figura 2.8: Figura 2.8 - Módulo da Rede de Redes. FONTE – ADAPTADO DE ANDERSON, 2003 b. p. 2. As interações modulares básicas são similares às das unidades da RNA, exceto os pesos escalares das conexões que são substituídos pelos estados da matriz de interação. Devido aos atratores serem derivados de respostas dos neurônios, é possível unir o processamento básico do neurônio com atratores dinâmicos. Na arquitetura de Redes de Redes, os neurônios, também chamados de unidades computacionais, dão forma às redes distribuídas, onde elas mesmas se interconectam para formar redes maiores. Os módulos são interconectados com 53 outros módulos, repetidamente em uma estrutura que pode ser regular, como mostra a Figura 2.9: Figura 2.9 - Arquitetura Modular de Rede de Redes. FONTE - ANDERSON, 2003 a. p.180. Uma melhor representação da arquitetura NoN pode ser observada na Figura 2.10, que mostra sete redes com conexões representativas entre os vizinhos mais próximos: Figura 2.10 - Arquitetura Redes de Redes para sete redes. FONTE – GUAN; ANDERSON; SUTTON, 1997. p.171. 54 Cada neurônio da rede mantém sua individualidade, enquanto as redes se aglomeram para dar forma a redes sucessivamente maiores. Os neurônios comportam-se como elementos em um vetor, em contraste a redes multiníveis, que mapeiam a atividade da rede em um escalar e então avaliam a média dos escalares para mapear o próximo nível da rede, e assim por diante. A formação dos grupos e dos níveis entre neurônios é baseada em suas interconexões. Os neurônios são entidades heterogêneas com complexas conexões e propriedades computacionais. Em geral, os neurônios dentro de um grupo são conectados mais densamente que neurônios entre diferentes grupos. A conectividade total entre os neurônios é escassa, mas a conectividade funcional entre grupos possui uma dinâmica rica, devido à atividade temporária de correlação entre os neurônios (GUAN; ANDERSON; SUTTON, 1997). A arquitetura de Redes de Redes apresentada aqui pode colaborar na construção de aplicações cujo objetivo seja implementação e interconexão de RNA. 2.6.2 Arquitetura de RNA Dinâmicas Acopladas Um modelo para representação de RNA dinâmicas acopladas foi proposta por Gomes (2005). Essa arquitetura, baseada na Teoria de Seleção dos Grupos Neurais (do inglês, TNGS) apresentada na seção 1.2, propõe o acoplamento de redes GBSB, onde cada RNA individual representa um grupo neuronal (memória de primeiro nível) e a rede acoplada como um todo representaria um agrupamento de grupos neuronais, ou seja, um mapa local, produzindo um segundo nível de memória. Os níveis hierárquicos de memória podem ir surgindo com o acoplamento de novas RNA, onde cada parte irá emergir novos comportamentos (GOMES, 2005). Segundo Gomes (2005), o modelo GBSB pode ser acoplado, permitindo uma coevolução do sistema como um todo, como pode ser visto na Figura 2.11: 55 Figura 2.11 - Rede GBSB acoplada. FONTE - GOMES, 2005. p. 66. O acoplamento forma uma estrutura onde as redes não apresentam entrada e saída, e os resultados da rede como um todo são estados dos sistemas individuais, ao longo da evolução do sistema dinâmico. Um exemplo de modelo GBSB acoplado, apresentado inicialmente por Gomes (2005), pode ser visto na Figura 2.12: Figura 2.12 - Esquema de redes. FONTE - GOMES, 2005. p. 67. 56 Nesse exemplo, os grupos neurais A, B e C seriam as redes GBSB individuais. Essas redes são interligadas através de uma matriz de pesos Wcor, formando um mapa local. O modelo GBSB acoplado é uma rede neural não-linear, autoassociativa, de minimização de energia que pode ser definido pelas equações (GOMES, 2005): nr ⎛ ⎞ x a( t +1 ) = φ⎜⎜ (I n + βaW a )x a( t ) + βa ba + γ ∑ W cor ( a ,b ) x b( t ) ⎟⎟ , b =1 ,b ≠ a ⎝ ⎠ (2.40) sendo que I Є Rnx1 é a matriz identidade, βa é uma constante positiva chamada de fator de realimentação das redes individuais, xa(t) Є Rnx1 é o vetor que representa o estado do modelo no tempo t, Wa Є Rnxn é a matriz de pesos das redes individuais, ba Є Rnx1 é o vetor que representa o bias das redes individuais, γ representa a força das sinapses entre os grupos neurais, nr é o número de redes GBSB individuais, Wcor(a,b) Є Rnxn é a matriz de pesos de correlação entre as redes acopladas e xb(t) Є Rnx1 é o vetor que representa o estado do modelo no tempo t da rede acoplada. A função de ativação φ é definida por: ( x a( t +1 ) = φ y a( t ) ( φ y a( t ) ) ) ⎧+ 1, se y a( t ) > +1 ⎪ = ⎨y a( t ) , se − 1 ≤ y a( t ) ≤ 1 ⎪ (t ) ⎩− 1, se y a ≤ −1 (2.41) (2.42) O modelo GBSB acoplado apresentado na equação 2.40 é analisado utilizando-se a seguinte função de energia (GOMES, 2005): na na nb nr ⎤ na 1 ⎡ na E = − ⎢∑x(2i ,a) + ∑β(i ,a)W(i ,a)( j ,a)x(i ,a)x( j ,a) ⎥ −∑β(i ,a)b(i ,a)x(i ,a) − ∑ ∑ ∑γ(i ,a)( j ,b)Wcorr(i ,a)( j ,b)x(i ,a)x( j ,b) , (2.43) 2 ⎣i ,j =1 i , j =1 b=1, b≠a i =1 j =1 ⎦ i =1 57 sendo que nr é o número de redes GBSB individuais, na é o número de neurônios existentes em cada uma das redes GBSB, nq é o número de neurônios de uma rede b interconectados a uma rede a, β(i,a) é uma constante positiva chamada de fator de realimentação de cada neurônio da rede individual, x(i,a) é o estado dos neurônios de cada uma das redes ou grupo no tempo t, W(i,a)(j,a) é o peso sináptico existente entre os neurônios da própria rede, b(i,a) é o bias de cada um dos neurônios pertencentes a uma determinada rede, Wcorr(i,a)(j,b) é o peso de correlação existente entre o neurônio i de uma rede a e o neurônio i de uma rede b, x(j,b) é o estado de cada um dos neurônios interconectados das outras redes no instante t e γ(i,a)(j,b) representa a força ou densidade das sinapses entre as redes. O teorema seguinte, apresentado e demonstrado por Gomes (2005), mostra que a função de energia, indicada em 2.43, é minimizada, e que o algoritmo generalizado do GBSB acoplado convergirá a um conjunto de pontos de equilíbrio do sistema. Teorema 5: Considere um algoritmo GBSB da forma de 2.40, com a função de energia E(xi) da forma 2.43. Considere λmin ser o menor autovalor de W. Se qualquer λ min ≥ 0 ou β < ( ) 1 λ min ( , onde λmin é o menor autovalor negativo de W, então: ) 1. E x i( t +1 ) < E x i( t ) para todo k tal que x i( t +1 ) ≠ x i( t ) ; 2. Todas as trajetórias do algoritmo GBSB convergem ao maior conjunto de pontos de equilíbrio do sistema. Com relação à estabilidade do modelo GBSB acoplado, toma-se como foi apresentado em (ZAK; LILLO; HUI, 1996) e demonstrado em (LILLO et al., 1994): Dado que L(x ) = (I n + βW )x + βb , (2.44) 58 e T ( x ) = g (L( x )) , (2.45) onde L(x) é a equação para cálculo dos estados da rede GBSB e g a função de ativação conforme apresentada em 2.14. Um vértice v é um ponto de equilíbrio se (L(v ))i v i ≥ 1, i = 1, 2 ,K , n. (2.46) Que é equivalente a dizer que o vértice v não é um ponto de equilíbrio se (L(v ))i v i < 1, para a lg um i = 1, 2 ,K , n. (2.47) > 1, (2.48) E é assintoticamente estável se (L(v ))i v i i = 1, 2 ,K , n. O mesmo agora pode ser aplicado para equação 2.40 do modelo GBSB acoplado. A demonstração é apresentada em Gomes (2005). O acoplamento da arquitetura de Hopfield, similar ao modelo GBSB acoplado, é proposto neste trabalho, onde a dinâmica das redes é dada por: nr ⎛ n ⎞ x a( t +1 ) = net ⎜⎜ ∑ W ij x (( it,)a ) + θ( j ,a ) + γ ∑ W cor ( i ,a )( j ,b ) x (( tj ,)b ) ⎟⎟, j = 1,..., n , (2.49) b =1, b ≠ a ⎝ i =1 ⎠ onde xa(t) Є Rnx1 é o vetor que representa o estado do neurônio do modelo no tempo t, W Є Rnxn é a matriz de pesos das redes individuais, θ é o vetor de limiar de ativação dos neurônios, γ representa a força das sinapses entre os grupos neurais, Wcor(a,b) Є Rnxn é a matriz de pesos de correlação entre as redes acopladas e xb(t) Є Rnx1 é o vetor que representa o estado do neurônio do modelo no tempo t da rede acoplada. A função net(x) é similar à apresentada em 2.10. 59 2.7 CONSIDERAÇÕES FINAIS Neste capítulo foi apresentada uma breve descrição dos sistemas dinâmicos, como forma de introduzir a teoria das RNA dinâmicas vistas. O estudo sobre memórias associativas serviu como base para o desenvolvimento dos componentes propostos neste, onde foi definido que será a área de aplicação dos mesmos. Além disso, não são vastos os trabalhos sobre acoplamento de RNA, mas o que foi descrito até o momento foi suficiente para o desenvolvimento das idéias e implementação dos componentes. 60 3 COMPONENTES DE SOFTWARE PARA GERAÇÃO DE REDES NEURAIS ARTIFICIAIS ACOPLADAS Neste capítulo serão apresentados os componentes de software desenvolvidos para treinamento, execução, teste e acoplamento de RNA. Os componentes de acoplamento foram desenvolvidos baseados nas teorias da TNGS, seguindo-se as idéias das Redes de Redes apresentadas na seção 2.6.1 e implementada arquitetura de RNA dinâmicas acopladas vista na seção 2.6.2. Na seção 3.1 apresenta-se uma breve introdução ao capítulo, mostrando as características dos componentes modelados. A modelagem é vista na seção 3.2, onde são abordadas algumas visões4 da UML. Por fim, na seção 3.3 são feitas as considerações finais. 3.1 INTRODUÇÃO O estudo apresentado até o presente momento serviu como base para a implementação dos componentes de software a serem mostrados nesse capitulo. Os componentes desenvolvidos auxiliam na construção de aplicações de memória associativa, foco tomado no trabalho. Esses componentes apresentam as seguintes funções: • Projeto (aprendizado) de RNA para funcionamento como memórias associativas, conforme as equações 2.25, 2.26 e 2.28; • Execução de redes de Hopfield, BSB e GBSB, conforme as dinâmicas apresentadas pelas equações 2.9, 2.13 e 2.21, respectivamente; __________________________ 4 As visões da UML são representadas por diagramas que mostram a estática e a dinâmica de um sistema computacional. 61 • Cálculo da função de energia para os estados das redes; • Análise de convergência de redes de Hopfield, BSB e GBSB. Neste componente, dado um número n de neurônios e uma matriz de padrões armazenados, é realizada uma análise de convergência para um dos padrões existentes na memória, executando-se a rede com todos os possíveis estados iniciais da mesma; • Learning, como apresentado na seção 2.5.2; • Forgetting, como apresentado na seção 2.5.3; • Acoplamento de redes Hopfield, BSB e GBSB, como apresentado na seção 2.6.2. As características básicas dos componentes desenvolvidos são: • Interface de grande usabilidade devido à facilidade de interação com o usuário proporcionada pela mesma; • Integração de diversas funções de RNA e RNA acopladas em uma única ferramenta; • Leitura e geração de arquivos de matrizes do tipo texto, que podem ser processados por qualquer editor de texto; • Os componentes de análise podem ser úteis para obter dados estatísticos de convergência da rede que atuam como fonte para estudo das bacias de atração; • Compatibilidade com a arquitetura ARTÍFICE versão 0.6.0. 62 3.2 MODELAGEM DOS COMPONENTES Nessa seção será mostrada a modelagem UML do projeto ARTÍFICE, apresentandose as classes que foram estendidas neste trabalho na seção 3.2.1. Em seguida, na seção 3.2.2, será apresentada a visão de use-case dos componentes de software desenvolvidos. 3.2.1 Visão Lógica do Projeto ARTÍFICE A visão lógica descreve como a funcionalidade do sistema é implementada. Nessa visão, pretende-se mostrar o sistema internamente, especificando a estrutura estática do mesmo (classes e relacionamentos), através do diagrama de classes. Além disso, a visão lógica mostra as colaborações dinâmicas quando os objetos enviam mensagens uns para os outros para realizarem as funções do sistema, através dos diagramas de interação. Em uma visão geral do projeto ARTÍFICE proposta por Pires (2005), a arquitetura foi dividida, logicamente, em pacotes. O pacote onde a arquitetura se encontra é denominado br.cefetmg.lsi.artifice. Nesse pacote encontram-se as classes, interfaces e outros pacotes relativos à arquitetura. O pacote core, interno ao pacote artifice, compreende o núcleo da arquitetura. Nele estão inseridas as classes CSSA, ArtificialWorld e os pacotes que se fizeram necessário para auxiliar a organização. O ASCS foi dividido em pacotes de modo a agrupar suas partes relacionadas. Assim, foram constituídos pacotes para cada sistema interno do agente: sistema nervoso, sistema periférico e sistema auxiliar. Uma apresentação simplificada da arquitetura pode ser observada na Figura 3.1. Maiores detalhes podem ser obtidos em (PIRES, 2005) e o modelo geral no Anexo A. 63 Figura 3.1 – Organização em pacotes do projeto ARTÍFICE-0.6.0. A classe CSSA constitui o agente de software cognitivo situado da arquitetura. O sistema nervoso do agente é composto de vários componentes representados pelas classes do pacote cssaNervousSystem. O sistema periférico representa as partes do ASCS que estarão em contato direto com o meio, ou seja, as partes que o possibilitarão estimular o ambiente e aquelas que poderão ser estimuladas pelo meio. Esse sistema é representado pelas classes do pacote cssaPeripheralSystem. O sistema auxiliar (pacote cssaAuxiliarySystem) possuirá componentes que auxiliarão a evolução da estrutura do agente. A hierarquia de estímulos foi organizada em um pacote denominado stimuli, que permite a troca de estímulos tanto entre os componentes do agente quanto entre este e o ambiente. O foco deste trabalho está na implementação de um tipo de estrutura, as RNA, que compõe o sistema nervoso. Nesse contexto, foram adicionados ao cssaNervousSystem os pacotes annStructure que contém as classes para criação, aprendizado e evolução das RNA, e annTools que representam as classes auxiliares dessas estruturas, conforme mostra a Figura 3.2: 64 Figura 3.2 – Pacotes que foram acrescidos ao pacote cssaNervousSystem. Cada componente do sistema nervoso pode ser composto de estruturas (Structure), que por sua vez possuem uma dinâmica de evolução de estados (EvolutionLaws), conforme mostra a Figura 3.3 (os detalhes das demais classes podem ser obtidos em (PIRES, 2005)): Figura 3.3 - Componentes do sistema nervoso. FONTE – PIRES, 2005. p. 48. 65 O pacote annStructure é detalhado na Figura 3.4: Figura 3.4 - Pacote annStructure. 66 As estruturas do sistema nervoso do projeto ARTÍFICE foram estendidas com a classe ArtificialNeuralNetwork. Uma RNA pode ser projetada (ANNDesign) de acordo com as regras de Hebb (HopfieldHebbianDesign e GBSBHebbianDesign), pseudoinversa (PseudoInverseDesign) ou Lillo (LilloDesign). Ao ser projetada, segundo aplicações de memória associativa, padrões podem ser armazenados (Memory). Padrões armazenados na memória podem ser esquecidos (Forgetting) ou novos podem ser adicionados (Learning). A evolução das estruturas (EvolutionLaws) foi estendida para RNA e RNA acopladas em HopfieldEvolutionLaws e GBSBEvolutionLaws. Através da classe Stability é possível verificar se um estado, dentro da evolução de uma estrutura, é estável, instável ou espúrio. O pacote annTools mostrado na Figura 3.3 é detalhado na Figura 3.5 a seguir: Figura 3.5 – Pacote annTools. O pacote annTools contém classes auxiliares que podem ser utilizadas pelas estruturas de RNA. Esse pacote foi subdividido em cinco outros pacotes: 1. convergenceAnalysis: pacote de classes responsáveis pela análise de evolução das RNA; 67 2. energyAnalysis: pacote de classes responsáveis pela análise da função de energia dos estados das RNA; 3. annSetup: pacote de classes responsáveis pela configuração dos parâmetros da rede; 4. textFileHandler: pacote de classes responsáveis pela gravação e leitura de arquivos no formato txt; 5. mathematicalTools: pacote de classes responsáveis pela realização de operações matemáticas. 3.2.2 Visão Use-Case A visão use-case, ou visão de casos de uso, descreve a funcionalidade do sistema desempenhada pelos atores externos ao sistema, ou seja, os usuários. A Figura 3.6, a seguir, mostra o diagrama de casos de uso dos componentes desenvolvidos a partir dos requisitos levantados: Figura 3.6 - Diagrama de Casos de Uso. 68 As descrições dos casos de uso são feitas nos quadros a seguir, baseadas em Neto, Barcelos e Spínola (2004). Essas descrições mostram como ocorrem as interações entre o usuário e os componentes desenvolvidos. O primeiro caso de uso apresentado é o ANN Design, responsável por executar o projeto (aprendizado) da RNA, onde o usuário deve preencher os campos necessários e selecionar o tipo de projeto desejado. A rede é então projetada e padrões são armazenados à memória. A descrição do caso de uso ANN Design pode ser vista no Quadro 3.1: Nome do Caso de Uso Descrição Ator Envolvido Interação entre Ator e Sistema Exceções Propriedades dos Atributos ANN Design Caso de uso responsável pelo treinamento da rede. Usuário Ator Sistema O caso de uso é iniciado quando o usuário clica no menu Design, item Neural Network. O sistema apresenta uma tela com os campos Number of Neurons, Number of Patterns, Design Type, Patterns, W, D, B, Lambda e a tabela Patterns para preenchimento pelo usuário. O usuário preenche os campos e clica no botão Design. O sistema valida as informações preenchidas pelo usuário. (EX01) O sistema realiza o treinamento e envia uma mensagem para o usuário notificando a conclusão do processo, encerrando o caso de uso. Caso o sistema não consiga ler os arquivos texto, é enviada uma mensagem ao usuário EX01 notificando o erro. Atributo Domínio Acesso neuronsNumber int public patternsNumber int public trainningType int public fileNameP String public fileNameW String public fileNameD String public fileNameB String public fileNameL String public X Matrix public W Matrix public D Matrix public B Matrix public Lambda Matrix public Quadro 3.1 - Descrição do caso de uso ANN Design. 69 O caso de uso Execute ANN implementa a dinâmica, ou seja, a execução (cálculo dos estados ou evolução do sistema) das redes de Hopfield, BSB e GBSB. A partir de um estado inicial, definido pelo usuário, a dinâmica é aplicada e o estado final da rede é verificado através do caso de uso Check State, para definir se o mesmo é estável, instável ou espúrio. A descrição desse caso de uso para a arquitetura de Hopfield é mostrada no Quadro 3.2, e GBSB (e conseqüentemente BSB) é apresentada no Quadro 3.3. Nome do Caso de Uso Descrição Ator Envolvido Interação entre Ator e Sistema Exceções Propriedades dos Atributos Execute ANN - Hopfield Caso de uso responsável pela execução de uma rede de Hopfield. Usuário Ator Sistema O caso de uso é iniciado quando o usuário clica no menu Neural Network, Hopfield, Basic Test. O sistema apresenta uma tela com os campos Number of Neurons, Number of Patterns, Beta, Iterations, Matrix W, Matrix Pattern, Initial State e Teta para preenchimento pelo usuário. O usuário preenche os campos e clica no botão Execute. O sistema valida as informações preenchidas pelo usuário. (EX01) O sistema realiza o cálculo dos estados e apresenta as informações resultantes na tela, encerrando o caso de uso. Caso o sistema não consiga ler os arquivos texto, é enviada uma mensagem ao usuário EX01 notificando o erro. Atributo Domínio Acesso neuronsNumber int public patternsNumber int public iterationsNumber int public fileNameW String public fileNameP String public X Matrix public Teta Matrix public Pattern Matrix public W Matrix public Quadro 3.2 - Descrição do caso de uso Execute ANN - Hopfield. 70 Nome do Caso de Uso Descrição Ator Envolvido Interação entre Ator e Sistema Exceções Propriedades dos Atributos Execute ANN - GBSB/BSB Caso de uso responsável pela execução de uma rede GBSB. Usuário Ator Sistema O caso de uso é iniciado quando o usuário clica no menu Neural Network, GBSB, Basic Test. O sistema apresenta uma tela com os campos Number of Neurons, Number of Patterns, Beta, Iterations, Matrix W, Matrix Pattern e Initial State e Bias para preenchimento pelo usuário. O usuário preenche os campos e clica no botão Execute. O sistema valida as informações preenchidas pelo usuário. (EX01) O sistema realiza o cálculo dos estados e apresenta as informações resultantes na tela, encerrando o caso de uso. Caso o sistema não consiga ler os arquivos texto, é enviada uma mensagem ao usuário EX01 notificando o erro. Domínio Acesso Atributo int public neuronsNumber int public patternsNumber int public iterationsNumber double public beta String public fileNameW String public fileNameP Matrix public X Matrix public Pattern Matrix public W Matrix public Bias Quadro 3.3 - Descrição do caso de uso Execute ANN – GBSB/BSB. O caso de uso Analyse ANN faz uma análise de convergência da rede para estados estáveis, instáveis ou espúrios. A rede é inicializada com todos os possíveis pontos fixos e, para cada estado inicial, é aplicada a função que define a dinâmica da rede e é verificado o estado final através do caso de uso Check State. O caso de uso Analyse ANN é dividido em duas partes, referentes às redes implementadas, ou seja, Hopfield e GBSB/BSB, conforme Quadros 3.4 e 3.5: 71 Nome do Caso de Uso Descrição Ator Envolvido Interação entre Ator e Sistema Exceções Propriedades dos Atributos Analyze ANN - Hopfield Caso de uso responsável pela análise de uma rede de Hopfield. Usuário Ator Sistema O caso de uso é iniciado quando o usuário clica no menu Neural Network, Hopfield, Complete Test. O sistema apresenta uma tela com os campos Number of Neurons, Number of Patterns, Beta Iterations, W File, Pattern File e Teta para preenchimento pelo usuário. O usuário preenche os campos e clica no botão Analyze. O sistema valida as informações preenchidas pelo usuário. (EX01) O sistema realiza o cálculo dos estados e apresenta as informações resultantes na tela, encerrando o caso de uso. Caso o sistema não consiga ler os arquivos texto, é enviada uma mensagem ao usuário EX01 notificando o erro. Domínio Acesso Atributo int public neuronsNumber int public patternsNumber int public iterationsNumber String public fileNameW String public fileNameP Matrix public Teta Matrix public Pattern W Matrix public Quadro 3.4 - Descrição do caso de uso Analyse ANN - Hopfield. Nome do Caso de Uso Descrição Ator Envolvido Interação entre Ator e Sistema Exceções Propriedades dos Atributos Analyze ANN - GBSB/BSB Caso de uso responsável pela análise de uma rede GBSB. Usuário Ator Sistema O caso de uso é iniciado quando o usuário clica no menu Neural Network, GBSB, Complete Test. O sistema apresenta uma tela com os campos Number of Neurons, Number of Patterns, Beta Iterations, W File, Pattern File e Bias para preenchimento pelo usuário. O usuário preenche os campos e clica no botão Analyze. O sistema valida as informações preenchidas pelo usuário. (EX01) O sistema realiza o cálculo dos estados e apresenta as informações resultantes na tela, encerrando o caso de uso. Caso o sistema não consiga ler os arquivos texto, é enviada uma mensagem ao usuário EX01 notificando o erro. Atributo Domínio Acesso neuronsNumber int public patternsNumber int public iterationsNumber int public double public beta fileNameW String public fileNameP String public Pattern Matrix public W Matrix public Bias Matrix public Quadro 3.5 - Descrição do caso de uso Analyze ANN – GBSB/BSB. 72 O caso de uso Coupling ANN, responsável pelo acoplamento de redes GBSB, é descrito na Quadro 3.6: Nome do Caso de Uso Descrição Ator Envolvido Interação entre Ator e Sistema Exceções Propriedades dos Atributos Coupling ANN Caso de uso responsável pelo acoplamento de redes GBSB/BSB. Usuário Ator Sistema O caso de uso é iniciado quando o usuário clica no menu Coupling, Neural Networks. O sistema apresenta uma tela com os campos Number of Networks, Number of Global Patterns, Number of Neurons, Number of Patterns, Iterations, Number of Tests, Beta, Gama, Bias, Matrix W, Matrix Pattern, Matrix Points, Global Patterns, Initial State e Network para preenchimento pelo usuário. O usuário preenche os campos e clica no botão Execute. O sistema valida as informações preenchidas pelo usuário. (EX01) O sistema realiza o cálculo dos estados e apresenta as informações resultantes na tela, encerrando o caso de uso. Caso o sistema não consiga ler os arquivos texto, é enviada uma mensagem ao usuário EX01 notificando o erro. Atributo Domínio Acesso networksNumber int public globalPatternsNumber int public neuronsNumber int public patternsNumber int public iterationsNumber int public testsNumber int public beta double public gama double public Bias Matrix public fileNameW String public fileNameP String public fileNamePoints String public GlobalPatterns Matrix public XStates Matrix public net int public Quadro 3.6 - Descrição do caso de uso Coupling ANN. Os casos de uso Learning e Forgetting implementam os processos de learning e forgetting da rede, respectivamente. A cada execução de um desses processos, o caso de uso Update Memory é solicitado para a atualização memória da RNA, onde padrões são adicionados ou removidos da mesma. A descrição do caso de uso Learning é mostrada no Quadro 3.7, e do Forgetting no Quadro 3.8 a seguir: 73 Nome do Caso de Uso Descrição Ator Envolvido Interação entre Ator e Sistema Exceções Propriedades dos Atributos Learning Caso de uso responsável pelo learning de rede. Usuário Ator Sistema O caso de uso é iniciado quando o usuário clica no menu Memory, Learning. O sistema apresenta uma tela com os campos Number of Neurons,Number of Patterns, Save W As, New Pattern, Bias, Matrix Pattern, Matrix D e Matrix Lambda, para preenchimento pelo usuário. O usuário preenche os campos e clica no botão Execute. O sistema valida as informações preenchidas pelo usuário. (EX01) O sistema realiza o learning e envia uma mensagem para o usuário notificando a conclusão do processo, encerrando o caso Caso o sistema não consiga ler os arquivos texto, é enviada uma mensagem ao usuário EX01 notificando o erro. Atributo Domínio Acesso neuronsNumber int public patternsNumber int public fileNameW int public NewPattern Matrix public Bias Matrix public fileNameP String public fileNameD String public fileNameL String public Quadro 3.7 - Descrição do caso de uso Learning. Nome do Caso de Uso Descrição Ator Envolvido Interação entre Ator e Sistema Exceções Propriedades dos Atributos Forgetting Caso de uso responsável pelo learning de rede. Usuário Ator Sistema O caso de uso é iniciado quando o usuário clica no menu Memory, Forgetting. O sistema apresenta uma tela com os campos Number of Neurons,Number of Patterns, Save W As, Pattern to Forget, Bias, Matrix Pattern, Matrix D e Matrix Lambda, para preenchimento pelo usuário. O usuário preenche os campos e clica no botão Execute. O sistema valida as informações preenchidas pelo usuário. (EX01) O sistema realiza o learning e envia uma mensagem para o usuário notificando a conclusão do processo, encerrando o caso Caso o sistema não consiga ler os arquivos texto, é enviada uma mensagem ao usuário EX01 notificando o erro. Atributo Domínio Acesso neuronsNumber int public patternsNumber int public fileNameW int public NewPattern Matrix public Bias Matrix public fileNameP String public fileNameD String public fileNameL String public Quadro 3.8 - Descrição do caso de uso Forgetting. 74 Por fim, o caso de uso ViewFile, que possibilita a visualização de arquivos texto das redes, é descrito no Quadro 3.9: Nome do Caso de Uso Descrição Ator Envolvido Interação entre Ator e Sistema Exceções Propriedades dos Atributos View File Caso de uso responsável pela exibição de arquivos texto. Usuário Sistema Ator O caso de uso é iniciado quando o usuário clica no menu Tools, View Files. O sistema apresenta uma tela com os campos Number of Neurons e File para preenchimento pelo usuário. O usuário preenche os campos e clica no botão View. O sistema valida as informações preenchidas pelo usuário. (EX01) O sistema exibe o conteúdo do arquivo numa tela, encerrando o caso de uso. Caso o sistema não consiga ler os arquivos texto, é enviada uma mensagem ao usuário EX01 notificando o erro. Atributo Domínio Acesso int public neuronsNumber String public fileName Quadro 3.9 - Descrição do caso de uso View File. Dentro de uma perspectiva dinâmica do sistema, serão apresentados agora os diagramas de seqüência para cada caso de uso da Figura 3.6. Esses diagramas mostram como ocorrem as seqüências de ações na execução de cada caso de uso implementado pelos componentes. O diagrama da Figura 3.7 a seguir mostra a seqüência de ações para o caso de uso ANN Design: Figura 3.7 - Diagrama de seqüência para o caso de uso ANN Design. 75 No caso de uso ANN Design, uma estrutura de RNA envia a mensagem para um objeto da classe ANNDesign para realização da operação design( ) que irá projetar a rede, armazenando os padrões na memória. Após o projeto da rede, a memória é atualizada através do método setMemory( ) da classe Memory. Para evolução de uma estrutura de RNA, é feita uma solicitação ao objeto da classe EvolutionLaws através da operação evolution( ). A cada transição de estado, uma solicitação à classe Stability é feita através do método checkState( ), para verificar se o estado encontrado é estável. Para isso é necessário verificar se esse estado é uma memória através do método getMemory( ). Ao alcançar a estabilidade da rede, é calculado o valor de energia do estado final da rede com a chamada do método calculateEnergyFunction( ). Figura 3.8 - Diagrama de seqüência para o caso de uso Execute ANN. 76 A análise de convergência de uma RNA pode ser feita a partir de todos os possíveis estados fixos iniciais. Através da operação analysis( ), um objeto da classe Analysis solicita a geração dos pontos fixos da rede através da operação setFixedPoints( ). Para cada ponto fixo, a dinâmica da rede é executada e checada a estabilidade do estado final encontrado com chamadas aos métodos checkState( ) e getMemory( ) encontrado, conforme mostra a Figura 3.9: Figura 3.9 – Diagrama de seqüência para o caso de uso Analyse ANN. O acoplamento entre RNA diferentes pode ser realizado através da dinâmica de evolução das redes acopladas, onde uma estrutura pode fazer a solicitação à classe EvolutionLaws através da operação coupledEvolution( ), recebendo como resposta o estado global final da rede, conforme mostrado na Figura 3.10: 77 Figura 3.10 - Diagrama de seqüência para o caso de uso Coupling ANN. Através das operações learning( ) e forgetting( ) pode-se armazenar ou remover um padrão na memória, conforme mostram as Figuras 3.11 e 3.12 respectivamente: Figura 3.11 – Diagrama de seqüência para o caso de uso Learning. 78 Uma solicitação à classe Learning, através da operação learning( ), adicionará um novo padrão ao conjunto já existente e armazenado na memória. Figura 3.12 – Diagrama de seqüência para o caso de uso Forgetting. Uma solicitação à classe Forgetting, através da operação forgetting( ), irá remover um padrão do conjunto já existente e a memória será atualizada. 3.3 CONSIDERAÇÕES FINAIS A modelagem apresentada neste capitulo serviu como base para desenvolvimento dos componentes propostos no presente trabalho. Além disso, é fonte de documentação para projeto de extensão das funcionalidades no futuro. O diagrama de casos de uso mostrou uma visão geral das funcionalidades do sistema, que foram implementadas como métodos nas classes do modelo de projeto (diagramas de classes), visto nas Figuras 3.3 e 3.4. A descrição dos casos de uso facilita o entendimento por parte do usuário, auxiliando-o na interação com o sistema, bem como alguns aspectos de implementação para outros desenvolvedores. O 79 dzesenvolvimento dos diagramas de seqüência objetivou mostrar como ocorrem as trocas de mensagens entre os objetos do sistema, para a realização das funções básicas. 80 4 Experimentos Neste capítulo serão apresentados alguns testes com objetivo de avaliar os componentes desenvolvidos a partir da modelagem apresentada no capítulo 3. A seção 4.1 descreve as características dos testes realizados, enquanto na seção 4.2 é feita uma discussão dos resultados obtidos. A seção 4.3 finaliza o capítulo apresentando as considerações finais a respeito dos testes realizados. 4.1 CONSIDERAÇÕES INICIAIS Os testes foram realizados em todos componentes desenvolvidos, ou seja, foram testados o projeto, execução, análise, learning, forgetting e acoplamento de RNA. Os testes de projeto foram realizados baseados nos dados (padrões a serem armazenados na memória) do experimento realizado por Lillo et al. (1994), onde o autor propõe a equação 2.28 como forma de obter a matriz de pesos, de modo a diminuir o número de estados espúrios armazenados. Para os testes de execução, utilizou-se a matriz de pesos encontrada no mesmo artigo e foi verificada a convergência ou não para um dos seis padrões armazenados. 4.2 EXPERIMENTOS Os experimentos foram divididos em 4 (quatro) partes: projeto, execução, análise, learning, forgetting e acoplamento de RNA, respectivamente apresentados nas seções 4.2.1, 4.2.2, 4.2.3 e 4.2.4 a seguir. 4.2.1 Experimento 1 – Projeto de RNA Os componentes implementam 3 (três) tipos de projeto, conforme apresentado nas equações 2.25, 2.26 e 2.28, intitulados aqui como Hebbian, Pseudo e Lillo. A interface de projeto de RNA é apresentada na Figura 4.1: 81 Figura 4.1 – Módulo de projeto (aprendizado) da rede. Os campos Number of Neurons e Number of Patterns definem o número de neurônios da rede e padrões a serem armazenados na memória. Em Design Type, o usuário seleciona o tipo de projeto a ser realizado. Os campos Patterns, W, D, B e Lambda são os arquivos texto das respectivas matrizes que serão salvas, sendo que os três últimos só são habilitados quando a opção Lillo em Design Type for selecionada. Ao serem adicionados os números de neurônios e padrões através do botão Add, aparece uma tabela no grupo Patterns para entrada dos padrões a serem armazenados. Em uma rede GBSB com 10 neurônios, onde existem 210 pontos fixos (vértices do hipercubo), foram escolhidos os seguintes padrões a serem armazenados como estados de equilíbrio assintoticamente estáveis, conforme Lillo et al. (1994): 82 p1 = [ − 1 1 1 1 −1 −1 −1 p2 = [ 1 1 −1 −1 −1 1 −1 −1 1 −1 ] p3 = [ − 1 1 p4 = [ − 1 1 1 1 1 −1 −1 1 −1 −1 −1 −1 p5 = [ 1 − 1 − 1 1 p6 = [ 1 1 −1 1 −1 1 −1 1 −1 ] 1 −1 −1 −1 ] 1] 1 −1 1 1 1 1 −1 ] 1 1 −1 −1 ] (4.1) A entrada de dados pode ser visualizada na Figura 4.2: Figura 4.2 – Teste de projeto de uma RNA. Ao clicar em Design, o sistema realiza o projeto da rede (aprendizado) segundo o tipo selecionado. Nesse teste, foi selecionada a regra Lillo. Os padrões são 83 armazenados na memória como estados assintoticamente estáveis e a matriz de pesos W é gerada e armazenada em um arquivo texto. É importante ressaltar que as matrizes D, B e Λ são geradas automaticamente para a regra de projeto selecionada, conforme as equações 2.29, 2.30 e 2.31, respectivamente. Com isso, a cada treinamento realizado, são criadas novas matrizes, alterando os resultados da matriz de pesos W. 4.2.2 Experimento 2 – Execução e Análise de Convergência O módulo de execução de RNA é dividido em três partes: execução de redes de Hopfield, BSB e GBSB. O último caso é apresentado na Figura 4.3: Figura 4.3 – Módulo de execução de redes GBSB. Os campos Number of Neurons e Number of Patterns definem o número de neurônios da rede e padrões armazenados na memória, Beta é o fator de realimentação da rede, Iterations é o número máximo de iterações desejado, Matrix 84 W e Matrix Pattern são os arquivos das matrizes de peso e padrões e, ao serem adicionados os números de neurônios e padrões através do botão Add, aparece uma tabela em Initial State e Bias para definição do estado inicial da rede e o bias da mesma respectivamente. Para realização dos testes de execução da rede, foram adotadas a matriz de pesos W e o vetor bias b utilizadas por Lillo et al. (1994), onde o autor utiliza a regra descrita em 2.28 para armazenar em uma memória associativa os padrões mostrados em 4.1. Os dados utilizados no teste são mostrados em Network Input, na Figura 4.4 a seguir: Figura 4.4 – Execução da rede GBSB com estado inicial p1. Ao executar a rede GBSB, a mesma iterage conforme a equação 2.23 produzindo os resultados apresentados na Figura 4.4, em Network Output. Como pode ser observado, já que o estado inicial da rede definido nesse teste foi p1, previamente 85 armazenado na memória, a rede GBSB já se encontrava em um ponto de equilíbrio assintoticamente estável dentro do espaço de estados. Portanto, em apenas uma iteração, a rede retornou seu estado final e apresentou o valor da função de energia, que no caso é mínimo para esse estado. O campo State mostra que o estado final da rede é uma memória. A mesma situação ocorre quando a rede é inicializada em qualquer um dois 6 (seis) padrões armazenados na memória. Inicializando-se a rede em um estado qualquer, diferente dos armazenados na memória, como por exemplo p7 = [ 1 − 1 − 1 − 1 1 −1 1 1 1 1 ] , obteve-se os seguintes resultados, como apresentados na Figura 4.5: Figura 4.5 – Execução da rede GBSB com estado inicial p7. Como mostrado na Figura 4.5, a rede GBSB, inicializada no padrão p7, evolui e é atraída pela bacia do estado estável p5, convergindo para esse ponto em 9 (nove) iterações. Como apresentado em Lillo et al. (1994), o método proposto pela equação 2.28 não garante a estabilidade assintótica global da rede. Portanto, nem todos os estados irão convergir para um ponto de estabilidade da rede, entrando uma região de ciclo limite. Essa situação pode ser observada na Figura 4.6 onde a rede foi 86 inicializada com p8 = [ − 1 0.342 − 0.143 1 1 − 1 0.923 o − 0.653 padrão 1 − 0.001 ] : Figura 4.6 – Execução da rede GBSB com estado inicial p8. A Figura 4.6 mostra que o estado final encontrado é instável, ou seja, não é uma memória nem um estado espúrio. Ao clicar em Limit Cycle são mostradas as 9 (nove) últimas transições de estados da rede, como mostra a Figura 4.7: 87 Figura 4.7 – Região de ciclo limite. Observa-se na Figura 4.7 que a evolução da rede fica restrita à uma região cíclica entre os p10 = [ − 1 − 1 − 1 estados −1 1 1 1 p9 = [ 1 1 − 1 − 0.9493 1 1 1 − 1 0.439 1 1] e −1 ]. A partir disso, foram realizados testes de análise de convergência geral da rede. A rede foi inicializada em cada um dos pontos fixos (automaticamente) e verificada a convergência da mesma. No primeiro teste de análise feito ajustou-se a constante β em 0.3, como mostrado na Figura 4.8: 88 Figura 4.8 – Análise de convergência da rede GBSB para β = 0.3. Como pode ser observado na Figura 4.8, das 1024 inicializações da rede, a mesma convergiu para um estado presente na memória (estável) apenas 138 vezes e 21 vezes para um dos estados espúrios, conforme mostrado na Tabela 4.1 a seguir: Padrão p1 p2 p3 p4 p5 p6 Total Número de Convergências 11 9 65 6 14 33 138 Tabela 4.1 – Resultado da convergência da rede GBSB para β = 0.3 . Os estados espúrios encontrados podem ser verificados através do botão Spurious, conforme mostra a Figura 4.9: 89 Figura 4.9 - Estados espúrios. Variando-se o valor de β, observa-se uma grande alteração no número de convergências da rede. As Figuras 4.10, 4.11, 4.12 e 4.13 a seguir mostram essa variação, onde utilizou-se β igual a 0.2, 0.15, 0.1 e 0.06 respectivamente: Figura 4.10 – Análise de convergência da rede GBSB para β = 0.2. 90 Figura 4.11 – Análise de convergência da rede GBSB para β = 0.15. Figura 4.12 – Análise de convergência da rede GBSB para β = 0.1. 91 Figura 4.13 – Análise de convergência da rede GBSB para β = 0.06. Os resultados obtidos nas análises de convergência podem ser melhores comparados na Tabela 4.2 e no gráfico da Figura 4.14: Beta 0.06 0.1 1.5 2.0 3.0 Convergência para uma Memória 736 746 766 527 159 288 278 258 497 865 71,87% 72,85% 74,80% 51,46% 15,52% ou Estado Espúrio Não Convergência Porcentagem de convergência Tabela 4.2 – Resultado da convergência da rede GBSB para β = 0.3 . 92 Análise de Convergência da Rede GBSB 1024 896 Número 768 640 Convergência 512 Não convergência 384 256 128 0 0.06 0.1 0.15 0.2 0.3 Beta Figura 4.14 - Análise de convergência da rede GBSB para β = 0.06. O que pode ser observado com a análise feita é que a convergência da rede GBSB mantém-se na faixa de 70% para valores menores de β. Atribuindo-se à β valores maiores que 0.15, a convergência da rede cai bruscamente. Além disso, foram obtidas as seguintes informações com relação às convergências para um estado armazenado na memória a partir das 1024 inicializações possíveis: Beta p1 p2 p3 p4 p5 p6 Espúrios 0.06 91 70 140 64 124 124 123 0.1 88 73 145 61 124 134 121 0.15 81 76 168 68 129 120 124 0.2 54 65 161 31 75 80 61 0.3 11 9 65 6 14 33 21 Total 416 363 819 294 590 615 450 Tabela 4.3 – Padrões encontrados na convergência da rede GBSB. Observa-se na Tabela 4.3 que, com a variação do fator de realimentação entre 0.06 e 0.3, dos 1024 estados iniciais da rede, 819 convergiram para o padrão p3. Entretanto, apenas 294 estados iniciais convergiram para o padrão p4. Com isso, fica visível que as bacias de atração de cada ponto fixo são diferentes entre si. Apesar de encontrados apenas 2 estados espúrios na rede, conforme mostrou a Figura 4.3, observa-se um grande número de convergências para esses (450 convergências). 93 4.2.6 Experimento 3 - Acoplamento O componente de acoplamento de redes GBSB pode ser utilizado através da interface mostrada na Figura 4.15 a seguir: Figura 4.15 – Módulo de acoplamento de redes GBSB. Os campos Number of Networks e Number of Global Patterns definem o número de redes a serem acopladas e o número de padrões globais5 desejados. Os campos Number of Neurons e Number of Patterns definem o número de neurônios da rede e padrões armazenados na memória das redes individuais. Iterations é o número máximo de iterações desejadas da rede. Number of Tests define a quantidade de testes de emergência dos padrões globais desejados. Beta é o fator de realimentação das redes individuais e gama o fator de acoplamento entre as redes, __________________________ 5 Os padrões armazenados em uma rede representam a memória de primeiro nível. O padrão global representa a memória de segundo nível, obtida a partir do acoplamento de redes. 94 Matrix W, Matrix Pattern e Matrix Points são os arquivos das matrizes de peso, padrões armazenados e estados possíveis da rede (pontos fixos). Ao clicar no botão Add, aparece uma tabela em Global Patterns para definição dos padrões globais desejados, e uma em Bias para entrada do bias das redes. Os testes a serem realizados nesta seção são baseados nos experimentos realizados por Gomes (2005), onde o autor propõe a construção de redes GBSB acopladas. Cada RNA individual representaria um grupo neural (memória de primeiro nível) e a rede acoplada como um todo representaria um mapa local, produzindo um segundo nível de memória, onde os padrões globais devem emergir (GOMES, 2005). Nesse caso, o autor realizou o acoplamento de 3 (três) redes GBSB, como a rede proposta em Lillo et al. (1994). Para cálculo das matrizes de pesos individuais, seguiu-se a equação 2.28, proposta por Lillo et al. (1994). Para constituir a memória de primeiro nível, foram utilizados os padrões descritos em 4.1. As matrizes de correlação foram calculadas segundo a regra generalizada de Hebb, conforme realizado em Gomes (2005). Os padrões inter-redes escolhidos que irão compor a memória de segundo nível são apresentados na Tabela 4.4 e mostrados na Figura 4.16: Redes A ou 1 B ou 2 C ou 3 A ou 1 B ou 2 1-3 e 2-4 3-1 e 4-2 5-1 e 6-2 5-3 e 6-4 Padrões Globais C ou 3 1-5 e 2-6 3-5 e 4-6 1-3-5 ou 2-4-6 Tabela 4.4 – Padrões correlacionados armazenados. FONTE – GOMES, 2005. p.86. 95 Figura 4.16 – Esquema geral do experimento. FONTE - GOMES, 2005. p. 86. No experimento realizado por Gomes (2005), o autor inicializou uma das redes (A, B ou C), em um dos padrões que compõem a sua memória de segundo nível de forma aleatória. As demais redes, foram inicializadas aleatoriamente em um dos 1024 pontos fixos possíveis. Diferentemente desse experimento, o componente aqui desenvolvido permite fixar o estado inicial de uma das redes e as demais são inicializadas aleatoriamente dentro do espaço de estados. Isso foi feito de forma a analisar o quanto uma rede, já em um estado referente à sua memória de segundo nível, influencia na evolução das demais. E ainda, para uma melhor comparação dos resultados, ao invés da geração aleatória dos estados iniciais das demais redes, foram definidos os 100 primeiros e as redes inicializadas a partir desses. Assim, mantiveram-se as mesmas informações em todos os testes realizados. Primeiramente, manteve-se em 100 o número de iterações da rede, o fator de acoplamento γ foi fixado em 3 e variando o valor da constante β. Com β = 0.3 e a rede A (ou 1) sendo inicializada com o padrão p1, conforme mostra a Figura 4.17, obteve-se o resultado apresentado na Figura 4.18: 96 Figura 4.17 – Teste de acoplamento inicializando-se a rede A. Figura 4.18 – Resultado do teste de acoplamento inicializando-se a rede A. Como pode ser observado, em 100 testes realizados, foram obtidos 32 tripletos que convergiram para o padrão global 1, ou seja, tripletos 1. O mesmo teste foi realizado, variando-se o valor de β (0.06, 0.1, 0.15 e 0.2), mas não houve variação nos resultados obtidos. Adotando-se β = 0.3 e variando o valor de γ, obteve-se os resultados apresentados na Tabela 4.5: 97 Rede Fixa Gama Tripletos 1 Tripletos 2 Total Tripletos Não convergência Porcentagem 0 0 0 0 100 0% 0.5 6 0 6 86 6% 1 48 0 48 81 48% 1.5 59 0 59 68 59% Rede A (padrão 1) 2 2.5 63 59 0 0 63 59 53 53 63% 59% 3 32 0 32 53 32% 3.5 32 0 32 53 32% 4 32 0 32 53 32% Tabela 4.5 - Acoplamento das redes variando-se γ, com a rede A inicializada no padrão p1. Pode-se observar que há uma grande variação no número de convergências do sistema alterando-se o valor de γ, que obteve melhores resultados entre 1.5 e 2.5. Os mesmos testes foram realizados inicializando a rede A com o padrão p2. Os resultados são apresentados nas Tabelas 4.6 e 4.7 a seguir: Rede Fixa Beta Tripletos 1 Tripletos 2 Total Tripletos Não convergência Porcentagem Rede A (padrão 2) 0.1 0.15 0.2 0 0 0 12 12 12 12 12 12 88 88 88 12% 12% 12% 0.06 0 12 12 88 12% 0.3 0 12 12 88 12% Tabela 4.6 - Acoplamento das redes variando-se β, com a rede A inicializada no padrão p2. Rede Fixa Gama Tripletos 1 Tripletos 2 Total Tripletos Não convergência Porcentagem 0 0 0 0 100 0% 0.5 0 0 0 81 0% 1 0 15 15 81 15% Rede A (padrão 2) 1.5 2 2.5 0 0 0 33 39 26 33 39 26 68 53 53 33% 39% 26% 3 0 12 12 53 12% 3.5 0 12 12 53 12% 4 0 12 12 53 12% Tabela 4.7 - Acoplamento das redes variando-se γ, com a rede A inicializada no padrão p2. Como pode ser observado na Tabela 4.6, a convergência das redes para o padrão global 1 foi de apenas 12%, independente do valor de β. Variando o valor de γ, o sistema obteve os melhores resultados entre 1.5 e 2.5, equivalente ao apresentado na Tabela 4.5 onde a rede A foi inicializada com o padrão p1. 98 Os mesmos testes realizados até o momento foram feitos inicializando-se a rede B com os padrões p3 e p4. As Tabelas 4.8 e 4.9 mostram o primeiro caso. Rede Fixa Beta Tripletos 1 Tripletos 2 Total Tripletos Não convergência Porcentagem 0.06 8 0 8 0 8% Rede B (padrão 3) 0.1 0.15 0.2 8 32 40 0 0 0 8 32 40 0 2 4 8% 32% 40% 0.3 40 0 40 11 40% Tabela 4.8 - Acoplamento das redes variando-se β, com a rede B inicializada no padrão p3. Rede Fixa Gama Tripletos 1 Tripletos 2 Total Tripletos Não convergência Porcentagem 0 0 0 0 100 0% 0.5 4 0 4 49 4% Rede B (padrão 3) 1.5 2 2.5 89 87 75 0 0 0 89 87 75 1 0 1 89% 87% 75% 1 52 0 52 9 52% 3 40 0 40 2 40% 3.5 40 0 40 3 40% 4 40 0 40 4 40% Tabela 4.9 - Acoplamento das redes variando-se γ, com a rede B inicializada no padrão p3. Pode-se observar nas Tabelas 4.6 e 4.7 que o sistema alcançou o melhor resultado de convergência para o padrão global 1 quando β = 0.3 e λ = 1.5. É interessante notar também que, como no teste onde a rede A foi inicializada com os padrões 1 e 2, o sistema também encontrou aqui melhores resultados com λ entre 1.5 e 2.5, como visto na Tabela 4.7. A rede B, quando inicializada com o padrão p4, observa-se que os resultados não são equivalentes aos do teste anterior, sendo até mesmo inferiores, conforme mostram as Tabelas 4.10 e 4.11 a seguir: Rede Fixa Beta Tripletos 1 Tripletos 2 Total Tripletos Não convergência Porcentagem 0.06 0 8 8 1 8% Rede B (padrão 4) 0.1 0.15 0.2 0 0 0 8 16 16 8 16 16 1 1 1 8% 16% 16% 0.3 0 32 32 21 32% Tabela 4.10 - Acoplamento das redes variando-se β, com a rede B inicializada no padrão p4. 99 Rede Fixa Gama Tripletos 1 Tripletos 2 Total Tripletos Não convergência Porcentagem 0 0 0 0 100 0% 0.5 0 4 4 41 4% 1 0 23 23 3 23% Rede B (padrão 4) 1.5 2 2.5 0 0 0 32 44 32 32 44 32 1 1 2 32% 44% 32% 3 0 32 32 3 32% 3.5 0 32 32 4 32% 4 0 32 32 5 32% Tabela 4.11 - Acoplamento das redes variando-se γ, com a rede B inicializada no padrão p4. Pode-se observar, na Tabela 4.9, que há uma diminuição do número de tripletos encontrados para λ entre 1.5 e 2.5, mas ainda assim foram os melhores resultados obtidos para esse caso. Por fim, os mesmos testes foram realizados inicializando-se a rede C nos padrões 5 e 6, como mostrado a seguir: Rede Fixa Beta Tripletos 1 Tripletos 2 Total Tripletos Não convergência Porcentagem 0.06 18 0 18 0 18% Rede C (padrão 5) 0.1 0.15 0.2 30 40 40 0 0 0 30 40 40 0 0 3 30% 40% 40% 0.3 64 3 67 3 67% Tabela 4.12 - Acoplamento das redes variando-se β, com a rede C inicializada no padrão p5. Rede Fixa Gama Tripletos 1 Tripletos 2 Total Tripletos Não convergência Porcentagem 0 0 0 0 100 0% 0.5 6 0 6 100 6% 1 46 0 46 34 46% Rede C (padrão 5) 1.5 2 2.5 76 82 64 1 1 4 77 83 68 2 3 4 77% 83% 68% 3 64 3 67 100 67% 3.5 40 3 43 100 43% 4 40 1 41 100 41% Tabela 4.13 - Acoplamento das redes variando-se γ, com a rede C inicializada no padrão p5. Como todos os testes realizados, observa-se através da Tabela 4.13 que os melhores resultados foram obtidos para valores de λ entre 1.5 e 2.5, para rede C inicializada com o padrão p5. O mesmo ocorre quando a rede C é inicializada com o padrão p6, como pode ser visto na Tabela 4.15. Interessante notar que esse teste 100 não obteve apenas tripletos 1, mas também tripletos 2. Foram os casos onde β = 0.3 e λ = 3 (Tabela 4.12) e β = 0.3 e λ entre 1.5 e 4 (Tabela 4.13). Rede Fixa Beta Tripletos 1 Tripletos 2 Total Tripletos Não convergência Porcentagem 0.06 0 32 32 0 32% Rede C (padrão 6) 0.1 0.15 0.2 0 0 0 32 32 48 32 32 48 0 0 0 32% 32% 48% 0.3 0 48 48 0 48% Tabela 4.14 - Acoplamento das redes variando-se β, com a rede C inicializada no padrão p6. Rede Fixa Gama Tripletos 1 Tripletos 2 Total Tripletos Não convergência Porcentagem 0 0 0 0 100 0% 0.5 0 6 6 94 6% 1 0 51 51 49 51% Rede C (padrão 6) 1.5 2 2.5 0 0 0 81 66 66 81 66 66 19 34 34 81% 66% 66% 3 0 48 48 52 48% 3.5 0 48 48 52 48% 4 0 48 48 52 48% Tabela 4.15 - Acoplamento das redes variando-se γ, com a rede C inicializada no padrão p6. Na Tabela 4.14 pode-se observar que, mantendo-se λ = 3 e aumentando-se, o número de tripletos encontrados é maior, o que também ocorre nos outros testes realizados. 4.2.6 Experimento 4 – Learning Como visto na seção 2.5.2, learning é a capacidade de uma RNA de adicionar padrões para serem armazenados como pontos de equilíbrio assintoticamente estáveis ao conjunto padrões existentes. O módulo de learning é apresentado na Figura 4.19: 101 Figura 4.19 - Interface do módulo Learning. Os campos Number of Neurons e Number of Patterns definem o número de neurônios da rede e padrões armazenados na memória. Save W As recebe o nome da nova matriz de pesos a ser salva. Clicando-se no botão Add, aparece um tabela em New Pattern, para entrada do novo padrão a ser armazenado na memória, e uma em Bias, para definição do bias da rede. Matrix Pattern, Matrix D e Matrix Lambda são os arquivos das matrizes de padrões armazenados, D e Λ da rede. O teste realizado nesta seção foi baseado no experimento realizado por Zak, Lillo e Hui (1996). Em uma rede GBSB com 5 neurônios, onde existem 25 pontos fixos (vértices do hipercubo), foram escolhidos os seguintes padrões a serem armazenados como estados de equilíbrio assintoticamente estáveis: 102 ⎡− 1⎤ ⎢− 1⎥ ⎢ ⎥ p1 = ⎢ 1 ⎥ , ⎢ ⎥ ⎢ 1⎥ ⎢⎣ 1 ⎥⎦ ⎡ 1⎤ ⎢ 1⎥ ⎢ ⎥ p2 = ⎢− 1⎥ , ⎢ ⎥ ⎢− 1⎥ ⎢⎣− 1⎥⎦ ⎡ 1⎤ ⎢− 1⎥ ⎢ ⎥ p3 = ⎢ 1 ⎥ ⎢ ⎥ ⎢− 1⎥ ⎢⎣ 1 ⎥⎦ (4.2) − 0 .5 ⎤ 0 ⎥⎥ 0 ⎥, ⎥ 0 ⎥ 1 ⎥⎦ (4.3) Foram escolhidas as seguintes matrizes D e Λ: ⎡ ⎢ ⎢ D=⎢ ⎢ ⎢ ⎢⎣ 1 0 0 0 0 0 1 − 0. 2 0 0 0 0 1 0 0 0 0 0 1 0 Λ = −2 I 5 A matriz de padrões é P = [p1, p2, p3], e B = [b, b, b], onde: b = [ 0 .6 − 0. 5 0 .7 − 0 .4 0 .8 ] T (4.4) Através da equação 2.28, a matriz W é calculada e os padrões mostrados em 4.2 são armazenados como estados de equilíbrio assintóticamente estáveis. Suponha o seguinte estado dentro do espaço de estados: ⎡− 1⎤ ⎢− 1⎥ ⎢ ⎥ p4 = ⎢− 1⎥ ⎢ ⎥ ⎢− 1⎥ ⎢⎣ 1 ⎥⎦ (4.5) Observe que, se executada com estado inicial p4, que não é um ponto de equilíbrio assintoticamente estável, a rede a rede evolui e converge para o estado p3, em 12 iterações, conforme mostra a Figura 4.20: 103 Figura 4.20 – Execução da rede GBSB para o estado inicial instável p4. Deseja-se agora adicionar o padrão p4 à memória, conforme mostra a Figura 4.21, Figura 4.21 – Teste de learning. 104 Aprender novos padrões requer atualizar a matriz de pesos W. Entretanto, esse processo envolve atualizar a matriz P e adicionar uma coluna extra à B. Como deve P ser atualizada, a sua pseudo-inversa deve ser recalculada. Portanto, ao clicar em Execute, o componente calcula a pseudo-inversa da nova matriz P através do teorema 3 descrito na seção 2.5.2. Nesse momento a nova matriz de pesos é calculada através da equação 2.28 e o padrão p4 é adicionado à memória como um estado de equilíbrio assintoticamente estável. Com isso, ao executar a rede GBSB a partir do estado inicial p4, a mesma deve permanecer nesse ponto, já que é um ponto estável do sistema, como mostra a Figura 4.22: Figura 4.22 – Execução da rede GBSB para o estado inicial estável p4. 4.2.6 Experimento 5 – Forgetting Como visto na seção 2.5.3, forgetting é a capacidade de uma RNA de esquecer padrões armazenados como pontos de equilíbrio assintoticamente estáveis em uma memória associativa. O módulo de forgetting é apresentado na Figura 4.23: 105 Figura 4.23 - Interface do módulo Forgetting. Os campos Number of Neurons e Number of Patterns definem o número de neurônios da rede e padrões armazenados na memória. Save W As recebe o nome da nova matriz de pesos a ser salva. Clicando-se no botão Add, aparece um tabela em Pattern to Forget, para entrada do padrão a ser removido da memória, e uma em Bias, para definição do bias da rede. Matrix Pattern, Matrix D e Matrix Lambda são os arquivos das matrizes de padrões armazenados, D e Λ da rede. O teste realizado nesta seção foi baseado no experimento realizado por Zak, Lillo e Hui (1996). Continuando os experimento realizado na seção 4.2.5, o padrão p3 é um estado de equilíbrio assintóticamente estável, como pode ser verificado através da Figura 4.24: 106 Figura 4.24 - Execução da rede GBSB para o estado inicial estável p3. Suponha que se deseja agora remover o padrão p3 da memória, conforme mostra a Figura 4.25: Figura 4.25 – Teste de forgetting. 107 Pode-se verificar que o padrão p3 foi removido da memória, como pode ser observado na Figura 4.26: Figura 4.26 - Execução da rede GBSB para o estado inicial instável p3. Observe que, a partir do estado inicial p3, que agora não faz parte do conjunto de estados de equilíbrio assintoticamente estáveis (memória), a rede evolui e converge para o padrão estável p1, em 11 iterações. 4.3 CONSIDERAÇÕES FINAIS Os experimentos realizados e as análises feitas neste capítulo objetivaram validar o funcionamento dos componentes desenvolvidos no presente trabalho. Buscou-se aplicações de RNA na literatura, onde foram encontrados autores da área que propuseram experimentos diversos de aprendizado, execução e acoplamento, mas muitas vezes sem auxílio de um sistema informatizado para realizá-los. Apenas os testes de acoplamento foram baseados numa aplicação desenvolvida no software Matlab por Gomes (2005). O componente de acoplamento foi desenvolvido baseado 108 nessa aplicação. No entanto, os testes diferem em alguns pontos, o que proporcionou resultados diferentes neste trabalho. Pode-se diferenciar os dois experimentos em: • A inicialização da rede em um dos padrões globais era aleatória e as demais em um dos 1024 padrões possíveis. Neste trabalho, o estado inicial de uma das redes em um dos padrões globais foi definido pelo autor, e as demais redes nos 100 primeiros estados possíveis; • Nos testes realizados em por Gomes (2005) foram feitos variando-se β, enquanto aqui variou-se, além do fator de realimentação, o fator de acoplamento γ. Outros testes foram realizados por Gomes (2005), mas não reproduzidos neste devido às limitações do componente de acoplamento desenvolvido. Um fator importante nos testes realizados é que as matrizes D, B e Λ, geradas automaticamente no treinamento segundo a regra de Lillo, podem alterar o resultado obtido, ou seja, a matriz de pesos W, a cada execução do processo. Os componentes de acoplamento, baseados na TNGS, permitem a construção de novas hierarquias de redes e novas análises de convergência. De maneira geral, pode-se concluir que os testes realizados comprovam os resultados obtidos pelos experimentos aos quais foram baseados. 109 5 CONCLUSÃO Para a realização do presente trabalho, foi necessária uma revisão bibliográfica sobre RNA, discutidas principalmente por Haykin (2001) e Anderson (1995). Além disso, foram abordados os trabalhos realizados por Anderson (1990) (2003 a) (2003 b), Anderson et al. (1990), Guan, Anderson e Sutton (1996) e Gomes (2005) que, de modo geral, se propõem a desenvolver estruturas de RNA acopladas. O estudo sobre os sistemas dinâmicos serviu como base para o entendimento dos modelos dinâmicos de RNA e sua diferenciação dos os modelos tradicionais. Autores como Lillo, Hui e Zak (1994) (1996) e Gomes (2005) foram de extrema importância para o despertar de idéias para aplicações de RNA e, principalmente, RNA acopladas. Toda a revisão literária foi apresentada no capítulo 2 desta dissertação. O capítulo 3 dedicou-se a apresentar a modelagem dos componentes desenvolvidos. Procurou-se adotar a linguagem UML e seguir as suas visões como forma de mostrar os diversos ângulos da modelagem. Através do diagrama de casos de uso e de suas descrições pode-se ter um bom entendimento da utilização dos componentes, bem como alguns aspectos de implementação. Os diagramas de classes e seqüência proporcionaram uma visão geral da estática (classes e relacionamentos) e dinâmica do sistema (trocas de mensagens entre objetos), respectivamente. A partir das idéias de aplicações de RNA obtidas com o capitulo 2, foram apresentados alguns experimentos no capitulo 4, onde se procurou testar os componentes de projeto, execução, análise e acoplamento através de trabalhos já desenvolvidos na literatura pesquisada. 5.1 DIFICULDADES ENCONTRADAS Diversas foram as dificuldades encontradas no desenvolvimento, mas as duas seguintes merecem destaque: 110 • Falta de trabalhos afins, que dificultou o levantamento das características desejáveis aos componentes a serem desenvolvidos; • Escassez de fontes bibliográficas sobre arquiteturas de RNA acopladas, o que dificultou a implementação da primeira aplicação desse modelo. 5.2 CONTRIBUIÇÕES DO TRABALHO A proposta geral deste trabalho é a implementação de RNA com objetivo de construir agentes de software inteligentes. Mais especificamente, este trabalho procurou estender a arquitetura ARTÍFICE através da criação de uma estrutura que pudesse ser utilizada para a construção do sistema nervoso do ASCS. Com esse propósito, as principais contribuições desse trabalho foram: • Extensão da arquitetura ARTÍFICE-0.6.0 com a modelagem de uma arquitetura para um tipo de estrutura, baseada em RNA e RNA acopladas, que irá representar o sistema nervoso do ASCS; • Implementação de componentes de projeto, execução, análise e acoplamento de RNA dentro da arquitetura ARTÍFICE-0.6.0; • Definição da dinâmica de acoplamento de redes de Hopfield; • Criação de uma interface para integração dos componentes, como forma de realização de experimento de projeto, execução, análise e acoplamento de RNA baseadas em aplicações de memória associativa. Diante das contribuições acima citadas e a partir dos objetivos propostos neste trabalho, pode-se dizer que: • Foram construídos os modelos lógicos dos componentes de software, em conformidade com a arquitetura ARTÍFICE-0.6.0; 111 • Os componentes de software para projeto, execução e análise de RNA de Hopfield, BSB e GBSB foram implementados utilizando a linguagem Java; • Os componentes de acoplamento de RNA de Hopfield, BSB e GBSB foram implementados em linguagem Java; • Foi desenvolvida uma interface para integração dos componentes; • Foram realizados testes baseados em experimentos encontrados na literatura, comprovando o funcionamento correto dos componentes. 5.3 TRABALHOS FUTUROS Os componentes apresentados podem ser estendidos com relação a funcionalidades e áreas de aplicação. Não se pretende listar todos os possíveis trabalhos futuros a partir deste, e sim apenas apresentas algumas sugestões, como as que seguem: • Extensão da arquitetura ARTÍFICE para implementação de outros tipos de estruturas que estejam em conformidade com a abordagem contemporânea das ciências cognitivas; • Criação de uma aplicação de ASCS que utilize a estrutura de RNA estendida no projeto ARTÍFICE; • Flexibilização dos componentes de acoplamento para interconexão entre diferentes estruturas de RNA; • Desenvolvimento de módulos de saída gráfica das redes onde, por exemplo, poderia ser feita uma análise da variação da função de energia de acordo com a evolução das redes; 112 • Expansão dos componentes de análise de RNA para, por exemplo, análise de convergência dos estados baseada nas extensões das bacias de atração; • Implementação de módulos para construção e acoplamento de RNA para outras aplicações como, por exemplo, problemas de otimização. 5.4 CONSIDERAÇÕES FINAIS A arquitetura e os componentes desenvolvidos neste trabalho representam um passo adicional na construção de um framework capaz de auxiliar no desenvolvimento de aplicações complexas de diferentes estruturas de RNA e tecnologias que envolvem essa área de estudo. No âmbito do projeto ARTÍFICE, pode-se dizer que uma nova possibilidade de instanciação de ASCS foi proporcionada e novas características foram incorporadas ao ASCS com as Redes Neurais Artificiais e Redes Neurais Artificiais acopladas. Apesar das dificuldades na implementação de RNA dinâmicas e acopladas, este trabalho mostrou que esta tarefa é possível de ser realizada. Com os estudos e componentes desenvolvidos neste, contribuiu-se na investigação por modelos matemáticos cada vez mais plausíveis à forma de processamento de informação dos seres vivos. Pode-se dizer ainda que, com os avanços desta área de pesquisa, futuramente deverá ser possível o desenvolvimento de aplicações onde o acoplamento entre diferentes estruturas de RNA possibilite a resolução de problemas mais complexos. 113 REFERÊNCIAS ALMEIDA, Paulo Eduardo Maciel. Notas de Aula da Disciplina Princípios de Automação Inteligente I, Mestrado em Tecnologia, DPPG/CEFET-MG, 2003. ANDERSON, James A.; et al. Radar Signal Categorization Using a Neural Network. IEEE, v. 78, n. 10, p. 1646-1657, out. 1990. ANDERSON, James A. An Introduction to Neural Networks. Cabridge: Mit, 1995, 650p. ANDERSON, James A. Hybrid computation with an attractor neural network. In: IEEE International Conference on Cognitive Informatics – ICCI, 1., 2002, Piscataway, NJ, Proceedings… Piscataway, NJ: IEEE Computer Society, 2002. p. 3-12. ANDERSON, James A. Arithmetic on a Parallel Computer: Perception Versus Logic. Brain and Mind, v. 4, ed. 2, p. 169-188, ago. 2003 a. ANDERSON, James A. The Ersatz Brain Project: brain-like computer design for cognitive applications. Department of Cognitive and Linguistic Sciences, Brown University, nov. 2003 b. BARRETO, Jorge M. Introdução às Redes Neurais Artificiais. Laboratório de Conexionismo e Ciências Cognitivas. UFSC -Departamento de Informática e de Estatística - Florianópolis – SC, 2002 BORGES, H. E. ARTÍFICE - Arquitetura Flexível para a Criação de Agentes de Software Cognitivos e Situados: teoria, metodologia e ferramentas. 2002. 16 f. PROJETO DE PESQUISA (Departamento de Ensino Superior) - Centro Federal de Educação Tecnológica de Minas Gerais, Belo Horizonte. 114 BRAGA, Antônio de Pádua; CARVALHO, André Carlos Ponce de Leon Ferreira de; LUDERMIR,Teresa Bernarda. Redes Neurais Artificiais: teorias e aplicações. Rio de Janeiro: LTC, 2000. BRAGA, Antônio de Pádua; CARVALHO, André Carlos Ponce de Leon Ferreira de; LUDERMIR,Teresa Bernarda. Redes Neurais Artificiais. In: REZENDE, Solange Oliveira. Sistemas Inteligentes: fundamentos e aplicações. 1. ed. Barueri: Manole, 2003. v. 1, cap. 6, p. 141-168. BRAZ, Rodrigo de Salvo. Alto Nível em Redes Neurais. 1998. 87p. Dissertação (Mestrado em Ciência da Computação) – IME-USP, São Paulo. CLANCEY, William J. Situated Cognition: On Human Knowledge and Computer Representations. New York: Cambridge University Press, 1997. CORRÊA, Leonardo Garcia. Memória associativa em redes neurais artificiais realimentadas. 2004. 137p. Dissertação (Mestrado em Ciência da Computação e Matemática Computacional) – ICMC-USP, São Carlos. ELDELMAN, G. M. Bright air, Brilliant Fire: on the matter of the mind. New York: Basic Books, 1992. GOMES, Rogério Martins. Abordagem Dinâmica e Cognição Situada em Redes Neurais Artificiais Acopladas. 2005. 128p. Exame de Qualificação (Doutorado em Engenharia Elétrica) – PPGE/UFMG, Belo Horizonte. GAN, Qiang; WEI, Yu. Unfully-interconnected neural networks as associative memory. In: International Symposium on Circuits and Systems, New Orleans, Proceedings… New Orleans p. 468-470. maio 1990. GUAN, Ling; ANDERSON, James A.; SUTTON, Jeffrey P. Biologically Motivated Neural Computing in Early Vision Processing. IEEE SMC Conf., v.2, 1996, p. 11381143. 115 GUAN, Ling; ANDERSON, James A.; SUTTON, Jeffrey P. A Network of Networks Processing Model for Image Regularization. IEEE Transactions on Neural Networks, v.8, n. 1, p. 169-174, jan. 1997. HAYKIN, Simon. Redes Neurais: princípios e práticas. Porto Alegre: Bookman, 2001. HOPFIELD, J. J. Neural Networks and Physical Systems with Emergent Collective Computational Abilities. Proceedings of the National Academy Sciences of the USA, 79, 1982, p. 2554-2558. HUI, Stefen; ZAK, Stanislaw H. Dynamical Analysis of the Brain-State-in-a-Box (BSB) Neural Models. IEEE Transactions on Neural Networks, v.3, n.1, jan. 1992, p. 86-94. LILLO, Walter E. et al. Synthesis of Brain-State-in-a-Box (BSB) Based Associative Memories. IEEE Transactions on Neural Networks, v.5, n. 5, set 1994, p. 730 - 737. NETO, Arilo Cláudio Dias; BARCELOS, Rafael Ferreira; SPÍNOLA, Rodrigo Oliveira. Desenvolvimento de aplicações orientadas a objeto por tecnologias Java, parte II – análise. SQL Magazine, n.13, p. 26-32, dez. 2004. OLIVEIRA, Renata B.; CAMPOS, Luciana M. A.; BORGES, Henrique E.. Bases Biológicas das emoções e afetos, sua relação com o processo cognitivo e com a modelagem de agentes de software cognitivos. In: Simpósio Brasileiro de Redes Neurais (SBRN), 8. São Luis, 2004. PERFETTI, Renzo. A Syntesis Procedure for Brain-State-in-a-Box Neural Networks. IEEE Transactions on Neural Networks, v.6, n. 5, set 1995, p. 1071 - 1080. PIRES, Anderson Grandi. Modelagem de um Mecanismo de Percepção-em-Ação para os Agentes de Software Cognitivos Situados e Extensão da Arquitetura Artífice. 2005. 127p. Dissertação (Mestrado em Modelagem Matemática e Computacional) Centro Federal de Educação Tecnológica de Minas Gerais, Belo Horizonte. 116 RAPOSO, Renato; VAZ, Francine Ferreira. Introdução à Ciência Cognitiva. Disponível em: < http://www.nce.ufrj.br/ginape/publicacoes/trabalhos/Renato Material/index.htm> . Acesso em: 5 mar. 2004. REZENDE, Solange Oliveira. Introdução. In: REZENDE, Solange Oliveira. Sistemas Inteligentes: fundamentos e aplicações. 1. ed. Barueri: Manole, 2003. v. 1, cap. 1, p. 03-11. SANTOS, Bruno A. Aspectos Conceituais e Arquiteturais para a Criação de Linhagens de Agentes de Software Cognitivos e Situados. 2003. 130p. Dissertação (Mestrado em Manufatura Integrada por Computador) - Centro Federal de Educação Tecnológica de Minas Gerais, Belo Horizonte. ZAK, Stanislaw H; LILLO, Walter E.; HUI, Stefen. Learning and Forgetting in Generalized-Brain-State-in-a-Box (BSB) Neural Associative Memories. Neural Networks, v. 9, n. 5, 1996, p. 845-854. 117 ANEXO A – ARQUITETURA ARTÍFICE - 0.6.0 Figura A.1 – Modelo Conceitual da Arquitetura ARTÍFICE versão 0.6.0. FONTE – PIRES, 2005. p. 57.