Olá,
Está semana tivemos de fazer um trabalho para a disciplina de Inteligência Artificial, ministrada pelo professor Allan Martins, foram diversos assuntos que o professor distribuiu em grupos, o meuobjetivava predizer o consumo de energia elétrica em minha casa, eu daria o valor das 4 ultimas medições mensais e rede iria calcular a do mês seguinte.
Primeiramente, treino a rede atribuindo como entradas (Localização:matriz P) os valores de cada mês, cada entrada é composta de 4 valores de medições de meses anteriores, esta (cada entrada) aponta para um target(Localização:vetor T), que é um valor correto e conhecido do valor real do quinto mês (que tentarei predizer após este treinamento).
Após este treinamento posso modificar P (entradas) passando 4 valores de meses anteriores e a rede calcula o mês subsequente.
Utilizando o toolbox do Matlab (for linux) para redes neurais implementei da seguinte maneira:
=== SOURCE ===
%Definindo os targerts que servirão para o treinamento da rede
T = [262 250 287 242];
%As entradas que servirão pra o treinamento da rede
P = [250 287 242 244;
287 242 244 306;
242 244 306 295;
244 306 295 259];
%Instanciando a rede com 16 neurônios na camada oculta e 1 neurônio na camada de saída
net = newff(minmax(P),[16 1],{’tansig’ ‘purelin’});
%Treinando a rede
net = train(net,P,T);
%Definindo as entradas para a rede calcular a previsão de saída
% Exemplo:
P=[250;
287;
242;
244];
%Fazendo a rede calcular apartir das entradas dadas no passo anterior
Y = sim(net,P);
=== /SOURCE ===
O algoritmo de ‘Backpropagation’ utiliza o método do Gradiente Descendente para corrigir os valores sinápticos. Neste método, calculamos o gradiente da função objetivo (MSE) a se minimizar e atualizarmos o valor das sinapses somando-se a ele o valor do gradiente com o sinal invertido. O gradiente, neste caso, é a derivada parcial da função erro médio quadrático em relação à sinapse. Este processo faz com que o erro médio quadrático do problema “caminhe” sempre no sentido contrário de seu máximo crescimento. Resumindo, podemos dizer que a equação básica do Algoritmo de ‘Backpropagation’ é:
Wk+1 = Wk - ok Vk(Fo)
onde:
Wk+1 é o vetor de pesos sinápticos no instante k+1;
Wk é o vetor de pesos sinápticos no instante k;
ok é uma constante chamada Passo de treinamento;
Vk(Fo) é vetor gradiente da função objetivo.
O passo de treinamento é uma constante que controla a velocidade de convergência do algoritmo, ou seja, a rapidez com que os valores sinápticos levam o MSE para um mínimo local ou global na superfície de erro do problema. Para pequenos valores de o, a atualização das sinapses é mais lenta, fazendo com que se percorra com maior precisão a superfície de erro do problema. Para valores altos de o, apesar da convergência ocorrer de maneira mais rápida, pode acontecer oscilações no treinamento, podendo ás vezes até impossibilitar a convergência para um mínimo local ou global.
Suas principais características são:
-
Classe de tarefas: reconhecimento de padrões (ex.: controle adaptativo de braços de robôs) e processamento de fala;
-
Propriedades dos neurônios: são do tipo perceptron e possuem valores contínuos. A função de ativação é a sigmóide;
-
Propriedades das redes: rede acíclica de três camadas, no mínimo;
-
Aprendizado: utiliza técnica de Correção de Erros com o uso da regra delta generalizada.
O maior problema da utilização do algoritmo de retropropagação ocorre quando a rede neural obtém uma solução que corresponde a um mínimo local da função do erro. Existem diversas alternativas que visam a diminuir a ocorrência de mínimo local. As mais utilizadas são:
-
diminuição da taxa de aprendizado: se a taxa de alteração dos pesos é diminuída progressivamente, então o algoritmo do gradiente decrescente está apto a alcançar uma solução melhor;
-
adição de unidades internas: é possível considerar que quando um mínimo local é apresentado como solução, duas classes diferentes são classificadas como a mesma. Para evitar isso, ao serem colocadas mais unidades na camada escondida, a rede fará um reconhecimento melhor, diminuindo a ocorrência de mínimo local;
-
introdução de um termo de momento: termo introduzido para que se possa aumentar a taxa de aprendizado sem que ocorra oscilação.
Outro problema enfrentado pela retropropagação é a quebra de simetria, ou seja, se os pesos começam todos com o mesmo valor e se a solução só pode ser alcançada com pesos diferentes, o sistema não poderá aprender. Isto ocorre porque o erro é retropropagado em proporção ao valor dos pesos, o que significa que todas as unidades escondidas conectadas diretamente às unidades de entrada e saída cometem erros iguais. Como a modificação dos pesos depende deste erro, os pesos destas unidades em relação às unidades de saída serão sempre os mesmos.