Algoritmo Back-Propagation

Nesta edição trazemos até vós, caros leitores, uma abordagem ao algoritmo de backpropagation. Este algoritmo foi desenvolvido nos anos 80 por Rumelhant, Hinton e Williams e é um dos algoritmos mais conhecidos das redes neuronais.

De forma a melhor introduzirmos o tema, uma rede neuronal artificial é inspirada no funcionamento nosso próprio sistema funcional enquanto humanos. Ou seja, é uma rede que aprende a cada experiência vivenciada. Um dos constituintes principais do sistema nervoso humano é o neurónio. Esta célula é responsável pela condução dos impulsos nervosos, e comunicam entre si através de sinapses. Por sua vez a sinapse é a região onde dois neurónios entram em contacto entre si, sendo que os impulsos recebidos, por exemplo, pelo neurónio X, são processados passando a informação resultante ao neurónio Y por meio de uma substância neurotransmissora. Sem querer alongar muito este tema biológico, podemos apenas dizer que os neurónios são formados por dendritos (funcionam como terminais de entrada), pelo corpo central (onde ocorre o processamento) e pelos axónios (que por sua vez funcionam como terminais de saída).

As redes neuronais artificiais são redes computacionais que apresentam um modelo matemático inspirado na estrutura neuronal anteriormente apresentada e que adquirem conhecimento através de cada experiência processada, simulando assim a inteligência humana. Este comportamento é possível graças às interacções entre as diversas unidades de processamento que constituem estas redes. Uma vantagem deste tipo de implementação algorítmica é que possui um elevado grau de paralelismo, característica que lhe proporciona uma elevada rapidez de processamento.

Então temos que numa rede neuronal existe três tipos de camadas:

Camada de Entrada
onde os padrões são apresentados à rede;
Camadas Intermédias (Escondidas)
onde é feita a maior parte do processamento, através das conexões ponderadas que podem ser consideradas como extratoras de características;
Camada de Saída
onde o resultado final é concluído e apresentado.

O desenvolvimento do algoritmo backpropagation defende que é possível “treinar” as camadas intermédias, resultando no modelo MLP (Multilayer Perceptron), isto é, são redes de múltiplas camadas, formadas por uma camada de entrada, uma ou mais camadas ocultas (intermédias) e uma camada de saída, como pode ser visto na imagem anterior. Cada neurónio de uma camada recebe os sinais de todos os neurónios da camada anterior e propaga os seus dados de saída a todos os neurónios da camada posterior.

Para um melhor enquadramento teórico do leitor, é importante referir que o algoritmo de backpropagation é apenas um dos muitos que podem ser usados num modelo MLP. Existem dois tipos de algoritmos de treino, os supervisionados e os não supervisionados.

Os algoritmos supervisionados necessitam de um vector de entrada e de um vector de saída (também conhecido como vector alvo), ambos são utilizados para o treino da rede neuronal.

Quando o vector de entrada é aplicado, a saída é calculada e comparada com o vector alvo correspondente. O erro encontrado é então reassumido pela rede neuronal e os pesos são actualizados de forma a minimizar o erro. Este processo é repetido até que o erro dos vectores seja correspondente ao valor pré-definido para cada conjunto.

Por sua vez, os algoritmos não supervisionados, não têm um vector alvo para os dados de saída, não tendo assim qualquer comparação para determinar a solução ideal. Neste caso, o algoritmo modifica dos pesos da rede de forma a que os valores de saída sejam consistentes.

[...]

Leia o artigo completo na edição 57 da Revista PROGRAMAR