Redes Neurais Artificiais
Multi Layer PerceptronAdriano Cruz
Universidade Federal do Rio de Janeiro
13 de março de 2013
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 1 / 69
Resumo Seção
1 Introdução 2 Treinamento 3 Treinamento - Teoria 4 Programando Aproximando Função IrisOnde me achar?
1 mensagem::adriano@nce.ufrj.br
2 página::http://equipe.nce.ufrj.br/adriano 3 sala::NCE - Sala E1033
4 tel::2598-3163
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 3 / 69
Até agora?
Perceptron e Adaline resolvem problemas linearmente separáveis.
Funções lineares.
Somente uma camada.
Para problemas mais complexos.
Funções não lineares. Mais de uma camada.
MLPs
RNAs de múltiplas camadas resolvem problemas não linearmente separáveis.
Uma função contínua pode ser aproximada por uma rede com uma camada oculta, desde que a camada de saída seja linear e a camada oculta utilize uma função de propagação contínua, não-constante, limitada e monotonicamente crescente (Teorema da Aproximação Universal).
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 5 / 69
MLPs
C0 C1 CL 1 n0 1 n1 1 nL Y2 Ynl 2 2 2 Y1 P2 Pn0 P1Neurônio modificado
A função de ativação é substituída por uma sigmóide ou tangente hiperbólica. Σ x1 x2 xn w1 w2 wn Y +1 w0 net D Correção
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 7 / 69
Resumo Seção
1 Introdução 2 Treinamento 3 Treinamento - Teoria 4 Programando Aproximando FunçãoComo é o treinamento?
Cada ciclo (epoch) tem duas fases.
Forward
Da camada de entrada para a camada de saída. Apresentação das entradas e geração das saídas. Backward
Da camada de saída para a camada de entrada. Atualização dos pesos.
Para camadas intermediárias, estimativa do erro a partir do erro da camada seguinte.
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 9 / 69
Estratégias - Período
Por padrão (incremental)
Os pesos são ajustados após a apresentação de cada exemplo de conjunto de entrada.
É estável se a taxa de aprendizado é pequena.
É rápida se o conjunto de treinamento é grande e redundante. Requer menos memória.
Estratégias - Período
Por ciclo (batch/epoch)
Os pesos são ajustados após a apresentação de todos os exemplos do conjunto de entrada.
Geralmente é mais estável.
É lenta se o conjunto de treinamento é grande e redundante. Requer mais memória.
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 11 / 69
Estratégias - Período
Por bloco.
Combina os métodos de ajuste por padrão e ciclo.
Os pesos são ajustados após a apresentação de k exemplos do conjunto de treinamento.
Estratégias - Critério de Parada
Pelo número de ciclos de treinamento.
Pára após a execução de k ciclos de treinamento.
Pelo valor do erro (ou métrica usada).
Pára quando o valor do erro é menor que ǫ.
Pelo critério de validação.
Pára quando o erro no conjunto de validação deixa de decrescer.
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 13 / 69
Estratégias - Conjunto de Dados
Treinamento e teste separados.
Aproximadamente 70% treinamento 30% testes.
Treinamento, teste e validação.
Aproximadamente 50% treinamento, 30% teste e 20% validação.
Treinamento e teste juntos.
Arquitetura da Rede
Número de camadas escondidas da rede?
uma, duas ou mais?
Número elementos por camada?
Maior, menor ou igual ao número de entradas.
Funções de propagação?
sigmóide.
tangente hiperbólica linear
Respostas
Não existem fórmulas para responder estas questões.
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 15 / 69
Sugestões
Número de neurônios por camada:
Média aritmética entre entradas e saídas. Médio geométrica entre entradas e saídas.
Convergência
Problemas com velocidade da convergência, mínimos locais e platôs. Taxa de aprendizado adaptativa.
Momento.
Algoritmos alternativos.
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 17 / 69
Dificuldades e Soluções
Capacidade de Aprendizagem
Aumentar o número de elementos na camada escondida. Aumentar o número de camadas escondidas.
Trocar/combinar diferentes funções de propagação. Rever a representação dos dados.
Utilizar times de redes para resolver partes do problema e despois combinar soluções.
Dificuldades e Soluções
Perda de generalização Como evitar?
Pelo critério de validação. reduzir a arquitetura da rede. adicionar ruído aos dados.
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 19 / 69
Análise e Tratamento dos Dados
Separação dos conjuntos de dados. Tratamento de outliers.
Normalização.
Separação dos conjuntos
Quantidade disponível
Pequena
Usar cross-validation
Gerar dados artificiais (características estatísticas semelhantes) Boa
Separar conjuntos de treinamento/teste Treinamento/teste/validação
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 21 / 69
Outliers
O que são
Pontos fora da curva
Qual sua influência?
Podem até impedir o aprendizado.
Como tratar?
Eliminar (pode não ser possível.) Ajustar
Normalização
Colocar os dados em uma mesma faixa de valores. Por que?
Evitar que uma dimensão se sobreponha em relação às outas. Evitar que o aprendizado possa estagnar.
Como?
Por dimensão do problema.
Usando algum dos métodos disponíveis.
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 23 / 69
Max-min
Emprega os valores máximos/mínimospara normalizar linearmente os dados entre [-1,1) ou (-1,1].
Max-min Equalizado
novox = max(x) − min(x)x − min(x)
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 25 / 69
Z-score
Os dados são normalizados com base na média e no desvio padrão dos dados.
Os dados transformados ficam com média 0 e variância igual a 1. novox = x − xx
Sigmoidal
Os dados são normalizados com base na média e no desvio padrão dos dados.
Sofre pouca influência dos outliers.
novox = 1
1 + ex−xx
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 27 / 69
Redução da dimensionalidade
Reduzir o número de entradas procurando às que são correlacionadas. Por que?
Reduz o custo computacional. Melhora a generalização.
Métodos
Resumo Seção
1 Introdução 2 Treinamento 3 Treinamento - Teoria 4 Programando Aproximando Função Iris Clustering 5 ReferênciasAdriano Cruz (UFRJ) MLP - RNA 2013/03/13 29 / 69
Treinamento fase forward
1 As entrada são apresentadas à primeira camada da rede (Camada 0). 2 Para cada camada 0 < l ≤ L a partir da camada de entrada:
1 Os nós da camada i calculam suas saídas.
2 Saídas da camada i servem de entrada para a camada i + 1
Treinamento fase backward
1 A partir da última camada até chegar na camada de entrada:
1 Os nós da camada atual ajustam seus pesos de forma a reduzir seus erros.
2 O erro de um nó das camadas intermediárias é calculado utilizando-se os erros dos nós da camada seguinte, a ele conectados, ponderados pelos pesos das conexões entre eles.
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 31 / 69
Parâmetros da Rede
nl: número de neurônios da camada l (0 ≤ l ≤ L)
pi: i-ésima característica da amostra de treinamento (1 ≤ i ≤ n0)
di: i-ésima característica da saída desejada para a amostra de
treinamento (1 ≤ i ≤ nL)
xli: i-ésima entrada da l-ésima camda (1 ≤ l ≤ L, 1 ≤ i ≤ nl−1)
xli = y(l−1)i
Continuando
netli: ativação do i-ésimo neurônio da l-ésima camada
(1 ≤ l ≤ L, 1 ≤ i ≤ nl) netli = bli +Pnj=1(l−1) wlijxlj
fl: função de propagação da l-ésima camada (1 ≤ l ≤ L)
yli: saída do i-ésimo neurônio da l-ésima camada (1 ≤ l ≤ L, 1 ≤ i ≤ nl)
yli =
fl(netli) se l > 0
pi se l = 0
hli: erro do i-ésimo neurônio da l-ésima camada
(1 ≤ l ≤ L, 1 ≤ i ≤ nl).
Para a última camada, temos: hLi = di − yLi
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 33 / 69
Regra Delta generalizada
Avaliação do Erro: E = 1 2 nL X i=1 hLi2
∆wlij: incremento no peso do i-ésimo neurônio da l-ésima camada em
relação à j-ésima entrada (1 ≤ l ≤ L, 1 ≤ i ≤ nl, 1 ≤ j ≤ n(l−1)):
∆wlij ∝ − ∂E
∂wlij =⇒ ∆wlij = −η ∂E ∂wlij
Vamos considerar L = 2
Considerando L = 2 Sabendo que: hLi = di − yLi ∂E ∂w2ij = ∂E ∂h2i ∂h2i ∂w2ij = ∂E ∂h2i ∂h2i ∂y2i ∂y2i ∂w2ij = ∂E ∂h2i ∂h2i ∂y2i ∂y2i ∂net2i ∂net2i ∂w2ij Portanto: ∂E ∂w2ij = h2i · (−1) · f ′ 2(net2i)· x2jAdriano Cruz (UFRJ) MLP - RNA 2013/03/13 35 / 69
Continuando
Chamando
eli = hlifl′(netli)
de erro ajustado do i-ésimo neurônio da l-ésima camada, temos
∂E
E a camada intermediária
∂E ∂w1ij = n2 X k=1 ∂E ∂h2k ∂h2k ∂w1ij = n2 X k=1 ∂E ∂h2k ∂h2k ∂y2k ∂y2k ∂w1ij = n2 X k=1 ∂E ∂h2k ∂h2k ∂y2k ∂y2k ∂net2k ∂net2k ∂w1ij = n2 X k=1 ∂E ∂h2k ∂h2k ∂y2k ∂y2k ∂net2k ∂net2k ∂x2i ∂x2i ∂w1ij = n2 X k=1 ∂E ∂h2k ∂h2k ∂y2k ∂y2k ∂net2k ∂net2k ∂x2i ∂x2i ∂y1i ∂y1i ∂w1ij = n2 X k=1 ∂E ∂h2k ∂h2k ∂y2k ∂y2k ∂net2k ∂net2k ∂x2i ∂x2i ∂y1i ∂y1i ∂net1i ∂net1i ∂w1ijAdriano Cruz (UFRJ) MLP - RNA 2013/03/13 37 / 69
Então...
∂E ∂w1ij = n2 X k=1 ∂E ∂h2k ∂h2k ∂y2k ∂y2k ∂net2k ∂net2k ∂x2i ∂x2i ∂y1i ∂y1i ∂net1i ∂net1i ∂w1ij ∂E ∂w1ij = n2 X k=1h2k · (−1) · f2′(net2k)· w2ki · (1) · f1′(net1i)· x1j
= −1 n2 X k=1 h2k · f2′(net2k) | {z }·w2ki · f1′(net1i)· x1j
Finalizando...
Definindo hli para l < L. hli = nl+1 X k=1 e(l+1)k · w(l+1)ki Temos ∂E ∂w1ij = −h1i · f ′ 1(net1i)· x1j Substituindo e1i, ∂E ∂w1ij = −e1i · x1jAdriano Cruz (UFRJ) MLP - RNA 2013/03/13 39 / 69
E o bias
Da mesma forma, ∂E ∂b1i = −e1i Resumindo: ∆wlij = η · eli · xlj ∆bResumo Seção
1 Introdução 2 Treinamento 3 Treinamento - Teoria 4 Programando Aproximando Função Iris Clustering 5 ReferênciasAdriano Cruz (UFRJ) MLP - RNA 2013/03/13 41 / 69
newff
newff: cria uma rede feed-forward backpropagation.
Syntaxe simplificada: net = newff(P,T,S,TF,BTF,BLF,PF)
P: matriz de tamanho R × Q1, onde Q1 é o número de elementos representativos (Patterns) e R o número de entradas.
T : matriz de tamanho SNxQ2 onde Q2 é o número de elementos representativos e SN o número de saídas dos valores desejados (Target).
newff continuando...
newff: cria uma rede feed-forward backpropagation.
Syntaxe simplificada: net = newff(P,T,S,TF,BTF,BLF,PF)
TFi: Função de transferência da i-ésima camada. Default é tansig
para camadas escondidas e purelin para camada de saída. BTF : Função de treinamento, default = trainlm.
BLF : Função de aprendizado dos pesos/polarização, default = learngdm.
PF : Cálculo do desempenho, default = ’mse’.
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 43 / 69
train
Treina o MLP para executar uma tarefa.
Forma mais comum: netTreinada = train(net, P, T). net geralmente é a rede gerada por newff.
netTreinada é como o nome diz.
P e T são matrizes como as já definidas. Parâmetros que podem ser definidos:
sim
Após a criação do MLP, podemos utilizá-lo usando esta função.
resp = sim(net, P); forma mais simples. net é a estrutura que contém o MLP.
P é uma matriz R × Q1, onde Q1 o número de padrões de entrada e R o número de variáveis na entrada.
resp é a saída da rede, sendo uma matriz de tamanho S × Q1.
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 45 / 69
Um exemplo
clear all; close all; P = [ 0 1 2 3 4 5 6 7 8 9 10]; T = [ 0 1 2 3 4 3 2 1 2 3 4]; net = newff (P, T, 10) Y = sim(net , P ); plot (P, T, ’rs - ’, P , Y , ’o- ’); legend ( ’T ’, ’Y ’), xlabel (’P ’); net. trainParam. epochs = 100;Resultado
0 2 4 6 8 10 −2 0 2 4 6 8 10 12 P T Y(a) Antes do treinamento
0 2 4 6 8 10 0 0.5 1 1.5 2 2.5 3 3.5 4 P T Y (b) Após o treinamento
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 47 / 69
As Famosas Iris
As Famosas Iris
O conjunto conhecido como Iris flower data set ou Fisher’s Iris data set foi apresentado por Sir Ronald Fisher (1936) como um exemplo de análise discriminante.
Também conhecido por Anderson’s Iris data set porque Edgar
Anderson coletou os dados para quantificar as variações morfológicas de três espécies das flores Iris.
Duas das três espécies foram coletadas na península Gaspé (Canadá) sendo “todas do mesmo local, coletadas no mesmo dia e medidas ao mesmo tempo, pela mesma pessoa, com os mesmos aparelhos.”
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 49 / 69
As Famosas Iris
O conjunto consiste de 50 amostras de cada uma das três espécies da Iris (Iris setosa, Iris virginica and Iris versicolor).
Quatro características foram medidas: comprimento e largura das sépalas e pétalas, em centímetros.
Baseado na combinação destas quatro características, Fisher
desenvolveu o modelo conhecido como o discriminante linear de Fisher para distinguir cada uma das espécies.
Exemplo Iris
function net = create_fit_net( inputs , targets)
% CREATE_FIT_NET Creates and trains a fitting neural netwo %
% Create Network
numHiddenNeurons = 20; % Adjust as desired net = newfit ( inputs , targets , numHiddenNeurons );
net. divideParam. trainRatio = 70/100; % Adjust as desired net. divideParam. valRatio = 15/100; % Adjust as desired net. divideParam. testRatio = 15/100; % Adjust as desired % Train and Apply Network
[ net , tr] = train ( net , inputs , targets); outputs = sim( net , inputs );
% Plot
plotperf( tr)
plotfit(net , inputs , targets)
plotregression( targets , outputs)
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 51 / 69
Exemplo Iris
% Treina uma rede para os dados iris. dat clear all; close all;
load irisTrain. dat % Parte dos dados para treinament PT = irisTrain(: ,1:4)’; % Dados de entrada da rede para t TT = irisTrain(: ,5) ’; % Dados de saida da rede para tre net = create_fit_net(PT , TT );
load iris. dat
P = iris (: ,1:4)’; T = iris (: ,5) ’; Y = sim(net , P );
O problema
Quatro classes de dados (A, B, C, D). Espaço bidimensional.
Criar uma RNA capaz de classificar um ponto arbitrário em uma das quatro classes.
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 53 / 69
Definindo os dados
% number of sample of each class K = 100;
% Define 4 clusters of input data q = 0.6; % offset of classes A = [ rand (1 ,K) - q; rand (1 ,K) + q ]; B = [ rand (1 ,K) + q; rand (1 ,K) + q ]; C = [ rand (1 ,K) + q; rand (1 ,K) - q ]; D = [ rand (1 ,K) - q; rand (1 ,K) - q ]; figure (1); plot (A (1 ,:) , A (2 ,:) , ’k+’); hold on; plot (B (1 ,:) ,B (2 ,:) , ’b* ’);
Dados para classificação
−1 −0.5 0 0.5 1 1.5 2 −1 −0.5 0 0.5 1 1.5 2 Class A Class B Class C Class DAdriano Cruz (UFRJ) MLP - RNA 2013/03/13 55 / 69
Codificação
% Define output coding
% coding (+1/ -1) of 4 separate classes a = [ -1 -1 -1 +1] ’;
b = [ -1 -1 +1 -1] ’; d = [ -1 +1 -1 -1] ’; c = [+1 -1 -1 -1] ’;
Treinamento
% Prepare inputs and outputs f o r network trainig
% define inputs ( combine samples from all four classes) P = [ A B C D ];
% define targets
T = [ repmat (a ,1 , length (A)) repmat (b ,1 , length (B )) ... repmat (c ,1 , length (C)) repmat (d ,1 , length (D )) ]; % create a neural network
net = newff ( minmax (P), minmax (T), [5 3]); % train net
net. divideParam. trainRatio = 1; % training set % net. divideParam. valRatio = 0; % validation set % net. divideParam. testRatio = 0; % test set %
% train
[ net , tr , Y , E] = train ( net , P, T ); view ( net );
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 57 / 69
Avaliação
% Evaluate network performance and plot results [m,i] = max(T ); % Target class
[m,j] = max(Y ); % predicted class
N = length (Y ); % number of all samples k = 0;
i f find(i-j), % i f there exist misclassified samples k = length ( find(i -j )); % get the numbber of misclassi end
Gráficos
% Plot network output figure ; subplot (211); plot (T ’); title ( ’ Targets’); ylim ([ -2 2]); grid on; subplot (212); plot (Y ’);
title ( ’ Network response’); xlabel ( ’# sample ’);
ylim ([ -2 2]); grid on;
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 59 / 69
Respostas da rede
0 50 100 150 200 250 300 350 400 −2 −1 0 1 2 Targets 2 Network responseGráficos
% Plot classification result f o r the complete input space span = -1:0.01:2;
[ P1 P2] = meshgrid( span , span ); pp = [ P1 (:) P2 (:)] ’;
% simulate neural network on a grid aa = sim(net , pp );
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 61 / 69
Gráficos
% plot classification regions based on MAX Activation figure(1)
m=mesh(P1, P2, reshape(aa(1,:), length(span), length(span))-5); set(m, ’facecolor’, [1 0.2 0.7], ’linestyle’, ’none’);
hold on;
m=mesh(P1, P2, reshape(aa(2,:), length(span), length(span))-5); set(m, ’facecolor’, [1 1.0 0.5], ’linestyle’, ’none’);
Dados classificados
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 63 / 69
Resumo Seção
1 Introdução 2 Treinamento 3 Treinamento - Teoria 4 Programando Aproximando FunçãoReferências I
Antônio de Pádua Braga, André Ponce de Leon F. de Carvalho, and Teresa Bernarda Ludermir.
Fundamentos de Redes Neurais Artificiais. NCE/UFRJ, Rio de Janeiro, Brasil, 1998.
11a Escola de Computação.
Simon Haykin.
Redes neurais : princípios e prática. Bookman, Porto Alegre, 2001.
D. O. Hebb.
The organization of behavior. Wiley, New York, 1949.
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 65 / 69
Referências II
J. J. Hopfield.
Neural networks and physical systems with emergent collective properties.
In Proceedings of the National Academy of Sciences, volume 79, pages 2554–2558, 1982.
W. S. McCulloch and W. Pitts.
A logical calculus of the ideas immanent in nervous activity. Bulletin of Mathematical Biophysics, 5:115–133, 1943.
Referências III
F. Rosenblatt.
The perceptron: a probabilistic model for information storage and organization in the brain.
Psychol. Review, 65:386–408, 1958.
D. E. Rumelhart, G. E. Hinton, and R. J. Williams.
Learning representantions by back-propagation errors. Nature, 323:533–536, 1986.
doi:10.1038/323533a0.
B. Widrow and M. E. Hoff.
Adaptative switching circuits.
Western Electronic Show and Convention, Institute of Radio Engineers, 1960.
Adriano Cruz (UFRJ) MLP - RNA 2013/03/13 67 / 69
Referências IV
D.H. Wolpert and W.G. Macready.
No free lunch theorems for optimization.
IEEE Transactions on Evolutionary Computation, 1(1):67–82, april 1997.