Introdução à Redes neurais
O cérebro humano é considerado o mais fascinante processador baseado em carbono existente, sendo composto por aproximadamente 10 bilhões neurônios. Todas as funções e movimentos do organismo estão relacionados ao funcionamento destas pequenas células. Os neurônios estão conectados uns aos outros através de sinapses, e juntos formam uma grande rede, chamada REDE NEURAL. As sinapses transmitem estímulos através de diferentes concentrações de Na+ (Sódio) e K+ (Potássio), e o resultado disto pode ser estendido por todo o corpo humano. Esta grande rede proporciona uma fabulosa capacidade de processamento e armazenamento de informação.
O sistema nervoso é formado por um conjunto extremamente complexo de neurônios. Nos neurônios a comunicação é realizada através de impulsos, quando um impulso é recebido, o neurônio o processa, e passado um limite de ação, dispara um segundo impulso que produz uma substância neurotransmissora o qual flui do corpo celular para o axônio (que por sua vez pode ou não estar conectado a um dendrito de outra célula). O neurônio que transmite o pulso pode controlar a freqüência de pulsos aumentando ou diminuindo a polaridade na membrana pós sináptica. Eles tem um papel essencial na determinação do funcionamento, comportamento e do raciocínio do ser humano. Ao contrário das redes neurais artificiais, redes neurais naturais não transmitem sinais negativos, sua ativação é medida pela freqüência com que emite pulsos, freqüência esta de pulsos contínuos e positivos. As redes naturais não são uniformes como as redes artificiais, e apresentam uniformidade apenas em alguns pontos do organismo. Seus pulsos não são síncronos ou assíncronos, devido ao fato de não serem contínuos, o que a difere de redes artificiais.
Os principais componentes dos neurônios são:
- Os dentritos, que tem por função, receber os estímulos transmitidos pelos outros neurônios;
- O corpo de neurônio, também chamado de somma, que é responsável por coletar e combinar informações vindas de outros neurônios;
- E finalmente o axônio,que é constituído de uma fibra tubular que pode alcançar até alguns metros, e é responsável por transmitir os estímulos para outras células.
|
Esquema dos constituíntes da célula neural
Histórico das Redes Neurais Artificiais
As primeiras informações mencionadas sobre a neuro computação datam de 1943, em artigos de McCulloch e Pitts, em que sugeriam a construção de uma máquina baseada ou inspirada no cérebro humano. Muitos outros artigos e livros surgiram desde então, porém, por um longo período de tempo, pouco resultado foi obtido. Até que em 1949 Donald Hebb escreveu um livro entitulado “The Organization of Behavior” (A Organização do Comportamento) que perseguia a idéia de que o condicionamento psicológico clássico está presente em qualquer parte dos animais pelo fato de que esta é uma propriedade de neurônios individuais. Suas idéias não eram completamente novas, mas Hebb foi o primeiro a propor uma lei de aprendizagem especifica para as sinápses dos neurônios. Este primeiro e corajoso passo serviu de inspiração para que muitos outros pesquisadores perseguissem a mesma idéia. E embora muito tenha sido estudado e publicado nos anos que seguiram (1940-1950), estes serviram mais como base para desenvolvimento posterior que para o próprio desenvolvimento.
Também proveniente deste período de tempo foi a construção do primeiro neuro computador, denominado Snark, por Mavin Minsky, em 1951. O Snark operava com sucesso a partir de um ponto de partida técnico, ajustando seus pesos automaticamente, entretanto, ele nunca executou qualquer função de processamento de informação interessante, mas serviu de inspiração para as idéias de estruturas que o sucederam.
Em 1956 no “Darthmouth College” nasceram os dois paradigmas da Inteligência Artificial, a simbólica e o conexionista. A Inteligência Artificial Simbólica tenta simular o comportamento inteligente humano desconsiderando os mecanismos responsaveis por tal. Já a Inteligência Artificial Conexionista acredita que construíndo-se um sistema que simule a estrutura do cérebro, este sistema apresentará inteligência, ou seja, será capaz de aprender, assimilar, errar e aprender com seus erros.
O primeiro neuro computador a obter sucesso (Mark I Perceptron) surgiu em 1957 e 1958, criado por Frank Rosenblatt, Charles Wightman e outros. Devido a profundidade de seus estudos, suas contribuições técnicas e de sua maneira moderna de pensar, muitos o vêem como o fundador da neuro computação na forma em que a temos hoje. Seu interesse inicial para a criação do Perceptron era o reconhecimento de padrões.
Após Rosenblatt, Bernard Widrow, com a ajuda de alguns estudantes, desenvolveram um novo tipo de elemento de processamento de redes neurais chamado de Adaline, equipado com uma poderosa lei de aprendizado, que diferente do Perceptron ainda permanece em uso. Widrow também fundou a primeira companhia de hardware de neurocomputadores e componentes.
Infelizmente, os anos seguintes foram marcados por um entusiasmo exagerado de muitos pesquisadores, que passaram a publicar mais e mais artigos e livros que faziam uma previsão pouco confiável para a época, sobre máquinas tão poderosas quanto o cérebro humano que surgiriam em um curto espaço de tempo. Isto tirou quase toda a credibilidade dos estudos desta área e causou grandes aborrecimentos aos técnicos de outras áreas.
Um período de pesquisa silenciosa seguiu-se durante 1967 a 1982, quando poucas pesquisas foram publicadas devido aos fatos ocorridos anteriormente. Entretanto, aqueles que pesquisavam nesta época, e todos os que se seguiram no decorrer de treze anos conseguiram novamente estabelecer um campo concreto para o renascimento da área.
Nos anos 80, muitos dos pesquisadores foram bastante corajosos e passaram a publicar diversas propostas para a exploração de desenvolvimento de redes neurais bem como suas aplicações. Porém talvez o fato mais importante deste período tenha ocorrido quando Ira Skurnick, um administrador de programas da DARPA (Defense Advanced Research Projects Agency) decidiu ouvir os argumentos da neuro computação e seus projetistas, e divergindo dos caminhos tradicionais dos conhecimentos convencionais, fundou em 1983 pesquisas em neuro computação. Este ato não só abriu as portas para a neuro computação, como também deu à DARPA o status de uma das líderes mundiais em se tratando de “moda” tecnológica.
Outra “potência” que emergiu neste período foi John Hopfield, renomado físico de reputação mundial, se interessou pela neuro computação, e escreveu artigos que percorreram o mundo todo persuadindo centenas de cientistas, matemáticos, e tecnólogos altamente qualificados a se unirem esta nova área emergente.
Apesar de um terço dos pesquisadores da área terem aderido à mesma pela influência de Hopfield, foi em 1986 que este campo de pesquisa “explodiu” com a publicação do livro “Parallel Distributed Processing” (Processamento Distribuído Paralelo) editado por David Rumelhart e James McClelland.
Em 1987 ocorreu em São Francisco a primeira conferência de redes neurais em tempos modernos, a IEEE International Conference on Neural Networks, e também foi formada a International Neural Networks Society (INNS). A partir destes acontecimentos decorreram a fundação do INNS journal em 1989, seguido do Neural Computation e do IEEE Transactions on Neural Networks em 1990.
Desde 1987, muitas universidades anunciaram a formação de institutos de pesquisa e programas de educação em neuro computação.
Alguns dos fatos mencionados são listados abaixo:
- neurofisiologista McCulloch e matemático Walter Pitts (1943), cujo trabalho fazia uma analogia entre células vivas e o processo eletrônico, simulando o comportamento do neurônio natural, onde o neurônio possuia apenas uma saída, que era uma função de entrada (threshold) da soma do valor de suas diversas entradas;
Neurônio artificial projetado por McCulloch
- psicólogo Donald Hebb (1949), demostrou que a capacidade da aprendizagem em redes neurais vem da alteração da eficiência sináptica, isto é, a conexão somente é reforçada se tanto as células pré-sinápticas quanto as pós-sinápticas estiverem excitadas;
- e Rosemblatt (1958) mostrou em seu livro (Principles of Neurodynamics) o modelo dos “Perceptrons”. Nele, os neurônios eram organizados em camada de entrada e saída, onde os pesos das conexões eram adaptados a fim de se atingir a eficiência sináptica;
Rede de perceptrons proposta por Rosemblatt
- Em 1960 surgiu a rede ADALINE(ADAptative LInear Network) e o MADALINE(Many ADALINE) perceptron, proposto por Widrow e Hoff. O ADALINE/MADALINE utilizou saídas analógicas em uma arquitetura de três camadas.
Redes ADALINE e MADALINE
Muitos históricos desconsideram a existência de pesquisa nesssa área nos anos 60 e 70 e apontam uma retomada das pesquisas com a publicação dos trabalhos do físico e biólogo Hopfield (1982) relatando a utilização de redes simétricas para otimização, através de um algoritmo de aprendizagem que estabilizava uma rede binária simétrica com realimentação.
Rumelhart, Hinton e Williams introduziram o poderoso método Backpropagation.
Estrutura do método Backpropagation
Cooper, Cowan, Fukushima, von der Malsburg e muitos outros foram alguns dos muitos pesquisadores dos anos 60 e 70, cujos estudos não devem ser menosprezados.
Fatos Históricos em ordem cronológica:
– 1943: McCULLOUGH e PITTS estabeleceram as bases da neurocomputação, com modelos matemáticos.
– 1949: HEBB traduziu matematicamente a sinapse dos neurônios biológicos.
– 1951: MINSKI constrói o Snark, primeiro neurocomputador com capacidade de aprendizado, ou seja, ajustava automaticamente os pesos entre as sinapses. Não executou nenhuma função útil.
– 1957: ROSENBLATT concebeu o “perceptron”, que era uma rede neural de duas camadas, usado no reconhecimento de caracteres.
– 1962: WIDROW desenvolveu um processador para redes neurais e fundou a primeira empresa de circuitos neurais digitais, a Memistor Corporation.
– 1967: Fim das verbas destinadas à pesquisa de redes neurais.
– 1974: WERBOS lançou bases para o algorítmo de retropropagação (backpropagation).
Neurocomputação
Os modelos neurais, procuram aproximar o processamento dos computadores ao cérebro. As redes neurais possuem um grau de interconexão similar a estrutura dos cérebro e um computador convencional moderno a informação é transferida em tempos específicos dentro de um relacionamento com um sinal para sincronização.
A tabela abaixo, traça um comparativo entre o cérebro humano e o computador:
Parâmetro |
Cérebro |
Computador |
Material | Orgânico | Metal e plástico |
Velocidade | Milisegundos | Nanosegundos |
Tipo de Processamento | Paralelo | Seqüencial |
Armazenamento | Adaptativo | Estático |
Controle de Processos | Distribuído | Centralizado |
Número de elementos processados | 10 e 11 à 10 e 14 | 10 e 5 à 10 e 6 |
Ligações entre elementos processados | 10.000 | <10 |
Quadro comparativo entre cérebro e o computador
O mesmo paralelo pode ser traçado comparando o computador com as redes neurais. Para tanto, a comparação não se dará com um computador específico encontrado no mercado, mas sim com o paradigma predominante nos computadores atuais.
Computadores |
Neurocomputadores |
Executa programas | Aprende |
Executa operações lógicas | Executa operações não lógicas, transformações, comparações |
Depende do modelo ou do programador | Descobre as relações ou regras dos dados e exemplos |
Testa uma hipótese por vez | Testa todas as possibilidades em paralelo |
Tabela 02 – Quadro comparativo entre computadores e neurocomputadores
Motivação
A partir do momento em que as máquinas começaram evoluir, um grande desejo do homem tem sido a criação de uma máquina que possa operar independentemente do controle humano. Uma máquina cuja independência seja desenvolvida de acordo com seu próprio aprendizado e que tenha a capacidade de iteragir com ambientes incertos (desconhecidos por ela), uma máquina que possa ser chamada de autônoma, inteligente ou cognitiva.
O sucesso de uma máquina autônoma dependeria única e exclusivamente de sua capacidade de lidar com uma variedade de eventos inesperados no ambiente em que opera. Estas máquinas teriam maior capacidade de aprender tarefas de alto nível cognitivo que não são facilmente manipuladas por máquinas atuais, e continuariam a se adaptar e realizar tais tarefas gradativamente com maior eficiência, mesmo que em condições de ambiente imprevisíveis. Então, seriam muito úteis onde a iteração humana é perigosa, tediosa ou impossível; como em reatores nucleares, combate ao fogo, operações militares, exploração do espaço a distâncias em que um a nave espacial estaria fora do alcance do controle na terra porém eviando informações.
Organismos humanos são uma fonte de motivação para o desenvolvimento destas máquinas, e proporcionam diversas dicas para o desenvolvimento de algoritmos de aprendizado e adaptação . Assim, espera-se que algumas das características de organismos biológicos de aprendizado e adaptação estejam presentes nas mesmas.
Enquanto computadores funcionam de modo sequencial, proporcionando maior eficiência na resolução de tarefas nas quais devem ser sequidas etapas. O cérebro humano funciona de modo paralelo, e sendo extremamente conectado é mais eficiente na resolução de tarefas que exigem várias variáveis.
O motivo pelo qual máquinas inspiradas na biologia são diferentes das máquinas atuais se encontra no fato de que as máquinas atuais baseiam seu processamento explicitamente em modelos matemáticos.Mecanismos de controle baseado em mecanismos neurais entretanto, não são baseados em modelos, utilizam cálculos matemáticos para efetuar suas operações porém podem coordenar diversos graus de liberdade durante a execução de tarefas manipulativas e em ambientes desestruturados. Eles são capazes de lidar com tarefas complicadas sem que tenham que desenvolver um modelo matemático e nem um modelo do ambiente em que operam.
Baseado nas características de seres biológicos, acredita-se que surgirá em um futuro próximo, uma geração completa de novos sistemas computacionais, muito mais eficientes e inteligentes que os sistemas atuais.
Uma Introdução às Redes Neurais Artificiais
As redes neurais artificiais consistem em um método de solucionar problemas de inteligência artificial, construíndo um sistema que tenha circuitos que simulem o cérebro humano, inclusive seu comportamento, ou seja, aprendendo, errando e fazendo descobertas. São mais que isso, são técnicas computacionais que apresentam um modelo inspirado na estrutura neural de organismos inteligentes e que adquirem conhecimento através da experiência. Uma grande rede neural artificial pode ter centenas ou milhares de unidades de processamento, enquanto que o cérebro de um mamífero pode ter muitos bilhões de neurônios.
Apesar da complexidade da redes neurais não permitir uma única definição, as linhas seguintes seguem como uma tentativa das inúmeras definições ou interpretações do que seja realmente uma rede neural.
Um grafo direcionado é um objeto geométrico que consiste de um conjunto de pontos, chamados nós, ao longo de um conjunto de segmentos de linhas direcionadas entre eles. Uma rede neural é uma estrutura de processamento de informação distribuída paralelamente na forma de um grafo direcionado, com algumas restrições e definições próprias.
Os nós deste grafo são chamados elementos de processamento. Suas arestas são conexões, que funcionam como caminhos de condução instantânea de sinais em uma única direção, de forma que seus elementos de processamento podem receber qualquer número de conexões de entrada. Estas estruturas podem possuir memória local, e também possuir qualquer número de conexões de saída desde que os sinais nestas conexões sejam os mesmos. Portanto, estes elementos tem na verdade uma única conexão de saída, que pode dividir-se em cópias para formar múltiplas conexões, sendo que todos carregam o mesmo sinal.
Então, a única entrada permitida para a função de transferência (que cada elemento de processamento possui) são os valores armazenados na memória local do elemento de processamento e os valores atuais dos sinais de entrada nas conexões recebidas pelo elemento de processamento. Os únicos valores de saída permitidos a partir da função de transferência são valores armazenados na memória local do elemento de processamento, e o sinal de saída do mesmo.
A funcão de transferência pode operar continuamente ou episodicamente. Sendo que no segundo caso, deve existir uma entrada chamada “activate” que causa o ativamento da função de transferência com o sinal de entrada corrente e com valores da memória local, e produzir um sinal de saída atualizado (ocasionalmente alterando valores da memória). E no primeiro caso, os elementos estão sempre ativados, e a entrada “activate” chega através de uma conexão de um elemento de processamento agendado que também é parte da rede.
Sinais de entrada para uma rede neural a partir de fora da rede chegam através de conexões que se originam do mundo externo, saídas da rede para o mundo externo são conexões que deixam a rede.
De forma geral, a operação de uma célula da rede se resume em:
- Sinais são apresentados à entrada;
- Cada sinal é multiplicado por um peso que indica 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 excede um limite (threshold) a unidade produz uma saída;
1. O Neurônio Artificial e a Rede Neural
Assim como o sistema nervoso é composto por bilhões de células nervosas, a rede neural artificial também seria formada por unidades que nada mais são que pequenos módulos que simulam o funcionamento de um neurônio. Estes módulos devem funcionar de acordo com os elementos em que foram inspirados, recebendo e retransmitindo informações.
2.O Neurônio Artificial
O fisiologista Warrem MacCulloch interpretou o funcionamento do neurônio biológico como sendo um circuito de entradas binárias combinadas por uma soma ponderada (com pesos) produzindo uma entrada efetiva:
fig06-Modelo de McCulloch e Pitts
No modelo geral de neurônio (fig06) as entradas WiUi são combinadas usando uma função F, para produzir um estado de ativação do neurônio (correspondente à freqüência de descarga do neurônio biológico).As entradas chegam através dos dentritos e tem um peso atribuído pela sinapse.
fig07-Esquema de um neurônio artificial
A funcão básica de um neurônio é somar as entradas e retornar uma saída, caso esse valor seja maior que o valor de soma (threshold).
3. A Rede Neural Artificial (Multilayer Perceptron)
A rede neural artificial é um sistema de neurônios ligados por conexões sinápticas e dividido em neurônios de entrada, que recebem estímulos do meio externo, neurônios internos ou hidden (ocultos) e neurônios de saída, que se comunicam com o exterior. A forma de arranjar perceptrons em camadas é denominado Multilayer Perceptron. O multilayer perceptron foi concebido para resolver problemas mais complexos, os quais não poderiam ser resolvidos pelo modelo de neurônio básico. Um único perceptron ou uma combinação das saídas de alguns perceptrons poderia realizar uma operação XOR, porém, seria incapaz de aprendê-la. Para isto são necessárias mais conexões, os quais só existem em uma rede de perceptrons dispostos em camadas. Os neurônios internos são de suma importância na rede neural pois provou-se que sem estes torna-se impossível a resolução de problemas linearmente não separáveis. Em outras palavras pode-se dizer que uma rede é composta por várias unidades de processamento, cujo funcionamento é bastante simples. Essas unidades, geralmente são conectadas por canais de comunicação que estão associados a determinado peso. As unidades fazem operações apenas sobre seus dados locais, que são entradas recebidas pelas suas conexões. O comportamento inteligente de uma Rede Neural Artificial vem das interações entre as unidades de processamento da rede.
A maioria dos modelos de redes neurais possui alguma regra de treinamento, onde os pesos de suas conexões são ajustados de acordo com os padrões apresentados. Em outras palavras, elas aprendem através de exemplos. Arquiteturas neurais são tipicamente organizadas em camadas, com unidades que podem estar conectadas às unidades da camada posterior.
A rede neural passa por um processo de treinamento a partir dos casos reais conhecidos, adquirindo, a partir daí, a sistemática necessária para executar adequadamente o processo desejado dos dados fornecidos. Sendo assim, a rede neural é capaz de extrair regras básicas a partir de dados reais, diferindo da computação programada, onde é necessário um conjunto de regras rígidas pré-fixadas e algoritmos.
fig08-Organização em camadas.
Usualmente as camadas são classificadas em três grupos:
- Camada de Entrada: onde os padrões são apresentados à rede;
- Camadas Intermediárias ou Ocultas: onde é feita a maior parte do processamento, através das conexões ponderadas; podem ser consideradas como extratoras de características;
- Camada de Saída: onde o resultado final é concluído e apresentado.Redes neurais são também classificadas de acordo com a arquitetura em que foram implementadas, topologia, características de seus nós, regras de treinamento, e tipos de modelos.
Classificação de Redes Neurais Artificiais
Um dos objetivos da pesquisa sobre redes neurais na computação é desenvolver morfologias neurais matemáticas, não necessariamente baseada na biologia, que podem realizar funções diversas. Na maior parte dos casos, modelos neurais são compostos de muitos elementos não lineares que operam em paralelo e que são classificados de acordo com padrões ligados à biologia.
Quando um processo é criado visando utilizar aspectos de redes neurais começam com o desenvolvimento de um neurônio artificial ou computacional baseado no entendimento de estruturas biológicas neurais, seguidas do aprendizado de mecanismos voltados para um determinado conjunto de aplicações. Ou em outras palavras, seguindo as três etapas:
- O desenvolvimento de modelos neurais motivado por neurônios biológicos;
- Modelos de estruturas e conexões sinápticas;
- O aprendizado das regras (um método de ajuste de pesos ou forças de conexões internodais)
Por causa de diferenças entre algumas ou às vezes todas as entidades envolvidas, diferentes estruturas de redes neurais tem sido desenvolvidas por pesquisadores. Do ponto de vista estrutural, a arquitetura de redes neurais pode ser classificada como estática, dinâmica ou fuzzy, e de única camada ou múltiplas camadas (seu significado é melhor especificado na parte de Topologia de Redes Neurais Artificiais). Além disso, diferenças computacionais surgem também quando se trata da maneira com que são feitas as conexões existentes entres os neurônios. Estas conexões podem ser estritamente no sentido de ida, no sentido de ida e volta, lateralmente conectadas, topologicamente ordenadas ou híbridas.
A aplicação de redes neurais pode ser classificada em classes distintas: Reconhecimento de padrões e Classificação; Processamento de imagem e visão; Identificação de sistema e controle e Processamento de sinais. É importante verificar que uma determinada aplicação de um sistema baseado em rede neural não precisa necessariamente ser classificada em apenas uma das citadas acima.
Topologias de Redes Neurais Artificiais
Disposição dos Neurônios:
De acordo com Rummelhart, a rede neural deve possuir no mínimo duas camadas, a de entrada de dados e a da saída dos resultados. Como a rede apresenta desempenho muito limitado com somente duas camadas, a adição de uma camada intermediária faz-se necessária. Neste tipo de configuração, cada neurônio está ligado com todos os outros das camadas vizinhas, mas neurônios da mesma camada não se comunicam, além da comunicação ser unidirecional, apresentando assim um comportamento estático.
Já a rede neural de Hopfield apresenta comportamento dinâmico e fluxo de dados multidirecional devido à integração total dos neurônios, desaparecendo assim a idéia da camadas bem distintas. Com isso seu funcionamento é mais complexo, havendo certas complicações, seja na fase de aprendizado quanto na fase de testes. Seu uso é direcionado à problemas de minimização e otimização, como por exemplo de percurso de caminhões.
fig09-modelos de Rummelhart e Hopfield
Há pesquisadores como HECHT – NIELSEN, que afirmam que com apenas uma camada oculta já é possível calcular uma função arbitrária qualquer a partir de dados fornecidos. De acordo com HECHT – NIELSEN, a camada oculta deve ter por volta de 2i+1 neurônios, onde i é o número de variáveis de entrada.
Outros, no caso de CYBENKO, defendem o uso de duas camadas ocultas.
No caso de KUDRICKY, empiricamente observou-se que para cada 3 neurônios da primeira camada oculta era preciso um da segunda camada.
Já LIPPMANN afirma que a segunda camada oculta deve ter o dobro de neurônios da camada de saída. No caso de apenas uma camada oculta ela deverá ter s(i+1) neurônios, onde s é o número de neurônios de saída e i o número de neurônios na entrada.
Outros autores definem o número máximo como:
Omax = c / 10.(i+s)
onde s: número de neurônios de saída
- i: número de neurônios na entrada
Em redes pequenas o número de neurônios da camada oculta pode ser a média geométrica entre o número de neurônios de entrada pelo número de neurôrios de saída.
Independente de cada abordagem, quanto mais camadas de neurônios, melhor é o desempenho da rede neural pois aumenta a capacidade de aprendizado, melhorando a precisão com que ela delimita regiões de decisão. Estas regiões de decisão são intervalos fixos onde a resposta pode estar. A camada de entrada possui um neurônio especial chamado de “bias” e serve para aumentar os graus de liberdade, permitindo uma melhor adaptação, por parte da rede neural, ao conhecimento à ela fornecido.
Ciclos:
1. Redes Diretas
São redes neurais cujo grafo não possui ciclos e podem ser representadas em camadas. Por exemplo, os neurônios que recebem sinais de excitação do meio externo estao na camada de entrada; os neurônios que estão na saída são chamados de camada de saída.
fig10-Rede Direta
2. Redes com ciclos
São redes em que o grafo de conectividade contém pelo menos um ciclo. São também chamadas redes com realimentação ou com feedback.
3. Redes simétricas
São redes cuja matriz (do grafo de conectividade) é simétrica, sendo um caso particular das redes com ciclos.
fig11-Rede Simétrica
Processos de Aprendizado de uma Rede Neural Artificial<>
A propriedade mais importante das redes neurais é a habilidade de aprender de seu ambiente e com isso melhorar seu desempenho. Isso é feito através de um processo iterativo de ajustes aplicado a seus pesos, o treinamento. O aprendizado ocorre quando a rede neural atinge uma solução generalizada para uma classe de problemas.
Denomina-se algortmo de aprendizado a um conjunto de regras bem definidas para a solução de um problema de aprendizado. Existem muitos tipos de algoritmos de aprendizado específicos para determinados modelos de redes neurais, estes algoritmos diferem entre si principalmente pelo modo como os pesos são modificados.
A rede neural se baseia nos dados para extrair um modelo geral. Portanto, a fase de aprendizado deve ser rigorosa e verdadeira, a fim de se evitar modelos espúrios. Todo o conhecimento de uma rede neural está armazenado nas sinapses, ou seja, nos pesos atribuídos às conexões entre os neurônios. De 50 a 90% do total de dados deve ser separado para o treinamento da rede neural, dados estes escolhidos aleatoriamente, a fim de que a rede “aprenda” as regras e não “decore” exemplos. O restante dos dados só é apresentado à rede neural na fase de testes a fim de que ela possa “deduzir” corretamente o interrelacionamento entre os dados.
Outro fator importante é a maneira pela qual uma rede neural se relaciona com o ambiente. Nesse contexto existem os seguintes paradigmas de aprendizado:
1. Por independência de quem aprende
As Redes Neurais Artificiais aprendem por memorização, contato, exemplos, por analogia, por exploração e também por descoberta.
2. Por retroação do mundo
Diz repeito a ausência ou presença de de realimentação explícita do mundo exterior, ou seja, que em certos intervalos de tempo um agente assinala acertos e erros.
- 2.1 Aprendizado Supervisionado: utiliza um agente externo que indica à rede um comportamento bom ou ruim de acordo com o padrão de entrada 2.2 Aprendizado Não Supervisionado (auto-organização): não utiliza um agente externo indicando a resposta desejada para os padrões de entrada, utiliza-se entretanto, exemplos de coisas semelhantes para que a rede responda de maneira semelhante.
3. Por Finalidade do Aprendizado
- 3.1 Auto-associador: é apresentada à rede uma coleção de exemplos para que ela memorize. Quando se apresenta um dos elementos da coleção de exemplos mas de modo errôneo, a rede deve mostrar o exemplo original, funcionando assim como um filtro. 3.2 Hetero-associador: é uma variação do Auto-associador, mas que se memoriza um conjunto de pares. O sistema aprende a reproduzir o segundo elemento do par mesmo que o primeiro esteja pouco modificado, funcionando desta maneira como um reconhecedor de padrões.
É necessário também que exista um Detector de Regularidades, que nada mais é que um reconhecedor de padrões em que o sistema deve se auto-organizar e criar padrões possíveis.
Podemos denominar ainda ciclo como sendo uma apresentação de todos os N pares (entrada e saída) do conjunto de treinamento no processo de aprendizado. A correção dos pesos num ciclo pode ser executado de dois modos:
- Modo Padrão: A correção dos pesos acontece a cada apresentação à rede de um exemplo do conjunto de treinamento. Cada correção de pesos baseia-se somente no erro do exemplo apresentado naquela iteração. Assim, em cada ciclo ocorrem N correções.
- Modo Batch: Apenas uma correção é feita por ciclo. Todos os exemplos do conjunto de treinamento são apresentados à rede, seu erro médio é calculado e a partir deste erro fazem-se as correções dos pesos.
Hebbian Learning
Descreveremos aqui uma sugestão simples de uma teoria que responde à pergunta: Como nós aprendemos? A base desta teoria data do ano de 1949 do livro “Organization of Behavior”, escrito por Hebb. A idéia central estava na seguinte afirmação:
“Quando um axônio de uma célula A está próxima o suficiente de excitar uma célula B e repetidamente ou persistentemente toma parte em ativá-la, algum processo crescente ou mudança metabolica se apossa de uma ou ambas as células de forma que a eficiência de A, assim como a de uma das células B excitadas, são aumentadas”.
Assim como o modelo de McCulloch-Pitts, esta lei de aprendizagem não explica tudo sobre este tema, porém, de uma forma ou de outra, ela está presente em muitos modelos de redes neurais que conhecemos hoje. Utilizaremos como exemplo, o condicionamento clássico, o experimento de Pavlov, para ilustrar a idéia anteriormente exposta.
Pelo fato das conexões através de neurônios ocorrerem através de sinapses, é realmente razoável imaginar que qualquer mudança que ocorra durante o aprendizado ocorra nestas. Hebb teorizou que a área da junção sináptica aumenta. Teorias mais recentes afirmam que o responsável por isto é um aumento na taxa de liberação neurotransmissora efetuada pela célula pré-sináptica. Em qualquer evento, mudanças certamente ocorrem na sinapse. Se nem a célula pré, nem a pós sináptica são alteradas como um todo, outras respostas, que não são relacionadas ao experimento podem ser reforçadas.
Esta página procura ilustrar os passos necessários para o desenvolvimento de aplicações utilizando redes neurais artificiais.
1 e 2. Coleta de dados e separação em conjuntos
Os dois primeiros passos do processo de desenvolvimento de redes neurais artificiais são a coleta de dados relativos ao problema e a sua separação em um conjunto de treinamento e um conjunto de testes. Esta tarefa requer uma análise cuidadosa sobre o problema para minimizar ambiguidades e erros nos dados. Além disso, os dados coletados devem ser significativos e cobrir amplamente o domínio do problema; não devem cobrir apenas as operações normais ou rotineiras, mas também as exceções e as condições nos limites do domínio do problema.
Normalmente, os dados coletados são separados em duas categorias: dados de treinamento, que serão utilizados para o treinamento da rede e dados de teste, que serão utilizados para verificar sua performance sob condições reais de utilização. Além dessa divisão, pode-se usar também uma subdivisão do conjunto de treinamento, criando um conjunto de validação, utilizado para verificar a eficiência da rede quanto a sua capacidade de generalização durante o treinamento, e podendo ser empregado como critério de parada do treinamento.
Depois de determinados estes conjuntos, eles são geralmente colocados em ordem aleatória para prevenção de tendências associadas à ordem de apresentação dos dados. Além disso, pode ser necessário pré-processar estes dados, através de normalizações, escalonamentos e conversões de formato para torná-los mais apropriados à sua utilização na rede.
3. Configuração da rede
O terceiro passo é a definição da configuração da rede, que pode ser dividido em três etapas:
3.1 Seleção do paradigma neural apropriado à aplicação.
3.2 Determinação da topologia da rede a ser utilizada – o número de camadas, o número de unidades em cada camada, etc.
3.3 Determinação de parâmetros do algoritmo de treinamento e funções de ativação. Este passo tem um grande impacto na performance do sistema resultante.
Existem metodologias, “dicas” e “truques” na condução destas tarefas. Normalmente estas escolhas são feitas de forma empírica. A definição da configuração de redes neurais é ainda considerada uma arte, que requer grande experiência dos projetistas.
4. Treinamento
O quarto passo é o treinamento da rede. Nesta fase, seguindo o algoritmo de treinamento escolhido, serão ajustados os pesos das conexões. É importante considerar, nesta fase, alguns aspectos tais como a inicialização da rede, o modo de treinamento e o tempo de treinamento.
Uma boa escolha dos valores iniciais dos pesos da rede pode diminuir o tempo necessário para o treinamento. Normalmente, os valores iniciais dos pesos da rede são números aleatórios uniformemente distribuídos, em um intervalo definido. A escolha errada destes pesos pode levar a uma saturação prematura. Nguyen e Widrow encontraram uma função que pode ser utilizada para determinar valores iniciais melhores que valores puramente aleatórios.
Quanto ao modo de treinamento, na prática é mais utilizado o modo padrão devido ao menor armazenamento de dados, além de ser menos suscetível ao problema de mínimos locais, devido à pesquisa de natureza estocástica que realiza. Por outro lado, no modo batch se tem uma melhor estimativa do vetor gradiente, o que torna o treinamento mais estável. A eficiência relativa dos dois modos de treinamento depende do problema que está sendo tratado.
Quanto ao tempo de treinamento, vários fatores podem influenciar a sua duração, porém sempre será necessário utilizar algum critério de parada. O critério de parada do algoritmo backpropagation não é bem definido, e geralmente é utilizado um número máximo de ciclos. Mas, devem ser considerados a taxa de erro médio por ciclo, e a capacidade de generalização da rede. Pode ocorrer que em um determinado instante do treinamento a generalização comece a degenerar, causando o problema de over-training, ou seja a rede se especializa no conjunto de dados do treinamento e perde a capacidade de generalização.
O treinamento deve ser interrompido quando a rede apresentar uma boa capacidade de generalização e quando a taxa de erro for suficientemente pequena, ou seja menor que um erro admissível. Assim, deve-se encontrar um ponto ótimo de parada com erro mínimo e capacidade de generalização máxima.
5. Teste
O quinto passo é o teste da rede. Durante esta fase o conjunto de teste é utilizado para determinar a performance da rede com dados que não foram previamente utilizados. A performance da rede, medida nesta fase, é uma boa indicação de sua performance real.
Devem ser considerados ainda outros testes como análise do comportamento da rede utilizando entradas especiais e análise dos pesos atuais da rede, pois se existirem valores muito pequenos, as conexões associadas podem ser consideradas insignificantes e assim serem eliminadas (prunning). De modo inverso, valores substantivamente maiores que os outros poderiam indicar que houve over-training da rede.
6. Integração
Finalmente, com a rede treinada e avaliada, ela pode ser integrada em um sistema do ambiente operacional da aplicação. Para maior eficiência da solução, este sistema deverá conter facilidades de utilização como interface conveniente e facilidades de aquisição de dados através de planilhas eletrônicas, interfaces com unidades de processamento de sinais, ou arquivos padronizados. Uma boa documentação do sistema e o treinamento de usuários são necessários para o sucesso do mesmo.
Além disso, o sistema deve periodicamente monitorar sua performance e fazer a manutenção da rede quando for necessário ou indicar aos projetistas a necessidade de retreinamento. Outras melhorias poderão ainda ser sugeridas quando os usuários forem se tornando mais familiares com o sistema, estas sugestões poderão ser muito úteis em novas versões ou em novos produtos.
7. Exemplo de Implementação
Para exemplificar o desenvolvimento de uma rede neural, tomemos o cálculo da função y é a raiz quadrada de x. Temos, então dois neurônios para a camada de entrada de dados, um de “bias” e outro de entrada efetiva; um neurônio para a saída e, de acordo com HECHT – KOLMOGOROV, três neurônios na camada oculta.
fig12-Representação para cálculo da função y
Seja os dados números entre 1 a 100 com suas respectivas raízes quadradas. Serão escolhidos aleatóriamente 10 números para a fase de testes e os restantes para a fase de treinamento.
O aprendizado começa com a aplicação de 5000 iterações à rede neural e em seguida é realizado testes, onde se compara os resultados obtidos com os valores reais. A diferença encontrada nesta comparação define o grau de ajuste que os dados obtidos pela rede neural deve sofrer, em relação aos dados reais.
Outras 5000 iterações são realizadas, dando segmento a fase de aprendizado, seguido de novos testes. Se a diferença entre os dados obtidos e os reais diminuiu, significa que o nível de aprendizado melhorou e que novas 5000 iterações serão aplicadas a fim de se refinar a rede. Caso contrário, a rede foi treinada em excesso, fazendo com que ela memorize os dados e não produza uma relação entre eles.
Comparando com uma criança na escola, digamos que a rede neural “decorou” a lição, os exercícios e não realmente “entendeu”, “assimilou”, cometendo erros em “exercícios” semelhantes aos que lhe foram apresentados, mas de valores alterados.
Após 30000 iterações de aprendizado, a rede neural informou o valor 5,942 para a raiz quadrada de 36, ou seja, um erro de aproximadamente 1%. Obviamente, para este caso, a rede neural não se mostrou mais eficiente que uma função sqrt de qualquer linguagem estruturada, mas pode-se perceber o poder de aprendizado e de exatidão de uma rede neural, se devidamente treinada.
Aplicações de Redes Neurais Artificiais
Aplicações de redes neurais são inúmeras. Muitos recebem sua primeira introdução lendo a respeito das técnicas no prognóstico de mercados financeiros. Grupos de investimento conhecidos utilizam redes neurais para analisar pelo menos uma parte do mercado financeiro e fazerem suas seleções.
O reconhecimento ótico de caracteres (OCR) é outro tipo de aplicação que já existe e está crescendo, e em breve estaremos em constante contato com esse tipo de aplicação. Outras aplicações bem sucedidas das técnicas de redes neurais artificiais são: análise de pesquisa de mercado, como acima citado, controle de processos industriais, aplicações climáticas, e identificação de fraude de cartão de crédito. Um banco americano chamado Mellon Bank instalou um sistema de detecção de fraudes de cartão de crédito implementado com técnicas de redes neurais e os prejuízos evitados pelo novo sistema conseguiram cobrir os gastos de instalação em seis meses. Vários outros bancos começam a utilizar sistemas baseados em redes neurais para controlar fraudes de cartão de crédito. Estes sistemas têm a capacidade de reconhecer uso fraudulento com base nos padrões criados no passado com uma precisão melhor que em outros sistemas.
Outro exemplo da utilização de redes neurais para melhoria na tomada de decisões é nodiagnóstico médico. Em seu aprendizado, são submetidos uma série de diagnósticos de pacientes, de várias características, com vários sintomas e os resultados de seus testes. Também serão fornecidos os diagnósticos médicos para cada doença. Então quando forem apresentados os dados de um novo paciente, com seus sintomas, a rede fornecerá um diagnóstico para os novos casos. Isto essencialmente criará um sistema com o conhecimento de vários médicos, e fornecerá um diagnóstico inicial em tempo real à um médico. É importante mencionar que com isso o que se pretende é implementar uma ferramenta de auxílio ao médico, e não um programa que o substitua.
Outras aplicações:
- análise e processamento de sinais;
- controle de processos;
- robótica;
- classificação de dados;
- reconhecimento de padrões em linhas de montagem ;
- filtros contra ruídos eletrônicos;
- análise de imagens;
- análise de voz;
- avaliação de crédito;
- análise de aroma e odor– um projeto que está em desenvolvimento, buscando a análise de odor via nariz eletrônico;
- análise e diagnóstico de descargas parciais pelo reconhecimento do padrão acústico– trata-se de uma tese de mestrado cujo objetivo é criar um sistema com capacidades de classificar o padrão acústico de uma descarga parcial ;
Para estas e muitas outras aplicações existem páginas relacionadas em links para outros sites relacionados, inclusive com alguns simuladores, e listagens de programas fontes.
Por que utilizar Redes Neurais?
De acordo com diversas estruturas neurais e algoritmos de aprendizagem propostos por vários pesquisadores, redes neurais possuem certas características exclusivas de sistemas biológicos. Tais características entram em conflito com os tradicionais métodos computacionais. Sistemas de computação baseados em redes neurais tem a capacidade de receber ao mesmo tempo várias entradas e distribuí-las de maneira organizada. Geralmente, as informações armazenadas por uma rede neural é compartilhada por todas as suas unidades de processamento. Característica que contrasta com os atuais esquemas de memória, onde a informação fica confinada em um determinado endereço.
Em um sistema de rede neural, a informação pode parecer ter representação redundante, porém, o fato de que ela se encontre distribuída por todos os elementos da rede significa que mesmo que parte da rede seja destruída, a informação contida nesta parte ainda estará presente na rede, e poderá ser recuperada. Portanto, a redundância na representação de informações em uma rede neural, diferente de outros sistemas, transforma-se em uma vantagem, que torna o sistema tolerante a falhas. Os atributos de uma rede neural, tais como aprender através de exemplos, generalizações redundantes, e tolerância a falhas, proporcionam fortes incentivos para a escolha de redes neurais como uma escolha apropriada para aproximação para a modelagem de sistemas biológicos. Todo o potencial de uma rede neural pode ser enumerado nos parágrafos seguintes.
O modelo de rede neural tem muitos neurônios conectados por pesos com capacidade de adaptação que que podem ser arranjados em uma estrutura paralela. Por causa deste paralelismo, a falha de alguns nêurons não causam efeitos significantes para a performance de todo o sistema, o que é chamado de tolerância a falhas.
A principal força na estrutura de redes neurais reside em sua habilidades de adaptação e aprendizagem. A habilidade de adaptação e aprendizagem pelo ambiente significa que modelos de redes neurais podem lidar com dados imprecisos e situações não totalmente definidas. Uma rede treinada de maneira razoável tem a habilidade de generalizar quando é apresentada à entradas que não estão presentes em dados já conhecidos por ela.
A característica mais significante de redes neurais está em sua habilidade de aproximar qualquer função continua não linear de um grau de correção desejado. Esta habilidade das redes neurais as tem tornado útil para modelar sistemas não lineares na combinação de controladores não lineares.
Redes Neurais podem ter várias entradas e várias saídas, eles são facilmente aplicáveis à sistemas com muitas variáveis.
Com o avanço em tecnologias de hardware, existem componentes com funções voltadas á sistemas com implementações voltadas para redes neurais, o que traz uma velocidade adicional à computação neural.
– Neuroimitator V3.1 para Windows 3.1 da Neuroma-RD Ltd: Ferramenta que permite à pesquisadores construir uma arquitetura arbitrária de rede neural e decidir parâmetros de neurônios envolvidos e conexões sinápticas.
Download da versão 3.1 demo para Windows 3.1 (325K).
Download da biblioteca MFC250.DLL para Windows 3.1 (175K).
Esta biblioteca é necessária para o funcionamento do Neuroimitator. Verifique se você já não o possui em seu subdiretório System de seu Windows.
– NeuroSolutions Demo v3.0: Um ambiente de simulação orientado a objeto para Redes Neurais para estudos de sistemas distribuídos complexos difíceis de serem estudados apenas na teoria. Suas ferramentas de vizualização permitem que o usuário verifique o comportamento da rede sem que seja necessário esperar até o fim de seu treinamento, além de permitir que parâmetros sejam alterados durante a execução da mesma.
Download Versão Demo do Arquivo #1 (1.0M).
Download Versão Demo do Arquivo #2 (1.3M).
Instruções para instalação:
Copie ns2demo1.zip e ns2demo2.zip para seu disco rígido;
Vá para o diretório onde estão os arquivos copiados;
Digite: “md disk1”
Digite: “pkunzip ns2demo1.zip disk1”
Digite: “mkdir disk2”
Digite: “pkunzip ns2demo2.zip disk2”
Inicie o Windows.
A partir do Gerenciador de Arquivos localize o arquivo “disk1setup.exe”
Duplo-click neste arquivo.
-Applets for Neural Networks and Artificial Life .
Diversos aplicativos em java com arquivos para download com manual, código fonte, documentação e instruções de instalação.
Links para outros sites relacionados
An Introduction To Neural Networks– Uma página que explica o que é uma rede neural e porque utilizar uma rede neural, tendo também classes de treinamento. Possui um exemplo prático da aplicação de redes neuraise vários outros artigos de projetos onde se aplicam redes neurais.
Neural Network FAQ – Este site é um ftp que tem uma série de FAQs (na verdade são sete) que conseguem abordar desde o mais básico ponto das redes neurais até livros sobre o assunto, e também links para softwares sharewares de aplicações que utilizam redes neurais. É visualizável pelo browser como uma página normal de web.
Attrasoft – Página da Attrasoft, empresa produz software que utilizam redes neurais para solução de problemas, tais como os mencionados em “Aplicações de redes neurais. Apresenta ainda documentação das etapas de execução dos programas e algumas versões demos.
Amsterdan University – Site da Universidade de Amsterdan com textos para download.
Artificial Neural Networks & Computation Brain Theory Group-Página do grupo de estudos da Illinois University. Contém links para grupos de discussão, páginas de professores e alunos do grupo que desenvolvem pesquisas ou projetos na área, e informações sobre eventos da área de inteligência artificial.
Simuladores de redes neurais – Página que traz o código fonte em linguagem C de vários simuladores de redes neurais de acordo com diferentes modelos (Adaline, Hopfield,…).
Spiderweb– Pagina com implementações de RNA´s em C++ e uma biblioteca geral para projeto e implementação de redes neurais artificiais.
Bogaziçi University – Página sobre o laboratório de Redes Neurais Universidade de Bogaziçi na Turquia. Possui meio de contato com professores e administradores, e informações sobre eventos realizados pela universidade.
Postech NN Lab – Homepage de um laboratório de redes neurais na Korea com informações sobre seus membros, projetos, e alguns artigos relacionados à redes neurais.
Jornal do Instituto de Tecnologia de Massashussetts – Site do jornal do MIT que traz novidades sobre redes neurais.
Softwares de Redes Neurais – Softwares para aprendizagem supervisionada, reconhecimento de padrões, distribuição invariante, sistemas financeiros e investimentos.
Face detection using Neural Networks– Página que contém uma aplicação de redes neurais, por meio de download.
Coleção de arquivos FTP sobre redes neurais
Neural Network at you Fingertips– Site que oferece alguns tipos de redes neurais, enfatizando sua utilização em situações reais e como é dado o relacionamento entre teoria e prática.
Artificial Intelligence and Neural Networks. Uma página com vários links para vários outros sites importantes sobre Redes Neurais.
Neural Networks Group at LPI. Site do grupo de Redes Neurais do Instituto de Física de Lebedev, pesquisas, projetos, pessoal… .
Biblio Neural Network – Central de pesquisas, onde podem ser encontrados livros, pesquisas, conferências e artigos que envolvem redes neurais.
Austrian Research Institute for Artificial Intelligence – Página criada por um grupo de pesquisa australiano, onde pode ser encontrado informações sobre pesquisas, projetos, publicações, entre outros.
Neural Network Toolbox for Matlab – Página sobre um ambiente para construção, pesquisa e simulação de redes neurais utilizando Matlab.
Neural Network Using Genetic Algorithms – Página sobre a utilização de redes neurais em conjunto com Algorítmos Genéticos em um projeto referente à aprendizagem.
Artificial Neural Network – Página que contém todos os principais tópicos relacionados à redes neurais, desde definições até aplicações e projetos.
Java Demonstrations of Neural Net Concepts – Página que contém vários programas que utilizam ou simulam propriedades e funcionameto de redes neurais em Java.
Neural Network with Java – Página sobre um projeto que relaciona componentes de Redes Neurais em estruturas de classes orientadas a objetos e Java.
Artificial Neural Networks Technology – Escrita sob a forma de livro, este site possui tópicos que abrangem todos ou quase todos os ítens referentes à Redes Neurais.
Neural Network At PNNL – Home Page at Pacific Northwest Natinal Laboratory, contém informações gerais sobre redes neurais, aplicações internas à PNNL, atividades correntes na WWW, links para vários demos on-line, entre outras.
Neural Networks Overview – Página que oferece uma visão geral de redes neurais através de slides, links para artigos, pacotes de software, exemplos, implementações de hardware.
Neural Networks Bookmarks– Página contendo apenas links sobre redes neurais, laboratórios, pesquisas, livros e conferencias.
Elson Felix Mendes Filho – Pagina pessoal do mestre em Ciencia da Computação com enfase em Redes Neurais Artificias pela Universidade de São Paulo que contém informações gerais sobre Redes Neurais e Algorítmos Genéticos.
Apesar da neurocomputação ter praticamente nascido juntamente com a computação programada nas décadas de 40 e 50, deve-se salientar que a implementação de uma rede neural naquela época era inviável, pois a fase de aprendizado, a fase mais difícil e demorada no desenvolvimento de uma rede, dependia (e ainda depende) de complicados algorítmos e de um número grande de iterações, algo que um ENIAC em 1946 não teria tanta disposição de fazê-lo. Hoje, com a tecnologia dos chips VLSI, a implementação das redes neurais tem sido facilitada.
Todas as informações aqui expostas nos levam a crer que o campo de redes neurais artificiais é acima de tudo extremamente vasto e promissor. Por ser um assunto que surgiu a muito tempo atrás, ganhou muita credibilidade, e devido á novas descobertas relacionadas a ela a cada instante, tornou-se bastante atrativo para profissionais de domínios distintos, tornando-se um assunto interdisciplinar. Os conhecimentos obtidos até hoje atraem o interesse de profissionais tais como psicologos, neurofisiologistas, engenheiros, cientistas cognitivos, e cientistas da computação, que buscam, cada um em sua área, novos caminhos através da computação neural.
- Filho, Edson Costa de Barros Carvalho., Modelagem, Aplicações e Implementações de redes Neurais. Anais da IV Escola Regional de Informática da SBC Regional Sul, 21 a 27 de abril de 1996. Páginas 36 – 53.
- Barreto, Jorge M., Introdução às Redes Neurais Artificiais. Anais V Escola Regional de Informática da SBC Regional Sul, 5 a 10 de maio de 1997. Páginas 41 – 71.
- Gorni, Antônio Augusto, Redes Neurais Artificiais – Uma Abordagem revolucionária em Inteligência Artificial. Revista MicroSistemas edição 133 páginas 14 a 25 e edição 134 páginas 14 a 17, Ano XII
- Gupta, Madan M.e Rao, Dandina H. – Neuro-Control Systems. Um volume selecionado reeditado. IEEE Neural Networks Council, Sponsor.
- Yoshida, Keila M. – Redes Neurais e suas aplicações em Inteligência Artificial. Trabalho de graduação de 1996
- Kovács, Zsolt L. – redes Neurais Artificias. Segunda edição, editora Collegium Cognitio, 1996
- Hecht-Nielsen, Robert-Neurocomputing. HNC, Inc. and University of California, San Diego.
- Freeman, James A./Skapura, David M., Neural Networks – Algorithms, Aplications and Programming Techniques. Loral Space Information Systems and Adjunct Faculty, School of Natural and Applied Sciences University of Houston at Clear Lake.