Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
A
i
l
s
o
n
R
o
s
e
t
t
i
d
e
A
l
m
e
i
d
a
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
2
1. Introduo
Neurnio biolgico:
Crebro humano:
! ordem de 10
14
neurnios;
! ordem de 10
4
conexes partindo de cada um para outros neurnios.
Compare estes dados com o crebro de uma abelha, cujo nmero estimado de neurnios de
apenas 10
6
! No entanto, as abelhas so capazes de realizar tarefas de elevadssimo grau de
complexidade tais como identificao de padres atravs da viso, orientao e navegao, e
comportamento social.
Para uma rpida e interessante reflexo sobre estrutura neural e computabilidade, visite
http://www.csug.rochester.edu/users/ugrads/jtomson/paper2.html
Para uma apresentao em slides sobre a fisiologia do neurnio, visite
http://psychology.newcastle.edu.au/~brownr/PSYC103/LEC02B/sld001.htm
SOMA
SINPSE
AXNIO
DENTRITO
Impulsos
Eltricos
Detalhe
Receptores
Fenda
Sinptica
Neuro -
Transmissores
Axnio
Dentrito
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
3
2. O modelo do neurnio de McCulloch-Pitts
Onde:
- Limiar de disparo do neurnio, ou polarizao (BIAS).
Sendo
Matematicamente, torna-se conveniente a representao do neurnio considerando a
polarizao como um peso sinptico extra, associado uma entrada fictcia de valor
unitrio:
Uma estrutura simples utilizando este modelo de neurnio foi batizada de PERCEPTRON
por Frank Rosenblatt (1962).
n
i
i i
x w
1
.
y
x
1
x
2
x
n
w
1
w
2
w
n
1
0
n
i
i i
x w
1
.
y
1
]
1
n
i
i i
h
x w y
f
1
.
HEAVISIDE de Funo
f
h
( ) ( ) ( ) ( ) 0 0 0 1 > se e se
f f
h h
1
]
1
1
]
1
n
i
i i
h
n
i
i i
h
x w x w y
f f
0 1
1
w
0
x
0
y
x
1
x
2
x
n
w
1
w
2
w
n
w
0
= -
x
0
= 1
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
4
3. Lei de aprendizado de Hebb
A quase totalidade dos algortmos de aprendizagem de redes de neurnios baseia-se na
Lei de Hebb (1949):
Se a unidade (neurnio) A e a unidade B so simultaneamente excitadas, o grau
de ligao (peso) entre elas aumentado.
Experimento de comprovao:
1. Tocar um sino para chamar e alimentar um co;
2. Repetir a ao (1) vrias vezes;
3. Tocar o sino sem alimentar o co na sua chegada, e observar sua salivao.
Justificando o experimento:
Ao se realizar as aes (1) e (2) do experimento, esto sendo simultaneamente
excitadas unidades correlatas a audio e paladar. O que consequentemente induz no co a
expectativa de que ser alimentado sempre que ouvir o som do sino, ou seja, a interligao
entre a unidades excitadas se fortifica (aumento do peso). A ao (3) permite a comprovao
do aumento no peso uma vez que o toque do sino traz o co com um volume de salivao
equivalente quele presente nos momentos de sua alimentao e por conseguinte digesto.
Uma varieo da lei de Hebb adotada, tal que possibilite cobrir valores tanto positivos
quanto negativos, :
Ajustar o peso entre a unidade A e B em proporo ao produto de suas
atividades simultneas.
4. Mtodos de Aprendizado
Ajuste dos pesos de um neurnio tal que este fornea a sada desejada (correta)
para os padres (estmulos) apresentados em suas entradas.
! Este mtodo de aprendizado conhecido como Aprendizado Supervisionado, no qual
so apresentados rede pares entrada-sada, de tal forma que seja possvel uma
verificao da evoluo do aprendizado atravs da comparao entre a sada desejada e
sada real. Esta verificao realizada para todo o conjunto de dados de entrada, e a
correo dos pesos se processa enquanto o percentual de acerto (sada desejada = sada
real) estiver abaixo de um limite mnimo pr-estabelecido.
! Tambm existe o Aprendizado No-Supervisionado, no qual o algoritmo de
aprendizado estabelecido de forma a proporcionar a evoluo da inteligncia da rede.
Segundo as referncias este mtodo bastante empregado em problemas de classificao,
para dados dos quais no se conhece plenamente a especificao de sua origem. Exemplo;
Entrada: Sensoriamento ultrasnico de superfcies em um ambiente;
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
5
Caracterstica da entrada: No relao entre valores obtidos e superfcie em anlise;
Sada: Classificao das superfcies.
Uma vez escolhido adequadamente o mtodo de aprendizado, de muita relevncia
anteceder ao incio do treinamento um processo de tratamento dos dados. Este processo
visa fundamentalmente atender duas condies:
a) Adequao quantitativa dos dados, com eliminao de informaes redundantes e/ou no
relevantes, sendo mantida apenas as informaes necessrias a abrangncia das situaes
a serem aprendidas;
b) Melhoria qualitativa da informao fornecida rede, de forma a aumentar a eficincia do
processo de aprendizado.
Vale ressaltar que uma base de dados mal tratada pode resultar em um aprendizado de
custo demasiadamente alto (tempo de processamento), podendo ainda no atender aos
requisitos visados.
4.1 Algortmo de aprendizagem do perceptron
1) Inicializar os pesos no tempo t = 0, w
i
(0), com valores aleatrios pequenos, inclusive a
polarizao w
0
(0) = - ;
2) Apresentar o vetor de entrada X = (x
0
, x
1
, x
2
, ..., x
n
), para o qual se conhece a sada
desejada d(t);
3) Calcular a sada real
4) Ajustar os pesos, como segue:
Se correto y(t) = d(t)
w
i
(t+1) = w
i
(t)
Se y(t) = 0 e d(t) = 1
w
i
(t+1) = w
i
(t) + x
i
(t)
Se y(t) = 1 e d(t) = 0
w
i
(t+1) = w
i
(t) x
i
(t)
5) Voltar ao item (2) e repetir para t = 1, 2, 3, ... at que no ocorram mais ajustes de pesos.
Exemplo:
Distinguir o smbolo grfico A (classe a, d = 0) do smbolo B (classe b, d = 1):
1
]
1
n
i
i i
h
t x t w t y
f
0
) ( ). ( ) (
1
-
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
6
Um melhoramento no algoritmo simples acima a introduo do fator multiplicativo
no ajuste dos pesos, tal a proporcionar um controle na estabilidade do aprendizado, porm
tornando-o mais lento. Assim sendo o ajuste dos pesos passa a ser o seguinte:
Se correto y(t) = d(t)
w
i
(t+1) = w
i
(t)
Se y(t) = 0 e d(t) = 1
w
i
(t+1) = w
i
(t) + x
i
(t)
Se y(t) = 1 e d(t) = 0
w
i
(t+1) = w
i
(t) - x
i
(t)
sendo um valor previamente escolhido na faixa:
0 < 1
4.2 A regra delta de Widrow-Hoff
Widrow e Hoff propuseram esta regra, similar do perceptron, com a diferena do item
(4), que passaria a ser definido como:
4) w
i
(t+1) = w
i
(t) + ..x
i
(t)
onde = d(t) s(t) , sendo
s tambm chamada de net.
! Notar que os pesos variam mais rapidamente quando grande, e medida que o
neurnio vai aprendendo os pesos variam progressivamente mais lentamente.
! Notar tambm que o sinal de automaticamente far um aumento (soma) ou diminuio
(subtrao) do peso, e quando = 0 (d = s), o peso no alterado.
Neurnios que usam esta regra de aprendizado so chamados de ADALINEs (Adaptative
Linear Neurons), e uma rede neural usando esta regra chamada Madaline (Many
Adalines).
4.3 Prova de convergncia do Perceptron
[5]
Considere duas classes F
+
e F
-
no espao de padres de entrada X = (x
1
, x
2
, x
3
, ..., x
n
). As
classes F
+
e F
-
so linearmente separveis e o perceptron deve responder com +1 se x F
+
e 1 se x F
-
. Considere tambm, por simplicidade, que os vetores de entrada X tem
mdulo unitrio. (isto, porm, no afeta a generalizao).
Defina F = F
+
(-F
-
) onde F
-
so os negativos de F
-
.
n
i
i i
x w t s
0
; . ) (
real) (sada )] ( [ ) ( t s f t y
h
como
ou
Assim, o programa passa um nmero finito de vezes por Soma, ou seja, converge.
n W
n
+ 1
1
). 1 ( .
) (
*
+
+
n
n
W
W W
W G
n
n
2
1). (n 1 quadrado ao
1
). 1 (
1 1 ) (
+
+
+
n
n
W G
2
1
n
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
9
! Porm, como o Perceptron simples faz uma nica combinao linear das entradas, ele s
consegue classificar espaos linearmente separveis (classes separadas por hiperplanos).
Exemplo de comprovao
Supor um problema de classificao com uma configurao de apenas duas entras.
Logo s(t) = w
0
+ x
1
.w
1
+ x
2
.w
2
,
sendo:
x
1
e x
2
assumem 0 ou 1;
e a sada y(t) = 0 se s(t) 0, e y(t) = 1 se s(t) > 0.
Assim possvel definir uma regio de fronteira entre as duas classes y = 0 e y = 1, e
esta regio obtida fazendo-se s(t) = 0, o que resulta em uma reta uma vez que s existem
duas entradas. Esta reta tambm conhecida como superfcie de deciso, assim chamada pois
para o caso de mais de duas entradas esta reta transforma-se em um plano (e ou hiperplano).
Para o nosso exemplo, temos;
w
0
+ w
1
.x
1
+ w
2
.x
2
= 0
ou seja,
Uma representao grfica para esta classificao pode ser ilustrada da seguinte forma:
f
h
1 w
0
w
1
w
2
x
1
x
2
y
2
0
1
2
1
2
w
w
x
w
w
x
x
2
x
1
s > 0
s 0
(0,0)
(1,0)
(0,1)
(1,1)
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
10
Fica assim melhor caracterizada a restrio quanto a capacidade de classificao de
uma rede Perceptron monocamada, limitada a espaos linearmente separveis.
4.4 O exemplo do OU-EXCLUSIVO
O exemplo mais marcante desta limitao o problema do ou-exclusivo, citado por
Minsky e Papert no livro Perceptrons (1969), causando uma esfriada nas pesquisas sobre
redes neurais por quase duas dcadas. Neste caso no se consegue por uma nica superfcie
linearmente definida classificar os espaos envolvidos, uma vez que tem-se a seguinte
distribuio:
x
1
x
2
y
0 0 0
0 1 1
1 0 1
1 1 0
Para este problema s surgiu soluo na dcada de 80, quando Rumelhart e
McClelland apresentam a configurao perceptrons multicamadas.
Se pensarmos que um espao no-linearmente separvel pode ser subdividida em
partes linearmente separveis, cada uma resolvida por um neurnio, e combinarmos as sadas
destes neurnios por um outro que produzir a classificao final, teremos o princpio do
perceptron multi-camadas. Assim sendo uma configurao da rede soluo para o problema
ou-exclusivo, pode ser ilustrada da seguinte forma:
Podendo ser feita uma associao entre os subespaos criados e os neurnios da rede
conforme ilustrado a seguir.
(0,0)
(1,1)
(1,0)
(0,1)
x
2
x
1
-1
1
-1
1
- 0,5
- 0,5
x
x
x
x
1
1
1
0,0
y
1
2
3
1
1
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
11
! O problema passa a ser Como treinar uma rede com mais de uma camada ?
! A funo no-linear de heaviside deve ser substituda por outra funo (no-linear) mais
suave para no mascarar a informao da distncia do ponto no espao da fronteira de
classificao;
! As funes mais apropriadas e usadas para tal fim pertencem classe dos sigmoides:
Alm do mencionado acima, tais funes realizam uma espcie de controle automtico
de ganho: ganho alto para pequenos sinais e ganho baixo para sinais fortes.
Sinais muito altos Saturao Ganho nulo.
(0,0)
(1,1)
(1,0)
(0,1)
x
2
- 0,5
0,5
1
2
knet
e
net f y
+
1
1
) (
y
net
1
0,5
0
y
net
+1
0
k menor
- 1
knet
knet
e
e
knet net f y
2
2
1
1
) tanh( ) (
net
y
Ganho
J
j
Pj Pj p
P padro o para erro - Funo O t E
2
2
1
) ( .
Pj j Pj
I
i
Pi ij Pj
net f O ; O w net
. .
'
k ij
kj
Pk kj
ij ij
Pj
i k para 1
i k para
w
w
O w
w w
net 0
.
Pj Pj
ij
P
Pi
ij
Pj
O
w
E
- O
w
net
.
Pj
Pj
Pj
P
Pj
P
Pj
net
O
O
E
net
E
.
[ ] ) .( ) ( ' ) ( '
Pj Pj Pj j Pj Pj Pj
Pj
P
j
Pj
Pj
O t net f O t
O
E
; f
net
O
ij
P
ij ij
w
E
t w t w
+ . ) ( ) 1 (
Pi Pj ij ij
O t w t w . . ) ( ) 1 ( + +
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
14
no alterne de sinal, atrapalhando o mtodo do Gradiente Descendente. As funes do
tipo sigmoide atendem estas exigncias. Assim sendo, pode-se usar:
! Para a camada de sada ns conhecemos t
Pj
. Mas, e para atualizar os pesos dos neurnios
da(s) camada(s) escondida(s) ? Nelas no se tem conhecimento das sadas desejadas !
! Temos que retrabalhar o valor de
Pj
para as camadas escondidas.
Utilizando ainda a funo erro quadrtico mdio, temos:
knet
Pj
e
net f O
+
1
1
) (
) 1 .( .
) 1 (
) ( '
2
Pj Pj
knet
knet
Pj
O O k
e
ke
net f
net
O
+
Pi Pj Pj Pj Pj ij ij
O O t O O k t w t w ). ).( 1 .( . . ) ( ) 1 ( + +
O
Pj
w
jk
O
Pj
K
Pk Pk P
O t E
2
) ( .
2
1
1
]
1
j
Pj jk Pk
O w f O .
k Pj
Pk
Pk
P
Pj
P
O
O
O
E
O
E
.
Pj
Pk
Pk
Pk
Pj
Pk
O
net
net
O
O
O
k
jk
Pk
Pk
Pk
P
Pj
P
w
net
O
O
E
O
E
. .
-
Pk
k
jk Pk
Pj
P
w
O
E
.
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
15
! Portanto, os
P
necessrios para a atualizao dos pesos so propagados para trs, ou
seja, o de um neurnio de uma camada depende dos frente, da o nome
Backpropagation.
Algortmo Backpropagation
1. Inicializar os pesos e polarizaes para nmeros aleatrios pequenos;
2. Apresentar vetor de entrada x
p
e correspondente sada desejada T
p
, para um padro P a ser
aprendido.
X
P
= (x
0
, x
1
, ..., x
n-1
) T
P
= (t
0
, t
1
, ..., t
m-1
)
3. Calcular a sada atual, passando pelo clculo de todos os neurnios da 1
a
ultima camada.
Na camada de sada, teremos os valores de O
Pj
.
4. Atualizar os pesos
w
ij
(t+1) = w
ij
(t) + .
Pj
.O
Pi
Pj
= k.O
Pj
.(1 O
Pj
).(t
Pj
O
Pj
) Para a camada de sada.
Neste ltimo caso para as camadas escondidas onde k so os ns da camada a frente de j.
- Velocidade de aprendizagem.
! Note que, no caso dos neurnios logo a frente das entradas, O
Pi
o prprio x
Pi
.
Algumas outras funes de treinamento tambm so usadas, com o objetivo de
aperfeioamento do processo de aprendizado sob certas circunstncias. Podemos citar:
! Gradiente descendente com momento;
! Rprop Resilient backpropagation.
k
jk Pk Pj j
Pj
Pj
Pj
P
Pj
w net f
net
O
O
E
. ). ( ' .
k
jk Pk Pj Pj Pj
w O O k . ). 1 .( .
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
16
4.7 Gradiente Descendente com Momento
O mtodo Gradiente Descendente impe duas dificuldades em seu uso, so estas:
a) A escolha apropriada da taxa de aprendizado (). Esta escolha pode resultar em um
longo perodo para convergncia, caso a taxa seja demasiadamente pequena, ou por outro
lado, causar uma instabilidade (oscilaes) no caso de uma taxa demasiadamente grande.
Assim sendo a escolha tima da taxa de aprendizado se traduz em um complexo trabalho
de sintonia;
b) Influncia da derivada parcial sobre o passo do peso. Para uma funo-erro de
comportamento suave, a influncia da derivada parcial minimizada, permitindo uma
estabilidade no ajuste do pesos. Entretanto, se a funo-erro atinge alguma regio de
brusca depresso ou crescimento acentuado, situaes em que o ajuste dos pesos deve ser
cuidadoso, ocorre na verdade uma brusca variao dos mesmos.
Visando suprir estas deficincias, surge ento o mtodo Gradiente Descendente com
Momento, cuja funo de ajuste dos pesos acrescida de um termo que permite neste ajuste
considerar o comportamento prvio dos pesos.
importante ressaltar que esta ainda no uma tcnica genrica para obteno de
estabilidade e/ou velocidade de convergncia, com o uso do momento, recomenda-se
decrescer o valor da taxa de aprendizado, para evitar instabilidade
[2]
.
4.8 Rprop Resilient Backpropagation
Rprop classificada como uma tcnica de aprendizado adaptativo local, sendo seu
princpio bsico a eliminao da influncia da derivada parcial sobre a atualizao dos pesos.
Logo, somente o sinal da derivada parcial considerado para indicar o sentido (crescente ou
decrescente) de atualizao. A amplitude da variao do peso determinada exclusivamente
pelo ento denominado peso-especfico
ij
, onde:
Sendo que o peso especfico tem sua amplitude tambm definida com base no
comportamento (sinal) da derivada parcial da funo-erro. A definio desta amplitude
obtida da seguinte forma:
) 1 ( ) ( ) ( +
t w t
w
E
t w
ij
ij
P
ij
'
<
+
>
contrrio Caso 0,
0
w
E(t)
se ), (
0
w
E(t)
se ), (
) (
ij
ij
ij
t
t
t
ij
ij
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
17
Onde:
! 0 <
-
< 1 <
+
!
0
por determinar o primeiro passo de atualizao deve ser escolhido de acordo
com os valores iniciais de peso;
!
mx
definido para limitar o passo de atualizao de modo a evitar um
instabilidade no processo de aprendizagem, ou mesmo a tendncia de conduo
rpida a um mnimo local no desejvel;
!
-
= 0,5 e
+
= 1,2 so valores definidos a partir de consideraes tericas e
empricas, permitindo uma reduo dos parmetros livres a apenas
0
e
mx
.
O Rprop em relao ao algoritmos baseados apenas no uso da taxa de aprendizagem,
traz a vantagem de atualizar os pesos atravs da introduo de um conceito denominado
Resilient (resistente) Update-Values, o qual impede a influncia de um distrbio
comportamental do gradiente sobre o ajuste dos pesos, e consequentemente sobre o processo
de aprendizado. Tem ainda a vantagem de exigir um baixo custo computacional se comparado
com o original backpropagation
[2]
.
Apesar das vantagens citadas acima, uma anlise criteriosa deve ser realizada antes do
emprego do Rprop, pois assim como os demais algoritmos adaptativos de aprendizagem, o
Rprop baseia o ajuste dos pesos sobre uma estimao da topologia da funo-erro, ou seja,
este ajuste s realizado aps a apresentao de um padro e o clculo do gradiente da funo
erro correspondente. Sabendo-se que o padro mencionado uma poca, este mtodo introduz
uma reduo na eficincia de tratamento dos conjuntos de treinamento variveis.
4.9 Aprendizado No-Supervisionado
Como mencionado anteriormente um dos processos de aprendizado aplicado s redes
neurais no-supervisionado. E atendendo a esta tcnica Teuvo Kohonen desenvolveu um
algoritmo denominado SOFM Self-Organizing Feature-Mapping, cuja meta principal
tranformar um padro de entrada de dimenso arbitrria em um mapa discreto de uma ou duas
dimenses, atravs de uma ordenao topolgica adaptativa.
As caractersticas principais deste algoritmo, so:
contrrio Caso t
w
t E
w
1) - E(t
se t
w
t E
w
1) - E(t
se t
t
ij
ij ij
ij
ij ij
ij
ij
'
+
) 1 (
0
) (
. ), 1 ( .
0
) (
. ), 1 ( .
) (
'
+
+
contrrio caso n w
n j n w n x n n w
n w
j
i j j
j
) (
) ( )], ( ) ( )[ ( ) (
) 1 (
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
19
Sendo;
(n) - Taxa de aprendizagem;
i
- Funo de vizinhana centrada no neurnio vencedor da iterao;
Ambos os parmetros de ajuste so dinamicamente variados durante o processo de
aprendizado.
5. Continuao
Retorno ao passo 2 at que no seja notada uma mudana significativa na configurao da
rede.
Escolha do parmetros (n) e
i
(n)
O processo de aprendizado atravs do algoritmo SOFM por natureza estocstico, e
assim dependente do nmero de iteraes realizadas, sendo que o sucesso de convergncia
est fortemente vinculado escolha adequada da taxa de aprendizado e da funo de
vizinhana .
Ainda no foi formalizada uma teoria para a determinao dos parmetros de
aprendizado, sendo estes definidos pelo processo de tentativa e erro. Entretanto, observaes
realizadas a partir das inmeras aplicaes deste algoritmo conduzem esta escolha aos
seguintes procedimentos
[1]
:
! A taxa de aprendizado deve ser uma funo varivel com o tempo (n) (linear,
exponencial ou inversamente proporcional a (n), assumir inicialmente o valor unitrio e
decrescer este valor nas primeiras 1000 (mil) iteraes a aproximadamente 0,1 (sempre
acima deste mnimo). A partir de ento o algoritmo entra em uma etapa de fina sintonia
para a obteno da convergncia, fase na qual a taxa de convergncia deve assumir
valores bem menores (da ordem de 0,01 ou menos) o que consequentemente dar origem a
um grande nmero de iteraes at a obteno do resultado final.
! A funo de vizinhana deve abranger inicialmente todos os neurnios da rede, e reduzir-
se nas primeiras 1000 (mil) iteraes de forma linear. A partir de ento a reduo a
vizinhana deve acelerar (assumir um comportamento exponencial, quadrtico ou de mais
alta ordem) de forma a limitar a vizinhana ao final da convergncia a 1 (um) ou nenhum
neurnio. Vale lembrar que esta reduo visa impedir a subutilizao de neurnios
vizinhos.
A seleo do neurnio vencedor (similaridade), o uso de uma funo de vizinhana, e
a aplicao de uma regra de competitividade, atribuem ao SOFM a capacidade de uma
sintonia seletiva, ainda com uma simplicidade de implementao. Entretanto, a prova de
convergncia deste algoritmo de complexo desenvolvimento
[1]
, sendo que ainda no esto
bem definidos os critrios que garantam a estabilidade de convergncia.
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
20
Por estas razes o uso do SOFM exige uma postura criteriosa para escolha dos
parmetros de aprendizagem, bem como a necessidade de observao peridica do
comportamento da convergncia, visando a deteco de uma possvel instabilidade.
5. Redes Neurais em Controle de Processos
O emprego das redes neurais em controle de processos j uma realidade com futuro
ainda mais promissor, tendo em vista as caractersticas trazidas pela arquitetura das redes,
bem como seu comportamento dinmico. Para um melhor entendimento quanto a relevncia
do uso das redes no controle de processos, so apresentadas a seguir algumas caractersticas
que permitem explicitar as vantagens obtidas
[3]
.
! Sistemas no-lineares. A comprovada habilidade das redes em aproximar mapeamentos
no-lineares, um indicativo da eficcia de sua aplicao para o controle deste tipo de
sistema.
! Processamento paralelo distribudo. A estrutura das redes neurais essencialmente
paralela, o que atribui a estas um alto grau de tolerncia a falhas, bem como favorece a
velocidade de processamento.
! Implementao em hadware. J se encontra disponvel no mercado integrados
(dedicados) que implementam a rede, permitindo a compactao do hardware, ganho na
velocidade de processamento, e maior nvel de distribuio no controle.
! Aprendizado e adaptao. O treinamento das redes realizado com dados que retratam
um passado do sistema a ser controlado, a partir dos quais a rede treinada torna-se capaz
receber dados atualizados e por sua capacidade de generalizao definir o mapeamento
para obteno da sada desejada.
! Sistemas Multivariveis. As redes neurais naturalmente processam vrias entradas e
geram vrias sadas, assim sendo so plenamente aplicveis a sistemas multivariveis.
Apresentando as caractersticas citadas acima, fica evidente a aplicabilidade das redes
neurais no controle de processos, e consequentemente um natural incentivo esta linha de
pesquisa. De acordo com as referncias nesta rea, a principal aplicao das redes no
tratamento de sistemas no-lineares, uma vez que a diversidade de configuraes existentes
ainda no permitiu a formulao de uma teoria genrica para a soluo deste problema de
controle, apesar de existirem mtodos tais como uso do plano de fases, tcnicas de
linearizao, aproximao de funes. Entretanto, tais mtodos pressupem simplificaes
(restries) s condies em anlise, em confronto com procedimentos heursticos no uso das
redes.
6. Exemplos de Treinamento
A partir dos conceitos estudados foram utilizados dois bancos de dados para o
treinamento de redes neurais com o objetivo de implementar processos de classificao. O
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
21
primeiro banco contm as dimenses de ptalas e spalas relacionadas com as respectivas
flores de origem, e o objetivo ento utilizar a rede para a classificao destas flores. O
segundo banco de dados contm informaes relativas ao sensoriamento ultrasnico de
objetos com 5 geometrias distintas, sendo o objetivo a classificao destes objetos.
Para estes treinamentos foram utilizados os seguintes algoritmos:
! Gradiente descendente (GD);
! Gradiente descendente com momento (GDM);
! Gradiente descendente com taxa de aprendizado adaptativo (GDA);
! Grad. descendente com momento e taxa de aprendizado adaptativo (GDX);
! Resilient Propagation (RPROP);
! Levenberg-Maquardt (LM).
Segue em anexo os programas implementados com o Matlab 5.2 para treinar e testar
as redes e estudo. Os resultados obtidos foram:
! Classificao Iris
Treinamento sem escalonamento da sada
Algoritmo
Quant. Neurnios
na camada escond. Quant. pocas Meta Performance Acerto
GD 10 2.289 0,02 0,0199 97,00%
GDM 10 7.139 0,02 0,0199 96,07%
GDA 10 2.232 0,02 0,0199 98,03%
GDX 10 555 0,02 0,0199 96,08%
RPROP 10 48 0,02 0,0199 96,08%
LM 10 10 0,02 0,0199 94,12%
Treinamento com escalonamento da sada
Algoritmo
Quant. Neurnios
na camada escond. Quant. pocas Meta Performance Acerto
GD 10 1.078 0.02 0,0199 96,08%
GDM 10 1.828 0.02 0,0199 96,08%
GDA 10 1.003 0.02 0,0198 96,08%
GDX 10 288 0.02 0,0198 98,04%
RPROP 10 36 0.02 0,0191 96,08%
LM 10 5 0.02 0,018 92,16%
Treinamento sem escalonamento da sada
Algoritmo
Quant. Neurnios
na camada escond. Quant. pocas Meta Performance Acerto
GD 5 2.796 0,02 0,0199 96,08%
GDM 5 60.689 0,02 0,0199 96,08%
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
22
GDA 5 3.006 0,02 0,0199 96,08%
GDX 5 25.543 0,02 0,0199 98,04%
RPROP 5 77 0,02 0,0198 92,16%
LM 5 20 0,02 0,0174 90,19%
Treinamento com escalonamento da sada
Algoritmo
Quant. Neurnios
na camada escond. Quant. pocas Meta Performance Acerto
GD 5 857 0.02 0,0198 98,08%
GDM 5 3.622 0.02 0,0199 96,08%
GDA 5 551 0.02 0,0199 98,04%
GDX 5 271 0.02 0,0199 98,04%
RPROP 5 175 0.02 0,0198 96,08%
LM 5 5 0.02 0,0156 96,08%
Treinamento sem escalonamento da sada
Algoritmo
Quant. Neurnios
na camada escond. Quant. pocas Meta Performance Acerto
GD 3 6.885 0.02 0,0199 97,00%
GDM 3 95.111 0.02 0,0199 96,08%
GDA 3 10.771 0.02 0,0199 96,08%
GDX 3 30.817 0.02 0.0199 96.08%
RPROP 3 82 0.02 0,0199 96,08%
LM 3 14 0.02 0,0065 96,08%
Treinamento sem escalonamento da sada
Algoritmo
Quant. Neurnios
na camada escond. Quant. pocas Meta Performance Acerto
GD 20 960 0.02 0,0199 95,00%
GDM 20 1.209 0.02 0,0199 98,04%
GDA 20 938 0.02 0,0198 98,04%
GDX 20 335 0.02 0,0199 98,04%
RPROP 20 45 0.02 0,0197 92,16%
Treinamento com escalonamento da sada
Algoritmo
Quant. Neurnios
na camada escond. Quant. pocas Meta Performance Acerto
GD 20 208 0.02 0,0199 96,08%
GDM 20 464 0.02 0,0199 96,08%
GDA 20 237 0.02 0,0199 94,12%
GDX 20 167 0.02 0,0198 98,04%
RPROP 20 17 0.02 0,0197 94,12%
LM 20 3 0.02 0,0163 96,08%
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
23
! Classificao de objetos
Treinamento sem escalonamento da sada
Algoritmo
Quant. Neurnios
na camada escond. Quant. pocas Meta Performance Acerto
GD 20 113.012 0.02 0,0199 76,77%
GDM 20 129.949 0.02 0,02 90,54%
LM 20 22 0.02 0,004 82,75%
Mdia percentual de acerto 83,35%
7. Anlise Final
Dos resultados obtidos evidenciam-se duas importantes influncias sobre o
treinamento das redes, so estas:
! O nmero de neurnios da camada escondida;
! O uso de um escalonamento de sadas (Tc_tre).
Nos exemplos trabalhados ficou caracterizada uma reduo no nmero de pocas
necessrias ao treinamento para que a rede atingisse a meta estabelecida, a partir de uma
aumento no nmero de neurnios da camada escondida simultaneamente com o uso de um
escalonamento das sadas. Este comportamento indica um incremento na capacidade de
generalizao da rede, que um aspecto positivo uma vez que o treinamento excessivo pode
dar origem a uma rede viciada nos dados de treino e incapaz (ou pouco eficaz) de classificar
dados genricos.
Quanto ao uso das redes neurais incontestvel a comprovao de sua eficcia em
classes de problemas para os quais as tcnicas convencionais ainda apresentam limitaes.
Para o autor deste trabalho um destaque deve ser dispensado caracterstica ainda emprica na
definio de alguns parmetros utilizados no treinamento das redes. Este fator pode receber
duas interpretaes, a dvida quanto a confiabilidade da rede pela no comprovao formal de
sua eficincia (convergncia), e por outro lado a motivao quanto ao uso desta tcnica em
funo de sua capacidade de adaptao a partir de uma configurao inicial no
necessariamente definida por uma exmio especialista do problema abordado, o que aumenta
o leque de habilitados e consequentemente a diversidade de solues.
Observao:
Conforme relatado anteriormente no obtive xito no uso de uma rede Radial-Basis,
cujo programa utilizado foi passado por e_mail ao Mestre.
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
24
Anexo
Programa utilizado no Matlab 5.2 para o treinamento das redes no problema IRIS.
% Classificador Neural para o problema das 3 classes da flor IRIS:
% Componentes (caractersticas) do vetor de entrada:
% - Comprimento da spala
% - Largura da spala
% - Comprimento da ptala
% - Largura da spala
% Componentes do vetor de sada:
% - Classe da variante da flor, com os seguintes valores:
% - classe: Iris Setosa: classe 1
% Iris Versicolour: classe 2
% Iris Virginica: classe 3
%
% Prof. Ailson Rosetti de Almeida, ailson@ele.ufes.br
%
load iris
% Separando os conjuntos de treinamento e teste (validao):
C1 = iris1(find(iris1(:,5) == 1),:); % Todos os exemplares da classe 1
C2 = iris1(find(iris1(:,5) == 2),:); % Todos os exemplares da classe 2
C3 = iris1(find(iris1(:,5) == 3),:); % Todos os exemplares da classe 3
iris_tre = [C1(1:33,:) ; C2(1:33,:) ; C3(1:33,:) ]; % 2/3 para treinamento
iris_tes = [C1(34:50,:) ; C2(34:50,:) ; C3(34:50,:)]; % 1/3 para teste
% Agora vamos embaralhar as classes em cada conjunto. O de treinamento tem
% 99 exemplos e o de teste tem 51. O conjunto de teste no necessita ser
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
25
% embaralhado, mas vamos faze-lo assim mesmo. A funo "shuffle.m" no vem
% no Matlab (pelo menos, at v5.2). A criei para embaralhar dados (pares
% entrada-sada) em conjuntos de treinamento.
n = shuffle(99); % cria vetor de inteiros de 1 a 99, em ordem aleatria,
% cada inteiro ocorrendo uma e uma nica vez.
iris_tre = iris_tre(n,:); % Poderiamos fazer de uma tacada s, assim:
% iris_tre = iris_tre(shuffle(size(iris_tre,1),:));
n = shuffle(51);
iris_tes = iris_tes(n,:);
% Separa os exemplares de entrada e de saida do conjunto de treinamento,
% no formato compativel com o toolbox nnet (cada coluna um vetor de entrada
% ou sada, cada linha uma dimenso da entrada ou da sada):
P_tre = iris_tre(:,1:4)';
T_tre = iris_tre(:,5)';
% Idem para o conjunto de teste/validao:
P_tes = iris_tes(:,1:4)';
T_tes = iris_tes(:,5)';
% T acima composto pela classe codificada como um numero (1, 2 e 3).
% Usaremos Tc abaixo, que a decodificao de cada indice de classe
% ( 1 a 3) em um vetor binario de 3 elementos, onde todos os elementos
% so zero exceto aquele cujo indice coincide com o valor da classe,
% que ajustado para 1. Por exemplo, se a classe 2 o vetor de 3 bits
% [0 1 0]. o que se denomina "um de N". Isto feito pela funo
% ind2vec (indice para vetor). Use "help ind2vec" para mais info:
Tc_tre = ind2vec(T_tre);
Tc_tes = ind2vec(T_tes);
% Antes de treinar com a funo "train", necessitamos extrair a matrix (Rx2)
% dos valores min e max de P_tre (para dar subsidios no escalonamento dos
% pesos iniciais), o que antes poderiamos fazer com:
% pr=[min(P_tre')' max(P_tre')'];
% O novo toolbox de redes neurais j traz a funo "minmax" para este fim:
pr = minmax(P_tre);
% Criao da rede feedforward com uma camada interna de 10 neuronios
% com funo de ativao tangente hiperbolica e uma de saida com 3
% neuronios (um para cada classe) com funo de ativao logstica,
% j que os valores desejados variam de 0 (no pertence classe) a
% 1 (pertence classe). Usaremos inicialmente o treinamento
% backpropagation com otimizao tipo gradiente descendente (traingd):
irisnet=newff(pr,[10 3],{'tansig' 'logsig'},'traingd');
% A funo "newff" acima j inicializa os pesos com os valores
% correspondentes (s) funo(es) de inicializao default. Se quizermos,
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
26
% contudo, reinicializar os pesos com novos valores podemos chamar esplici-
% tamente a funo "init" aps "newff", como em:
% irisnet = init(irisnet);
% ou se quizermos fazer outra inicializao com funes distintas que as
% default, mudamos as propriedades apropriadas do objeto irisnet e usamos
% a funo "init". (Aqui, vamos manter a inicializao feita por "newff").
% Ajustando alguns parametros de treinamento:
irisnet.trainParam.goal = 0.02; % estava no valor default, 0
irisnet.trainParam.epochs = 3000; % estava no valor default, 100
irisnet.trainParam.lr = 0.01; % estava no v. default, 0.01 (mesmo valor)
% Treinamento com a funo "train":
% Vamos criar como saida da funo train um novo objeto da classe "network"
% chamado irisnet_t (t final de "treinado"), para manter irisnet intacto,
% caso necessitemos:
[irisnet_t, tr] = train(irisnet, P_tre, Tc_tre);
% Terminado o treinamento, verifique o que a funo train reporta. Caso
% no tenha atingido a meta de convergencia (goal) no numero de pocas
% especificado, voce pode continuar de onde parou com o comando abaixo,
% que o mesmo comando train s que indicando irisnet_t como argumento
% de entrada:
cont=0;
if ((tr.perf(end)) <= irisnet3.trainParam.goal),
fprintf('Convergiu em %d pocas.\n', tr.epoch(end));
else
while (tr.perf(end)>irisnet3.trainParam.goal),
[irisnet_t3, tr] = train(irisnet_t3, P_tre, Tc_tre);
if (tr.perf(end)>irisnet3.trainParam.goal),
cont=cont+1;
end
end
nepoch=(cont*3000)+tr.epoch(end);
sprintf('Agora convergiu em %d pocas.\n', nepoch);
end
disp('Tudo bem, no convergiu no nmero mximo de pocas, n?');
R = input('Quer continuar o treinamento de onde parou (s ou n)? ','s');
if (lower(R(1)) == 's'),
[irisnet_t, tr] = train(irisnet_t, P_tre, Tc_tre);
if ((tr.perf(end)) < irisnet.trainParam.goal),
sprintf('Agora convergiu em %d pocas.\n', tr.epoch(end));
end;
end;
end;
clear tr;
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
27
% No treinamento acima, os valores min e max de Tc_tre (saida) so 0 e 1,
% iguais aos limites da logsig, o que pode ter causado saturacao e con-
% sequente derivada do erro muito baixa, necessitando mais pocas para
% atingir a meta (goal).
% Para evit-lo, uma possivel maneira transladar e reescalonar Tc para
% que seus limites fiquem ligeiramente afastados de 0 e 1.
% Retreine com o comando abaixo e veja se o numero de pocas para convergir
% diminue:
R = input('Quer retreinar com saidas reescalonadas (s ou n)? ','s');
if (lower(R(1)) == 's'),
[irisnet_t, tr] = train(irisnet, P_tre, (Tc_tre*0.8 + 0.1));
if ((tr.perf(end)) <= irisnet.trainParam.goal),
sprintf('Com sadas reescalonadas atingimos convergencia em %d pocas.\n',
tr.epoch(end));
clear tr;
end;
end;
% Teste/Validao (Simulao, na terminologia Matlab):
y = sim(irisnet_t, P_tes); % y resultado do processamento da rede sobre
% arquivo de entradas P_tes).
% Para saber que classe ganhou em cada exemplo de teste, usamos a funo
% compet (conpetitive). Para cada coluna, compet transforma o elemento de
% maior valor (max) em 1 e os demais em 0. o que se denomina "winner
% takes all". Veja "help compet":
yi = compet(y);
% Podemos transformar yi em um vetor de numeros de classe com a funo
yic = vec2ind(yi); % contrario de ind2vec() acima.
% Agora comparamos yi com T_tes (e no Tc_tes), para ver onde houve acerto
% e onde houve erro:
acerto = find(T_tes == yic); % til para analisar QUE classe foi confundida com QUAL.
% Para sabermos apenas o percentual de acerto sem importar quais acertaram ou erraram:
Pacerto = (100 * sum(yic == T_tes))/length(T_tes);
sprintf('O percentual de acerto foi %f %%.\n', Pacerto)
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
28
Programa utilizado para o treinamento das redes no problema Obstculos.
% CLASSIFICAO DE OBSTCULOS UTILIZANDO REDES NEURAIS E ULTRA-
SOM
%
% CLASSES A SEREM IDENTIFICADAS:
%
% 1) Canto
% 2) P de Cadeira
% 3) P de Mesa Quadrado
% 4) P de Mesa Redondo
% 5) Plano
% L o arquivo de dados
function usom(n_amostras)
load -ascii 'dados.txt';
% separa as classes
c1 = dados(find(dados(:,12) == 1),:); % Todos os exemplares da classe 1
c2 = dados(find(dados(:,12) == 2),:); % Todos os exemplares da classe 2
c3 = dados(find(dados(:,12) == 3),:); % Todos os exemplares da classe 3
c4 = dados(find(dados(:,12) == 4),:); % Todos os exemplares da classe 4
c5 = dados(find(dados(:,12) == 5),:); % Todos os exemplares da classe 5
vet_tre = [c1(1:333,:);c2(1:333,:);c3(1:333,:);c4(1:333,:);c5(1:333,:)];
vet_tes = [c1(334:500,:);c2(334:500,:);c3(334:500,:);c4(334:500,:);c5(334:500,:)];
n = shuffle(1665);
vet_tre = vet_tre(n,:);
n = shuffle(835);
vet_tes = vet_tes(n,:);
v_tre = vet_tre(:,1:11);
t_tre = vet_tre(:,12);
v_tes = vet_tes(:,1:11);
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
29
t_tes = vet_tes(:,12);
v_tre = v_tre';
t_tre = t_tre';
v_tes = v_tes';
t_tes = t_tes';
tc_tre = ind2vec(t_tre);
tc_tes = ind2vec(t_tes);
pr = minmax(v_tre);
usomnet=newff(pr,[20 5],{'tansig' 'logsig'},'trainlm');
usomnet.trainParam.goal = 0.02;
usomnet.trainParam.epochs = 3000;
usomnet.trainParam.lr = 0.01;
[usomnet_t, tr] = train(usomnet, v_tre, (tc_tre*0.8 + 0.1));
cont=0;
while (tr.perf(end)>usomnet.trainParam.goal),
cont=cont+1;
[usomnet_t, tr] = train(usomnet_t, v_tre, (tc_tre*0.8 + 0.1));
%[irisnet_t, tr] = train(irisnet_t, P_tre, Tc_tre);
end
nepoch=(cont*3000)+tr.epoch(end);
sprintf('Agora convergiu em %d pocas.\n', nepoch);
y = sim(usomnet_t, v_tes);
yi = compet(y);
yic = vec2ind(yi);
acerto = find(t_tes == yic);
Pacerto = (100 * sum(yic == t_tes))/length(t_tes);
sprintf('O percentual de acerto foi %f %%.\n', Pacerto)
Observao: Em ambos os casos para cada algoritmo treinado mudava-se no programa a
funo newff.
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
30
8. Bibliografia
1. Haykin, S. (1994). Neural Networks A Comprehensive Foundation, Macmillan
Company/New York.
2. Riedmiller, M. (1994). Advanced Supervised Learning in Multi-layer Perceptrons From
Backpropagation to Adaptative Learning Algorithms, Journal of Computer Standards and
Interfaces, IEEE.
3. Hunt, K.J., Sbarbaro, D., Zbikowski, R., Gawthrop, P.J. (1992). Neural Networks for
Control Sustems A Survey, IEEE Control System, Vol. 28, pp. 1083-1112.
4. Tafner, M., Xerez, M., Rodrigues, Ilson. (1996). Redes Neurais Artificiais Introduo e
Princpios de Neurocomputao, Eko e FURB, Blumenau Santa Catarina.
5. Notas de aula do Prof. Dr. Ailson Rosetti de Almeida
Redes Neurais Prof. Ailson Rosetti de Almeida, UFES
Nota: Material em edio
_________________________________________________________________________________________
31