Redes Neurais Artificiais para
Controle & Automação
Prof. Marcelo Ricardo Stemmer marcelo@das.ufsc.br
Sumário
• Introdução e Breve Histórico das RNAs
• Algumas Aplicações
• O Neurônio Biológico e o Neurônio Artificial
• Redes Neurais Multicamadas
• O Treinamento da RNA
• Redes Neurais em Identificação e Controle de
Processos
• Redes Neurais em Robótica
• Redes Neurais em Visão Computacional
• Comentários Finais
Introdução
• Década de 50
: duas abordagens concorrentes em IA
-Conexionista (neural, paralela) x Simbolista
(clássica, seqüencial).
• Objetivo
da
linha
Conexionista:
investigar
possibilidade de simular comportamentos inteligentes
através de modelos da estrutura e funcionamento do
cérebro humano.
• Linhas nasceram praticamente juntas: encontro no
Darthmouth College de 1956 já abordou RNA.
• Técnicas simbolistas tiveram preferência no início da
IA (computadores disponíveis inadequados para
abordagem conexionista).
Introdução
• Retomada de interesse pela abordagem
Conexionista na década de 1980, devido a:
– melhores conhecimentos da estrutura real do
cérebro e dos neurônios (neurologia);
– melhores algoritmos de treinamento
(backpropagation introduzido em 1985);
– disponibilidade de hardware computacional
mais adequado (inclusive paralelo).
Breve Histórico das RNAs
• 1943: Warren McCullog (neuro-anatomista) e Walter Pitts (matemático) propõem modelo binário para o neurônio. Não havia treinamento.
• 1949: Donald Hebb propõe principio de aprendizado em sistemas nervosos, no qual a conexão entre 2 neurônios é reforçada sempre que ambos estão ativos ao mesmo tempo.
• 1958: Frank Rosenblatt propõe uma rede de neurônios com valores contínuos e treinamento baseado em Hebb, denominada Perceptron.
• 1960: Widrow e Hoff propõem as rede ADALINE (Adaptive Linear Element) e MADALINE (Multiple ADALINE) e uma nova regra de aprendizado chamada Regra Delta (Método Gradiente).
• 1969: Minsky e Pappert (MIT) publicam o livro “Perceptrons”, com dura critica as RNA e expondo as limitações dos Perceptrons (como a impossibilidade de aprender a função XOR ou treinar redes multicamadas). Interesse pelas RNA diminui muito.
Breve Histórico das RNAs
• Década de 70
: Kohonen constrói memória
associativa. Grossberg cria ART (Adaptive
Resonance Theory).
• 1982
: Hopfield introduz redes recorrentes.
• 1985
: Hinton introduz máquina de Boltzmann.
• 1985
: Rummelhart, Hinton e Williams criam
algoritmo Error Backpropagation (Regra Delta
Generalizada) e modelo de neurônio com função de
ativação não linear.
• 1986
: Rummelhart e McClelland publicam o livro
“Parallel Distributed Processing”. Inicio de nova
era de pesquisas em RNA.
Algumas Aplicações
• Eng. Civil:
– Avaliação da Condição de Pavimentos; – Gerenciamento da Construção;
– Previsão da Resistência Mecânica do Concreto;
• Eng. Elétrica:
– Processamento de sinais; – Previsão de carga elétrica; – Diagnóstico de falhas;
• Financeira:
– Previsão da bolsa de valores; – Previsão de falência de bancos;
• Controle de Processos:
– Modelagem / Identificação;
– Controle Adaptativo e Não-Linear; – Otimização de Parâmetros;
• Robótica:
– Inteligência do Robô (tomada decisão); – Planejamento da Trajetória;
– Controle Força / seguimento trajetória.
• Meteorologia:
– Previsão do Tempo;
• Biomédica:
– Análise de Batimentos Cardíacos; – Diagnóstico Médico da Tuberculose; – Detecção de Eventos Epiléticos;
• Linguagem Natural:
– Analisador Sintático; – Compreensão de Texto; – Corretor Gramatical;
• Processamento de Voz e Fala:
– Reconhecimento de Fala;
– Reconhecimento do Locutor (voz);
• Agricultura:
– Previsão de Produtividade da Lavoura;
• Eng. de Produção:
– Otimização de Processos de Fabricação; – Monitoramento de Processos;
• Visão Computacional
Por que usar RNA?
• RNA interessante nestas e outras aplicações porque:
– é capaz de aprender através de exemplos;
– é capaz de generalizar (reconhecer instâncias
similares aos exemplos, mas nunca apresentadas);
– apresenta
elevada
imunidade
ao
ruído
(desempenho não colapsa na presença de
informações falsas ou ausentes);
– tem bom desempenho em problemas “mal
definidos” (onde não existe conhecimento de
O Neurônio Biológico
Dendrites = entradas
Axônio = saída Sinapse =
O Neurônio Biológico
A Rede Neural Humana
• Cérebro:
– contém aprox. 1011 neurônios;
– 1015 interconexões;
– vias de transmissão com 1 ou mais metros;
– Peso: ~1,5 Kg (2% peso corpo); – Consome 20 a 30% da energia do organismo; – Córtex: » Rato (5 cm3), Chimpanzé (500 cm3); » Homem (2000 cm3);.
O Neurônio Artificial
• Neurônio Artificial pretende imitar características de primeira ordem do neurônio biológico:
F = Função de Ativação não linear e limitada;
Sinapse pode ser excitadora (w > 0 ) ou inibidora (w < 0) Se o peso é zero, não há conexão.
∑
∈−
=
) (i pred j j ij i jx
w
net
θ
O Neurônio Artificial
• Exemplo de Função de Ativação:
F(net) = 1/(1+e-net)
• Sigmóide muito usada pois é derivável e monótona.
Degrau Sigmóide Tangente hiperbólica
Função da base radial (RBF)
Redes Neurais Multicamadas
• Um único neurônio pode realizar funções de
detecção de padrões muito simples.
• O poder de computação neural vem da conexão
dos neurônios dentro de uma rede.
• Topologias de rede:
– redes Recorrentes (não há direção privilegiada para
propagação da informação);
– redes “Feedforward” (sinal vai sempre das entradas
para as saídas).
Redes Neurais Multicamadas
• A rede mais simples é formada por um grupo de neurônios arranjados em uma camada (ex.: perceptron).
Redes Neurais Multicamadas
• Redes multicamadas feedforward podem ser
formadas colocando em cascata redes de 1 camada;
a saída de uma camada providência a entrada para a
camada subseqüente.
Classificação de RNAs
Redes Neurais Artificiais
Feed-forward Recorrentes
Unsupervised (self-organizing) Linear Não linear
Hopfield Model Bolzmann machine - fb Kohonen self organizing feature maps (SOM) - lat. Adaptive Resonance Theory (ART) - lat.+delay supervised Unsupervised (self-organizing) Adaline Madaline Backprop quickprop rprop reinforcement Hebb Oja Sanger competitive Associative Bi-directional Memory (BAM) - fb MLP RBF “híbrido” counterprop Supervised Hebbian competitive Simulated annealing
O Treinamento da RNA
• “Treinar” rede neural: ajustar pesos das
várias camadas de forma que a saída
coincida com valor desejado para uma
dada entrada.
• O treinamento pode ser:
– supervisionado (com um “professor”);
– não supervisionado (“auto-organizado”)
.
Treinamento Supervisionado
• O treinamento supervisionado exige um vetor de entrada com um
vetor alvo representando a saída desejada. Juntos, são chamados par de treinamento. I D I D I D I Rede Neural O D Supervisor I D 1 2 3 4 Conjunto de Exemplos
Treinamento Não Supervisionado
• No treinamento não supervisionado, o conjunto de treinamento consiste somente de vetores de entrada. O algoritmo de treinamento modifica os pesos da rede para produzir um vetor de saída “consistente” com a entrada. • A aplicação de um vetor de treinamento ou um vetor que é suficientemente
similar a ele na entrada irá produzir o mesmo padrão de saída (Auto-associação). Isto permite reconstituir entradas deturpadas (útil em
processamento de sinais, filtragem, etc.).
I I I I Rede Neural O Auto-ajuste I 1 2 3 4
O Treinamento da RNA
• Seja um neurônio dado por:
• e estabelecendo como convenção:
– Valor +1 = ativo – Valor -1 = inativo
. . .
Entrada (-1 ou +1) Processamento (ex. Soma) Saída = -1 se resultado <= 0
Ponderação (entrada x peso) Saída = +1 se resultado > 0
O Treinamento da RNA
• Para a situação abaixo:
• deseja-se ajustar os pesos de forma que:
– entrada "bom tempo" ativa => saídas "nadar" e "bom humor" ativas – entrada "Tempo instável" ativa => saídas "bom humor" e
"guarda-chuva" ativas
– entrada "chuva" ativa => saída "guarda-chuva" ativa
Entrada Pesos Soma Saída Entrada Pesos Soma Saída Nadar Bom Humor Guarda-Chuva
Bom Tempo Tempo Instável Chuva
1 0 0 0 1 0 0 0 1
O Treinamento da RNA
• Possível solução: ajustar pesos manualmente até que a
saída coincida com a desejada para os valores dados de
entrada.
• Solução melhor: definir uma regra de ajuste dos pesos
(
regra de aprendizado
).
• Hipótese de Hebb
: "A ligação entre dois neurônios é
reforçada se ambos são simultaneamente ativados por
um dado estímulo de entrada".
• Formulação de uma Regra simples baseada em Hebb:
"Incrementar em 1 o peso de ligação entre neurônio i e
neurônio j quando o neurônio i estiver ativado e o
estado desejado do neurônio j seja ativo"
O Treinamento da RNA
• Algoritmo de Treinamento da Rede:
1. definir a saída desejada para cada conjunto de
entradas;
2. definir valores iniciais aleatórios para cada peso;
3. colocar um conjunto de valores na entrada e calcular
a saída;
4. corrigir os pesos seguindo a regra de Hebb até obter
a saída desejada para aquela entrada;
O Treinamento da RNA
Entrada Pesos Soma Saída Entrada Pesos Soma Saída Nadar Bom Humor Guarda-ChuvaBom Tempo Tempo Instável Chuva 1 0 0 0 1 0 0 0 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1
Condição inicial: entrada [1,-1,-1]; saída desejada [1,1,-1]
Nadar Bom Humor Guarda-Chuva desejado
O Treinamento da RNA
Entrada Pesos Soma Saída Entrada Pesos Soma SaídaBom Tempo Tempo Instável Chuva 2 0 0 1 1 0 0 0 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 2 0 -1 1 -1 -1
Primeiro ajuste de pesos:
Nadar Bom Humor Guarda-Chuva
Nadar Bom Humor Guarda-Chuva desejado
O Treinamento da RNA
Segundo ajuste de pesos: resultado alcançado !
Entrada Pesos Soma Saída Entrada Pesos Soma Saída Nadar Bom Humor Guarda-Chuva
Bom Tempo Tempo Instável Chuva 3 0 0 2 1 0 0 0 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 3 1 -1 1 1 -1
O Treinamento da RNA
• A rede aparenta ter "aprendido" corretamente !
• Problemas se fornecida uma entrada para a qual a rede não foi treinada.
• Exemplo: todas as 3 entradas em 1 (ilógico para o caso) resulta em todas as saídas em 1 (o que também é ilógico!).
• Podemos incluir mais um par de treinamento: para a entrada [1,1,1] desejamos saída [-1,-1,-1].
• Com a regra de treinamento em uso, este novo par nunca será aprendido !
• Isto se deve a simplicidade extrema da regra de aprendizado utilizada.
O Treinamento da RNA
• Podemos melhorar nossa regra de aprendizado,
introduzindo a noção de erro (
Regra Delta
de
Widrow e Hoff):
Erro = (Estado desejado da saída - Estado obtido com pesos atuais) Novo peso = peso velho + (Fator de Aprendizado x Erro x Entrada)
O Treinamento da RNA
Partindo dos pesos obtidos anteriormente e treinando para o novo par com a regra melhorada e com FA= 0,5:
Entrada Pesos Soma Saída Entrada Pesos Soma Saída
Nadar Bom Humor Guarda-Chuva
Bom Tempo Tempo Instável Chuva
3 0 0 2 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 1 1 1 1
Nadar Bom Humor Guarda-Chuva desejado
obtido
Para todos os neurônios temos: E =(-1-1) = -2 Wi+1= Wi+(-2x0,5x1)
O Treinamento da RNA
Entrada Pesos Soma Saída Entrada Pesos Soma SaídaNadar Bom Humor Guarda-Chuva
Bom Tempo Tempo Instável Chuva
2 -1 -1 1 0 -1 -1 -1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 -2 -1 -1 -1
Após o primeiro ajuste de pesos temos E=0 para todas as saídas (pesos não mudam mais daqui para frente = fim treinamento). Aprendemos novo par ! Terá a rede “esquecido” o que aprendeu no par anterior ?
O Treinamento da RNA
• Resultado para entrada = "bom tempo":
Entrada Pesos Soma Saída Entrada Pesos Soma Saída Nadar Bom Humor Guarda-Chuva
Bom Tempo Tempo Instável Chuva 2 -1 -1 1 0 -1 -1 -1 0 1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 4 2 0 1 1 -1
Treinamento e Topologia
• A rede usada no exemplo anterior tem uma camada de entrada e uma de saída (como perceptron de Rosenblatt ou ADALINE de Widrow).
• Sabemos qual o valor de saída desejado, de modo que podemos calcular facilmente o erro para a última camada.
• Este tipo de rede só pode tratar problemas linearmente separáveis. • Quanto maior o número de entradas, maior é a família de funções
não linearmente separáveis.
x1 x2 (0,0) (1,0) (0,1) (1,1) AND x1 x2 (0,0) (1,0) (0,1) (1,1) OR x1 x2 (0,0) (1,0) (0,1) (1,1) XOR
Treinamento e Topologia
x1 x2 Fan-out E (x1.x2) E (x1.x2) OU (x1.x2)+(x1.x2) yTreinamento e Topologia
Pesos e thresholds para gerar 2 retas separando casos no XOR
Treinamento e Topologia
• Outra solução para o XOR (para entradas +1 e -1):
Treinamento e Topologia
• Para que uma RNA aprenda o XOR:
– Precisamos pelo menos uma camada intermediária;
– Precisamos de uma função de ativação não linear,
que pode até ser o degrau, como no exemplo
anterior.
• Problema: como calcular o erro nas camadas
intermediárias?
Treinamento e Topologia
• Redes com múltiplas camadas (também chamadas
redes MLP = Multi-Layer Perceptron) podem tratar
com dados não linearmente separáveis.
• Para uma rede com 3 camadas e entradas 2D, pode-se
dizer que:
– Cada nodo da primeira camada traça retas (ou hiperplanos, para mais dimensões) no espaço de padrões de treinamento; – Cada nodo da segunda camada combina as retas (hiperplanos)
dos nodos da primeira camada formando regiões convexas; – Cada nodo da camada de saída combina as regiões da camada
anterior, formando regiões abstratas que separam os padrões de entrada em classes.
Treinamento e Topologia
• Cybenko mostrou que:
– Uma camada intermediária é suficiente para
aproximar qualquer função contínua;
– Duas camadas intermediárias são suficientes para
aproximar qualquer função matemática.
– O uso de muitas camadas intermediarias não é
recomendável, pois as camadas intermediárias
trabalham com uma estimativa do erro, que se torna
pior a cada retropropagação (só se sabe o valor
Treinamento e Topologia
• O número de neurônios da camada de entrada e de saída é em geral dado pela aplicação.
• Para as camadas intermediárias:
– Geralmente o número de neurônios é determinado de forma empírica;
– O número de conexões deve ser bem menor do que o número de exemplos para evitar overfitting (memorização dos
padrões de treinamento sem extração de características gerais que permitem generalização);
– O número de neurônios depende do número de exemplos, da quantidade de ruído, da complexidade da função a ser
aprendida e da distribuição estatística dos dados de treinamento.
Treinamento e Função de Ativação
• Usamos no exemplo anterior uma função de ativação em degrau (threshold), que é não linear.
• Com ela, a avaliação do erro para camadas intermediárias seria
complexa, pois os nodos não sabem se suas respostas estão próximas ou não do valor desejado.
• Se usarmos funções de ativação lineares, o cálculo do erro nas camadas escondidas é fácil, mas pode ser demonstrado que uma rede MLP com qualquer número de camadas equivale a uma rede de uma única
camada:
y = (x.Wa).Wb Se existe Wc = Wa.Wb
Então y = x.Wc
• A função de ativação para redes MLP deve ser não linear, contínua e derivável (para cálculo do gradiente, como veremos a seguir).
Error Backpropagation
• Se a rede tiver uma ou mais camadas escondidas (intermediárias), como calcular o erro para estas camadas?
• Algoritmo de treinamento mais usado: "Error Backpropagation"
(retropropagação do erro): U Yd Yrn E Modelo Rede Neural +
-Error Backpropagation
• Algoritmo Backpropagation (simplificado)
:
– Passo 1: inicializar pesos com valores aleatórios pequenos;
– Passo 2: alimentar rede com um padrão de treinamento U e
vetor de saída desejado Yd;
– Passo 3: calcular saída da rede usando valores atuais dos pesos: Y=F(U.W);
– Passo 4: calcular erro entre saída produzida e desejada (Y-Yd);
– Passo 5: corrigir pesos de todas as camadas por retropropagação:
Wi+1 = Wi - η .dE(W)/dW para W = Wi
– Passo 6: testar condição de parada (|E(k)| < Emin): se não atendida, voltar ao passo 3.
Error Backpropagation
• Introduzido em 1985 por
Rummelhart, Hinton e
Williams
• Generalização da Regra Delta (Widrow e Hoff)
• Algoritmo de gradiente descendente para otimização
não linear
• Duas fases principais:
– Forward: são apresentados vetores de entrada e calculadas as saídas;
– Backward: o erro entre a saída obtida na fase anterior e a saída desejada é retropropagado para corrigir os pesos.
Error Backpropagation
• Aprendizado por lote (batch) ou época (epoch): algoritmo procura minimizar uma função de erro global:
Onde:
E é o erro médio quadrático
p é o número de padrões apresentados à rede n é o número de neurônios de saída
di é a i-ésima saída desejada
Error Backpropagation
• Aprendizado por padrão (pattern): a minimização da função de erro para cada padrão individual levará à minimização de E.
• Assim, o erro por padrão Ep pode ser definido por:
Esta função define uma superfície de erro em função dos pesos da rede.
Error Backpropagation
Error Backpropagation
• Objetivo do algoritmo: obter valores dos pesos que apresentam
menor valor de E ou Ep (mínimo global)
• Variação do peso deve ser feita proporcionalmente ao negativo do gradiente do erro em relação aos pesos da rede:
Onde:
W ji é o peso da saída j para a entrada i
(A proporcionalidade pode ser substituída por igualdade introduzindo o termo η, que é a taxa de aprendizado)
Error Backpropagation
• É necessário definir como cada peso de cada nodo deve ser ajustado de forma a minimizar o erro gerado pela rede.
• Utilizando a regra da cadeia sobre a equação anterior, temos:
Error Backpropagation
A segunda derivada é dada por:
A primeira derivada mede o erro do nodo j, sendo geralmente
Error Backpropagation
Esta derivada também pode ser calculada pela regra da cadeia:
A segunda derivada nesta última equação é dada por:
Error Backpropagation
A primeira derivada depende da camada onde o nodo se encontra. Se for um nodo da última camada (saída), o erro pode ser facilmente definido como:
Esta é a mesma fórmula da regra delta original, como seria de se esperar!
Error Backpropagation
Substituindo este dois termos na equação original, temos:
Error Backpropagation
Se o nodo j não for um nodo de saída, usamos a regra da cadeia novamente para escrever:
Error Backpropagation
Substituindo novamente na equação original, obtemos para as camadas intermediárias:
Error Backpropagation
Podemos generalizar a fórmula de ajuste de pesos como:
Esta fórmula também pode ser escrita de forma recursiva como:
Onde Para nodos da camada de saída
Para nodos de camadas intermediárias
Error Backpropagation
• Se a FA é a sigmóide:
Error Backpropagation
• O algoritmo procura ajustar os pesos de modo que eles correspondam às coordenadas dos pontos mais baixos da superfície de erro.
Error Backpropagation
1. aplique o vetor das entradas
= pN p p x x x ... 2 1 p x às unidades de entrada
2. calcule os valores net para as unidades da camada escondida
∑
= Θ + =N i h j pi h ji h pj w x net 1 . 3. calcule as saídas da camada escondida) (net f i h pj h j pj =
4. calcule os valores net para as unidades da camada de saída
o k pj L j o kj o pk w i Θ net =
∑
+ =1 .Error Backpropagation
5. calcule as saídas da camada de saída
) ( o pk o k pk f net o =
6. calcule o erro para as unidades da camada de saída ) ( ) (
´
o pk o k pk pk o pk = y −o f net δ7. calcule o erro para as unidades da camada escondida
∑
= k o kj o pk h pj h j h pj f´
(net ). δ .w δError Backpropagation
8. atualize os pesos da camada de saída
pj o pk o kj o kj t w t i w ( +1) = ( )+η.δ . 9. atualize os pesos da camada escondida
i h pj h ji h ji t w t x w ( +1) = ( )+η.δ .
10. calcule o erro total para checar a condição de parada do algoritmo
∑
= = M k pk p E 1 2 2 1 δSe Ep for menor do que um dado valor, o algoritmo é repetido para o próximo vetor de entrada. Senão, retorna-se ao passo 2 (mantendo-se o mesmo vetor de entrada).
Error Backpropagation
fj fk xp1 xp2 xpn ∑ = Θ + = N i h j pi h ji h pj w x net 1 . i j k wji wkjinput hidden output
) (net f i h pj h j pj = o k pj L j o kj o pk w i Θ net =∑ + =1 . ) ( o pk o k pk f net o = ) ( ) ( ´ o pk o k pk pk o pk = y −o f net δ ∑ = k o kj o pk h pj h j h pj f ´(net ). δ .w δ pj o pk o kj o kj t w t i w ( +1)= ( )+η.δ . i h pj h ji h ji t w t x w ( +1)= ( )+η.δ . ∑M 1
Error Backpropagation
• Influência da taxa de
aprendizado η:
– Seja E(w) = w2 – Achar mínima (obviamente em w=0) partindo de w = 1 w(k+1) = w(k) – η.2.w(k)Error Backpropagation
• Problemas com Backpropagation:
– Baixa velocidade de convergência quando próximo a um mínimo da função de erro
Outros Algoritmos de Treinamento
• Backpropagation com Momentum: introduz termo μ
na equação, para acelerar convergência
• RProp (Resilient Propagation): baseado somente no
sinal do gradiente da função de erro para atualização dos
pesos. Convergência mais rápida.
• Algoritmos Genéticos: podem ser usados para treinar
RNA (genes são os pesos, representados como números
reais). Tende a encontrar mínimo global.
Outros Algoritmos de Treinamento
• ABPropagation (Adaptive Backpropagation): taxa de
aprendizado não é fixa, mas função do erro e do
gradiente do erro. Sempre trabalha em modo batch.
Produz aceleração na convergência.
• Quickpropagation (Fahlman, 1988): aproxima curva
de erro para cada peso por uma parábola com
concavidade voltada para cima. Equação de
modificação dos pesos dada por:
Modelos de RNA
Precisa muitos PE's para armazenar poucos padrões Estável Reconhecimento de padrões. Bidirectional Associative Memories (BAM)
Sem aprendizado, os pesos devem ser setados.
Implementação em larga escala. Recuperação de dados e fragmentos de imagens. Hopfield Grande número de neurônios e conexões (topologia complexa) Rapidez de treinamento Reconhecimento de padrões, análise estatística. Counterpropagation Treinamento supervisionado requer exemplos abundantes simples e eficiente
Larga aplicação MLP com
Backpropagation
Não reconhece padrões complexos; sensível a mudanças.
Rede neural mais antiga. Reconhecimento de caracteres. Perceptrons Pontos Fracos Pontos Fortes Principais Aplicações Modelo Neural
Aplicações I
Identificação e
Controle de
Redes Neurais em Controle
• Primeiras aplicações
: década de 60.
• Vantagens
quando o processo:
– é difícil de modelar; – tem não linearidades;
– sofre alteração de parâmetros com o tempo.
• Algumas possíveis
aplicações de interesse
são:
– Identificação – Controle
» Adaptativo » Robusto
» Multivariável
Identificação
• Rede aprende a imitar mapeamento de E/S do
processo (modelo direto ou inverso).
• O treinamento é concluído quando e
m(k) (erro de
modelo) é menor que um valor especificado.
G(s) RNI d u(k) y(k) ym(k) em(k) u(k-1)
Controle
• Controle com RNA segue alguns esquemas
básicos (e muitas variantes):
– Controle supervisionado
– Controle pelo Modelo Interno
– Controle Direto Inverso e Controle Inverso Feedforward – Controle Adaptativo
• RNA pode ainda ser usada em conjunto
com outros métodos de controle:
– Sistemas Neuro-Fuzzy, Neuro-Genéticos – Sistemas híbridos RNA + convencional
Controle Supervisionado
• RNA pode reproduzir comportamento de um operador humano • Widrow e Smith usaram esquema para pendulo invertido em 1964
Controle Supervisionado
• Idéia básica: fazer rede aprender uma lei de controle
existente.
• Passo 1 - treinar rede para reproduzir comportamento
de um controlador qualquer:
Yp E + -Rede Neural Controladora Lei de controle(p.ex. PID) Processo Yd
Controle Supervisionado
• Passo 2 - operação normal: RNA dentro da malha
fechada
• Resultados: desempenho igual ao da lei de controle.
Yp Rede Neural Controladora Processo Yd
Controle Supervisionado
• Variante onde RNA fica em malha aberta
Controle pelo Modelo Interno
• Internal Model Control (IMC): Hunt e Sbarbaro, 1991
• Passo 1 - treinar rede identificadora com modelo direto da planta • Passo 2 - treinar rede controladora com modelo inverso da planta • Controlador e Identificador tratados como uma só rede
multicamadas, onde pesos da parte identificadora são fixos.
Yp Rede Neural Controladora Processo Rede Neural Identificadora Ym Yd +
-Controle pelo Modelo Interno
• Passo 3 - operação normal (IMC): só funciona se
sistema é estável em malha aberta
Yp Rede Neural Identificadora Ym Yd + -Rede Neural Controladora Processo
Controle Direto Inverso
• RNA com modelo inverso colocada em série com
processo, de modo a gerar produto em cascata = 1
Esquemas Adaptativos - I
• O erro de modelo é retropropagado através de uma RNI, sem alterar seus pesos, mas ajustando os pesos da RNA.
• Quando em(k) fica menor que um valor especificado, os pesos da
RNA são copiados na RNC, atualizando o controlador.
G(s) RNI u(k) y(k) ym(k) em(k) d u(k-1) RNC x(k) RNA u'(k) learn I1 I2 O1 d y(k-1)
Esquemas Adaptativos - II
G(s) u(k) y(k) RNC x(k) e(k) RNA learn I1 I2 u'(k) O1• Os pesos da RNA são copiados para a RNC quando o
erro de treinamento fica abaixo de uma valor
especificado.
d y(k-1)
Controle Híbrido
Aplicações II
Comparação de Performance
entre Controladores Clássicos e
um Controlador Torque
Computado Neural Aplicados
ao Robô PUMA 560
Marcelo R. Stemmer Edson R. de Pieri Fábio A. Pires Borges
UFSC / EEL / LCMI C.P 476
CEP 88.040.900 Florianópolis - SC marcelo@lcmi.ufsc.br
UFSC / EEL / LCMI C.P 476
CEP 88.040.900 Florianópolis - SC edson@lcmi.ufsc.br
UFSC / EEL / LCMI R. Almirante Barroso, 1424
CEP 96.010.280 Pelotas - RS
Introdução
• Limitações dos controladores clássicos usados em robótica:
– controladores Junta por junta PD e PID, no rastreamento de trajetória, possuem erro mínimo limitado por não levarem em conta as não linearidades típicas do modelo de um robô manipulador
– controladores tipo Torque Computado tentam levar em conta estas não linearidades, mas esbarram na dificuldade de se obter uma perfeita representação do modelo da dinâmica inversa do robô.
• As Redes Neurais constituem uma alternativa para o controle de robôs manipuladores, pois nos permite representar com maior precisão o modelo da dinâmica inversa do robô.
Introdução
• Vamos comparar a performance de:
– Controladores clássicos junta por junta, PD e PID;
– Controlador tipo torque computado, onde a
dinâmica inversa do robô é obtida treinando-se
uma Rede Neural.
• Sistema é um modelo simplificado de um robô
manipulador do tipo PUMA 560, planar, com
dois graus de liberdade.
O Robô Manipulador
• O Robô utilizado é o PUMA 560, com seis graus de
liberdade.
O Robô Manipulador
• Para simplificar a análise e obter-se um modelo mais fácil de ser aplicado em simulações computacionais, toma-se o segundo e o terceiro elos do robô, considerando estáticos os demais elos e considerando o efetuador como uma massa uniforme na extremidade do terceiro elo.
• Obtêm-se um robô planar (movimentos em duas dimensões), de dois graus de liberdade (Juntas 2 e 3).
Modelo Matemático do Robô
• Considerando que as juntas são acionadas por motores DC e desprezando a flexibilidade nas transmissões (modelo rígido), tem-se:
• Equações do motor : • Equação do Robô : • Sendo : V = L I + R I + K q (1) K I = J q + (2) e m ⋅ ⋅ ⋅ ⋅ τ (1) e (2) τ =D(q) q + C(q,q) q + F q + G(q) ⋅ ⋅ ⋅ (3) K K N mi mi i = K K N ei ei i =
V: Tensões de entrada na armadura dos motores. J: Matriz das inércia dos rotores dos motores.
Ke: Matriz das constantes de tensões induzidas nos motores.
Km: Matriz das constantes mecânicas dos motores.
R: Matriz das resistências das armaduras dos motores. L: Matriz das indutâncias nas armaduras dos motores. F : Torques devido ao atrito viscoso.
τ : Torques totais nas juntas do robô. q : ângulos das juntas do robô.
N: Matriz das relações de transmissão das engrenagens. G(q) : Torques Gravitacionais.
Controladores a comparar
• Controlador PD:
Controladores a comparar
• Controlador PID:
τ =
K e K e K e s ds
p+
v+
i∫
t
( )
0e q
=
d−
q
Controladores a comparar
• Torque Computado:
-Aplicação da técnica “Feedback Linearization”, que consiste do cancelamento das não-linearidades de tal forma que o sistema dinâmico em malha fechada tenha um comportamento linear.
-Lei de controle:
τ
= D(q) q - u) + C(q,q) q + F q + G(q) ⋅(d ⋅ ⋅ ( ) ( ) D q ≈ D q C q q ( , ) ≈ C q q( , ) F ≈ F G q ( ) ≈ G q( ) -Considerando:
e u
=
-Substituindo a lei de controle acima na equação do robô, obtemos:
-O sistema em malha fechada é linear e representado por um conjunto de n integradores duplos desacoplados.
-A entrada u deve ser escolhida de tal forma a obter uma resposta criticamente amortecida.
Controladores a comparar
• Torque Computado Neural:
- o controlador tipo torque computado depende da obtenção da dinâmica inversa do robô => difícil.
- RNA utilizadas para a obtenção de um modelo que represente a dinâmica inversa do robô manipulador.
- As entradas da rede serão as posições e velocidades desejadas para as juntas e a aceleração desejada menos uma entrada u. A entrada u é resultado da operação do controlador linear.
Arquitetura da RNA
• Utilizado algoritmo de treinamento Backpropagation, com treinamento exclusivamente Off-Line.
• Modelo do robô implementado em Simnon
• Vetores de treinamento obtidos com um controlador clássico junta por junta controlando o robô manipulador durante o rastreamento de uma determinada trajetória representada por um polinômio de terceira ordem. • Tomou-se como pares de treinamento as tensões de entrada nos motores de
acionamento das juntas do robô (saídas da rede), e os respectivos valores de posição, velocidade e aceleração angular das juntas no mesmo momento (entradas da rede).
• RNA possui 6 neurônios de entrada, equivalentes aos seis pares de variáveis posição, velocidade e aceleração, e 2 neurônios de saída, equivalentes ao par de tensões de acionamento das duas juntas.
• A melhor convergência deu-se para uma rede com 2 camadas escondidas com 10 neurônios cada.
Treinamento da RNA
• O momentum foi fixado em 0,95 e a taxa de aprendizado em 0,5. • O conjunto de pesos inicial foi escolhido de maneira randômica, com
valores entre -0,01 e +0,01. Vin tempo 1- Juta 1 ( Processo ) 2- Junta 2 ( Processo ) 3- Junta 1 ( Rede ) 4- Junta 2 ( Rede ) 2 e 4 1 e 3
Resultado do treinamento da RNA após 30.000 iterações para
Simulações e Resultados
• erro em graus x tempo
1 3 2 4 1) Junta 1 ( PD clássico ) 2) Junta 2 ( PD clássico ) 3) Junta 1 ( Neural ) 4) Junta 2 (Neural ) CONTROLADOR PD: ∆ θ 1 = 900 e ∆ θ 2 = 1800 1) Junta 1 ( PD clássico ) 2) Junta 2 ( PD clássico ) 3) Junta 1 ( Neural ) 4) Junta 2 (Neural ) CONTROLADOR PD: ∆ θ 1 = 450 e ∆ θ 2 = 1200 2 1 3 4
Simulações e Resultados
• erro em graus x tempo
1 2 3 4 1) Junta 1 ( PD clássico ) 2) Junta 2 ( PD clássico ) 3) Junta 1 ( Neural ) 4) Junta 2 (Neural ) 3 2 1 4
1) Junta 1 ( PID clássico )
2) Junta 2 ( PID clássico )
3) Junta 1 ( Neural ) 4) Junta 2 (Neural ) CONTROLADOR PD : ∆ θ 1 = 600 e ∆ θ 2 = 1000 CONTROLADOR PID : ∆ θ 1 = 900 e ∆ θ 2 = 1800
Simulações e Resultados
• erro em graus x tempo
3 2
4
1) Junta 1 ( PID clássico )
2) Junta 2 ( PID clássico )
3) Junta 1 ( Neural ) 4) Junta 2 (Neural ) 1 3 2 1 4
1) Junta 1 ( PID clássico )
2) Junta 2 ( PID clássico )
3) Junta 1 ( Neural ) 4) Junta 2 (Neural ) CONTROLADOR PID : ∆ θ 1 = 450 e ∆ θ 2 = 1200 CONTROLADOR PID : ∆ θ 1 = 600 e ∆ θ 2 = 1000
Conclusão Parcial
• As RNAs realmente conseguem aproximar satisfatoriamente o comportamento do Robô Manipulador.
• Torque Computado Neural tem desempenho muito melhor do que os controladores clássicos.
• Os erros transitórios são de três a quatro vezes menores do que aqueles apresentados pelos controladores clássicos, o que realmente motiva o uso desta técnica.
• A RNA treinada de forma off-line leva o processo a desestabilização quando este é submetido a uma mudança acentuada em relação aos parâmetros utilizados no treinamento. • Em uma Rede Neural com ajuste on-line, desde que com um
algoritmo de treinamento suficientemente rápido, este problema seria contornado.
Esquema Alternativo (Adaptativo)
Treinamento On-Line
• Algoritmo de treinamento: Quickpropagation.
• Arquitetura: 4 camadas, 2 camadas escondidas com 10 neurônios cada. • Treinamento inicial off-line:
– Robô controlado por PD clássico segue uma trajetória dada;
– Medimos tensão aplicada na entrada e os valores de posição, velocidade e aceleração resultantes;
– 300 Pares de treinamento são adquiridos; – São feitas 10.000 iterações de treinamento.
Treinamento On-Line
• Mudanças na dinâmica devem ser incorporadas
em tempo real.
• Queremos testar comportamento com mudanças
na carga útil (payload) do robô.
• Comportamento Adaptativo:
– Novos pares de treinamento adicionados em tempo real a cada 5 ms.
– Novo treino feito em somente 15 iterações com
Quickpropagation.
Conclusões
• Controlador neural tem menor erro de seguimento de
trajetória do que PD clássico.
• O controlador neural adaptativo tem melhor
comportamento do que o PD e do que o neural
off-line com mudança da carga útil.
• Podemos ter problemas se a trajetória e a carga
excitam os modos flexíveis das juntas.
Aplicações III
Visão
RECONHECIMENTO DE
IMAGENS UTILIZANDO
DESCRITORES DE FOURIER
E
REDES NEURAIS
Marcelo R. StemmerCarlos Amado Machado Neto Alexandre Orth
Introdução
• Objetivo: desenvolver sistema de reconhecimento de
peças em 2D para uso em FMC com as características
seguintes:
– reconhecer peças mesmo com sujeira e má
iluminação (condições reais de chão de fábrica);
– realizar o reconhecimento em tempo real;
– identificar a posição e orientação da peça de forma a
informar o robô para manipulação;
– reconhecer objetos múltiplos em uma imagem;
– reconhecer objetos parcialmente superpostos.
Recursos
• Câmera - Panasonic WV-1410 B&W CCD
• Placa digitalizadora TrueVision ICB
– 200 linhas x 256 colunas
– cores - RGB
– cada pixel - 12 bits
Estrutura do Sistema
H i s t o g r a m a T r e i n a R e d e A c u m u l a E x e m p l o s I d e n t i f i c a I m a g e m T r a n s f o r m a d a d e F o u r i e r D e t e r m i n a T r i l h a L i m p a d o F u n d o C a p t a I m a g e mAquisição e Limpeza da Imagem
• Amostrar uma imagem (ICB) e ler a memória da placa
• Calcular média das componentes RGB
• Obtém-se uma matriz 200x256 em que cada pixel é um
número de 0 a 31 que representa a intensidade luminosa
do ponto correspondente na imagem.
• Aplicação de threshold: se o pixel tem intensidade
menor que um limiar, igualar a 0
• apenas os pixels que compõem a peça permanecem
diferentes de 0 (binarização)
Determinação do Contorno
• varredura procura uma região clara na imagem, indicando provável existência de um objeto.
• Contorno definido como a seqüência ordenada dos pontos 8-conectados pertencentes ao objeto e que possuem pelo menos um ponto 4-vizinho pertencente ao fundo.
• Contorno pode ser visto como seqüência de números complexos cuja parte real é a componente horizontal do ponto na imagem,
h(k), e a parte imaginária é a componente vertical, v(k):
S(k) = h(k) + j.v(k) k=0..N-1
• onde N é o número total de pontos no contorno.
• Qualquer ponto do contorno pode ser escolhido como o início da seqüência. Os demais são tomados ordenadamente no sentido horário, encerrando com o ponto imediatamente anterior ao inicial.
Determinação do Contorno
Contorno = {(3,3); (4,3); (5,3); (6,3); (6,4); (6,5); (6,6); (5,6); (4,6); (3,5); (3,4)}; Y(1) = 3 + j3; ; . ) ( ) ( ); ( y j x t Y t Y with t Y Contour + = ∈⊂ → =∑
Extração de Características
• Contorno composto por um vetor de pontos bidimensionais (x, y). • Se considerarmos os valores x como pertencentes ao eixo de tempo
e os valores de y como amplitudes de sinal, podemos interpretar o contorno como um sinal discreto no tempo e aplicar DFT.
• Os coeficientes da Transformada de Fourier Discreta (DFT) da seqüência S(k) são chamados Descritores de Fourier (DF) e servem para caracterizar o objeto.
• Na etapa de classificação são utilizados os coeficientes com índices de 1 até 20.
• O coeficiente F(0) fornece a posição do centróide do contorno.
• Algoritmo DFT clássico (não é possível usar FFT pois o número de pontos da trilha não é conhecido à priori).
Identificação/Classificação
• Descritores de Fourier submetidos a uma Rede Neural para Classificação
• Rede Neural:
– camada de entrada com 20 neurônios (1 para cada DF) – uma camada oculta configurável (ex. 10 neurônios) – camada de saída configurável (1 para cada objeto) – rede feedforward estática
Imagens com Várias Peças
• Na etapa de treinamento, as peças são apresentadas
isoladamente.
• Durante a operação, as peças podem ser
apresentadas conjuntamente.
• Após terminado o processamento de um contorno, a
peça já tratada é apagada da imagem.
• Inicia-se, então, a procura e tratamento de outra
peça, procedimento que se repete até que nenhuma
outra seja encontrada.
• Encerrado o tratamento de todas as peças contidas
numa imagem, outra imagem pode ser capturada.
Tratamento de Peças Sobrepostas
• Obtém-se o contorno da peça de cima e depois remove-se esta peça da imagem, até que todas as peças empilhadas tenham sido processadas.
• Limitações:
– Espessura das peças deve ser muito menor que comprimento e largura de modo que contorno não mude muito com superposição (processamento 2D).
– Necessário elevado contraste entre peças.
– Procedimento de limpeza da imagem tem que ser modificado a fim de levar em consideração a existência de mais de dois níveis de cinza na imagem (apenas um limiar não basta).
Treinamento da Rede
• A rede foi treinada com o algoritmo backpropagation.
• O conjunto de treinamento foi formado com DF’s
resultantes do processamento de imagens contendo 3
exemplos (imagens) de cada peça.
• Foram incluídos 40 exemplos de DF’s resultantes do
processamento de imagens onde as peças figuravam
parcialmente ocultas (com grau de ocultação de até
50%).
Resultados
• Obteve-se uma taxa de acerto de praticamente 100%
para peças isoladas ou múltiplas não superpostas.
• Tempo de treinamento: 20s para 4 peças
• Para peças sobrepostas:
– cerca de 90% de acerto para situações muito
próximas as encontradas no grupo de treinamento
– taxas bastante baixas de acerto na peça de baixo se
Resultados
• A componente F(0) da DFT do contorno fornece a
posição do centróide da peça em relação ao canto
superior esquerdo da imagem.
• Se a posição deste ponto em relação aos eixos de
referência do robô for conhecida podemos posicionar
sua garra exatamente sobre a peça focalizada.
• A informação sobre a orientação da peça, contida na
fase dos coeficientes F(u), u=1..N-1, pode ser
utilizada para informar ao robô qual o ângulo mais
favorável para agarrar a peça.
Conclusões
• Taxas de acerto são boas, mesmo com má iluminação e
peças muito semelhantes
• O tempo de treinamento pode ser reduzido com outros
algoritmos como Quikpropagation ou Resilient
Propagation.
Comentários Finais
• Técnica de RNA alvo de muitas pesquisas.
• Problemas a resolver:
– desenvolvimento de modelos de neurônios mais próximos dos biológicos;
– escolha do número de neurônios ideal para uma aplicação; – escolha do número de camadas da rede;
– escolha de redes com ou sem feedback; – escolha da melhor técnica de treinamento;
– desenvolvimento de novos algoritmos de treinamento da rede (velocidade x plausibilidade biológica);
– demonstração de estabilidade de controladores neurais; – escolha de padrões de treinamento adequados.