25 C
Sorocaba
sexta-feira, dezembro 13, 2024

Redes Neurais (1)

Autoria: Raphael Imperato

INTRODUÇÃO

As redes neurais surgiram por volta dos anos 50, quase ao mesmo tempo que os primeiros computadores que ocupavam prédios inteiros. A idéia era simular a atividade neuronal humana, definindo componentes lógicos similares aos neurônios naturais. O neurobiologista McCulloch e o estatístico Pitts foram os primeiros a propor o conceito de um neurônio como sendo uma unidade de processamento que recebia vários estímulos como entrada e gerava um sinal baseado no resulta do somatório destes estímulos.

O que faz as redes neurais atrativas é principalmente a característica peculiar de serem estruturas capazes de aprender comportamentos baseados em um treinamento com ou sem um “tutor”. Claro que o computador não vai freqüentar a escola, o que existe são algoritmos de aprendizagem que modificam as conexões que interligam os neurônios. Estes algoritmos podem ensinar a rede a responder a certos estímulos da mesma maneira. Por exemplo, se a letra “a “ (devidamente digitalizada) é mostrada à rede de vários tamanhos e formas, ela poderá generalizar todas estas entradas e dar uma única resposta para o conjunto de “a”(s) apresentado.

Na década de 60, no entanto, Marvin Minsky, um dos papas da inteligência Artificial, fundador do departamento de mesmo nome do MIT, jogou um balde de água fria nos teóricos apressadinhos. Ele conseguiu provar, utilizando ferramentas matemáticas simples, que as redes neurais eram incapazes de simular certas funções, ou seja, não eram a panacéia universal que se pensava. Somente na década de 80, com a descoberta de novas técnicas de aprendizado que definiam uma nova estrutura para as redes, na qual os cálculos de Minsky não se aplicavam, é que o campo tomou novo fôlego e o mercado abriu os olhos.

Inúmeras aplicações surgiram desde a década de 80, e a pesquisa nesta área é considerada uma das mais quentes em informática. Tem-se utilizado as redes como backend para vários problemas de reconhecimento de padrões, compressão de dados, controle de processos industriais, data mining etc.

Um dos primeiros usos que se fez das redes neurais foi no desenvolvimento de software de reconhecimento de caracteres. O grande número de documentos em papel que as empresas ainda hoje manipulam e o alto grau de informatização que a maioria das corporações possui atualmente criaram uma demanda gigantesca por tais softwares.

As redes neurais são usadas no processamento final das aplicações OCR (Optical Character Recognition) e formam o núcleo destes programas. Geralmente estas aplicações possuem várias estruturas neurais treinadas com os conjuntos de caracteres mais freqüentes em documentos. Pode se achar também um serviço mais especializado, onde as redes são treinadas exclusivamente com os caracteres que predominarão na aplicação.

Na indústria, as redes neurais estão sendo muito utilizadas em aplicações para controle de processos industriais, elas que se adequam ao uso das redes, pois lidam com parâmetros que mudam com o passar do tempo, as características das redes vêm bem a calhar, porque a cada nova configuração que o

processo assume, o software adapta-se respondendo aos novos estímulos de maneira que pode controlar o processo e seus novos parâmetros.

No primeiro semestre deste anos, a empresa britânica NTL lançou sua aplicação de data visualization, que utiliza realidade virtual para ajudar funcionários a pesquisar os imensos bancos de dados das corporações. Segundo a empresa, o módulo neural permite ensinar os computadores a se comportar como o cérebro humano, aprendendo e analisando informações.

Esta mesma empresa está trabalhando em cooperação com o governo britânico no próximo censo para tratar os campos deixados em branco nos formulários de censo. A idéia é preencher tais campos, a partir da análise de famílias que os preencheram corretamente e que se assemelhem a outras que não o fizeram. A tecnologia neural, neste mesmo grupo social.

Um dos problemas que inicialmente evitou a comercialização em larga escala das aplicações baseadas em redes neurais foi a falta de significado da sua estrutura. Isto é, uma rede nada mais é do que um conjunto de pesos (representados por números reais), e a observação destes números não traz muitas conclusões sobre a natureza do problema que esta sendo resolvido.

Entretanto, atualmente já existem no mercado várias ferramentas que permitem a visualização das entradas que têm maior efeito no processamento, ou da estrutura como um todo através da representação (ExplainNet da NeuralWare).

Um modelo baseado em Redes Neurais é chamado um modelo empírico, diferentemente de modelos construídos utilizando-se princípios básico (equações químicas ou físicas). Por isso, as redes neurais necessitam de uma boa quantidade de dados para resolver os problemas propostos.

Pode-se afirmar que são as Redes Neuronais o que há de mais avançado em termos de representação do conhecimento. Nos defrontamos na realidade com um sistema capaz de agir de maneira próxima a forma como o humano adquire e representa seu conhecimento. Baseado em estudos neurológicos, o desenvolvimento das Redes neuronais procurou formalizar um padrão matemático para as reações elétricas dos neurônios humanos. Desta forma, podemos estabelecer uma representação computacional para este procedimento.

Em linhas gerais, teremos uma estrutura composta de nós, associados a pesos. Os nós são conectados uns aos outros e qualquer conhecimento se propaga por todos eles de forma a alterar-lhes os pesos. A Rede terá tantos nós quanto mais precisa for a resposta desejada a um estímulo externo. Por restrições óbvias inerentes a todo conhecimento incipiente, as Redes Neuronais não estão capacitadas para lidar com uma diversidade de temas, como o fás o cérebro humano. Atuando sobre um tema específico, a Rede assimila o conhecimento sobre este, não através de regras (como um humano na escola) mas através da experimentação (como um humano na prática). A rede deve ser treinada sobre o tema, ou seja, lhe serão fornecidos dados de entrada e implementadas propagações de forma que a alteração dos pesos ao longo da Rede forneça uma saída compatível com a resposta conhecida àquele estímulo pré-determinado. Desta forma, balanceamos os pesos até obtermos um padrão de respostas ao estímulos, compatível com o que se conhece. Na verdade, o processo de aprendizado é bastante empírico.

Dentro de uma visão conceitual da DARPA (Defense Advanced Research Projects Agency), as Redes Neurais têm recebido muita atenção da comunidade de pesquisa nos últimos anos. A rede Neural

se mostrou eficiente na solução de problemas de reconhecimento de padrão, associando memória e recuperação de dados.

Segundo a própria conclusão da DARPA em estudos sobre Redes Neurais, Foi concluído que a Rede Neural possui um potencial muito elevado, necessitando de desenvolvimento tanto na área técnica quanto na área de hardware. As arquiteturas de Redes neurais podem se desdobrar em duas classes principais: Feedforward e Feedback.

O termo Rede Neural é usado para descrever várias topologias de interconexões simples, processando elementos que oferecem uma alternativa para uma tradicional aproximação com a computação. o tópico Rede Neural têm recebido muita atenção nos últimos dez anos, e receberá muita atenção no futuro. no estudo recente realizado pelo DARPA, procurou-se determinar a posição corrente e o seu potencial de utilidade das Redes Neutrais, avaliando a equivalência de tempo de investimento, energia e dinheiro.

Nos primordios de seu desenvolvimento, as redes reurais eram emuladas através de circuitos analógicos. A energia correspondente às conexões entre os neurônio (ou seja, a sinapse) era controlada por potenciômetros. Atualmente, é mais comum a utilização de “software” para a geração de redes neurais, ou seja, o funcionamento dos neurônios é simulado por programas. Uma tendência bastante recente é a implementação de redes neurais em circuitos digitais, visando à maximização de sua velocidade de processamento. Isto é conseguido através de arquiteturas digitais que permitam o processamento de dados de forma paralela. Normalmente elas são fornecidas na forma de placas que podem ser acopladas a micro-computadores ou estações de trabalho.

De forma bastante geral, pode-se subdividir as redes neurais em duas categorias básicas, em função de como são dispostos os neuronios e de como é efetuado seu treinamento. Ou seja:
• Em função do fluxo de dados: elas podem propagá-los unidirecionalmente, apenas para a frente (“feed-forward networks”) ou nos dois sentidos (“feedback network”).
• Em função da ausência ou não de supervisão durante o treinamento da rede neural.

Em função do fluxo de dados e tipo de treinamento existem dois tipos de redes neurais: a do tipo Rummelhart e a do tipo Hopfield.

Rummelhart – É aquela onde o fluxo dos dados se dá apenas em um sentido, ou seja, são unidimensionais. Elas são muito utilizadas devido a sua simplicidade e estabilidade, sendo aplicadas para classificação, análise e interpolação de dados, o que as torna particularmente adequadas para o modelamento de processos em geral.

Uma caraterística fundamental deste tipo de rede é a disposição dos neurônios em camadas. Deve haver no mínimo duas camadas: a de entrada (de dados) e a de saída (de resultados). Uma vez que o desempenho de redes neurais deste tipo que contenham apenas duas camadas é muito limitado, normalmente se inclui pelo menos uma camada intermediária entre as duas, também chamada de oculta. Cada neurônio está ligado a todos os neurônios das camadas vizinhas, mas não há ligações entre os neurônios de uma mesma camada. O comportamento deste tipo de rede é estático; ela se comporta de modo a tornar sua saída um reflexo da respectiva entrada. Ela deve ser treinada de modo a produzir os resultados desejados a partir da apresentação de dados reais.

HopField – Este tipo se caracteriza por apresentar fluxo de dados multidirecional. Seu comportamento é dinâmico, mais complexo que o das redes de Rummelhart, mas freqüentemente apresentam complicações inesperadas. Note-se que neste caso não há camadas discretas de neurônios: há total integração entre os dados de entrada e os resultados obtidos, pois todos os neurônios são ligados entre si. Tais redes são aplicadas em estudos sobre a otimização de conexões como, por exemplo, para se determinar o percurso ótimo de um caminhão de entregas ou um vendedor. Seu treinamento é feito de modo a minimizar a energia da rede, gerando um comportamento independente.

Todo o “conhecimento” de uma rede neural está armazenado em suas sinapses, ou seja, nos pesos relativos às conexões entre os neurônios. Ele é adquirido por um processo de treinamento, que consiste na apresentação de seqüência de dados conhecidos à rede neural, gerando um processo de ajuste dos pesos das sinapses de forma a capturar o “conhecimento”. O treinamento pode ser supervisionado ou não. No primeiro caso, é incluída no processo de treinamento uma etapa de verificação dos resultados calculados pela rede neural em treinamento. O erro observado a partir da comparação de resultados reais com os calculados pode ser utilizado para ajustar os pesos das sinapses de forma a aumentar a precisão da resposta da rede.

Nas redes neurais onde o treinamento não é supervisionado ocorre um processo interno de organização dos dados que leva a um grau ótimo de ajuste. Essas redes auto-organizadas podem, por exemplo, dividir dados fornecidos em categorias, em função do grau de similaridade entre eles, de forma totalmente automática.

CARACTERÍSTICAS DO DESEMPENHO DAS REDES NEURAIS

Em sua essência, redes neurais tendem a trabalhar com os dados de uma forma inteiramente diferente que sistemas baseados em algoritmos ou conjuntos de regras. Enquanto que as redes neurais processam dados com base em transformações, a computação programada faz uso de algoritmos e regras. A experiência tem mostrado que essas duas abordagens de processamento da informação são complementares do ponto de vista operacional, mas incompatíveis em termos conceituais.

De fato, as redes neurais não prescindem totalmente da computação programada. Afinal, em qualquer aplicação, a aquisição dos dados, sua formatação e a saída dos resultados ainda utiliza esse recurso. Redes neurais são geralmente rotinas que podem ser amalgamadas com programas onde sua capacidade se faz necessária.

De modo geral, o uso de redes neurais apresenta as seguintes vantagens:

• Há menor necessidade de se determinar a priori quais são os fatores determinantes sobre o modelo que está sendo desenvolvido;
• É permitida a interferência de múltiplos fatores de entrada (ou seja, múltiplas variáveis), permitindo um inter-relacionamento muito mais complexo entre elas;
• Alta tolerância a falhas, uma vez que é permitida a entrada de grande número de parâmetros;
• Modelamento direto do problema, sem a necessidade de se seguir um modelo preestabelecido, como no caso da regressão estatística;
• Paralelismo inerente: cada sinapse na rede neural pode ser seu próprio processador.

De fato, certas características das redes neurais, como tolerância a falhas, robustez e capacidade de implementar uma classe particular de transformações, são garantidas por teoremas matemáticos. Ou seja, eles asseguram que as redes neurais podem ser empregadas de forma útil e confiável.
Por outro lado, esses teoremas nada afirmam sobre como (em termos conceitualmente mais altos) a rede neural apreende o “conhecimento”. Suspeita-se que a descoberta desse mecanismo requeira uma verdadeira revolução intelectual na área do processamento de informações. Essa falta de embasamento teórico das redes neurais ainda é uma séria desvantagem desta técnica, uma vez que gera alguma desconfiança por parte dos especialistas quanto a sua confiabilidade. De fato, como já foi visto, no passado tal fato levou a uma virtual paralisação no desenvolvimento desta área devido a problemas matemáticos aparentemente insolúveis. Note-se, contudo, que atualmente a utilização de redes neurais está consolidada em diversas áreas, a pesquisa básica nesse campo é febril e os avanços teóricos são animadores.

Uma outra grande desvantagem das redes neurais é o tempo requerido em sua fase de aprendizado, particularmente nas do tipo Rummelhart, que utilizam o método da retropropagação. A rigor, tais tempos podem tender ao infinito. Quanto mais sutis as relações entre as variáveis, e maior a precisão requerido nos resultados, maior será o tempo de treinamento. Em alguns casos críticos, poderão ser necessários dias de treinamento, mesmo utilizando-se microcomputadores tão avançados quanto um IBM-AT/386 com “clock” de 33 Mhz. Mas mesmo este problema vem sendo resolvido, e em duas frentes:

• Através de algoritmos de treinamento tão sofisticados a ponto de serem patenteados;
• Através da utilização de arquitetura digital paralela nos circuitos digitais.

PERCEPTRON

Um tipo de neurônio McCulloch-Pitts usando rupturas binárias do tipo Yj=f(Z)= ON se Zj > ruptura e OFF se Zj < ruptura. É o elemento básico em várias arquiteturas de Redes Neurais. Diferentes Redes Neurais usam diferentes funções f(Zj), mas a estrutura interna do neurônio é comum para a maioria das Redes. Exemplos de funções, f(), são funções lineares, funções não lineares sigmoidal e funções de ruptura. A eficiência synética será representada pelo peso das interconecções, Wij, vindas do neurônio i para o neurônio j. Sendo assim, o Percetron consiste numa rede de células fotossensíveis, simulando uma retina ocular em miniatura. Além disso, possui dispositivos detectores de subpadrões visuais predefinidos – chamados “demons” (demônios) – que monitoram (verificam ininterruptamente) o estado de grupos de células na rede. Ao reagirem à presença de subpadrões característicos, eles emitem um sinal pra um centro de decisões. Este multiplica cada sinal enviado por um “demônio” por um fator de ponderação, positivo ou negativo, e soma os números resultantes. Se o total ultrapassa um limiar preestabelecido, o Perceptron indica “sim” (ou seja, há equivalência das imagens); caso contrário, diz “não”. Assim, o Percetron distingue entre duas imagens, embora seja possível, aplicando os mesmos princípios, fazer com que diferencie entre mais de duas. Quando as esperanças de que os Perceptrons pudessem resolver grande número de problemas se revelaram infundadas, os pesquisadores de inteligência artificial reconsideraram sua representação do pensamento humano, passando a vê-lo como coordenação de tarefas simples de manipulação radical na orientação das pesquisas, isso significou que os projetos começaram a ser desenvolvidos sobre bases mais firmes. Afinal, os computadores já desempenhavam tarefas como a pesquisa e comparação de símbolos, consideradas o fundamento da resolução inteligente de problemas. A grande dificuldade era juntar essas atividades simples.
BACKPROPAGATION

A Rede Backpropagation uma extensão da estrutura MADALINE envolvendo a adição de uma estrutura nbo-linear f() na saída de cada neurônio e o uso de camadas múltiplas adaptáveis. Este tipo de Rede é capaz de aproximar muito do desejado, o mapeamento entre vetores de dimensão M e outros vetores de dimensão N. Os neurônios usados nesta Rede serão ps neurônios McCulloch-Pitts, utilizando uma função Sigmoidal f(Zj), contínua, formato S, incrementada monotonicamente, diferenciada continuadamente e aproximada assintoticamente, fixando valores finitos as entradas aproximadas a mais ou a menos de infinito. Os valores assintéticos fixos são geralmente +1 e 0, ou +1 e -1. Um exemplo da função sigmoidal é:

1
f(x)=


-(x+T)
1+e

onde T é a função de ruptura e x é a soma dos pesos das entradas para o neurônio.

Tecnicamente, Backpropagation é uma lei de aprendizado específico. Este termo é geralmente usado referindo-se a arquitetura de Redes hierárquicas que utilizam o algoritmo de atualização Backpropagation para atualizar os pesos de cada camada baseada no presente erro da saída.

A Rede consiste em uma camada de entrada, uma camada oculta e uma camada de saída. O número de neurônios na camada de entrada igual ao número de entradas em cada amostra, e cada um desses neurônios recebe uma entrada. A saída dos neurônios na camada de saída corresponde às saídas da Rede. Vários neurônios tentarão fazer a Rede operar similarmente é Rede Grandmonther Cell, resultando numa Rede que possui dificuldade para fazer generalizações nas relações com novos tipos de amostra de entrada. Alguns pesquisadores têm oferecido diretrizes para a escolha do número de neurônios ocultos, mas ninguém possui regras estritas de quantos neurônios utilizar. Na backpropagation nbo existe interconecção entre os neurônios da mesma camada.

Os neurônios da camada de entrada terão cada um uma única entrada e uma única saída, passando os valores de umas para as outras, sem usar a função sigmoidal no processo.

Os pesos não começam com o mesmo valor, até que representações internas requerendo pesos não simétricos possam ser obtidas. Existem duas operações distintas durante a fase de treinamento: a feedforword computa e atualiza pesos baseados sobretudo no erro de saída da Rede. Esta Rede utiliza o aprendizado supervisionado até que as amostras de entrada/saída sejam associadas e ambas conhecidas.

O processo feedforword envolve uma amostra de entrada para a camada de entrada qual passa os valores para a camada oculta. Cada neurônio da camada oculta computa a soma dos pesos das entradas, para a soma através da função de ativação e apresenta o valor da ativação para a camada de saída. Cada neurônio da camada de saída também comporta a soma dos pesos das entradas e comporta a soma dos pesos das entradas e passa a soma através da função de ativação, resultando num valor de saída para a

Rede. Os valores de saída computados, são combinados com as saídas desejadas produzindo valores de erros com os quais os pesos da Rede possam ser ajustados. O erro para a camada de neurônio J é: Ej=(dj – uj)fj’ (netj), onde dj é a saída desejada, yj é a saída computada, fj’() é a derivada da função de ativação e netj é a Rede de entrada para o neurônio. A Rede de entrada é a soma dos pesos das entradas. A atualização da equação para a camada de saída j é Wj novo – Wj velho = B EjX / //X// 2 onde, Wj é o vetor peso para o neurônio da camada de saída j, X é o vetor de entrada que vem da camada oculta para a camada de saída, e B é o ganho de aprendizagem.

CONCLUSÃO

A neurocomputação, técnica que emula sistemas nervosos biológicos em programas ou circuitos de computador, foi concebida há mais de cinqüenta anos atrás, mas só recentemente experimentou ampla utilização prática, graças à intensa pesquisa teórica nesse campo e ao enorme desenvolvimento na área dos microprocessadores.

A grande característica das redes neurais é sua capacidade de aprendizado, ou seja, a possibilidade de estabelecer, de forma precisa, relações complexas entre diversas variáveis numéricas, sem que seja imposto qualquer modelo preconcebido. É uma abordagem revolucionária, que contrasta com a filosofia hoje consagrada para o tratamento de dados, a computação programada, que requer algoritmos rigorosamente detalhados para processá-los. Ela apresenta diversas vantagens em relação a outras técnicas modelamento e controle, como regressão estatística, sistemas especialistas e, talvez, modelos matemáticos.

Os campos de aplicação para as redes neurais são vastos: análise e processamento de sinais, controle de processos, classificação de dados, reconhecimento de padrões, análise de imagens, diagnósticos médicos, etc. Na área industrial, destacam-se as utilizadas na prevenção de desvios de processo e em sistemas híbridos, associados a técnicas de lógica difusa e sistemas especialistas, para a detecção de problemas de manutenção. Trata-se normalmente de problemas com quantificação matemática difícil, ineficaz ou impossível.

Apesar de ser uma técnica que já encontrou inúmeras aplicações na vida real, ela ainda apresenta alguns aspectos obscuros. A pesquisa sobre elas ainda continua em ritmo febril, e é de se esperar num futuro próximo que seu uso se torne ainda mais fácil, mesmo para usuários inexperientes. Em conseqüência, pode-se prever sua ampla disseminação a curto prazo.

UNIVERSIDADE VEIGA DE ALMEIDA

TRABALHO REDES NEURAIS

Equipe : Isabelle Fazolato Fernandes 95100053-5
Tarcisio Gonçalves Cabral 94100567-0

Turma : 37C
Profº : Biondi

Bibliografia:

• Revista CPU-PC – Número 9/10.
• Internet
• Revista Microo Sistemas – nº 134

Outros trabalhos relacionados

Sistema Operacional Unix

Autoria: André Gasperin Zamboni Sistema Operacional Um Sistema Operacional é um programa especial de computador (software) que controla o hardware do mesmo. Fig. 1.1 Conforme a figura 1.1...

Windows 95 Introdução

Autoria: Daniel Lauro Pinto O Windows 95 é um sistema operacional gráfico de 32bits, multitarefa preenptiva e plug and play que aproveita melhor os recursos...

Inteligência Artificial Arquitetura de Computadores

Introdução Inteligência Artificial (IA) é um campo da ciência e da tecnologia baseado em disciplinas como informática, biologia, psicologia, lingüística, matemática e engenharia. O objetivo...

Norma ABNT NBR 14136:2002

A norma NBR 14136 estabelece o padrão brasileiro para tomadas e plugues elétricos e está baseada na norma internacional IEC 60906-1. A norma brasileira...