Você está na página 1de 42

Captulo 3

Algoritmos de Otimizao para Treinamento Supervisionado

Neste captulo so descritos e analisados vrios mtodos de otimizao no-linear


irrestrita para treinamento de redes multicamadas. O treinamento de redes neurais com vrias
camadas pode ser entendido como um caso especial de aproximao de funes, onde no
levado em considerao nenhum modelo explcito dos dados (SHEPHERD, 1997). Sero
revistos os seguintes algoritmos:
algoritmo padro (BP);
mtodo do gradiente (GRAD);
gradiente conjugado (GC);
Fletcher-Reeves (FR);
Polak-Ribire (PR);
gradiente conjugado escalonado de MOLLER (1993) (SCG);
Newton (MN);
Levenberg-Marquardt (LM);
Davidon-Fletcher-Powell (DFP);
Broyden-Fletcher-Goldfarb-Shanno (BFGS);
BATTITI (1992) One-step Secant (OSS) e
Quickprop de FAHLMAN (1988) (QUICK).
No objetivamos indicar diretamente a eficincia relativa destes algoritmos em uma dada
aplicao, mas analisar suas principais propriedades e definir o escopo de aplicao.

3.1 Introduo

A retro-propagao (backpropagation) do gradiente do erro provou sua utilidade no


treinamento supervisionado de redes multicamadas para aplicao a muitos problemas de
classificao e mapeamento esttico de funes no-lineares. A Figura 3.1 ilustra a retro-
propagao do erro em uma rede MLP. H casos em que a velocidade de aprendizagem um
fator limitante para possibilitar a implementao prtica deste tipo de ferramenta
computacional no processo de soluo de problemas que requerem otimalidade, robustez e
rapidez na convergncia do processo de ajuste de parmetros.
48
Supervisor

erro +

MLP

Figura 3.1: Comparao entre a sada da rede e a sada desejada do sistema feita por um supervisor
(treinamento supervisionado).

Mesmo em aplicaes onde uma resposta em tempo real no necessria, a


complexidade temporal do algoritmo pode resultar na intratabilidade computacional do
problema. Como exemplo, o aumento da complexidade intrnseca dos problemas atuais da
rea de engenharia tem produzido uma exploso combinatria dos possveis candidatos a
soluo, mesmo quando existem direcionamentos efetivos para a explorao do espao de
soluo. Alm disso, dentre os mtodos de busca no espao de soluo, consenso a idia de
que no existe um mtodo que seja o melhor para todos os casos. Sendo assim, muitas
solues encontradas por mtodos especficos podem no atender aos requisitos mnimos do
problema. Uma forma eficiente de lidar com esta situao recorrer ao potencial de
processamento computacional hoje disponvel e passar a operar com mtodos que forneam
simultaneamente mltiplos candidatos a soluo, dentre os quais se possa escolher o melhor
segundo algum critrio pr-estabelecido. No caso da soluo ser produzida utilizando-se redes
neurais artificiais, este procedimento to mais vivel quanto maior for a velocidade de
aprendizagem da rede neural. Por exemplo, um aumento de dez vezes na velocidade de busca
de uma soluo permite que se encontre dez vezes mais candidatos soluo com o mesmo
custo computacional. Nesta classe encontram-se aplicaes relacionadas com a modelagem e
identificao de sistemas no-lineares, previso de sries temporais e controle de processos
adaptativos (BATTITI, 1992).
O processo de treinamento supervisionado de redes neurais artificiais multicamadas
equivalente a um problema de otimizao no-linear irrestrito, onde uma funo de erro
global minimizada a partir do ajuste de parmetros da rede neural (pesos). Esta perspectiva
do processo de treinamento supervisionado permite desenvolver algoritmos de treinamento
baseados em resultados bem fundamentados da teoria de anlise numrica convencional. Os
principais procedimentos de anlise numrica passveis de implementao computacional

49
empregam mtodos que utilizam somente o gradiente local da funo ou ento mtodos que
utilizam tambm as derivadas de segunda ordem. No primeiro caso, a funo aproximada
pelo primeiro (constante) e segundo (linear) termos da expanso de Taylor; no segundo caso,
o terceiro termo (quadrtico) tambm considerado.
Este captulo pretende descrever alguns mtodos que mostram acelerar a convergncia
mdia da fase de treinamento. Como estamos interessados na velocidade de convergncia dos
algoritmos, consideraes sobre a capacidade de generalizao adquirida pela rede ao final do
processo de treinamento sero desenvolvidas posteriormente. Alguns destes mtodos, ao
passo que requerem poucas modificaes no algoritmo de retropropagao padro, resultam
em elevados graus de acelerao alm de no mais requererem a escolha de parmetros
crticos da rede neural como a taxa de aprendizagem e o coeficiente de momento.
Como o treinamento de redes multicamadas pode sempre ser entendido como um
problema geral de aproximao de funes, far-se- uma breve introduo sobre a teoria de
aproximao de funes e avaliao do nvel de aproximao. Em seguida sero apresentados
mtodos de otimizao do processo de aproximao resultante.

3.2 Aproximao de Funes

Considere o problema de aproximar uma funo g(.): X m r por um modelo de


aproximao representado pela funo g (., ) : X P r, onde P (P finito) um
vetor de parmetros.
O problema geral de aproximao pode ser formalmente apresentado como segue
(VON ZUBEN, 1996): Considere a funo g(.): X m r, que mapeia pontos de um
subespao compacto X m em pontos de um subespao compacto g[X] r. Com base nos

pares de vetores de entrada sada {(x l , s l )}lN=1 amostrados a partir do mapeamento

determinstico definido pela funo g na forma: sl = g(xl ) +l , l = 1,,N, e dado o modelo de

aproximao g (., ) : X P r , determine o vetor de parmetros * P tal que

dist(g(.), g (., *) ) dist(g(.), g (., ) ), para todo P, onde o operador dist(.,.) mede a
distncia entre duas funes definidas no espao X. O vetor l expressa o erro no processo de
amostragem, sendo assumido ser de mdia zero e varincia fixa. A soluo deste problema, se
existir, denominada a melhor aproximao e depende diretamente da classe de funes a
qual g pertence.

50
3.2.1 Avaliao do Nvel de Aproximao

Em problemas de aproximao utilizando um nmero finito de dados amostrados e


definido um modelo de aproximao g (., ) , a distncia entre a funo a ser aproximada e sua
aproximao dist(g(.), g (., ) ) uma funo apenas do vetor de parmetros P. Tomando
a norma euclidiana como a medida de distncia, produz-se a seguinte expresso:
N
(g (x) g (x, ) )2 .
1
J( ) = (3.1)
N l =1

O funcional J: denominado superfcie de erro do problema de aproximao,


P

pois pode ser interpretado como uma hipersuperfcie localizada acima do espao de
parmetros P, sendo que para cada ponto P corresponde uma altura J(). O termo
funcional corresponde a toda funo f : X n , e por isso o problema de minimizar J()
torna-se um problema de minimizao funcional.
Dada a superfcie de erro, o problema de aproximao passa a ser um problema de
otimizao cuja soluo o vetor * P que minimiza J(), ou seja,
* = arg min J ( ) . (3.2)
P

Durante o processo de aproximao da funo g(.) pela funo g (., ) fornecida pela
rede neural, devem ser considerados trs tipos de erros (V AN DER SMAGT, 1994): o erro de
representao, o erro de generalizao e o erro de otimizao.
Erro de Representao: primeiro consideremos o caso em que todo o conjunto amostral est

disponvel {(x l , s l )}l=1 . Assuma, tambm, que dado {(x l , s l )}l=1 , possvel encontrar um

conjunto de parmetros timo *. Neste caso, o erro vai depender da adequao e do nvel de
flexibilidade do modelo de aproximao g (., ). Este erro tambm conhecido como erro de
aproximao, ou efeito bias.
Erro de Generalizao: em aplicaes de mundo real, somente um nmero finito de amostras
est disponvel ou pode ser usado simultaneamente. Alm disso, os dados podem conter rudo.
Os valores de g para os quais nenhuma amostra est disponvel devem ser interpolados.
Devido a estes fatores pode ocorrer um erro de generalizao, tambm conhecido como erro
de estimao, ou varincia.
Erro de Otimizao: como o conjunto de dados limitado, o erro avaliado somente nos
pontos que pertencem ao conjunto amostral.

51
Dado o conjunto amostral {(x l , s l )}lN=1 , o vetor de parmetros = * deve fornecer a
melhor funo de aproximao possvel com base na representao paramtrica g (., ) e na
medida de distncia dada pela equao (3.1). Se a superfcie de erro for contnua e
diferencivel em relao ao vetor de parmetros (os parmetros podem assumir qualquer valor
real), ento os mais eficientes mtodos de otimizao no-linear irrestrita podem ser aplicados
para minimizar J().

3.3 Tcnicas de Otimizao no-linear Irrestrita

Para a maioria dos modelos de aproximao g (., ) , o problema de otimizao


apresentado na equao (3.2) tem a desvantagem de ser no-linear e no-convexo, mas as
vantagens de ser irrestrito e permitir a aplicao de conceitos de clculo variacional na
obteno da soluo *. Estas caractersticas impedem a existncia de uma soluo analtica,
mas permitem obter processos iterativos de soluo, a partir de uma condio inicial 0, na
forma:

i +1 = i + idi , i 0, (3.3)

onde i P o vetor de parmetros, i + um escalar que define o passo de ajuste e


di P a direo de ajuste, todos definidos na iterao i. Os algoritmos de otimizao
revisados neste captulo so aplicados na obteno da direo de ajuste do processo iterativo
dado pela equao (3.3). A forma pela qual cada um dos algoritmos procede no clculo da
direo de ajuste dos parmetros e do passo a cada iterao permite estabelecer distines
entre eles (GROOT & WRTZ, 1994).
Quando a direo de minimizao est disponvel, preciso definir o tamanho do passo
i + para se determinar o ajuste de parmetros naquela direo. Podem ser utilizados
inmeros procedimentos de busca unidimensional na determinao do passo (ver Captulo 4).
Nosso trabalho vai se concentrar ento, na determinao da direo tima. Geralmente so
feitas avaliaes da funo e suas derivadas so utilizadas para determinar um mnimo, global
ou local, e ento encerrar-se o aprendizado. Existem mtodos disponveis (BROMBERG &
CHANG, 1992) que aumentam a probabilidade de localizar mnimos globais, mas estes
mtodos exigem de dezenas a milhares de avaliaes da funo, tornando-se portanto, muito
custosos computacionalmente.

52
Uma forma comum de classificao dos algoritmos de otimizao a ordem da
informao que eles devem calcular. Por ordem queremos dizer ordem das derivadas da
funo objetivo (no nosso caso a equao (3.1)). A primeira classe de algoritmos no requer
mais do que a simples avaliao da funo em diferentes pontos do espao. Nenhuma
derivada est envolvida. So os chamados mtodos sem diferenciao. A segunda classe de
algoritmos faz uso da derivada primeira da funo a ser minimizada. So chamados de
mtodos de primeira ordem. Outra classe de algoritmos que ser intensamente estuda neste
captulo so os chamados mtodos de segunda ordem, e que utilizam informaes sobre a
derivada segunda da funo de custo. Uma ltima diviso inclui os algoritmos cujos
parmetros so ajustados de maneira emprica, ou seja, atravs de procedimentos de tentativa
e erro. Classificam-se como mtodos empricos.
A Figura 3.2 apresenta um organograma das diferentes estratgias de treinamento de
redes neurais artificiais que sero revistas.
Os mtodos discutidos neste captulo tm como objetivo determinar mnimos locais,
que so pontos na vizinhana dos quais o funcional de erro possui o menor valor.
Teoricamente, os mtodos de segunda ordem no so mais capazes de encontrar um mnimo
global do que os mtodos de primeira ordem.
O problema de determinao de mnimos globais, mesmo dentro de um conjunto de
mnimos locais bem definidos, difcil devido a impossibilidade fundamental de se
reconhecer um mnimo global utilizando-se apenas informaes locais. O ponto chave da
otimizao global saber quando parar. Muitos esforos tm sido empenhados diretamente no
problema de determinao de mnimos globais. Recentemente, mtodos heursticos tornaram-
se populares, em particular os mtodos evolutivos como algoritmos genticos e recozimento
simulado (simulated annealing). Entretanto, nenhuma dessas abordagens, analtica ou
heurstica, garante a localizao de um mnimo global de uma funo suave e contnua em
tempo finito e com recursos computacionais limitados.
Mnimos locais no so nicos por uma de duas razes:
a funo multimodal;
se a Hessiana singular em um mnimo local, este mnimo constitui um conjunto
compacto ao invs de um ponto isolado. Isto , o valor da funo deve ser
constante ao longo de uma direo, de um plano ou de um subespao maior
(MCKEON et. al., 1997).

53
ESTRATGIAS DE TREINAMENTO

SEM DIFERENCIAO 1a ORDEM 2a ORDEM EMPRICOS

BE GA SA BP GRAD CG N-LM OSS QN QP MOD .

SCG FR PR DFP BFGS

Figura 3.2: Estratgias de treinamento de redes neurais do tipo MLP.

Dentre as quatro classes de algoritmos citadas acima, sero apresentados vrios mtodos
de otimizao, sendo que alguns destes foram implementados e testados. Os resultados
experimentais sero detalhados no Captulo 9.

3.4 Mtodos Sem Diferenciao

Dentre esses mtodos podemos citar simulated annealing (SA), algoritmos genticos
(GA) e busca exaustiva (BE). No entraremos em detalhes sobre as caractersticas do mtodo
simulated annealing e de busca exaustiva. No Captulo 7 falaremos um pouco sobre os
algoritmos genticos aplicados construo e determinao dos pesos de uma rede neural do
tipo MLP. possvel adiantar que seus desempenhos so inferiores aos mtodos de primeira e
segunda ordem quando os problemas so diferenciveis.

3.5 Mtodos de Primeira Ordem

O erro quadrtico mdio a ser minimizado pode ser apresentado considerando-se seus
termos at segunda ordem pela equao (3.4):

J quad ( ) = J ( i ) + J ( i )T ( i)+( i)
T
2 J ( i )( i),
(3.4)

onde J ( i ) o vetor gradiente e 2 J ( i ) a matriz hessiana de J(), ambos calculados no

ponto = i, e J quad ( ) representa a aproximao at segunda ordem de J().


Nos mtodos de primeira ordem apenas os termos constante e linear em da expanso
em srie de Taylor so considerados. Estes mtodos, onde unicamente o gradiente local
determina a direo de minimizao d (eq. (3.3)), so conhecidos como mtodos da direo
de maior decrescimento (steepest descent ou gradient descent).
54
3.5.1 Algoritmo Padro de primeira ordem (BP)

Este mtodo funciona como segue. Quando a rede est em um estado i, o gradiente
J ( i ) calculado e um passo de minimizao na direo oposta ao gradiente d = - J ( )

efetuado. A regra de aprendizado dada pela equao (3.3).


No algoritmo padro, a minimizao geralmente feita com um passo fixo. A
determinao do passo fundamental, pois para valores muito baixos, o tempo de
treinamento pode tornar-se exageradamente alto, e para valores muito altos os parmetros
podem divergir (HAYKIN, 1994). A velocidade de convergncia geralmente melhorada
adicionando-se um termo de momento (RUMELHART et. al., 1986).

i +1 = i + id i + i i 1 , i 0. (3.5)

Este termo adicional geralmente evita oscilaes no comportamento do erro, pois pode
ser interpretado como a incluso de uma aproximao da informao de segunda ordem
(HAYKIN, 1994).

3.5.1.1 Algoritmo
O algoritmo utilizado neste mtodo est resumido abaixo:
1. Atribua um valor inicial 0 P para o vetor de parmetros e um
valor arbitrariamente pequeno para uma constante > 0
2. Atribua valores para os parmetros e
3. Enquanto a condio de parada no for satisfeita, faa:
3.1. i +1 = i J ( i ) + i 1

Exemplo 3.1:
Para ilustrar as caractersticas de alguns dos algoritmos de treinamento apresentados
neste captulo, considere o problema de aproximar a funo XOR utilizando uma rede do tipo
perceptron com uma nica camada intermediria e dez unidades nesta camada. A Figura
3.3(a) apresenta o problema XOR e a Figura 3.3(b) o comportamento da curva de erro quando
feita a incluso do termo de momento no algoritmo padro. Verifica-se que a incluso deste
termo diminui o plat da curva de erro e reduz significativamente o tempo de convergncia.
A ineficincia e ausncia de robustez do algoritmo padro devida, principalmente, ao
fato de que feita uma aproximao linear da funo de erro e o passo de ajuste arbitrrio.

55
1
BP: ------- BPM: - - - -
10
-1 1 +1

0
10

-1 1 SSE

-1
10

+1 -1 -1

-2
10
0 10 20 30 40 50 60 70
pocas

(a) (b)
Figura 3.3: (a) Problema a ser abordado (XOR). (b) Comparao da velocidade de convergncia do
algoritmo padro com e sem momento para uma rede com 5 unidades intermedirias (SSE = 0.01).
Trao contnuo: algoritmo sem o termo de momento. Curva tracejada: algoritmo com o momento.

3.5.2 Mtodo do Gradiente (GRAD)

Dentre os mtodos que utilizam diferenciao e busca, o mtodo do gradiente o mais


simples para obteno da direo di, pois utiliza apenas informaes de primeira ordem. Na i-
sima iterao, a direo di definida como a direo de mdulo unitrio de maior
decrescimento da funo J.
J ( )
d= . (3.6)
J ( )

A lei de ajuste do mtodo do gradiente , ento, dada por:


J ( i )
i +1 = . (3.7)
J ( i )
i i

3.5.2.1 Algoritmo

O algoritmo utilizado neste mtodo est resumido abaixo (VON ZUBEN, 1996):
1. Atribua um valor inicial 0 P para o vetor de parmetros e um

valor arbitrariamente pequeno para uma constante > 0, faa

= 1 e i = 0 e calcule J ( i )

2. Enquanto J ( i ) > , faa:


J ( i )
2.1. prov = i i
J ( i )

56
2.2. Enquanto J(prov) J(i) faa:

2.2.1. i = tr i

J ( i )
2.2.2. prov = i i
J ( i )

i +1 = t a i

2.3. i +1 = prov
i = i +1

2.4. Calcule J ( i ) .

Onde ta e tr so taxas de aumento e reduo do passo , respectivamente.


A Figura 3.4 ilustra o comportamento do mtodo do gradiente quando aplicado ao
problema do Exemplo 3.1. Verifica-se um comportamento monotonicamente decrescente da
funo de custo (erro), percebe-se que a taxa de aprendizagem oscila (aumenta e diminui) e o
nmero de pocas para convergncia menor do que o do algoritmo BP, quando o mesmo
critrio de parada adotado.

Taxa de Aprendizagem 1
GRAD
0.40 10

0.35

0.30
0
10
0.25

SSE
0.20

0.15 -1
10

0.10

0.05

-2
0 10
0 5 10 15 20 25 30 35 0 5 10 15 20 25 30
pocas pocas

(a) (b)
Figura 3.4: Comportamento do mtodo do gradiente durante a minimizao do funcional de erro do
problema XOR. (a) Evoluo tpica da taxa de aprendizagem. (b) Decaimento do erro, note o
comportamento monotonicamente decrescente e o tempo reduzido de convergncia.

57
Outro critrio de parada que pode ser adotado, fazer com que o erro dado pela
expresso (3.1) seja menor ou igual a um valor de pr-estabelecido no passo 1, ao invs de
escolhermos a norma do vetor gradiente. Este critrio de parada no garante que o algoritmo

pare de iteragir caso um mnimo local seja atingido, com J ( ) > . A parada ocorrer
*
loc

garantidamente caso o critrio de parada adotado seja J ( i ) < .

Sempre que J() tiver pelo menos um mnimo, o mtodo do gradiente associado a este
procedimento de busca unidirecional vai seguramente fornecer uma soluo *, mnimo local
do problema (3.2). A incluso de um termo de momento junto a equao (3.3), na forma:
J ( i )
i +1 = i i + i( i i 1 ) , (3.8)
J ( i )

no recomendada neste caso por tornar mais complexo o atendimento da condio de


garantia de convergncia para mnimos locais.

3.6 Mtodos de Segunda Ordem

Atualmente estes mtodos so considerados a maneira mais eficiente de se fazer o


treinamento de redes neurais do tipo MLP (SHEPHERD, 1997). Estes algoritmos recorrem a um
rigor matemtico baseado em modelos de otimizao no-linear irrestrita bem definidos, no
apresentando assim um vnculo natural com a inspirao biolgica inicialmente proposta para
as RNA's.

3.6.1 Mtodo de Newton Modificado (NM)

O mtodo de Newton pode ser considerado como o mtodo local bsico que utiliza
informaes de segunda ordem. Deve ser enfatizado que a sua aplicao prtica aos
perceptrons multicamadas pouco recomendada uma vez que o clculo da matriz Hessiana
representa um elevado custo computacional pois exige a inverso, anlise espectral e
armazenagem de uma matriz quadrada que da ordem do nmero de parmetros P a serem
ajustados (BATTITI, 1992; LUENBERGER, 1989; BAZARAA et. al., 1993).
O vetor i+1, a soluo que minimiza exatamente J() dado pela equao (3.4),
atendendo portanto a condio de otimalidade
J quad ( i +1 )
= 0. (3.9)
i +1

Aplicando a equao (3.9) na equao (3.4) resulta

58
i +1 = i [
2J ( i ) ]1
J ( i ) , (3.10)

onde 2 J (.) a matriz hessiana e J (.) o vetor gradiente.


Utilizando o mesmo raciocnio empregado no caso do mtodo do gradiente, como a
funo J ( ) no necessariamente quadrtica, a minimizao de sua aproximao quadrtica
J quad ( ) dada pela equao (3.4) pode no fornecer uma soluo i+1 tal que J(i+1) < J(i). A
lei de ajuste (3.10) torna-se ento:

i +1 = i i [ J ( )]
2
i
1
J ( i ) . (3.11)
Maiores detalhes sobre a determinao do passo i sero apresentados no Captulo 4.
Na forma como foi apresentado acima, o mtodo de Newton ainda no apresenta
garantia de convergncia, pois nada pode ser afirmado sobre o sinal da matriz hessiana, que
deve ser definida positiva por duas razes: para garantir que a aproximao quadrtica tenha
um mnimo e que a inversa da matriz hessiana exista, que a condio necessria para
resolver as equaes (3.10) ou (3.11) a cada iterao. Portanto, necessrio testar a

positividade de 2 J ( ) a cada iterao, e na eventualidade de se obter 2 J ( ) 0, deve-se


aplicar um procedimento de positivao desta matriz.
O Captulo 5 far comentrios gerais sobre os problemas numricos associados ao
treinamento de arquiteturas do tipo MLP.

3.6.1.1 Algoritmo
O algoritmo utilizado neste mtodo est resumido abaixo:
1. Atribua um valor inicial 0 P para o vetor de parmetros e um

valor arbitrariamente pequeno para uma constante > 0


2. Enquanto a condio de parada no for satisfeita, faa:

2.1. Calcule J ( i ) , J ( i ) e d i = 2 J ( i )
2
[ ]
1
J ( i )
2.2. Utilize um procedimento de busca unidimensional para
encontrar um i que seja soluo tima do problema

min J ( i + idi ) .
i ( 0,1]

2.3. Lei de ajuste: i +1 = i id i

59
3.6.1.2 Clculo exato da Hessiana
A determinao exata da matriz hessiana no uma tarefa fcil. CHRIS BISHOP (1992)
apresenta expresses que permitem o clculo exato da matriz hessiana para arquiteturas MLP
com uma ou mais camadas intermedirias.
Apresentaremos aqui, apenas as expresses que permitem a determinao da matriz
hessiana de uma rede MLP com uma nica camada escondida.
Na determinao da matriz hessiana usaremos os ndices k e k para as unidades de
entrada, l e l para as unidades intermedirias e m e m para as sadas. Sendo ai a entrada da
unidade i e zi a ativao desta unidade, ento tem-se que zi = f(ai). A matriz hessiana para uma
rede com uma nica camada intermediria pode ser calculada utilizando-se trs blocos de
expresses:
1. Ambos os pesos pertencentes segunda camada:
2J
= z l z l mmH m .
wml wml
2. Ambos os pesos na primeira camada:

2J
= z k z k f (al ) ll wml m + f (al ) f (al ) wml wml H m .
wlk wl k m m

3. Um peso em cada camada:


2J
= z k f ( al ){ m ll + zl wml H m },
wlk wml

onde:

2J J 2 J
2
m = gm(.) - g m (.), Hm = -zm(1 - zm); H m = = f (a m ) + [ f (a m )] ,
a m2 z m z m
2

e
J 2 J
= ( g g ) = 1.
z m z m2

3.6.1.3 Positivando a Hessiana


Dada uma matriz A simtrica, conhecendo-se o menor autovalor min desta matriz,
possvel obter uma matriz M definida positiva a partir de A na forma:
se min > 0, ento M = A
se min 0, ento M = A + ( - min)I, com > min.
60
A lei de ajuste do mtodo de Newton torna-se:
1
i +1 = i i M i J ( i ) , (3.12)
onde Mi dada por:
M i = 2 J ( i ) se [i]
>0
min
, (3.13)
M i = 2 J ( i ) + ( 0
[i] [i]
min )I se min

[i ]
com min o autovalor mnimo de Mi. Ainda no existem resultados que conduzam
determinao automtica de um valor timo para (VON ZUBEN, 1996).
A Figura 3.5 apresenta alguns exemplos da aplicao do mtodo de Newton
modificado na minimizao de uma funo monovarivel J(), demonstrando que o ajuste do

mtodo de Newton sempre no sentido de atender o critrio. Os pontos '' correspondem a


(i,J(i)), enquanto que os pontos '' correspondem a (i+1,J(i+1)). A funo J()

representada pela curva de trao cheio, enquanto que J quad ( ) (ou sua verso modificada)

representada pela curva tracejada.


Observe que nos grficos da coluna da esquerda foi necessrio positivar a hessiana,
enquanto que nos grficos da ltima coluna houve a necessidade de se utilizar i < 1.
Situaes em que estes dois procedimentos sejam necessrios simultaneamente tambm
podem ocorrer.
12 0.8 10

0.7
11 8
0.6
10 6
0.5

9 4
0.4

8 0.3 2

0.2
7 0
0.1

6 -2
0

5 -0.1 -4
- -0 .1 - -0 .09 - -0.08 - -0 .07 - -0.06 - -5 0 5 10 15 20 -0 .1 - - - - 0 0 .0 2 0 .0 4 0 .0 6 0 .08 0 .1
-3
x 10

10 1.2 15

9.5
1
9 10

8.5 0.8

8 5
0.6
7.5
0.4
7 0

6.5 0.2

6 -5
0
5.5

5 -0.2 -10
0.065 0.07 0.075 0.08 0.085 0.09 0.095 0.1 0.105 0.11 - 0 0.005 0.01 0.015 0.02 0.025 0.03 -0.2 -0.15 -0.1 -0.05 0 0.05 0.1 0.15

Figura 3.5: Exemplos da aplicao do mtodo de Newton modificado.


61
Se ao invs de minimizar a funo objetivo quisssemos maximiz-la, bastaria apenas
inverter a direo de busca, e negativar a matriz hessiana (2J() < 0) no lugar de positiv-la.
importante mencionar ainda que em lugar de positivar Mi na equao (3.13), poder-
se-ia, em princpio, utilizar qualquer outra matriz definida positiva de dimenses apropriadas.
A razo para optar pelo processo de positivao da hessiana a analogia com o tradicional
mtodo de Levenberg-Marquardt (que ser visto a seguir) que pode ser interpretado como
uma combinao entre a lei de ajuste do mtodo do gradiente e a lei de ajuste do mtodo de
Newton.

3.6.2 Mtodo de Levenberg-Marquardt (LM)

Este mtodo, assim como o mtodo de Newton, bastante eficiente quando estamos
tratando de redes que no possuem mais do que algumas centenas de conexes a serem
ajustadas (HAGAN, 1994). Isto deve-se, principalmente, ao fato de que estes algoritmos
necessitam armazenar uma matriz quadrada cuja dimenso da ordem do nmero de
conexes da rede (ver Captulo 5).
O funcional de erro apresentado na equao (3.1) representa o erro quadrtico mdio
(MSE). Se considerarmos como funcional a soma dos erros quadrticos (SSE), e ainda
levarmos em conta que o problema pode ter mltiplas sadas, obtemos a seguinte expresso
para o funcional de erro:

( )2 = rl2 ,
N m q
J ( ) = g ij (x) g ij (x, ) (3.14)
i =1 j =1 k =1

onde N o nmero de amostras, l o nmero de unidades intermedirias, r o erro residual, m o


nmero de sadas, e q o produto N m.
Seja J o Jacobiano (matriz das derivadas primeiras) do funcional J dado pela equao
(3.14). Esta matriz pode ser escrita da seguinte forma:
r1T

J M , (3.15)
r T
q
onde r denominado erro residual.
Diferenciando a equao (3.14) obtemos:
q
J = 2J T r = 2 rk rk , (3.16)
k =1

62
q
2 J = 2 J TJ + rk 2rk . (3.17)

k =1
A matriz de derivadas segundas do funcional de erro chamada de matriz hessiana,
como foi visto anteriormente. Quando os erros residuais so suficientemente pequenos, a
matriz hessiana pode ser aproximada pelo primeiro termo da equao (3.17), resultando em:

2 J 2J T J .
(3.18)
Esta aproximao geralmente vlida em um mnimo de J para a maioria dos
propsitos, e a base para o mtodo de Gauss-Newton (HAGAN, 1994). A lei de atualizao
torna-se ento:

= JT J[ ] 1 T
J r. (3.19)
A modificao de Levenberg-Marquardt para o mtodo de Gauss-Newton :

[
= JT J + I ]
1 T
J r. (3.20)

O efeito da matriz adicional I adicionar a cada autovalor de JTJ. Uma vez que a
matriz JTJ semi-definida positiva e portanto o autovalor mnimo possvel zero, qualquer
valor positivo, pequeno, mas numericamente significativo, de ser suficiente para restaurar
a matriz aumentada e produzir uma direo descendente de busca.
Os valores de podem ser escolhidos de vrias maneiras; a mais simples escolh-lo
zero ao menos que a matriz hessiana encontrada na iterao i seja singular. Quando isso
N
( )
ocorrer, um valor pequeno como = 10-4 1 J T J pode ser usado. Outras formas de
ii

determinao do parmetro so sugeridas por HAGAN (1994), MCKEON et. al. (1997) e
FINSCHI (1996).
importante observar que, quanto maior for o valor de , menor a influncia da
informao de segunda ordem e mais este algoritmo se aproxima de um mtodo de primeira
ordem.
A Figura 3.6 apresenta a curva de decaimento do erro quando o mtodo LM aplicado
ao problema do Exemplo 3.1.

63
LM
1
10

0
10

SSE

-1
10

-2
10

0 2 4 6 8
pocas

Figura 3.6: Comportamento do mtodo Levenberg-Marquardt durante a minimizao do funcional de


erro do problema XOR. Este mtodo tambm apresenta um comportamento monotonicamente
decrescente da curva de erro, mas a acelerao do processo de convergncia ainda maior.

3.6.2.1 Algoritmo
O algoritmo utilizado neste mtodo est resumido abaixo:
1. Atribua um valor inicial 0 P para o vetor de parmetros e um
valor arbitrariamente pequeno para uma constante > 0
2. Enquanto a condio de parada no for satisfeita, faa:
2.1. Construa a matriz J utilizando as expresses (3.14) e
(3.15)
2.2. Calcule o ajuste utilizando a equao (3.20)
2.3. Utilize um procedimento de busca unidimensional para
encontrar um i que seja soluo tima do problema

min J ( i + idi ) .
i ( 0,1]

2.4. Lei de ajuste: i +1 = i i ( i )

3.6.3 Mtodo de Davidon-Fletcher-Powell (DFP)

Este mtodo, assim como o mtodo BFGS que ser apresentado em seguida,
classificado como mtodo quase-Newton. A idia por trs dos mtodos quase-Newton fazer
uma aproximao iterativa da inversa da matriz hessiana, de forma que:

64
lim H i = 2 J ( ) 1 (3.21)
i

So considerados os mtodos teoricamente mais sofisticados na soluo de problemas


de otimizao no-linear irrestrita e representam o pice do desenvolvimento de algoritmos
atravs de uma anlise detalhada de problemas quadrticos.
Para problemas quadrticos, gera as direes do mtodo do gradiente conjugado (que
ser visto posteriormente) ao mesmo tempo que constri a inversa da Hessiana. A cada passo
a inversa da Hessiana aproximada pela soma de duas matrizes simtricas de posto 1,
procedimento que geralmente chamado de correo de posto 2 (rank 2 correction
procedure).

3.6.3.1 Construo da Inversa

A idia construir uma aproximao da inversa da matriz hessiana, utilizando


informaes de primeira ordem obtidas durante o processo iterativo de aprendizagem. A
aproximao atual Hi utilizada a cada iterao para definir a prxima direo descendente
do mtodo. Idealmente, as aproximaes convergem para a inversa da matriz hessiana.
Suponha que o funcional de erro J() tenha derivada parcial contnua at segunda
ordem. Tomando dois pontos i e i+1, defina gi = - J(i)T e gi+1 = - J(i+1)T. Se a hessiana,

2 J ( ) , constante, ento temos:

q i g i +1 g i = 2 J ( )p i , (3.22)
pi = idi . (3.23)
Vemos ento que a avaliao do gradiente em dois pontos fornece informaes sobre a

matriz hessiana 2 J ( ) . Como P, tomando-se P direes linearmente independentes

{p0, p1, , pP-1}, possvel determinar unicamente 2 J ( ) caso se conhea qi, i = 0, 1, ,


P 1. Para tanto, basta aplicar iterativamente a equao (3.24) a seguir, com H0 = IP (matriz
identidade de dimenso P).

p i pTi H i q i qTi H i
H i +1 = H i + , i = 0, 1, , P 1. (3.24)
pTi q i q Ti H i q i
A Figura 3.7 apresenta a curva de decaimento do erro quando o mtodo DFP
aplicado ao problema do Exemplo 3.1.

65
1
DFP
10

0
10

SSE

-1
10

-2
10
0 2 4 6 8 10 12 14 16 18 20
pocas

Figura 3.7: Comportamento do mtodo DFP durante a minimizao do funcional de erro do problema
XOR. Verifica-se um comportamento monotonicamente decrescente da curva de erro, com grande
velocidade de convergncia.

Aps P iteraes sucessivas, se J() for uma funo quadrtica, ento H P = 2 J ( ) 1 .


Como geralmente no estamos tratando problemas quadrticos, a cada P iteraes
recomendvel que se faa uma reinicializao do algoritmo, ou seja, toma-se a direo de
minimizao como a direo oposta quela dada pelo vetor gradiente e H = IP.

3.6.3.2 Algoritmo

O algoritmo utilizado neste mtodo est resumido abaixo:


1. Atribua um valor inicial 0 P para o vetor de parmetros e
um valor arbitrariamente pequeno para uma constante > 0
2. Defina d0 = g0, H0 = I e faa i = 0 (g0 = -J(0))
3. Enquanto a condio de parada no for satisfeita, faa:
3.1. Determine a direo di = H i g i

3.2. Se (i mod P = 0), faa: di = g i e Hi = I

3.3. Utilize um procedimento de busca unidimensional para


encontrar um passo i que seja soluo tima do problema

min J ( i + idi )
i ( 0,1]

3.4. Faa i +1 = i + idi

3.5. Calcule p i = i d i , gi+1

66
3.6. Faa q i = g i +1 g i de acordo com a expresso (3.22)

3.7. Calcule H i +1 pela expresso (3.24)

3.8. Faa i = i + 1

3.6.4 Mtodo de Broyden-Fletcher-Goldfarb-Shanno (BFGS)

A diferena bsica deste mtodo para o proposto na seo anterior (DFP) a forma da
aproximao da inversa da matriz hessiana. A expresso que permite determinar a
aproximao da inversa da hessiana apresentada na equao (3.25).

p i pTi qTi H i q i H i q i pTi + p i qTi H i


H i +1 = H i + 1 + T (3.25)
pTi q i p i q i pTi q i

Os vetores qi e pi so determinados como nas expresses (3.22) e (3.23), respectivamente.

3.6.4.1 Algoritmo
O algoritmo utilizado neste mtodo est resumido abaixo:
1. Atribua um valor inicial 0 P para o vetor de parmetros e
um valor arbitrariamente pequeno para a constante > 0
2. Defina d0 = g0, H0 = I e faa i = 0 (g0 = -J(0))
3. Enquanto a condio de parada no for satisfeita, faa:
3.1. Determine a direo di = H i g i

3.2. Se (i mod P = 0), faa: di = g i e Hi = I

3.3. Utilize um procedimento de busca unidimensional para


encontrar um passo i que seja soluo tima do problema

min J ( i + idi ) .
i ( 0,1]

3.4. Faa i +1 = i + idi

3.5. Calcule p i = i d i , gi+1

3.6. Faa q i = g i +1 g i de acordo com a expresso (3.22)

3.7. Calcule H i +1 pela expresso (3.25)

3.8. Faa i = i + 1

67
1
BFGS
10

0
10

SSE

-1
10

-2
10
0 2 4 6 8 10 12 14 16 18 20
pocas

Figura 3.8: Comportamento do mtodo BFGS durante a minimizao do funcional de erro do


problema XOR. Verifica-se um comportamento semelhante ao do mtodo DFP.

A Figura 3.8 apresenta a curva de decaimento do erro quando o mtodo BFGS aplicado
ao problema do Exemplo 3.1. Essa curva permite-nos verificar que o comportamento deste
algoritmo, em relao velocidade de convergncia similar ao do mtodo DFP, visto
anteriormente.

3.6.5 Mtodo das Secantes de um Passo (OSS One Step Secant)

O termo mtodo de secante provm do fato de que as derivadas so aproximadas por


secantes avaliadas em dois pontos da funo (neste caso a funo o gradiente). Uma
vantagem deste mtodo apresentado por BATTITI (1992; 1994) que sua complexidade de
ordem O(P), ou seja, linear em relao ao nmero P de parmetros, enquanto a

complexidade dos mtodos DFP e BFGS de ordem O( P 2 ). Maiores detalhes sobre a


complexidade computacional dos algoritmos citados aqui sero apresentados no Captulo 5.
A principal razo da reduo do esforo computacional deste mtodo em relao aos
anteriores (DFP e BFGS), que agora a direo de atualizao (eq. (3.3)) calculada somente
a partir de vetores determinados pelos gradientes, e no h mais a armazenagem da
aproximao da inversa da hessiana.
A nova direo de busca di+1 obtida como segue:
d i +1 = g i + Ai s i + Bi q i , (3.26)
onde:
si = i +1 i = pi , (3.27)

68
1
OSS
10

0
10

SSE

-1
10

-2
10
0 2 4 6 8 10 12 14 16 18 20
pocas

Figura 3.9: Comportamento do mtodo OSS durante a minimizao do funcional de erro do problema
XOR.

qTi q i sTi g i qTi g i sTi g i


Ai = 1 + T T + T ; Bi = . (3.28)
s i q i s i q i s i qi sTi q i
Os vetores qi e pi so determinados como nas expresses (3.22) e (3.23), respectivamente.
A Figura 3.9 apresenta a curva de decaimento do erro quando o mtodo OSS
aplicado ao problema do Exemplo 3.1.

3.6.5.1 Algoritmo
O algoritmo utilizado neste mtodo est resumido abaixo:
1. Atribua um valor inicial 0
P
para o vetor de parmetros e
um valor arbitrariamente pequeno para uma constante > 0
2. Defina d0 = g0, H0 = I e faa i = 0 (g0 = -J(0))
3. Enquanto a condio de parada no for satisfeita, faa:
3.1. Determine a direo di pelas expresses (3.22), (3.26),
(3.27) e (3.28)
3.2. Se (i mod P = 0), faa: di = g i

3.3. Utilize um procedimento de busca unidimensional para


encontrar um passo i que seja soluo tima do problema

min J ( i + idi ) .
i ( 0,1]

3.4. Faa i +1 = i + idi


3.5. Faa i = i + 1

69
3.6.6 Mtodo do Gradiente Conjugado (GC)

Existe um consenso geral da comunidade de anlise numrica que a classe de mtodos


de otimizao chamados mtodos do gradiente conjugado, tratam de problemas de grande
escala de maneira efetiva (VAN DER SMAGT, 1994).
Os mtodos do gradiente conjugado possuem sua estratgia baseada no modelo geral
de otimizao apresentado no algoritmo padro e do gradiente, mas escolhem a direo de
busca di, o passo i e o coeficiente de momento i (equao (3.5)) mais eficientemente
utilizando informaes de segunda ordem. projetado para exigir menos clculos que o
mtodo de Newton e apresentar taxas de convergncia maiores que as do mtodo do
gradiente.
Antes de apresentar o mtodo do gradiente conjugado necessrio apresentar um
resultado intermedirio denominado mtodo das direes conjugadas.

3.6.6.1 O mtodo das Direes Conjugadas


A lei de adaptao dos processos em estudo assume a forma da equao (3.3), sendo
que, havendo convergncia, a soluo tima * P pode ser expressa na forma:

*= 0d 0 + 1d1 + ... = idi .


i

Assumindo por hiptese que o conjunto {d0, d1, , dP-1} forma uma base de P e
= (0 P-1)T a representao de * nesta base, ento possvel obter * em P iteraes
da equao (3.3) na forma
P 1
*= 0d 0 + 1d1 + ... + P 1d P 1 = idi . (3.29)
i =0

Dada uma matriz A simtrica de dimenso P P, as direes di P, i = 0, , P-1,

so ditas serem A-conjugadas ou A-ortogonais se: dTj Ad i = 0 , para i j e i,j = 0, , P-1.

Se a matriz A for tambm definida positiva, o conjunto de P direes A-conjugadas

forma uma base do P. Dessa forma os coeficientes *


j, j = 1,..., P 1 , podem ser

determinados pelo procedimento descrito abaixo.


Dada uma matriz A simtrica, definida positiva e de dimenso P P, multiplicando-se

a equao (3.29) esquerda por dTj A , com 0 j P-1, resulta:

70
P 1
dTj A * = * T
i d j Ad i , j = 1,..., P 1 . (3.30)
i =0

Escolhendo as direes di P, como sendo A-conjugadas, possvel aplicar os


resultados apresentados acima para obter:
dTj A *
*
j = , j = 1,..., P 1 . (3.31)
dTj Ad j

necessrio eliminarmos * da expresso (3.31), e para que isso seja feito so


necessrias duas hipteses adicionais:
1
Suponha que o problema quadrtico, ou seja: J ( ) = T
Q bT
2
ento no ponto de mnimo *, vlida a expresso:
J ( ) = 0 Q * b = 0 Q = b. (3.32)
Suponha que A = Q.
Sendo assim, a equao (3.31) resulta em:
d Tj b
*
j = , j = 1,..., P 1 , (3.33)
d Tj Ad j

e o ponto de mnimo * dado por:


P 1 dTj b
= dT Ad dj. (3.34)
j=0 j j

Assumindo soluo iterativa com * sendo expresso na forma da equao (3.34), os

coeficientes *
j, j = 1,..., P 1 , so dados por:

*= 0 + *
0d 0 + *
1 d1 + ... + *
P 1d P 1 , (3.35)

dTj Q( *
0)
*
j = , j = 1,..., P 1. (3.36)
dTj Qd j

Na j-sima iterao, e levando-se em conta a equao (3.35), obtm-se:

dTj J ( j)
*
j = , j = 1,..., P 1, (3.37)
dTj Qd j

e a lei de ajuste do mtodo das direes conjugadas dada por:

71
dTi J ( i )
i +1 = i di . (3.38)
dTi Qd i

3.6.6.2 O Mtodo do Gradiente Conjugado

Antes de aplicarmos a lei de ajuste dada pela equao (3.38), necessrio obter as
direes Q-conjugadas di P, i=0,,P-1. Uma maneira de determinar estas direes
tom-las na forma (BAZARAA et. al., 1993):
d 0 = J ( 0 )

d i +1 = J ( i +1 ) + i d i i0
(3.39)
J ( T
i +1 ) Qd i
com i =
dTi Qd i

3.6.7 Problemas no quadrticos Mtodo de Polak-Ribire (PR)

As derivaes das equaes anteriores foram feitas supondo que estamos tratando de
problemas quadrticos, o que nem sempre verdade. Para que possamos adaptar as equaes
anteriores a problemas no-quadrticos, a matriz Q deve ser aproximada pela matriz hessiana
calculada no ponto i. A aplicao destes algoritmos a problemas no quadrticos envolve um
procedimento de busca unidimensional do passo de ajuste (taxa de aprendizagem) e a
aproximao do parmetro utilizando informaes de primeira ordem (gradientes).
Uma destas aproximaes dada pelo mtodo de Polak-Ribire. O algoritmo para este
mtodo torna-se ento:

3.6.7.1 Algoritmo
O algoritmo utilizado neste mtodo est resumido abaixo:
1. Atribua um valor inicial 0 P para o vetor de parmetros e um

valor arbitrariamente pequeno para a constante > 0


2. Calcule J(0), faa d0 = -J(0) e i = 0
3. Enquanto a condio de parada no for satisfeita, faa:
3.1. Utilize um procedimento de busca unidimensional para
encontrar um i que seja soluo tima do problema

min J ( i + idi ) e faa i +1 = i + idi


i ( 0,1]

3.2. Calcule gi = -J(i);

72
gTi+1 (g i +1 g i )
3.3. Se (i mod P 0), faa d i +1 = g i + i d i , onde i =
g Ti g i

3.4. Seno, faa: di = g i

3.5. Faa i = i + 1

A Figura 3.10 apresenta a curva de decaimento do erro quando o mtodo de gradiente


conjugado PR aplicado ao problema do Exemplo 3.1.
1
PR
10

0
10

SSE

-1
10

-2
10
0 2 4 6 8 10 12 14 16 18 20
pocas

Figura 3.10: Comportamento do mtodo PR durante a minimizao do funcional de erro do problema


XOR apresentado no Exemplo 3.1.

3.6.8 Problemas no quadrticos Mtodo de Fletcher & Reeves (FR)

um mtodo de direes conjugadas, assim como o de Polak-Ribire, mas diferencia-


se pela forma como determinado o parmetro do passo 3.3 do algoritmo anterior.

3.6.8.1 Algoritmo
O algoritmo utilizado neste mtodo est resumido abaixo:
1. Atribua um valor inicial 0 P para o vetor de parmetros e um

valor arbitrariamente pequeno para a constante > 0


2. Calcule J(0), faa d0 = -J(0) e i = 0
3. Enquanto a condio de parada no for satisfeita, faa:

73
3.1. Utilize um procedimento de busca unidimensional para
encontrar um i que seja soluo tima do problema

min J ( i + idi ) e faa i +1 = i + idi


i ( 0,1]

3.2. Calcule gi = -J(i);


2
g i +1
3.3. Se (i mod P 0), faa d i +1 = g i + i d i , onde i = 2
gi

3.4. Seno, faa: di = g i

3.5. Faa i = i + 1

A Figura 3.11 apresenta a curva de decaimento do erro quando o mtodo de FR


aplicado ao problema do Exemplo 3.1.

1
FR
10

0
10

SSE

-1
10

-2
10
0 5 10 15 20 25
pocas

Figura 3.11: Comportamento do mtodo FR durante a minimizao do funcional de erro do problema


XOR apresentado no Exemplo 3.1.

3.6.9 Mtodo do Gradiente Conjugado Escalonado (SCG)

Os mtodos de segunda ordem apresentados at agora utilizam um procedimento de


busca unidimensional para a determinao da taxa de aprendizagem. A busca unidimensional
envolve um grande nmero de avaliaes da funo ou de sua derivada, tornando o processo
bastante custoso do ponto de vista computacional. MOLLER (1993) introduz uma nova
variao no algoritmo de gradiente conjugado (Gradiente Conjugado Escalonado SCG), que

74
evita a busca unidimensional a cada iterao utilizando uma abordagem de Levenberg-
Marquardt cujo objetivo fazer um escalonamento do passo de ajuste .
Quando no estamos tratando com problemas quadrticos a matriz Q deve ser
aproximada pela matriz hessiana calculada no ponto i, e a equao (3.37) torna-se:

dTj J ( j)
*
j = . (3.40)
dTj 2 J ( j )d j

A idia utilizada por Moller estimar o termo denominado sj = 2 J ( j )d j do

mtodo do gradiente conjugado por uma aproximao da forma:

J ( j + j d j ) J ( j )
s j = 2 J ( j )d j , 0< j << 1 . (3.41)
j

A aproximao tende, no limite, ao valor de 2 J ( j )d j . Combinando esta estratgia

com a abordagem de gradiente conjugado e Levenberg-Marquardt, obtm-se um algoritmo


diretamente aplicvel ao treinamento de redes MLP. Isso feito da seguinte maneira:

J ( j + j d j ) J ( j )
sj = + jd j .
(3.42)
j

Seja j o denominador da equao (3.40), ento utilizando a expresso (3.41), resulta:

j = dTj s j (3.43)

O ajuste do parmetro j a cada iterao e a anlise do sinal de j permitem determinar


se a Hessiana definida-positiva ou no.
A aproximao quadrtica J quad ( ), utilizada pelo algoritmo, nem sempre representa

uma boa aproximao para J(), uma vez que j escalona a matriz hessiana de maneira
artificial. Um mecanismo para aumentar e diminuir j necessrio para fornecer uma boa
aproximao, mesmo quando a matriz for definida-positiva. Defina:
J( j ) J( + dj)
j =
j j

J ( j ) J quad ( j d j )
[J ( ]
, (3.44)
2 ) J( + dj)
=
j j j j
2
j

onde j = dTj J ( j).

75
O termo j representa uma medida da qualidade da aproximao J quad ( ) em relao
a J( j + j d j ) no sentido de que quanto mais prximo de 1 estiver j, melhor a

aproximao. O algoritmo do gradiente conjugado escalonado resultante apresentado a


seguir.

3.6.9.1 Algoritmo
O algoritmo utilizado neste mtodo est resumido abaixo:
1. Escolha um vetor de parmetros inicial 0 e escalares 0 < << 1

e 0 = 0;
2. Faa: p0 = r0 = -J(0); j = 0; sucesso = 1

3. Se sucesso = 1, calcule a informao de 2 ordem: j =


a

dj

J ( j + j d j ) J ( j ) T
sj = + jd j ; j = pj sj
j

4. Se j 0, ento faa a matriz hessiana definida positiva:


= 2 ; j 2
N
= +( N
j) dj ; = N
j j 2 j j j j j
d j

5. Calcule a taxa de ajuste:


T
j = p j r j; j = j / j

6. Calcule o parmetro de comparao:

j =
2 j [J ( j ) J ( j + jd j )]
2
j

7. Se j 0 (o erro pode ser reduzido), ento atualize o vetor de


pesos:
j+1 = j + jdj; rj+1 = -J(j+1);

8. Se (j mod P) = 0, ento reinicialize o algoritmo:


pj+1 = rj+1.
Seno, defina uma nova direo conjugada:

76
2
r j +1 r Tj+1r j
j = ; pj+1 = rj+1 + jpj
j

9. Se j 0.75, ento faa j = 0.5j.

10. Se j 0.25, ento faa j = 4j.


Seno, uma reduo no erro no possvel: sucesso = 0;
11. Se rj+1 > , onde 0, ento faa: j = j+1; retorne ao passo 3.

12. Seno, o procedimento de ajuste chegou ao fim e j+1 o ponto

de mnimo.

3.6.9.2 Clculo Exato da Informao de Segunda Ordem


O elevado custo computacional associado ao clculo e armazenagem da hessiana
J() a cada iterao pode ser reduzido drasticamente aplicando-se os resultados de
2

PEARLMUTTER (1994). Alm de permitir o clculo exato da informao de segunda ordem, o


custo computacional associado da mesma ordem que o exigido para o clculo da informao
de primeira ordem.
Utilizando um operador diferencial possvel calcular exatamente o produto entre a
matriz 2J() e qualquer vetor desejado, sem a necessidade de se calcular e armazenar a
matriz 2J(). Este resultado de grande valia para os mtodos de gradiente conjugado, em
particular para o gradiente conjugado escalonado de Moller, onde a hessiana 2J() aparece
invariavelmente multiplicada por um vetor.
Expandindo o vetor gradiente J() em torno de um ponto P resulta:

J ( + ) = J ( ) + 2 J ( + O ( ),
.
2
(3.45)
onde representa uma pequena perturbao. Escolhendo = av, com a uma constante
positiva prxima de zero e v P um vetor arbitrrio, possvel calcular 2J()v como
segue:

2 J ( )v =
1
a
[ ( )]
J ( + av ) J ( ) + O a 2 =
J ( + av ) J ( )
a
+ O (a ) . (3.46)

Tomando o limite quando a 0,


J ( + av ) J ( )
2 J ( ) v = lim = J ( + av) a = 0 . (3.47)
a 0 a a
Portanto, definindo um operador diferencial

77

v {f ( )}= J ( + av) a =0 . (3.48)
a
possvel aplic-lo a todas as operaes realizadas para se obter o gradiente,
produzindo
v {J ( )} = 2 J ( )v e v { } = v (3.49)
Por ser um operador diferencial, v() obedece as regras usuais de diferenciao. A
aplicao deste operador nas equaes que fazem a retropropagao do erro nos algoritmos
das redes MLP torna possvel o clculo exato da informao de segunda ordem que
diretamente aplicvel aos mtodos de gradiente conjugado.

3.6.9.3 Gradiente Conjugado Escalonado Modificado (SCGM)


Neste algoritmo, as principais mudanas em relao ao algoritmo anterior so:
Passo 1: no necessrio definir o parmetro .
Passo 3: sj no aproximado pela equao (3.42), mas calculado pela expresso
(3.50) a seguir:
s j = 2 J ( j )d j + j dj (3.50)
A Figura 3.12 mostra a curva de decaimento do erro quando o mtodo do gradiente
conjugado escalonado com clculo exato da informao de segunda ordem aplicado ao
problema do Exemplo 3.1. Verifica-se que o algoritmo possui um desempenho quase
comparvel ao mtodo de LM.
1
SCGM
10

0
10

SSE

-1
10

-2
10
0 2 4 6 8 10 12
pocas

Figura 3.12: Comportamento do mtodo SCGM durante a minimizao do funcional de erro do


problema XOR apresentado no Exemplo 3.1.

78
3.7 Mtodos Empricos

Mtodos heursticos, ou empricos, so aqueles geralmente verificados atravs de


experimentos, mas que no possuem formalizao matemtica adequada.
Neste item sero apresentadas algumas modificaes empricas que podem ser feitas no
algoritmo padro com o objetivo de melhorar seu desempenho. Dentre estas modificaes
sero vistos o coeficiente de momento de segunda ordem, o ganho da funo de ativao, a
normalizao dos dados de entrada e sua importncia e a reinicializao do treinamento. Por
ltimo ser apresentado o algoritmo Quickprop.

3.7.1 Momento de Segunda Ordem

Como visto na equao (3.5), a incluso de um termo de momento na expresso de


atualizao dos parmetros da rede, permite um aumento na velocidade de convergncia do
algoritmo.
Uma maneira simples de aplicar um termo de momento de segunda ordem ao
algoritmo de backpropagation foi apresentado por PEARLMUTTER (1992). A modificao
regra de atualizao apresentada pela equao (3.5), inclui o decaimento do vetor de
parmetros considerando duas iteraes anteriores, ou seja:

i +1 = i + di + i 1 + i2 , i0 (3.51)
1
O autor recomenda um valor de = .
3

3.7.2 Variao do Ganho da Funo de Ativao

THIMM et. al. (1996) provam que variar o ganho da funo de ativao equivalente a
variar a taxa de aprendizagem junto ao vetor de parmetros ajustveis . Isto simplifica a
regra de aprendizagem eliminando um destes parmetros.
A funo de ativao geralmente escolhida para os neurnios de uma rede do tipo
MLP a funo logstica ou sigmide:

f ( x) = (3.52)
1 + e x

que abrange o intervalo (0,]. Outras escolhas comuns para a funo de ativao f(.) so a
tangente hiperblica, tanh(x), cujos valores de sada pertencem ao intervalo (-, ) e a

79
funo Gaussiana e ( x ) com intervalo (0,]. O parmetro chamado de ganho, e . de
2

decaimento (slope) da funo de ativao.


Duas redes M e N de mesma topologia, cujas funes de ativao f(), ganho , taxa de
aprendizagem , e vetor de parmetros (pesos e limiares) , esto relacionados como na
Tabela 3.1, so equivalentes sob o ponto de vista do algoritmo back-propagation, o que
implica que quando os mesmos padres de entrada forem apresentados as redes, ambas
fornecero as mesmas sadas para condies iniciais idnticas. Isso significa que um aumento
do ganho por um fator pode ser compensado dividindo-se o vetor de parmetros inicial por
e a taxa de aprendizagem por 2.

Tabela 3.1: Relao entre funo de ativao, ganho, pesos e taxa de aprendizagem.

RNA M RNA N
Funo de ativao f (x ) f ( x) = f ( x)
Ganho =1 =
Taxa de aprendizagem = 2

Pesos =

3.7.3 Normalizao dos Dados de Entrada

A influncia dos dados de entrada no treinamento de uma RNA pode ser vista da
seguinte maneira: se duas entradas, conectadas mesma unidade, possuem intervalos de
variao muito diferentes, os pesos ligados a estas unidades devem ser atualizados de maneira
equalizada. Este processo de adaptao dinmica dos intervalos pode ser muito demorado do
ponto de vista computacional quando h uma variao grande nos intervalos de valores das
diferentes entradas (JOOST & SCHIFFMAN, 1993).
Estes problemas podem ser eliminados utilizando-se uma simples transformao linear
nos padres de entrada, resultando em uma normalizao:
xi , n x i
x i, n = , (3.53)
i

80
1

N
xi,n denota o i-simo componente do n-simo vetor de entrada xn; x i = xi , n
N n =1

1

N
corresponde mdia e i = =
( xi , n x i , n ) 2 o desvio padro dos dados de
N 1 n 1

entrada originais.
Outro tipo de normalizao possvel o escalonamento dos dados no intervalo
[-1.0, 1.0] pela expresso:

xi , n x[min]
i
xi , n = 2 1, (3.54)
i
x[max] x[min]
i

i i
onde x[min] o menor valor do i-simo vetor de entrada e x[max] o maior valor do i-simo

vetor de entrada.
importante mencionar que a normalizao imposta aos dados um processo
reversvel.

3.7.4 Reinicializao do Treinamento

O procedimento de reinicializao do treinamento pode ser efetuado em dois casos


distintos:
Primeiro: se uma rede no capaz de resolver determinado problema em 100%
dos casos (podendo estar presa em um mnimo local, por exemplo) ento existe um
ponto do treinamento depois do qual o esforo desperdiado (FAHLMAN, 1988).
HAMEY (1992) apresenta algumas medidas de determinao da parte do
treinamento na qual devemos fazer a reinicializao.
Segundo: quando estamos utilizando mtodos de segunda ordem como mtodos de
gradiente conjugado e mtodos de quase-Newton, deve ser feita a reinicializao
do treinamento a cada P iteraes, pois grande parte destes mtodos so deduzidos
considerando-se problemas quadrticos. Testes realizados com vrios algoritmos
de segunda ordem mostraram que para redes com grandes dimenses um
comportamento mais homogneo da curva de erro (monotonicamente decrescente
sem a existncia de grandes plats) apresentado quando o processo de
reinicializao feito em um nmero menor do que P iteraes. Este resultado
tambm comentado por SCHEWCHUK (1994) e HAGAN (1994).

81
3.7.5 Mtodo Quickprop (QUICK)

Como ltimo algoritmo de treinamento citado neste captulo temos o algoritmo


Quickprop de FAHLMAN (1988) um dos mais conhecidos de todos. Fahlman apresenta uma
nova lei de ajuste para o vetor de parmetros , adicionando o termo de momento equao
(3.5), mas calculando-o de maneira mais elaborada pela equao (3.55).
J ( i )
= (3.55)
J ( i 1 ) J ( i )
i

Fahlman tambm introduz um fator de crescimento mximo () que utilizado como


um limite superior para a variao do conjunto de pesos; evitando assim, grandes oscilaes.

3.7.5.1 Algoritmo
O algoritmo utilizado neste mtodo est resumido abaixo:
1. Atribua um valor inicial 0 para o vetor de parmetros e um
P

valor arbitrariamente pequeno para uma constante > 0


2. Defina valores para o parmetro
3. Enquanto a condio de parada no for satisfeita, faa:
3.1. Calcule i pela expresso (3.55)

3.2. i +1 = i J ( i ) + i
3.3. Faa i = i + 1

Exemplo 3.2:
Para sintetizar o comportamento geral dos mtodos estudados neste captulo, considere

o problema de minimizar a funo f ( x1 , x2 ) = ( x1 2) 4 + ( x1 2 x2 ) 2 , cujo mnimo (fmin = 0)


encontra-se claramente no ponto (2.0, 1.0). Sero aplicados 4 mtodos para a soluo deste
problema, os mtodos do gradiente (GRAD), Newton (MN), gradiente conjugado (GC) e
quase-Newton (DFP). O enfoque dado neste exemplo ser o de otimizao no-linear irrestrita
(BAZARAA et. al., 1993).
Para verificar a evoluo dos processos de otimizao, listaremos os resultados dos
processos de busca do mnimo na forma de uma seqncia, e em seguida apresentaremos um
grfico com o comportamento do algoritmo. A seqncia de pontos ir mostrar a evoluo do
vetor xi (xi = (x1i,x2i)), da norma do gradiente ||f(xi)|| avaliada a cada iterao i e do tamanho
do passo i. O nmero total de iteraes, e o valor da funo ao final do processo tambm

82
sero apresentados. O valor do parmetro desejado = 0.001. O procedimento de busca
unidimensional do passo utilizado foi o mtodo da seo urea que ser abordado no
prximo captulo.

1. Mtodo do Gradiente (GRAD)


A Figura 3.13 (a) e (b) apresenta os resultados deste mtodo para as condies iniciais (a)
e (b), respectivamente.
Caso (a) (x1, x2) = (3, 0)
Tomando o ponto acima como ponto de partida do algoritmo, a seqncia de pontos gerada
apresentada na Tabela 3.2. Devido a grande quantidade de pontos gerados pelas iteraes
sero suprimidos alguns pontos da seqncia.

Tabela 3.2: Resumo da seqncia de pontos gerada para o mtodo


do gradiente com condio inicial (x1, x2) = (3, 0).

Iterao i (x1i x2i) ||f(xi)|| i


01) (2.118755 1.057494) 15.62049 0.088125
05) (2.106898 1.052058) 0.005116 1.117497
10) (2.097000 1.048790) 0.011799 0.108111
15) (2.087662 1.043047) 0.002720 1.186256
20) (2.081826 1.041087) 0.007121 0.108111
25) (2.075885 1.037430) 0.001730 1.216730
30) (2.071957 1.036096) 0.004841 0.108111
35) (2.067767 1.033516) 0.001217 1.242158
40) (2.064903 1.032538) 0.003562 0.108111
41) (2.063969 1.031676) 0.001018 1.247395
42) (2.063723 1.031943) 0.003365 0.108111
43) (2.063723 1.031943) 0.000964 0.108111
Nmero total de iteraes: 43.
Argmin (x*): (2.063723 1.031943).
Mnimo da funo f(x*): 0.000017.

83
Caso (b) (x1, x2) = (0, 0)
Tomando o ponto acima como ponto de partida do algoritmo, a seqncia de pontos gerada
apresentada na Tabela 3.3. Devido a grande quantidade de pontos gerados pelas iteraes
sero suprimidos alguns pontos da seqncia.

Tabela 3.3: Resumo da seqncia de pontos gerada para o mtodo


do gradiente com condio inicial (x1, x2) = (0, 0).

Iterao i (x1i x2i) ||f(xi)|| i


1) (1.162006 0.000000) 32.000000 0.036313
10) (1.714274 0.857222) 0.184362 0.125900
20) (1.815807 0.907925) 0.049324 0.125901
30) (1.855242 0.927633) 0.023960 0.125900
40) (1.877256 0.938634) 0.014590 0.125901
50) (1.891694 0.945851) 0.010028 0.125900
60) (1.902062 0.951034) 0.007402 0.125901
70) (1.909967 0.954987) 0.005767 0.125900
80) (1.916239 0.958121) 0.004633 0.125901
90) (1.921373 0.960689) 0.003837 0.125900
100) (1.925674 0.962838) 0.003238 0.125901
110) (1.929344 0.964673) 0.002784 0.125900
120) (1.932523 0.966263) 0.002425 0.125900
130) (1.935311 0.967656) 0.002134 0.125901
139) (1.937310 0.968656) 0.000989 0.125901
Nmero de iteraes 139.
Argmin (x*): (1.937310 0.968656).
Mnimo da funo f(x*): 0.000015.

5 5

4 4

3 3
X2

X2

2 2

1 1

0 0
0 1 2 3 4 5 0 1 2 3 4 5
X1 X1

(a) (b)

Figura 3.13: Comportamento iterativo do mtodo do gradiente. (a) Ponto inicial (x1, x2) = (3, 0). (b)
Ponto inicial (x1, x2) = (0, 0).

84
2. Mtodo de Newton (MN)
A Figura 3.14 (a) e (b) apresenta os resultados deste mtodo para a condio inicial (a) e
(b), respectivamente.
Caso (a) (x1, x2) = (3, 0)
Tomando o ponto acima como ponto de partida do algoritmo, a seqncia de pontos gerada
apresentada na Tabela 3.4.

Tabela 3.4: Seqncia de pontos gerada para o mtodo de


Newton com condio inicial (x1, x2) = (3, 0).

Iterao i (x1i x2i) ||f(xi)|| i


01) (2.659572 1.361712) 15.620499 1.021284
02) (2.212482 1.073243) 1.051533 2.033548
03) (2.135875 1.070630) 0.314179 1.081591
04) (2.060011 1.028188) 0.021551 1.675013
05) (2.036949 1.018752) 0.016659 1.152874
06) (2.018455 1.009088) 0.002401 1.501576
07) (2.011006 1.005532) 0.001258 1.210975
08) (2.011006 1.005532) 0.000261 1.210975
Nmero de iteraes 8.
Argmin (x*): (2.011006 1.005532).
Mnimo da funo f(x*) 0.000000.
Caso (b) (x1, x2) = (0, 0)
Tomando o ponto acima como ponto de partida do algoritmo, a seqncia de pontos gerada
apresentada na Tabela 3.5.

Tabela 3.5: Resumo da seqncia de pontos gerada para o mtodo


de Newton com condio inicial (x1, x2) = (0, 0).

Iterao i (x1i x2i) ||f(xi)|| i


01) (1.999842 0.999921) 32.000000 2.999763
02) (1.999842 0.999921) 0.000000 2.999763
Nmero de iteraes 2.
Argmin (x*): (1.999842 0.999921).
Mnimo da funo f(x*) 0.000000.

85
4 4

3.5 3.5

3 3

2.5 2.5
X2

X2
2 2

1.5 1.5

1 1

0.5 0.5

0 0
0 1 2 3 4 0 1 2 3 4
X1 X1

(a) (b)

Figure 3.14: Comportamento iterativo do mtodo de Newton. (a) Ponto inicial (x1, x2) = (3, 0).
(b) Ponto inicial (x1, x2) = (0, 0).

3. Mtodo do Gradiente Conjugado (GC)


A Figura 3.15 (a) e (b) apresenta os resultados deste mtodo para as condies iniciais (a)
e (b), respectivamente.
Caso (a) (x1, x2) = (3, 0)
Tomando o ponto acima como ponto de partida do algoritmo, a seqncia de pontos gerada
apresentada na Tabela 3.6.

Tabela 3.6: Seqncia de pontos gerada para o mtodo do


gradiente conjugado com condio inicial (x1, x2) = (3, 0).

Iterao i (x1i x2i) ||f(xi)|| i


1) (2.118755 1.057494) 15.620499 00.088125
2) (2.117214 1.059125) 00.020722 00.108111
3) (2.029036 1.013706) 00.006022 15.822610
4) (2.028702 1.014355) 00.007304 00.099835
5) (2.028702 1.014355) 00.000085 00.099835
Nmero de iteraes 5.
Argmin (x*): (2.028702 1.014355).
Mnimo da funo f(x*) 0.000001.
Caso (b) (x1, x2) = (0, 0)
Tomando o ponto acima como ponto de partida do algoritmo, a seqncia de pontos gerada
apresentada na Tabela 3.7. Devido a grande quantidade de pontos gerados pelas iteraes
sero suprimidos alguns pontos da seqncia.

86
Tabela 3.7: Resumo da seqncia de pontos gerada para o mtodo
do gradiente conjugado com condio inicial (x1, x2) = (0, 0).

Iterao i (x1i x2i) ||f(xi)|| i


1) (1.162006 0.000000) 32.000000 00.036313
2) (1.262722 0.663997) 04.648119 00.142856
3) (1.649854 0.748468) 01.753171 00.211096
4) (1.635692 0.813055) 00.626202 00.105591
5) (1.921681 0.967076) 00.178406 01.750728
6) (1.924363 0.962096) 00.056659 00.099835
7) (1.953601 0.975548) 00.001548 20.761041
8) (1.953139 0.976552) 00.011025 00.100156
9) (1.953139 0.976552) 00.000369 00.100156
Nmero de iteraes 9.
Argmin (x*): (1.953139 0.976552).
Mnimo da funo f(x*) 0.000005.

4 4

3.5 3.5

3 3

2.5 2.5
X2

X2

2 2

1.5 1.5

1 1

0.5 0.5

0 0
0 1 2 3 4 0 1 2 3 4
X1 X1

(a) (b)

Figura 3.15: Comportamento iterativo do mtodo do gradiente conjugado. (a) Ponto inicial
(x1, x2) = (3, 0). (b) Ponto inicial (x1, x2) = (0, 0).

4. Mtodo de Davidon-Fletcher-Powell (DFP)


A Figura 3.16 (a) e (b) apresentar os resultados deste mtodo para a condio inicial (a) e
(b), respectivamente.
Caso (a) (x1, x2) = (3, 0)
Tomando o ponto acima como ponto de partida do algoritmo, a seqncia de pontos gerada
apresentada na Tabela 3.8.

87
Tabela 3.8: Seqncia de pontos gerada para o mtodo de
Davidon-Fletcher-Powell com condio inicial (x1, x2) = (3,
0).
Iterao i (x1i x2i) ||f(xi)|| i
01) (2.118755 1.057494) 15.620499 0.088125
02) (2.120294 1.055865) 0.020722 0.119304
03) (2.098496 1.050979) 0.041875 1.304161
04) (2.053698 1.025661) 0.014191 5.011069
05) (2.042931 1.021754) 0.010917 1.973799
06) (2.022741 1.011141) 0.002456 4.392803
07) (2.018472 1.009284) 0.002072 1.834248
08) (2.018472 1.009284) 0.000423 1.834248
Nmero de iteraes 8.
Argmin (x*): (2.018472 1.009284).
Mnimo da funo f(x*) 0.000000.
Caso (b) (x1, x2) = (0, 0)
Tomando o ponto acima como ponto de partida do algoritmo, a seqncia de pontos gerada
apresentada na Tabela 3.9.

Tabela 3.9: Resumo da seqncia de pontos gerada para o mtodo


de Davidon-Fletcher-Powell com condio inicial (x1, x2) = (0, 0).
Iterao i (x1i x2i) ||f(xi)|| i
01) (1.162006 0.000000) 32.000000 0.036313
02) (2.440653 1.103978) 4.648119 0.240732
03) (2.618004 1.063732) 1.232338 0.209218
04) (2.337061 1.188788) 2.748911 1.053625
05) (2.235524 1.100213) 0.177395 1.608439
06) (2.163386 1.088226) 0.186294 2.613299
07) (2.107974 1.050506) 0.052982 2.845322
08) (2.076246 1.039554) 0.033693 2.549791
09) (2.049940 1.024219) 0.012109 2.970116
10) (2.035480 1.018045) 0.006954 2.518745
11) (2.023083 1.011379) 0.002658 3.014445
12) (2.016494 1.008312) 0.001479 2.487515
13) (2.016494 1.008312) 0.000573 2.487515
Nmero de iteraes 13.
Argmin (x*): (2.016494 1.008312).
Mnimo da funo f(x*) 0.000000.

88
6 6

5 5

4 4
X2

X2
3 3

2 2

1 1

0 0
0 1 2 3 4 5 6 0 1 2 3 4 5 6
X1 X1

(a) (b)

Figura 3.16: Comportamento iterativo do mtodo de Davidon-Fletcher-Powell. (a) Ponto inicial (x1,
x2) = (3, 0). (b) Ponto inicial (x1, x2) = (0, 0).

Comentrios sobre o Exemplo 3.2:


O mtodo do gradiente geralmente funciona bem durante as primeiras iteraes do
processo de otimizao, dependendo da condio inicial. Entretanto, quando um ponto
estacionrio (de mnimo) est prximo, o mtodo comporta-se de maneira pobre, tomando
passos pequenos e quase ortogonais. Este fenmeno, conhecido como zigzag, pode ser visto
na Figura 3.13(b).
O problema abordado possui um nico ponto de mnimo e caractersticas quadrticas,
fazendo com que o desempenho do mtodo de Newton seja surpreendente. A convergncia
para o ponto timo em uma nica iterao pode ser vista na Figura 3.14(a). Mesmo com taxas
de convergncia elevadas, este mtodo ainda pouco recomendvel devido ao grande esforo
computacional despendido na construo e inverso da matriz hessiana.
Os mtodos de gradiente conjugado possuem desempenho muito superior aos mtodos
de primeira ordem a um custo computacional baixo, o que faz com que sejam preferidos na
soluo de problemas de grande escala (problemas que envolvem um grande nmero de
parmetros a serem ajustados).
Os mtodos de quase-Newton possuem convergncia superior aos mtodos de
primeira ordem a um custo computacional entre o mtodo de Newton e o de gradiente
conjugado. Para problemas quadrticos geram direes conjugadas. Estes mtodos tambm
so pouco recomendveis para problemas de grande escala.

89