aplicac˜ao do mathematica no desenvolvimento de redes...
TRANSCRIPT
Instituto de Fısica “Gleb Wataghin” - IFGW
Universidade Estadual de Campinas - UNICAMP
Campinas (Sao Paulo)
Aplicacao do Mathematica no desenvolvimento de
redes neurais
Rickson Coelho Mesquita
Professor: Alberto Saa
1
Sumario
1 Introducao 2
2 Perceptron para duas classes de padroes 4
3 Algoritmos de treinamento 6
3.1 Treinamento para classes linearmente separaveis . . . . . . . . . . . . . . . 7
3.2 Classes nao separaveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4 Resultados obtidos 10
4.1 Problema 1: exemplo de uma classe separavel . . . . . . . . . . . . . . . . 10
4.2 Problema 2: Treinamento de uma rede neural para implementacao da porta
logica AND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.3 Problema 3: Implementacao da funcao 2cos(πk/8) a partir de sen(πk/8) . 13
5 Conclusoes 17
2
1 Introducao
De forma basica e direta, uma rede neural e um paradigma computacional inspirado
no paralelismo do cerebro, com o objetivo de permitir que maquinas computacionais
usem e imitem a logica funcional desenvolvida facilmente por seres humanos atraves da
unidade principal do sistema nervoso, os neuronios. Isso e possıvel atraves da utilizacao
de elementos de computacao nao-linear (chamados neuronios) organizados em redes, de
maneira analoga a que se acredita que as celulas nervosas estejam interconectadas no
cerebro. Essas redes sao utilizadas como base para o desenvolvimento adaptativo dos
coeficientes das funcoes de decisao atraves de apresentacoes sucessivas de conjuntos de
padroes de treinamento.
O interesse em redes neurais data do inıcio da decada de 1940, atraves dos trabalhos de
McCulloch e Pitts [1]. Juntos, eles propuseram um modelo que explica o funcionamento de
neuronios como dispositivos de limiarizacao binaria e algoritmos estocasticos envolvendo
mudancas repentinas de 0-1 e 1-0 em seus estados. O trabalho subsequente de Hebb
baseou-se em modelos matematicos que tentavam capturar o conceito de aprendizado por
reforco ou associacao, de forma que o aprendizado em sistema nervosos complexos poderia
ser reduzido a um processo puramente local, em que a intensidade das conexoes sinapticas
e alterada apenas em funcao dos erros detectaveis localmente [2].
No final da decada de 1950, Rosenblatt deu prosseguimento as ideias de McCulloch.
Empregando o princıpio de aprendizado de Hebb, ele criou uma genuına rede de multiplos
neuronios chamada de perceptron [3, 4]. A razao para o grande interesse nessa rede foi o
desenvolvimento de provas matematicas, mostrando que os perceptrons, quando treinados
com conjuntos de treinamento linearmente separaveis, convergiriam para uma solucao em
um numero finito de passos iterativos. A solucao tomaria a forma de coeficientes de
hiperplanos capazes de separar corretamente as classes representadas pelos padroes no
conjunto de treinamento.
Mas as expectativas que seguiram a descoberta do que parecia ser um modelo teorico
3
bem fundamentado de aprendizado foram logo frustradas. O perceptron basico e algumas
de suas generalizacoes naquele tempo eram simplesmente inadequados para a maioria das
tarefas de reconhecimento de padroes de importancia pratica. Tentativas subsequentes
de estender o poder dessas redes, considerando multiplas camadas desses dispositivos,
sentiam a ausencia de algoritmos efetivos de treinamento. Em meados da decada de 1960,
Minsky e Papert apresentaram uma analise desencorajadora da limitacao das maquinas
do tipo perceptron [5], o que levou Simon a descartar essa area de estudo sob o tıtulo de
“Nascimento e morte de um mito” alguns anos mais tarde [6].
Essa visao foi mantida ate meados da decada de 1980, quando Rumelhart, Hinton
e Willians mudaram consideravelmente a situacao ao desenvolver novos algoritmos de
treinamento para perceptrons multicamadas. A regra generalizada delta para aprendizado
por retropropagacao, como ficou conhecido o metodo proposto por estes autores, e uma
opcao de treinamento efetivo para maquinas de multiplas camadas [7]. Embora nao se
possa mostrar que esse algoritmo de treinamento convirja para uma solucao no sentido da
prova analoga para o perceptron de uma camada, a regra generalizada delta tem sido usada
com sucesso em varios problemas de interesse pratico, estabelecendo essas maquinas do
tipo perceptron com multiplas camadas como um dos principais modelos de redes neurais
atualmente em uso [8].
Baseado nisso, esse projeto tem como objetivo introduzir os aspectos basicos na im-
plementacoes de redes neurais de multiplas camadas. Comecaremos introduzindo o per-
ceptron mais simples como um modelo basico de um neuronio e a partir daı, discutiremos
alguns aspectos do treinamento de perceptrons sob as condicoes de separacao de classes,
bem como de nao separacao. Por fim, implementaremos esses algoritmos de treinamento
de padroes no software Mathematica. Embora simples, esses topicos servem como funda-
mento para o desenvolvimento da regra generalizada delta para o treinamento de redes
neurais multicamadas, que nao discutiremos aqui.
4
2 Perceptron para duas classes de padroes
Como ja mencionado, McCulloch e Pitts propuseram um modelo que explica o funci-
onamento de neuronios como um dispositivo binario: a sua saıda poderia ser pulso (1) ou
nao pulso (0), e as suas varias entradas tinham ganho arbitrario e poderiam ser excita-
torias ou inibitorias (figura 1). Para determinar a saıda do neuronio, calculava-se a soma
ponderada das entradas com os respectivos ganhos como fatores de ponderacao, positivos
nos casos excitatorios e negativos nos casos inibitorios. Se este resultado fosse maior ou
igual a um certo limiar entao a saıda do neuronio era 1; caso contrario era 0. Assim,
foi possıvel implementar varias funcoes booleanas usando ganhos iguais a 1/2 e limiares
iguais a 1.
Figura 1: Neuronio booleano de McCulloch (extraıdo de Kovacs [9]).
Seguindo as ideias de McCulloch, Rosenblatt criou o perceptron. Na sua forma mais
basica, o perceptron pode ser considerado como o neuronio de McCulloch que aprende
uma funcao de decisao linear (ao inves de considerar sempre ganhos e limiares fixos) capaz
de diferenciar dois conjuntos de treinamento linearmente separaveis como os da figura 2.
A resposta desse dispositivo basico pode ser formulada como uma soma ponderada de sua
entrada,
d(~x) =n∑
i=1
wixi + wn+1 (1)
que representa uma funcao de decisao linear (figura 3). Nesse caso, o vetor ~x representa
a entrada de padroes do neuronio (dados iniciais utilizados para treinar a rede neural),
enquanto os coeficientes wi (i = 1, 2, ..., n + 1) sao conhecidos como pesos, e modificam a
5
entrada antes de ser somada. Podemos reescrever a equacao 1 como
d(~x) = w1x1 + w2x2 + ... + wnxn + wn+1 = 0 (2)
que representa a equacao de um hiperplano no espaco n-dimensional de padroes. Geome-
tricamente, os primeiros n coeficientes estabelecem a orientacao do hiperplano, enquanto
o ultimo coeficiente wn+1 e proporcional a distancia perpendicular a origem.
Figura 2: Para classes linearmente separaveis, e possıvel separar duas regioes A e B atraves
de uma superfıcie de decisao (extraıdo de Kovacs [9]).
Figura 3: Diagrama de blocos do discriminador linear (extraıdo de Kovacs [9]).
Quando d(~x) > 0, a saıda do perceptron e +1, indicando que o padrao ~x foi reconhecido
como pertencendo a classe c1. O contrario e verdadeiro quando d(~x) < 0. Quando
d(~x) = 0, ~x situa-se sobre a superfıcie de decisao que separa as duas classes, fornecendo
uma condicao indeterminada.
6
Podemos ainda testar a funcao em relacao a wn+1, onde a saıda do sistema (elemento
de limiarizacao) e dado por
O =
+1 se∑n
i=1 wixi > −wn+1
−1 se∑n
i=1 wixi < −wn+1
(3)
Uma outra formulacao encontrada na pratica e aumentar os vetores de padroes, acrescentando-
se um elemento adicional (n+1), que e sempre igual a 1, nao importa a classe. Assim, e
possıvel criar um vetor de padroes aumentado ~y a partir do vetor de padroes ~x fazendo-se
yi = xi, i = 1,2,3,...,n, e acrescentando-se um elemento adicional yn+1 = 1, de forma que
a equacao 1 torna-se:
d(~y) =n+1∑i=1
wiyi (4)
= ~wT~y
onde ~w = (w1, w2, ..., wn, wn+1) e chamado de vetor de pesos. Assim, se tivermos ao menos
um vetor padrao de entrada ~x, e conhecermos o vetor de pesos ~w, e possıvel calcular a
saıda obtida pela rede neural. No entanto, geralmente nao se conhece ~w, de forma que
o problema basico reduz-se a encontrar essas variaveis. Para isso, costuma-se treinar a
rede neural, usando um dado conjunto de treinamento de vetores de padroes de cada uma
das classes, { ~xk}. Introduzindo esses vetores, e conhecendo as respectivas saıdas {dk}, e
possıvel encontrar o melhor vetor ~w que representa esses dados de entrada. Diz-se que
a rede neural sofreu um processo de aprendizado apos encontrar o vetor de pesos. A
aplicacao desse grande algoritmo esta no fato de, uma vez determinado o vetor de pesos,
ser possıvel calcular a saıda para qualquer que seja um vetor de entrada ~x.
3 Algoritmos de treinamento
Pode-se aplicar diferentes algoritmos para treinar o perceptron, dependendo do tipo de
rede neural que se quer construir. Apresentaremos duas formas diferentes de treinamento:
7
uma que se aplica quando as classes podem ser linearmente separaveis e outra em que nao
e possıvel separa-las.
3.1 Treinamento para classes linearmente separaveis
Um algoritmo simples para a obtencao de um vetor de pesos para dois conjuntos de
treinamento linearmente separaveis e o seguinte: partindo de dois vetores de padroes
aumentados que pertencam a duas classes de padroes c1 e c2, e de uma representacao do
vetor inicial de pesos ~w1 (escolhido arbitrariamente), podemos reformular esse vetor, de
forma que se ~y(k) ∈ c1 e ~wT (k)~y(k) ≤ 0, entao a (k+1)-esima iteracao e dada por
~w(k + 1) = ~w(k) + c~y(k) (5)
onde c e um incremento positivo de correcao. Analogamente, se ~y(k) ∈ c2 e ~wT (k)~y(k) ≥ 0,
temos
~w(k + 1) = ~w(k)− c~y(k) (6)
Em qualquer outra situacao,
~w(k + 1) = ~w(k) (7)
Esse metodo de treinamento baseia-se num conceito de recompensa-e-punicao. A
“recompensa” para a maquina no caso de classificacao correta e, na verdade, a ausencia
de punicao. Em outras palavras, se a maquina classificar um padrao corretamente, ela
e recompensada pelo fato de nao haver mudancas em ~w. A convergencia do algoritmo
ocorre quando o conjunto completo de treinamento para as duas classes for passado pela
maquina sem erros. A regra de incremento fixo de correcao converge em um numero finito
de passos se os dois conjuntos de padroes de treinamento forem linearmente separaveis.
3.2 Classes nao separaveis
Na pratica, classes de padroes linearmente separaveis sao (raras) excecoes. Consequen-
temente, uma quantidade significativa de esforco foi feita no desenvolvimento de tecnicas
8
projetadas para trabalhar com classes nao separaveis de padroes entre as decadas de 1960
e 1970. No entanto, com os avancos recentes no treinamento de redes neurais, muitos dos
metodos que tratam com o comportamento nao separavel tornaram-se apenas topicos de
interesse historico. Um dos primeiros metodos, entretanto, e diretamente relevante nessa
discussao: a regra delta original. Conhecida como a regra delta de Widrow-Hoff, ou de
mınimos quadrados para o treinamento de perceptrons, o metodo minima o erro entre a
resposta verdadeira e a desejada a cada passo do treinamento.
A ideia do treinamento e determinar qual o melhor vetor de pesos ~w que corresponde
ao conjunto de valores de saıda dk para um dado conjunto de vetores de entrada ~x, ambos
conhecidos. O conceito de melhor esta associado a busca da minimizacao do erro cometido
ao se comparar a saıda dada pela rede yk com o valor tomado como correto dk. Assim,
podemos procurar um conjunto de pesos que minimiza o erro quadratico medio para o
conjunto de vetores de entrada. Se o valor de saıda obtido para o k-esimo vetor padrao
de entrada e yk, entao
εk = dk − yk (8)
de forma que o erro quadratico medio e
ξ = 〈ε2k〉 =
1
n + 1
n+1∑i=1
ε2i (9)
Substituindo a equacao 8 na equacao 9 temos que
ξ = 〈dk − ~w · ~xk〉2 = 〈d2k〉+ ~wT 〈 ~xk ~xk
T 〉~w − 2〈dk ~xkT 〉~w (10)
Para o caso de duas classes, a equacao acima representa a equacao de um paraboloide. As
coordenadas wi correspondentes ao ponto de mınimo sao os melhores pesos, e consequen-
temente a solucao do problema.
Para encontrar o ponto de mınimo, e necessario calcular o gradiente de ξ. No entanto,
ao inves de aplicar sucessivos vetores padroes e acumular o erro quadratico medio, vamos
aplicar apenas um vetor padrao de entrada ~xk e usar o valor do erro εk diretamente.
9
Nesse caso podemos usar o valor local do erro ao quadrado como aproximacao para o erro
quadratico medio para um padrao particular:
ξ = 〈ε2k〉 ≈ ε2
k = ξk =
(dk −
n∑i=1
wi(xi)k
)2
(11)
Uma vez que ξk e uma funcao dos pesos, o gradiente dessa funcao e dado por
∂ξk
∂wi
= −2
(dk −
n∑i=1
wi(xi)k
)(xi)k = −2εk(xi)k (12)
Por fim, ajustamos o valor do peso wi por um pequeno valor na direcao contraria a
do gradiente. Em outras palavras, atualizamos o valor do peso de acordo com a seguinte
“receita”:
wi(t + 1) = wi(t) + cε(xi)k (13)
ou, em forma vetorial,
~w(t + 1) = ~w(t) + cε(~x)k (14)
onde c e chamado de parametro de taxa de aprendizado e geralmente e muito menor do
que 1.
Repetindo o processo acima para todo o conjunto de vetores padrao de entrada, es-
taremos caminhando em direcao ao ponto de mınimo na superfıcie do erro, embora nao
necessariamente teremos o gradiente exato da superfıcie devido as aproximacoes feitas.
Enquanto o vetor de pesos se move em direcao ao ponto de mınimo, os valores de erro
diminuem. Deve-se manter a iteracao ate os erros serem reduzidos a um valor aceitavel,
sendo que a definicao de aceitavel e determinada pelas exigencias da aplicacao.
10
4 Resultados obtidos
4.1 Problema 1: exemplo de uma classe separavel
Como primeiro exemplo de aplicacao dos topicos discutidos acima, vamos discutir os
dois conjuntos de treinamento apresentados na figura 4, cada qual consistindo de dois
padroes. O algoritmo de treinamento deveria terminar com sucesso, uma vez que os dois
conjuntos de treinamento sao linearmente separaveis.
Figura 4: Problema 1 - ilustracao do algoritmo de treinamento do perceptron para padroes
pertencentes a duas classes.
O algoritmo da secao 3.1 foi implementado no Mathematica (arquivo em anexo), para
o caso desse problema. A convergencia foi atingida para 4 ≤ k ≤ 13, dependendo do vetor
de pesos inicial, que foi escolhido de forma arbitraria (utilizando o comando Random[ ] no
Mathematica). A solucao para o vetor de pesos tambem variou de acordo com a escolha
inicial, porem o numero de possibilidades foi restrito. As solucoes encontradas, bem como
sua frequencia em 76 simulacoes, estao na figura 5.
11
Figura 5: Solucoes encontradas para o vetor de pesos do problema 1.
Figura 6: Fronteira de decisao mais provavel para o treinamento do problema 1
A funcao de decisao correspondente ao vetor de pesos mais provavel e d(~y) = −3y1+1.
Voltando ao espaco de padroes original leva a d(~x) = −3x1 + 1, que, quando igualada a
zero, se torna a equacao da fronteira de decisao mostrada na figura 6.
12
4.2 Problema 2: Treinamento de uma rede neural para imple-
mentacao da porta logica AND
Um outro exemplo analogo ao anterior e que pode ser feito a partir do treinamento de
redes neurais para classes separaveis e a implementacao da porta logica AND, cuja tabela
verdade e mostrada abaixo:
p q AND
T T T
T F F
F T F
F F F
Figura 7: Problema 2 - ilustracao do algoritmo de treinamento do perceptron para o
problema AND.
Utilizamos o software Mathematica para a implementacao do algoritmo (arquivo em
anexo) para encontrar o vetor de pesos. A convergencia para a solucao final dependeu
do vetor de pesos inicial, e variou entre 6 ≤ k ≤ 17 iteracoes. No entanto, todas as 40
simulacoes resultaram na mesma solucao: ~w = (−3,−2, 4). Assim, a equacao da fronteira
13
de decisao que separa as duas classes do problema e dada por d(~x) = −3x1 − 2x2 +4 = 0,
como mostra a figura 8.
Figura 8: Fronteira de decisao encontrada para o treinamento do problema 2.
4.3 Problema 3: Implementacao da funcao 2cos(πk/8) a partir
de sen(πk/8)
Por fim, realizamos uma simulacao utilizando a regra delta apresentada na secao 3.2. A
ideia foi encontrar o vetor de pesos de minimiza o erro na utilizacao da funcao sen(πk/8)
para representar a funcao 2cos(πk/8). A comparacao entre as funcoes utilizadas pode ser
vista na figura 9.
A solucao para o vetor de pesos foi ~w = (4.8,−5.2), variando a segunda casa decimal
devido a escolha (aleatoria) do vetor de pesos inicial. Na implementacao do algoritmo, o
parametro da taxa de aprendizado foi fixado em 0.2, resultando num numero de iteracoes
da ordem de 760 (para um parametro de taxa de aprendizado maior, o numero de iteracoes
seria menor).
Podemos acompanhar a evolucao do aprendizado calculando o valor do erro para cada
14
Figura 9: Problema 3 - (a) grafico da funcao 2cos(πk/8); (b) grafico da funcao de entrada
sen(πk/8) e; (c) comparacao entre as duas funcoes citadas acima.
iteracao (figura 10), mostrando que este diminui ate o valor mınimo estipulado no inıcio
do programa (5.10−4). Como o vetor de pesos foi calculado para cada valor de k, tambem
podemos acompanhar a evolucao de ~w em funcao do numero de iteracoes (figura 11).
15
Figura 10: Problema 3 - Valor do erro ao longo do numero de iteracoes.
Figura 11: Problema 3 - Evolucao do vetor de pesos ao longo das iteracoes.
Widrow e Stearns calcularam a equacao exata para a superfıcie de erro para esse
exemplo [10],
ε(w1, w2) = 0, 51(w21 + w2
2) + w1w2cos(π/8) + 2w2sen(π/8) + 2 (15)
cujo grafico pode ser visto na figura 12. Se fizermos uma projecao em duas dimensoes
16
com o auxılio do comando ContourPlot no Mathematica, podemos acompanhar o movi-
mento do vetor peso ao longo da superfıcie exata quando a rede aprende. A figura 13
indica a posicao do vetor peso encontrado, comparada com a superfıcie exata para o erro,
mostrando a solucao esta muito proxima do vetor de pesos ~w = (w1, w2) que minimiza o
erro.
Figura 12: Problema 3 - Superfıcie de erro encontrada a partir da equacao exata.
Figura 13: Problema 3 - Comparacao do vetor de pesos encontrado com a superfıcie exata.
17
5 Conclusoes
O presente trabalho procurou introduzir os aspectos basicos relacionados com o apren-
dizado de redes neurais. Discutimos diferentes tipos de treinamento de perceptrons,
classificando-os em relacao a separacao de classes. Implementamos os algoritmos pro-
postos no software Mathematica atraves da solucao de tres problemas propostos simples,
porem didaticos. Os resultados encontrados foram condizentes com o esperado, vendo que
para classes linearmente separaveis o algoritmo converge num numero finito de passos;
para classes nao-separaveis, pudemos encontrar a solucao do vetor de pesos e compara-la
com a equacao exata, mostrando uma grande concordancia entre esses resultados.
Embora simples, vale ressaltar o fato de que esses topicos servem como fundamento
para o desenvolvimento da regra generalizada delta para o treinamento de redes neurais
multicamadas, nao discutida aqui, mas que e de fundamental importancia para o desen-
volvimento de redes neurais multicamadas utilizadas atualmente.
Referencias
[1] W. McCulloch e W. Pitts, Bulletin of Mathematical Biophysics 5 (1), 115-133 (1943).
[2] D. Hebb, The organization of behaviour, John Wiley & Sons, New York (1949).
[3] F. Rosenblatt, Mechanisation of thought processes: Proc. of Symposium 10 (1), 421-
456 (1959).
[4] F. Rosenblatt, Principles of neurodynamics: perceptrons and the theory of brain me-
chanisms, Spartan, Washington (1962).
[5] M. Minsky e S. Papert, Perceptrons: an introduction to computational geometry, the
MIT Press. Cambridge, Mass. (1969).
18
[6] J.C. Simon, Patterns and Operators: the foundations of data representations,
McGraw-Hill, New York (1986).
[7] D.E. Rumelhart, G.E. Hinton e R.J. Williams, Parallel distributed processing: explo-
rations in the microstructures of cognition, vol 1: foundations, Rumelhart, D.E., et
al. eds., MIT Press, Cambridge, Mass., 318-362 (1986).
[8] R.C. Gonzalez e R.E. Woods, Digital Image Processing, 2nd. Edition, Prentice Hall,
New Jersey (2002).
[9] Z.L. Kovacs, Redes Neurais Artificiais: fundamentos e aplicacoes, 3a. edicao, Livraria
da Fısica Ed., Sao Paulo (1996).
[10] B. Widrow e S.D. Stearns, Adaptative Signal Processing, Prentice Hall, New Jersey
(1985).
Apêndice: Implementação dos algoritmos no Mathematica