quinta-feira, 19 de abril de 2012

Informática.

Um dos mais belos algoritmo que já vi, trata-se do "Backpropagation", ele á a base para as redes neurais.


Entenda um pouco;

"Backpropagation" é um algoritmo para treinamento de Rredes Multi-Camadas mais difundido. Baseia-se no Aprendizado Supervisionado por Correção de Erros, constituido de:

1° - Propagação: Depois de apresentado o padrão de entrada, a resposta de uma unidade é propagada como entrada para as unidades na camada seguinte, até a camada de saída, onde é obtida a resposta da rede e o erro é calculado;

Fase de Propagação


  2° - Retropropagação ("backpropagation"): Desde a camada de saída até a camada de entrada, são feitas alterações nos pesos sinápticos.
Fase de Retropropagação

   Durante a fase treinamento devemos apresentar um conjunto formado pelo par: entrada para a rede e valor desejado para resposta a entrada. A saída será comparada ao valor desejado e será computado o erro global da rede, que influenciará na correção dos pesos no passo de retropropagação. Apesar de não haver garantias que a rede forneça uma solução ótima para o problema, este processo é muito utilizado por apresentar uma boa solução para o treinamento de Perceptrons Multi - Camadas.

Resumo do Algoritmo:


1- Inicialização: Inicialize os pesos sinápticos e os bias aleatóriamente, com valores no intervalo [-1;1];

2- Apresentação dos Exemplos de Treinamento:

Treinamento "on-line": Para cada exemplo do conjunto de treinamento, efetue os passos 3 e 4.

Treinamento "em lote": Para cada "época" do conjunto de treinamento, efetue os passos 3 e 4.

3- Computação para Frente ( Propagação ): Depois de apresentado o exemplo do conjunto de treinamento T = {(x(n),d(n)}, sendo x(n) a entrada apresentada à rede e d(n) a saída desejada, calcule o valor da ativação vj e a saída para cada unidade da rede, da seguinte forma:

 
                               , para o cálculo do valor da ativação e


                                      , para o cálculo da saída y da unidade k, utilizando a função sigmóide, como no exemplo, ou uma outra função se necessário.
Utilize a saída das unidades de uma camada como entradas para a seguinte, até a última camada. A saída das unidades da última camada será a resposta da rede.

4- Calcule o Sinal de Erro: Fazendo a saída yj = Oj(n), será Oj(n) a resposta da rede, calcule o sinal de erro através da seguinte formula:

                                         , onde dj(n) é a saída desejada com resposta para cada unidade na interação (n).

Este sinal de erro será utilizado para computar os valores dos erros das camadas anteriores e fazer as correções necessárias nos pesos sinápticos.

5- Computação para Trás ( Retropropagação ): Calcule os erros locais, d, para cada unidade, desde a camada de saída até a de entrada. O gradiente local é definido por:

, para a unidade da camada de saída ou 
, para a unidade da camada de saída ou  

Onde:

Oj(1-Oj) - é a função de ativação diferenciada em função do argumento, i.e., valor de ativação;
dk - é o erro das unidades da camada anterior conectadas a unidade j;
wjk - são os pesos das conecções com a camada anterior.

Após o cálculo dos erros de cada unidade, calcule o ajuste dos pesos de cada conexão segundo a regra delta generalizada e atualize os pesos:

                                                                      , para o cálculo dos ajustes dos pesos
Faça:

                                                                       , para atualizar os pesos sinápticos

Onde:

a - é a constante de momentun, quando a= 0, esta função funciona como a regra delta comum;
h - é a taxa de aprendizado;
dj - é o erro da unidade;
yj - é a saída produzida pela unidade j;


6- Interação: Refaça os itens 3, 4 e 5 referentes à propagação, cálculo do erro e retropropagação, apresentando outros estímulos de entrada, até que sejam satisfeitas as condições de treinamento; as quais podem ser:
O erro da rede está baixo, sendo pouco alterado durante o treinamento;
O número máximo de ciclos de treinamento foi alcançado.








Nenhum comentário:

Postar um comentário