Redes Neuronais
Introdução
Inteligência artificial é o campo da ciência computacional que procura construir máquinas automáticas, isto é, software e hardware capaz de executar tarefas ou comportamentos que são tipicamente caracterizados como humanos. Por sua vez, a inteligência humana é a capacidade de compreender situações complicadas e de mostrar uma adequada resposta às mesmas, assim como, a capacidade de aprender, adquirir conhecimen-to e aplicar o raciocínio para resolver problemas.[1] Assim podemos dizer que a inteligência artificial é o desenvolvimento de máquinas que possam desenvolver tarefas de inteligência humana, sem a intervenção huma-na.[2]
Os algoritmos tradicionais de computação não conseguem dar res-posta a todas as tarefas de inteligência artificial e novas abordagens são necessárias. É neste sentido que surge as redes neuronais artificiais, que são um modelo de processamento de computador que imita a rede de neurónios de um sistema biológico.[2]
Na biologia, o neurónio é o nome dado à célula nervosa e a todos os seus processos. As células nervosas são excitáveis e especializadas na receção de estímulos e na condução do impulso nervoso. Possuem den-drites que transportam a informação aferente para o corpo celular do neurónio, o qual irá processar a informação e emitir uma informação eferente através do axónio (Fig. 1). A transmissão da informação é realizada através de processos químicos ou elétricos, podendo ser inibitó-ria ou excitatória, dependendo da estrutura do neurónio, da informação vinda do axónio e da conjugação de várias redes axonais. Assim, a nível cerebral os neurónios encontram-se organizados numa rede neuronal e estão interligados entre si. A sinapse é o local em que dois neurónios, que estão próximos, interagem através de um processo de comunicação interneuronal funcional. A maioria dos neurónios pode formar contatos sinápticos com mil ou mais neurónios e pode receber até dez mil cone-xões de outros neurónios. Contudo, a sinapse ocorre apenas numa dire-ção. [3]
As redes neuronais artificiais, consistem em programas únicos de software que imitam a ciência de um neurónio. A conjugação de vários imput (dendrites), num determinado centro de processamento (corpo do neurónio). Este último tem um determinado threshold, que é valor a partir do qual fica excitado e envia um sinal positivo para o processo seguinte. Este valor pode variar entre os vários centros de processamento. Assim, o output irá depender da multiplicação dos valores e pesos dos múltiplos imputs. Este conjunto de valores irá dar resultado a um valor final que pode ou não ultrapassar o threshold e desta forma levar a um sinal positi-vo (1) ou negativo (0), que produz uma contribuição para um estado excitatório ou inibitório, respetivamente (Fig. 2). [2] Uma rede axonal neuronal está, por norma, organizada em camadas, sendo que todos os neurónios de uma determinada camada têm de estar interconectados com um neurónio da camada subsequente. Assim, os neurónios da primeira camada terão o nome de neurónios de imput, os das camadas intermédias têm a designação de camadas escondidas e os da última camada serão neurónios de output.
As redes neuronais artificiais têm como principal diferença em rela-ção aos programas tradicionais é que não são programadas, mas sim treinadas. Isto significa que processam a informação obtida e atribuem um peso adequado aos vários imputs, através de um processo de treino supervisionado que consiste na repetição de processo. Assim, as redes neuronais artificiais são um processo repetitivo em que conjuntos de imputs, obtidos através de treino, são aplicados à rede, sendo posterior-mente ajustados os pesos dos diferentes vetores através de pequenos incrementos, para que o desempenho da rede seja o desejado.[2]
2 Exemplo da utilização das redes neuronais artificiais na área médica As redes neuronais artificiais tiveram um aumento da sua utilização nos últimos anos. Na área médica esse aumento é particularmente visível nos algoritmos de tomada de decisão, com especial enfoque no processo de diagnóstico. Existem inúmeros exemplos onde estas redes já são aplica-das, como é o caso do cancro da próstata[4] ou da mama[5], da restrição do crescimento fetal[6], da tuberculose[7], ou do diagnóstico de retino-patia diabética[8]. A nível do cancro da próstata as redes neuronais artificiais têm sido usadas essencialmente para a o diagnóstico e estadiamento da doença. A nível do diagnóstico a eficácia das redes neuronais comparativamente a regressão logística é pouco superior. Contudo, a sua eficácia pode aumen-tar com a inclusão de novos marcadores ou de padrões ecográficos (Fig.3). No processo de estadiamento do cancro da próstata as redes neuronais têm melhores resultados do que os programas baseados em regressão logística, ou do que tabelas de consulta. Foram desenvolvidos estudos para a sua utilização a nível da avaliação do risco, da escolha do tratamento e da predição de recorrência após o tratamento, porém os resultados não são tão positivos. [4]
Os modelos de redes neuronais sobre a restrição do crescimento fe-tal a nível uterino permitiram descobrir o importante papel que a interleu-cina pró-inflamatória 6 (IL-6), da proteína de ligação ao fator de cresci-mento tipo insulina 2 (IGFBP-2) e do fator de crescimento tipo insulina II (IGF-II) têm no desenvolvimento desta patologia. Com a aplicação das redes neuronais permitiu sugerir-se que a diminuição de IL-6 e IGFBP-2 poderá levar a um aumento da IGF-II e desta forma evitar o surgimento da restrição do crescimento fetal. [6]
Os modelos desenvolvidos para a tuberculose estão por sua vez dire-cionados com o diagnóstico (Fig. 4). E uma taxa de precisão de aproxi-madamente 93%. [7] A utilização de redes neuronais na retinopatia diabética permitiu o desenvolvimento e validação do diagnóstico através da análise de várias imagens da retina. Desta forma, o sistema pode ser utilizado como um auxílio na prática clínica, funcionando como um observador secundário que ajuda na árvore de decisão clínica da retinopatia diabética.[8]
3 Redes neuronais artificiais – Utilização no dia-a-dia Mas não é apenas na área da medicina que as redes neuroniais assu-mem um papel importante. Também em muitas das tarefas do nosso dia-a-dia elas estão presentes ajudando empresas e entidades a tomar decisões e análises de uma forma muito mais suportada. Desde os seus princípios datados de 1943, em que McCulloch & Pitts, demonstraram que as redes neuroniais poderiam calcular qualquer função lógica ou aritmética que o seu uso tem sido massificado na nossa sociedade . Em 1986 é desenvolvido o algoritmo Back – Propagation que ainda hoje é o algoritmo de aprendizagem mais utilizado. Existem imensas aplicações das redes neuroniais artificiais entre as quais destacamos: • Aplicações climatéricas • Análise de mercado financeiro • Robótica • Identificação de fraude em cartões de crédito • Classificação de dados • Reconhecimento de padrões (linhas de montagem) • Análise de imagens • Identificação de voz • Avaliação de crédito • Análise de odor e aromas Por exemplo no caso do uso no mercado financeiro, em que a capacidade de prever dados e resultados não passou despercebida aos principais agentes do mercado, a poderosa Standard&Poor usa um sistema de redes neuronais artificiais para ajuda na decisão relativa à composição de uma carteira de títulos (“Neural Fair Value 20“). Também em Portugal o interesse por este tipo de rede tem vindo a aumentar e a ser cada vez mais presente nas empresas entidades nacionais, sendo como referência de tal as seguintes:
• PT – utilização na análise de dados das suas centrais digitais • CGD – sistemas periciais de avaliação de pedidos de crédito de empresas. • Sonae – análise data mining dos dados de venda Mas como é que tudo se conjuga? E de que maneira as redes neuroniais são inteligentes e conseguem aprender e não apenas executar instruções definidas?
Como já anteriormente referido descrito as redes neuronais artificiais não são mais que um sistema que simula o funcionamento e comportamento do cérebro humano através de processos de aprendizagem e experiência. Através de meios de técnicas computacionais, suportados em modelos matemáticos é possível “treinar” uma rede para por exemplo permitir a classificação de padrões. Podem ser definidas como um conjunto de unidades de processamento, caracterizadas por neurônios artificiais interligados por um grande número de interconexões (sinapses artificiais), que são representadas por vetores/matrizes de pesos sinápticos. Estão inseridas dentro da área conhecida como sistemas inteligentes ou inteli-gência computacional.
Em termos de arquitetura poderemos classificar as redes neuronais artifi-ciais como:
• Adaptação por experiência: a partir de uma apresentação su-cessiva de exemplos (padrões, amostras, medidas), ajustam-se os pesos sinápticos da rede. Isso possibilita que a rede apren-da por experimentação.
• Capacidade de aprendizagem: através de método de treino, a rede consegue relacionar as variáveis que constituem o proces-so.
• Habilidade de generalização: após o treino, a rede consegue generalizar o conhecimento, estimando soluções até então desconhecidas.
• Tolerância a falhas: como possui várias interconexões, torna-se tolerante a falha.
• Facilidade de prototipagem: implementar uma arquitetura neural pode ser facilmente transformada num protótipo de hardware ou software, pois após o treinamento, os resultados são, geralmente, obtidos por operações matemáticas elementa-res.
3.1 Breve história das Redes Neuronais Artificiais (RNA)
A primeira publicação relacionada à neura computação é de 1943, através do artigo de McCulloch & Pitts. Os autores realizaram o primeiro mode-lamento matemático inspirado no neurônio biológico, resultando assim na primeira ideia de neurônio artificial.
Em 1949 Donald Hebb propôs o primeiro método de treinamento, atra-vés do livro “The Organization of Behavior”, (A organização do compor-tamento em tradução livre). Os pesquisadores continuaram a desenvolver técnicas de modelos matemáticos fundamentados no neurônio biológico, gerando várias estruturas e algoritmos de aprendizado. Dentre esses pesquisadores, Frank Rosenblatt ganhou destaque por ter desenvolvido entre 1957 e 1958 o primeiro neuro computador, denominado Mark I – Perceptor, idealizando o modelo básico do Perceptron. Esse modelo despertou interesse devido à capacidade de reconhecer padrões simples.
Em 1969, a publicação de um livro trouxe um revés à área de neuro computação. Os autores demonstravam as limitações das RNA´s consti-tuídas de apenas uma camada, o que as impossibilitava de realizar a classificação correta de padrões para classe não linearmente separáveis.
Apenas no final dos anos 80 é que os pesquisadores voltaram a se interes-sar pelo assunto, e nessa época surgiram estudos e publicações de redes com mais de uma camada. A retomada das pesquisas se deve ao desen-volvimento de computadores com maior capacidade de processamento, criação de algoritmos mais eficientes e novas descobertas sobre o sistema nervoso biológico (de onde se baseiam as redes neurais). Recentemente, além de inúmeras aplicações práticas em diferentes áreas do conhecimen-to, outras novas contribuições têm permitido alavancar o desenvolvimen-to associado às redes neurais.
A célula elementar do sistema nervoso cerebral é o neurônio e seu papel se resume a conduzir impulsos sob determinadas condições de opera-ção. Os neurônios estão conectados uns aos outros através de sinapses, e juntos formam uma grande rede. As sinapses transmitem estímulos através
de diferentes concentrações de Na+ (Sódio) e K+ (Potássio), e o resulta-do disto pode ser estendido por todo o corpo humano. Esta grande rede proporciona uma fabulosa capacidade de processamento e armazenamen-to de informação. O neurônio é dividido em três partes principais: den-dritos, corpo celular e axônio. Os dendritos têm por função receber os estímulos transmitidos pelos outros neurônios. O corpo de neurônio é responsável por coletar e combi-nar informações vindas de outros neurônios. O axônio é 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.
O modelo de neurônio artificial mais simples foi proposto em 1943 por McCulloch & Pitts. Nessa representação, cada neurônio da rede pode ser implementado conforme mostra a figura.
Os diversos sinais de entrada advindos do meio externo (aplicação) são espelhados pelo conjunto {x1, x2, …, xn}, que são análogos aos impulsos elétricos externos captados pelos dendritos no neurônio biológico. As ponderações exercidas pelas junções sinápticas do modelo biológico são representadas no neurônio artificial pelo conjunto de pesos sinápticos {w1, w2, …, w3}. A relevância de cada uma das entradas {xi} do neurônio é então executada através de multiplicações pelo respetivo peso {wi}. Assim, torna-se possível verificar que a saída do corpo celular artificial, denotado por u, é a soma ponderada de suas entradas.
Agradecimentos
Ao departamento de informática da Faculdade de Ciências da Universidade do Porto por toda a ajuda e disponibilidade para a realização deste trabalho.
Financiamento
Este trabalho foi inteiramente suportado pelos authors.
O desenvolvimento das redes neuronais artificiais teve como principio a estrutura e funcionamento do sistema nervoso humano de forma a que se pudesse ter uma proximidade de simular a capacidade de aprendizagem do nosso cérebro na realização de tarefas que podem ser consideradas simples tais como pegar num objeto mas que apenas são possíveis devido à complexa estrutura do cérebro humano.
Deve-se a McCulloch e Pitts (1943) o inicio da pesquisa deste tipo de modelos computacionais tendo sido desenvolvido um primeiro modelo matemático denominado de unidades logicas com limiar (LTU em inglês).
Este modelo tem como base o Neurónio Biológico sendo que este é o principal bloco de construção do nosso cérebro conforme ilustrado na figura 2 abaixo.
Tendo por base este modelo as RNA foram desenvolvidas com o mesmo principio tendo como componentes básicas unidades de processamento simples a que foi dado o nome de neurónios artificiais ilustrado a seguir na figura 3 :
As redes neuronais artificiais, consistem em programas únicos de software que imitam a ciência de um neurónio.
A conjugação de vários input (dendrites), num determinado centro de processamento (corpo do neurónio).
Este último tem um determinado threshold, que é valor a partir do qual fica excitado e envia um sinal positivo para o processo seguinte. Este valor pode variar entre os vários centros de processamento. Assim, o output irá depender da multiplicação dos valores e pesos dos múltiplos inputs.
Este conjunto de valores irá dar resultado a um valor final que pode ou não ultrapassar o threshold e desta forma levar a um sinal positivo (1) ou negativo (0), que produz uma contribuição para um estado excitatório ou inibitório, respetivamente .
Uma rede neuronal artificial está, por norma, organizada em camadas, sendo que todos os neurônios de uma determinada camada têm de estar inter-conectados com um neurônio da camada subsequente.
Assim, os neurónios da primeira camada terão o nome de neurónios de input, os das camadas intermédias têm a designação de camadas escondidas e os da última camada serão neurónios de output.
Uma das principais características das RNA a sua capacidade de aprendizagem e de treino , através de algoritmos desenvolvidos para o efeito, sendo os mesmos elaborados por um conjunto de regras bem definidas que influenciam a forma como deve ser alterado o valor de cada peso.
Um dos principias algoritmos de treino foi o desenvolvido por (Rumelhar et al, 1986) baseado em gradientes descendentes a que de seu o nome de Back-propagation . Este algoritmo permitiu a massificação da utilização das redes multi camadas já que permitiu o seu treinamento.
O processo de treino no caso especifico deste algoritmo assenta num processo iterativo que constituído por duas etapas ; uma para a frente (forward) e uma par trás (backward) . Na primeira fase cada objeto de entrada é dado a conhecer à rede. O mesmo é recebido por cada um dos neurónios da primeira camada intermediaria sendo ponderado pelo peso associado à conexão de entrada correspondente . Na camada respetiva cada neurônio pertencente à mesma aplica a função de ativação à soma das suas entradas a produz um valor de saída (output) que é utilizado como valor de entrada (input) da camada de neurónios seguinte. Este processo é continuo ate que os neurónios da camada de saída produzem eles mesmos o seu valor de saída. Este valor é então comparado com o valor de com o valor esperado para saída desse neurônio. A diferença entre os valores achados é o erro cometido pela rede para o objeto introduzido na rede.
A equação seguinte indica como é feito o ajuste de pesos de uma rede MLP pelo algoritmo back-propagation
Exemplo de algoritmo de treino back-propagation
- Entrada : um conjunto de n objetos de treino
- Saída : Rede MPL com valores de pesos ajustados
- inicializar pesos da rede com valores aleatórios
- inicializar erro total=0
- repita
- para cada objeto xi do conjunto faça
- para cada camada de rede , a partir da primeira camada intermediaria.
- Faça para cada neurónio njl da camada:
- calcular valor da saída produzida pelo neurónio , f
- fim
- fim
- calcular erro parcial=y-f
- para cada camada de rede a partir da camada de saída faça:
- para cada neurónio njl da camada faça
- ajustar pesos do neurónio utilizando Equação
- fim
- fim
- calcular erro total = erro total + erro parcial
- fim
- até erro total <
Conflito de Interesses: Nada a declarar.
Bibliografia