Matlab - Neural Networw Toolbox
Ana Lı́via Soares Silva de Almeida
27 de maio de 2014
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
O que é a Neural Networw Toolbox?
A Neural Network Toolbox fornece funções e aplicativos para a
modelagem de sistemas não-lineares complexos que não são
facilmente modelados com uma equação de forma fechada.
Suporta aprendizado supervisionado com feedforward, base radial e
redes dinâmicas, além de aprendizado não supervisionado com
mapas auto-organizáveis e camadas competitivos.
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
O que é a Neural Networw Toolbox?
Com ela é possı́vel projetar, treinar, visualizar e simular redes
neurais.
Pode ser usada para aplicações tais como montagem de dados,
reconhecimento de padrões, clustering, a previsão de séries
temporais e modelagem do sistema dinâmico e controle.
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Objetivo deste curso
O objeto desse curso é fazer uma breve panorama da toolbox e
apresentar algumas formas de manipular algumas das ferramentas
disponı́veis. Serão apresentadas funcionalidades para redes do tipo
Perceptron Multicamadas (Multilayer Perceptron) e para a
rede de base radial (radial basis), iterfaces gráficas disponı́veis e
algumas particularidades em relação às versões mais recentes do
Matlab uma vez que a versão utilizada para este curso é do ano de
2008.
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Perceptron Multicamadas
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Passos para implementação da rede:
⇒ coleta e preparação dos dados
⇒ criação da rede
⇒ configuração da rede
⇒ inicialização dos pesos e biases
⇒ treinamento da rede
⇒ validação da rede
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Criação a rede
O comando
nome da rede = network
cria uma rede e suas propriedades
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Definindo as propriedades de Arquitetura
As primeiras propriedades que aparecem da rede são as chamadas
propriedades de arquitetura:
número de entradas (Inputs)
número de camdadas (Layers)
pesos entre de entradas e entre camadas
conexões de saı́da e tragets (outputs e targets)
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
número de inputs e camdas
Definimos a quantidade de camadas de entrada que a rede terá
Atenção: não estamos definindo ainda a quantidade de tipos de
entrada (x1, x2,...xn) que a rede terá (tamanho do vetor de
entradas)
nome da rede.numInputs = x
Definimos a quantidade de camadas que a rede terá
nome da rede.numLayers = y
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Bias
Definimos agora, as camadas que terão bias associado. Essa
atribuição pode ser feita através do comando:
nome da rede.biasConnect(camada) = 1
ou na forma de matriz, atribuido 1 às camadas que tiverem bias e
0 às que não tiverem.
Por exemplo:
net.biasConnect(1) = 1
net.biasConnect(1) = 3
ou
nome da rede.biasConnect = [1; 0; 1]
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Conexões entre entradas e camadas
Agora, vamos conectar as entradas às camdadas da rede. De
maneira análoga aos biases, podemos especificar essas conexões
através do comando
nome da rede.inputConnect(i,j) = 1
que representa uma conexão de pesos entre a entrada j e a camada
i
Essa atrabuição também pode ser feita através de uma matriz n X
m, onde onde n é o número de entradas e m é o número de
camadas as camdadas.
Por exemplo:
net.inputConnect(1,1) = 1
net.inputConnect(2,1) = 1
net.inputConnect(2,2) = 1
ou
net.biasConnect = [1 0; 1 1; 0 0]
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Conexões de outputs e targets
Definimos aqui as camadas que possuem saı́da (outputs) e a
camada que terá os targets. Isso pode ser feito através da matriz
1xn, onde são as camadas da rede:
net.outputConnect = [0 1 1]
net.targetConnect = [0 0 1]
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Inputs
Agora, definiremos as caracterı́sticas das entradas da rede. Para
cada input que criamos, deve ser passado um vetor definindo os
valores mı́nimo q máximo de cada tipo pode assumir. Passamos
então, uma matriz 2xm onde m é o número de entradas da rede.
nome da rede.inputs{entrada}.range = [x y; x y; ....;x y]
Por exemplo:
net.inputs{1}.range = [0 10; 0 10]
net.inputs{2}.range = [-2 2; -2 2; -2 2; -2 2; -2 2]
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Camadas
Quando definimos o número de camadas da rede, para cada
camada algumas propriedades já são setadas por default. Se for
necessário, podemos alterar algumas delas, como por exemplo o
tamanho (quantidade de neurônios), a função de transição e a
função de inicilização com os comandos abaixo:
nome da rede.layers{camada}.size = x;
nome da rede.layers{camada}.transferFcn = h’função’i
nome da rede.layers{camada}.initFcn = h’função’i
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Camadas
As funções disponı́veis no Matlab para função de transição são:
•tansig (tangente hiperbólica)
•logsig (sigmóide)
•purelin (linear)
•satlin ()
A função de inicilização mais comum é ’initnw’
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Funções da rede: inicialização
O comando
nome da rede.initFcn = ’initnw’;
A função initnw inicializa pesos e desvios de uma camada de
acordo com o algoritmo de inicialização Nguyen-Widrow. Este
algoritmo escolhe valores, a fim de distribuir a região ativa de cada
neurônio na camada de maneira uniforme ao longo do espaço de
entrada da camada.
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Funções da rede: performance e treinamento
Definimos a performance como erro quadrático médio (mse) e o
treinamento por retropropagação (backpropagation)
nome da rede.performFcn = ’mse’;
nome da rede.trainFcn = ’...’;
Algumas opções para função de treinamento:
•trainlm :Levemberg-Marquardt (default)
•traingd : gradiente descendente
•traingdm : gradiente descendente com momentum
•traingda : gradiente descendente adaptativo)
•traingdx : gradiente descendente com taxa de aprendizagem
variável
•trainrp : reslient backpropagation
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Inicialização da rede
Inicializamos a rede setando os valores devidos de acordo com as
propriedades. Os pesos iniciais tem valor zero.
nome da rede = init(nome da rede);
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Treinamento
É necessário separar o conjunto de dados em dois grupos básicos:
uma parte das amostras será usada para o treinamento e outra
para a validação.
Da parte que será usada como treinamento, temos os valores de
entrada (inputs) e os correspondentes resultados esperados
(targets).
Podemos armazenar os inputs na variável P e os targets na variável
T, por exemplo.
Dessa forma, podemos chamar a função de treinamento passando
a rede criada, P e T como parâmetros:
[nome da rede,tr] = train(nome da rede,P,T);
onde tr é uma matriz que contém todos as informações a cerca do
treinamento da rede
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Paramêtros de treinamento
É possı́vel definir as condições de parada do treinamento
(nome da rede.trainParam.¡condição¿ = z;) :
•ming rad : magnitudemáximadogradiente
•maxf ail : númeromáximodevalidaç ões
•time : tempo máximo de treinamento
•goal: valor mı́nimo de performance
•epochs : número máximo de épocas
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Análise de desempenho pós-treino
Pode-se plotar gráficos para analisar o desempenho da rede. Os
gráficos podem ser plotados por linhas no código ou através da
janela que surge quando a rede é treinada.
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Simulação da rede (validação)
Após o treinamento, a parte restante dos dados de entrada que
ainda não foi utilizada, é passada para a função de simulação. A
saı́da da rede é então gerada (outputs) e pode ser comparada com
os valores esperados para essas amostras.
Y = sim(nome da rede, Pt);
onde Pt é o conjunto de amostras restantes.
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Outras formas de criar e manipular RNAs em Matlab
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
nntool
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Nas versões mais recentes...
A partir da versão (...) do Matlab, a clássica função newff ficou
obsoleta e foi substituı́da. Para criação de redes do tipo
Perceptron Multicamadas, uma alternativa é usar para criar a
rede a função
feedforwardnet
Para esta função, caso não sejam passados parâmetros, será
aplicado o default:
- uma rede com 1 camada escondida composta de 10
neurônios, e uma camada de saı́da com apenas 1 neurônio.
Além disso, já são definidos o método de Levemberg-Marquardt
para treinamento e as funções de ativação tansig e purelin para a
camada escondida e para a de saı́da respectivamente.
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Rede de Base Radial
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Redes de base radial podem ser usadas para aproximar funções.
A função
newrb
acrescenta neurônios para a camada escondida de uma rede de base
radial até encontrar a meta de erro quadrado médio especificado.
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
nome da rede = newrb(P,T,goal,spread,MN,DF)
onde:
P é a matriz com os dados de entrada
T é a matriz com os targets
goal é o mse (default mse = 0)
spread disseminação de funções de base radial
MN número máximo de neurônios (default quantidade de amostras
na entrada)
DF número de neurônios para adicionar entre ... (default 25)
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Nas versões mais recentes...
É possı́vel também alterar essa configuração passando como
primeiro argumento para a função o número de neurônios desejado
na camada escondida, e como segundo argumento, o tipo de
treinamento.
A vantagem de usar a feedforwardnet é que não é necessário seguir
todos esses passos para configurar a rede, e as modificações
desejadas (como alterar as funções de ativação, por exemplo)
podem ser feita apenas acrescentando os comandos apresentados
anteriormente para definir as propriedades ao código.
Ana Lı́via Soares Silva de Almeida
Matlab - Neural Networw Toolbox
Download

Minicurso de Matlab – Redes Neurais