Você está na página 1de 18

Redes Neurais Feedforward e Backpropagation

Andr Siqueira Ruela

Sumrio

Introduo a redes feedforward Algoritmo feedforward Algoritmo backpropagation

Feedforward

Em uma rede feedforward, cada camada se conecta prxima camada, porm no h caminho de volta. Todas as conexes portanto, tm a mesma direo, partindo da camada de entrada rumo a camada de sada.

Backpropagation

O termo backpropagation define a forma com que a rede treinada.

O algoritmo backpropagation se trata de um treinamento supervisionado. Com o erro calculado, o algoritmo corrige os pesos em todas as camadas, partindo da sada at a entrada.

Redes Feedforward

Existem muitas formas de se estruturar uma rede feedforward.

Deve se definir:

Camada de Entrada. Camada(s) Intermediria(s). Camada de Sada.

Apesar de haverem tcnicas bsicas, alguns experimentos so necessrios para se definir a estrutura tima da rede.

Camada de Entrada

A camada de entrada recebe um padro que ser apresentado a rede neural.

Cada neurnio na camada de entrada deve representar alguma varivel independente que influencia o resultado da rede neural.
Em nossa implementao, cada entrada corresponde a um valor double, normalizado.

Camada de Sada

A camada de sada retorna um padro ao ambiente externo.

O nmero de neurnios est diretamente relacionado com a tarefa que a rede neural executa.
Em geral, o nmero de neurnios que um classificador deve possuir, nesta camada, igual ao nmero de grupos distintos.

OCR: Entrada e Sada


OCR: Optimal Character Recognition. Suponha uma rede neural que reconhea as 26 letras do alfabeto ingls. Cada padro a ser classificado consiste em uma imagem de 35 pixels (5x7). A imagem consiste na entrada, sendo cada pixel representado por um respectivo neurnio. Portanto, 35 neurnios na entrada. A letra reconhecida representada pelo neurnio que dispara alguma sada positiva. Portanto, 26 neurnios na sada.

Exemplo: Operador XOR

Funes de Ativao

Mtodos de treinamento como o backpropagation exigem que a funo de ativao possua derivada.

f(x) = x(1-x)

f(x) = 1-x

O nmero de camadas intermedirias

Problemas que requerem duas camadas intermedirias so raros. Basicamente, uma rede neural com duas camadas intermedirias capaz de representar funes de qualquer formato. No existem razes tericas para se utilizar mais que duas camadas intermedirias. Na prtica, para muitos problemas comuns, no h razes para se utilizar mais que uma camada intermediria.

O nmero de neurnios nas camadas intermedirias

Apesar de no interagirem com o ambiente externo, as camadas intermedirias exercem enorme influncia no funcionamento da rede.

Underfitting: poucos neurnios que no conseguem


detectar adequadamente os sinais em um conjunto complicado de dados.

Overfitting: muitos neurnios a serem treinados por um


nmero limitado de informao contida no conjunto de dados.
Muitos neurnios podem fazer com que o treinamento no termine adequadamente em tempo hbil.

O nmero de neurnios nas camadas intermedirias

Regrinhas clssicas... O nmero de neurnios na camada intermediria deve ser:


1. Entre o nmero de neurnios nas camadas de entrada e sada. 2. 2/3 do tamanho da camada de entrada, somado ao tamanho da camada de sada.
3. Menor que duas vezes o tamanho da camada de entrada.

Examinando o processo Feedforward

Feedforward: computeOutputs(...)

Apresenta a rede um vetor de entrada. Chama o mtodo computeOutputs de cada camada. Retorna o valor disparado pela camada de sada.

FeedforwardLayer: computeOutputs(...)

Calcula o somatrio dos produtos entre entradas e pesos. Dedine os disparos de cada neurnio da prxima camada por meio da funo de ativao.

Examinando o processo Backpropagation

A funo que calcula o erro precisa ser diferencivel, assim como a funo de ativao. Atravs da derivada da funo do erro, podese encontrar os pesos que minimizam o erro. Um mtodo comum a descida do gradiente.

Examinando o processo Backpropagation

Backpropagation: iteration()
Percorre todos os conjuntos de treinamento. Cada conjunto apresentado a rede e o erro calculado. Aps apresentar todos os conjuntos de treinamento, o mtodo learn() chamado.

Por fim, o erro global da rede calculado.

Examinando o processo Backpropagation

Backpropagation: calcError()

Limpa todos os erros anteriores nas camadas da rede. A partir da sada, percorre todas as camadas da rede, at a camada de entrada.

BackpropagationLayer: calcError(...)

Acumula uma matriz de deltas. Determina a contribuio da camada para o erro observando os deltas da prxima camada e os dispares da camada atual. Utiliza a derivada das funes de ativao para o clculo do delta.

Examinando o processo Backpropagation

Backpropagation: learn()

Chamado aps o clculo de todos os erros, este mtodo aplica os deltas aos pesos e limiares. Utiliza a taxa de aprendizado e o momentum para definir como as mudanas sero aplicadas.