Toolbox de Redes Neurais do Matlab

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.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

About Moisés Souto

Moisés Souto possui graduação em Engenharia de Computação pela Universidade Potiguar (UnP) e atualmente é Mestrando do Programa de Pós-Graduação em Engenharia Elétrica e de Computação pela Universidade Federal do Rio Grande do Norte (UFRN).Tem experiência na área de Ciência da Computação e Engenharia de Computação, com ênfase em Engenharia de Software, atuando principalmente nos seguintes temas: Administração de Sistemas Operacionais GNU/Linux; Segurança e Auditoria de Sistemas; Sistemas Distribuídos e Processamento Paralelo; Implementação de Soluções e Tecnologias em Software Livre; Sistemas Inteligentes; Sistemas e Tecnologias de Rede e Internet; Administração de redes e serviços; Desenvolvimento web; Programação Orientada a Objeto; Administração de Banco de Dados; Gerência de tecnologia de informação; Programação baixo nível para dispositivos embarcados e microcontroladores; Concepção de circuitos integrados; Automação e Controle; Robótica.
This entry was posted in engenharia_de_computação, geral, ia, matlab. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>