Você está na página 1de 75

Criado por Renato Vicente 27/01/06

1

Redes Neurais para Inferncia Est at st ica
-FEA/USP Jun/2002
Renato Vicente






Programa

1. Introduo: Redes Neurais, Matlab e Netlab
2. Algoritmos de Otimizao
3. Estimao de Densidades de Probabilidade
4. Redes Neurais com uma Camada
5. Redes Neurais Multicamada
6. Amostragem
7. Tcnicas Bayesianas

Opcionalmente:

8. Radial Basis Functions
9. Reduo Dimensional e Visualizao de dados
10. Processos Gaussianos

Referncias Bsicas:

Using Matlab, The MathWorks Inc. (2000);
Bishop, C.M., Neural Networks for Pattern Recognition, Oxford University
Press, Oxford, 1995;
Nabney, I.T., Netlab: Algorithms for Pattern Recognition, Springer,
London, 2002.


rvicente@usp.br
Criado por Renato Vicente 27/01/06
2
Introduo: Redes Neurais, Matlab e Netlab

Redes Neurais

Rede Neural um nome fantasia para modelos de inferncia multidimensionais e no-
lineares. O grande apelo destes modelos est em sua capacidade de aprender, generalizar
ou extrair regras automaticamente de conjuntos de dados complexos.

No caso mais simples, temos um conjunto de pares entrada-sada
( ) ( )
1
{( , )}
n n p
n
D

x t e
queremos modelar a funo

( , ) t y y x w que produz melhores estimativas para pares


fora do conjunto D, dados vetores x. Este problema denominado regresso. A Rede
Neural consiste simplesmente de uma escolha particular para a famlia de funes
( , ) y x w parametrizada por w, denominados pesos sinpticos.

A importncia das Redes Neurais neste contexto est no fato delas representarem um
esquema bastante genrico para a representao de famlias de funes no-lineares com
vrias variveis de entrada e sada e controladas por um certo nmero de parmetros
ajustveis.

H uma srie de famlias, ou arquiteturas, clssicas para Redes Neurais que so
representadas graficamente.

Perceptron Linear Perceptron No-linear


Rede Multicamada

1 0
1 1
n N
l j j
l j
y g u g w x w

| ` | `
+


. , . ,


0
1
N
j j
j
y g w x w

| `
+

. ,

1 x
0
1
N
j j
j
y w x w

1 x
Criado por Renato Vicente 27/01/06
3

possvel
1
mostrar que Redes Neurais Multicamada com um nmero N suficientemente
grande de unidades na mamada interna (ou escondida) podem representar qualquer
funo com erro menor que ( ) N . Uma maneira simples e direta para percebermos este
fato ilustrada abaixo:



Na figura uma funo arbitrria g(z) representada por uma soma de funes degrau
( )
i
z z sobre uma partio da reta
0 1
{ , ,..., }
N
P z z z . A medida que refinamos a
partio fazendo
1
( )
i i
z z N
+
< , reduzimos o erro ( ) N .


Quando as sadas consistem de classes discretas {1,..., } t c o problema de inferncia
denominado classificao.

1
Hornik, K. (1991). Approximation capabilities of multilayer feedforward networks. Neural Networks 4 (2),
251-257.
( ) x
0 x
0
0 x
0
1 0 1
0
( ) ( ) { } ( )
N
i i i
i
g z g z g g z z
+

Criado por Renato Vicente 27/01/06


4
Mat lab

Matlab (Matrix Laboratory) uma linguagem para computao cientfica com estrutura
otimizada para a realizao de operaes com matrizes. O ambiente Matlab composto
por uma srie de funes pr-definidas para clculo, leitura e escrita de arquivos e
visualizao. Este conjunto de funes pode ser facilmente extendido por toolboxes
dedicadas. H toolboxes para finanas, tratamento de sinais, econometria e redes neurais.

Para ilustrar a forma como matrizes podem ser tratadas pelo Matlab utilizamos o
quadrado mgico de Dhrer que utilizado como exemplo no Get Start que acompanha
o software. Na linha de comando do Matlab entramos:

> A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]

A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1


Aps este comando a matriz A fica armazenada no W orkspace do Matlab conforme
ilustrado abaixo.





Criado por Renato Vicente 27/01/06
5
As propriedades do quadadro mgico podem ser analisadas utilizando funes do Matlab.
Por exemplo, a funo abaixo soma cada uma das linhas da matriz A.

> sum (A)

ans =
34 34 34 34

Na ausncia de definio de varivel de sada o Matlab aloca o resultado no W orkspace
sob o nome ans. Assim ao entrarmos
> ans

ans =
34 34 34 34

Se quisermos somar as colunas ao invs das linhas temos que transpor a matriz A, isso
feito simplesmente pelo comando

>A'

ans =
16 5 9 4
3 10 6 15
2 11 7 14
13 8 12 1

Assim podemos realizar a soma das colunas entrando

>sum(A')'

ans =
34
34
34
34

Novamente o resultado 34. Podemos tambm calcular a soma da diagonal, ou trao,
de duas formas:

> diag (A)

ans =
16
10
7
1
Criado por Renato Vicente 27/01/06
6

> sum (diag(A))

ans =
34

Ou

> trace(A)

ans =
34

Curiosamente continuamos obtendo 34. Somemos agora a antidiagonal da matriz A, para
isso podemos utilizar a funo fliplr para enviarmos cada coluna da esquerda para a
direita da matriz A.

> fliplr (A)

ans =
13 2 3 16
8 11 10 5
12 7 6 9
1 14 15 4

E a seguir

> sum(diag(fliplr(A)))

ans =
34

As somas so sempre iguais a 34 pois quando dividimos nmeros inteiros de 1 a 16 em
quatro grupos com somas iguais temos:

> t=1:1:16

t =
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

> sum(t)/4

ans =
34

Aqui utilizamos ":" para gerarmos nmeros de 1 a 16 em passos de 1.




Criado por Renato Vicente 27/01/06
7
O Matlab possui uma funo especfica para a criao de quadrados mgicos de qualquer
dimenso, esta funo

> B=magic(4)

B =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1

possvel reordenar as colunas de B para reobtermos A utilizando o comando

> B(:,[1 3 2 4])

ans =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1


Net lab

O Netlab uma toolbox para Redes Neurais para Matlab disponibilizada gratuitamente
no site do Neural Computing Research Group da Univerisdade de Aston
(www.ncrg.aston.ac.uk). Esta toolbox toran a implementao de modelos baseados em
Redes Neurais muito simples. Os cdigos produzidos em Matlab podem ento ser
convertidos em executveis utilizando o Matlab Compiler. Como um primeiro contato
com o Netlab escreveremos sua verso para o clssico "Hello W orld".

Comeamos por gerar de um conjunto de dados fictcios para treinamento de nossa
Rede Neural. Para isso vamos supor que a funo que queremos inferir
( ) (2 ) f x sin x . No entanto, s temos acesso a uma verso corrompida por rudo
gaussiando desta funo assim, nosso conjunto de dados "gerado" da seguinte forma:
sin(2 )
~ (0,1)
n n n
n
t x
N

+
,
onde N(0,1) uma distribuio normal com mdia nula e varincia unitria.

No Matlab teremos

1 x= [0:1/ 19:1]' ;
2 ndata= size(x,1);
3 t= sin(2*pi*x) + 0.15*randn(ndata,1);

Criado por Renato Vicente 27/01/06
8
Aqui utilizamos alguns recursos novos. Utilizamos ao final de cada linha ";" , esta
instruo faz com que o Matlab omita resultados intermedirios dos clculos sendo
executados. A primeira instruo gera um vetor coluna x com 20 dimenses contendo
nmeros de 0 a 1 em intervalos de 1/ 19. Na linha 2 utilizamos a funo size(x,1)para
obtermos o tamnho em nmero de linhas do vetor coluna x, assim, se entrarmos:

> size(x)

ans =
20 1

Ou seja, o vetor x possui 20 linhas e 1 coluna, size(x,1)nos d o nmero de linhas,
enquanto size(x,2) nos d o nmero de colunas. Na linha 3 utilizamos a funo
randn(linhas, cols) para gerarmos um vetor de nmeros aleatrios independentes com
distribuio gaussiana com mdia nula e varincia unitria. De forma genrica esta
instruo pode ser empregada pra gerar matrizes aleatrias de qualquer tamanho.

> ran dn(5,5)

ans =
1.3808 0.3908 -1.3745 -1.3454 -0.7826
1.3198 0.0203 -0.8393 1.4819 -0.7673
-0.9094 -0.4060 -0.2086 0.0327 -0.1072
-2.3056 -1.5349 0.7559 1.8705 -0.9771
1.7887 0.2214 0.3757 -1.2090 -0.9640

No Matlab, podemos visualizar o vetor t e a funo original utilizando:

> plot(x,sin(2*pi*x),x,t,'k+');

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
-1.5
-1
-0.5
0
0.5
1
1.5


Gerado nosso conjunto fictcio de dados, podemos definir uma arquitetura de rede para
utilizarmos na inferncia. Assumiremos aqui que uma Rede Neural Multicamada com 3
Criado por Renato Vicente 27/01/06
9
unidades na camada escondida seja adequada. No Netlab podemos definir uma
arquitetura de rede em uma nica linha de comando.

4 net= mlp (1, 3, 1, ' linear' )

net =
type: 'mlp'
nin: 1
nhidden: 3
nout: 1
nwts: 10
actfn: 'linear'
w1: [-1.6823 -0.5927 0.1820]
b1: [-0.1300 -0.1185 -0.0827]
w2: [3x1 double]
b2: 0.2541

A funo m lp do Netlab cria uma estrutura que especifica completamente a arquitetura
e os parmetros iniciais da Rede Neural. Assim a rede possui nin=1 entrada, nhidden=3
unidades na camada interna, nout=1 sada e nwts=10 parmetros entre pesos sinpticos e
limiares. Os parmetros so iniciados em valores aleatrios. Graficamente teremos:


Cada unidade possui uma entrada extra denotada por uma seta que regula o lim iar de
disparo de cada um dos neurnios. Cada neurnio da camada escondida gerado pela
funo mlp implementa uma funo de transferncia sigmoidal do tipo tanh( )
j j
j
b w x +

.
J o neurnio da camada de sada implementa a funo de transferncia especificada na
funo mlp, no caso, uma funo linear. Assim, a arquitetura da Rede Neural que
utilizaremos representa a seguinte famlia de funes:

3
2 2 1 1
1
( , , ) tanh( )
l l l
l
y x b w b w x

+ +

w b .
O terceiro passo consiste no treinamento desta rede utilizando os dados fictcios
contidos no conjunto de treinamento. Para isso o Netlab utiliza a infra-estrutura de
algoritmos de otimizao do Matlab. Primeiro necessrio armazenar as configuraes
padro dos otimizadores do Matlab:
Criado por Renato Vicente 27/01/06
10
5 options= foptions;

A seguir personalizamos algumas destas opes:

6 options(1) = 0;

Este comando evita que os algoritmos de otimizao exibam na tela a evoluo passo a
passo da funo custo sendo minimizada.

7 options(14) =100;

Esta instruo limita em 100 passos os ciclos de otimizao. Agora podemos treinar nossa
rede utilizando a funo netoptdo Netlab:

8 [net, options] = netopt(net, options, x, t, 'scg');

Warning: Maximum number of iterations has been exceeded

A funo netoptotimiza os parmetros da rede definida pela estrutura net, utilizando as
opes de otimizador defindas em optionse utilizando os dados de entrada contidos no
vetor x e de sada contidos no vetor t. O ltimo argumento em netoptespecifica o tipo
de algoritmo a ser utilizado na otimizao, no exemplo, ' scg' significa scaled gradient. A
funo retorna uma mensagem de aviso indicando que a otimizao foi terminada devido
ao limite de 100 passos de otimizao.

Neste momento j obtivemos no W orkspace do Matlab uma estrutura net com
parmetros otimizados assim:

> net.w1

ans =
-5.2017 0.8701 1.5318

> net.w2

ans =
2.6033
1.0716
3.4209

> net.b1

ans =
2.4785 -0.6179 -0.3766

> net.b2

ans =
-0.7588
Criado por Renato Vicente 27/01/06
11
O quarto passo consiste em utilizarmos a rede recm treinada. Para isso utilizamos a
funo mlpfwd do Netlab, assim se quisermos saber qual seria a sada para a entrada
x=0.565, calculamos:

>mlpfwd(net,0.565)

ans =
-0.4632

Para analisarmos visualmente a qualidade de nosso modelo para os dados representamso
em um grfico previses para vrias entradas e o valor "real":

9 plotvals=[0:0.01:1]';
10 y=mlpfwd(net,plotvals);
11 plot(plotvals, y, 'ob',plotvals,sin(2*pi*plotvals));

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
-1
-0.5
0
0.5
1
1.5


Na figura acima as previses aparecem como circunferncias e o valor "real" como uma
linha cheia. A qualidade da previso ir depender da Rede Neural empregada e do nvel
de rudo dos dados.
Criado por Renato Vicente 27/01/06
12

Toda a seo de Matlab, utilizada neste problema pode ser armazenada na forma de um
arquivo .m como o exibido a seguir:




Exer ccios

(1) Escreva uma rotina ou funo em Matlab que calcule o erro quadrtico de predio da
Rede Neural Multicamada utilizada no exemplo acima no conjunto plotval.

2
( ) ( ) ( ; , )
j j
j
E f x y x ]
]

x w b .

(2) Treine Redes Multicamada com nmero de unidades na camada interna indo de
nhidden = 1 a nhidden = 30 e construa um grfico do erro de predio acima contra o
nmero de unidades na camada escondida. Qual a melhor escolha de arquitetura ?


Criado por Renato Vicente 10/06/02
13

Algorit mos de Ot imizao

Aprendizado em Redes Neurais: Um Problema de Ot imizao

Como j dissemos, o problema de regresso utilizando Redes Neurais consiste em
encontrar a funo

( , ) t y x w que produz melhores estimativas para a regra implcita


em um conjunto de exemplo de pares entrada-sada
( ) ( )
1
{( , )}
n n p
n
D

x t .

importante ressaltar que a tarefa central de uma regresso no a memorizao do
conjunto de exemplos D, mas sim a antecipao de pares novos (ou fora da amostra) que
poderiam ser gerados pelo mesmo processo que gerou D.

A descrio completa do processo gerador do conjunto D fornecida por uma densidade de
probabilidade conjunta ( , ) p x t sobre D. Esta densidade de probabilidade pode ser
decomposta da seguinte forma:
( , ) ( ) ( ) p p p x t t x x (1.1)

A densidade ( ) p t x conhecida como densidade condicional e representa a probabilidade
de uma sada t dada uma entrada com valor especfico x. J a densidade p(x) representa a
densidade incondicional de x que pode ser calculada a partir da densidade conjunta por
integrao (tamb conhecida como marginalizao):
( ) ( , ) p p d

x t x t (1.2)

Uma maneira pictrica de representarmos um modelo para o processo de gerao do
conjunto de dados D exibida na figura a seguir:



No modelo acima h dois processos estocsticos: o de gerao das entradas x descrito pela
densidade p(x) e o de gerao de sadas com rudo descrito pela densidade condicional
( ) p t x .


Processo
estocstico
de gerao
de entradas
x
Processo
determinstico de
gerao de sadas
y(x)
rudo

Sadas
corrompidas
por rudo
t
Criado por Renato Vicente 10/06/02
14
O aprendizado consiste em estimarmos a densidade condicional de probabilidade ( ) p t x
que melhor se ajuste ao conjunto D, possibilitando assim a predio de sadas possveis
para entradas x fora do conjunto D utilizado no treinamento.

Ao modelarmos os dados utilizando Redes Neurais supomos uma arquitetura de rede, o que
equivale escolha de uma famlia de funes ( ; ) y x w parametrizada por w. Por
conseqncia a densidade condicional ( ; ) p t x w tambm parametrizada por w. Para
encontrarmos qual o vetor w que melhor ajusta os dados em D, podemos maximizar a
funo de verossimilhana definida por:


1
1
( ) ( , ; )
( ; ) ( )
p
n n
n
p
n n n
n
L p
p p

w x t w
t x w x
(1.3)
Alternativamente, e com uma srie de vantagens prticas podemos definir uma funo erro
que deve ser minimizada no aprendizado:


1 1
( ) ln ( )
ln ( ; ) ln ( )
p p
n n n
n n
E L
p p




w w
t x w x
(1.4)
O segundo somatrio no depende do vetor de parmetros w, podendo ser ignorado na
minimizao do erro E(w):


1
( ) ln ( ; )
p
n n
n
E p

w t x w (1.5)

O aprendizado em uma Rede Neural consiste simplemente em uma tarefa de otimizao:
minimizar E(w) dado o modelo o conjunto de treinamento D e a densidade condicional
( ; ) p t x w .

Erro quadrt ico

Suponhamos que o processo real de produo de sadas t consista de uma perturbao
estocstica sobre uma funo determinstica h(x) assim:

( ) t h + x (1.6)

Suponhamos agora que a perturbao estocstica (rudo) seja distribuda de forma
normal:
Criado por Renato Vicente 10/06/02
15
2
2
2
1
( ) exp
2
2
p

| `


. ,
(1.7)
Se modelarmos a funo real com uma Rede Neural cuja arquitetura implemente a
famlia ( ; ) y x w a densidade condicional ser :

( )
2
2
2
( ; ) 1
( ) exp
2
2
t y
p t

]
]
]
x w
x . (1.8)

O erro ser ento :

( )
1
2
2
1
( ) ln ( ; )
1
( ; ) ln ln(2 )
2 2
p
n n
n
p
n
n
E p t
Np
t y Np


+ +

w x w
x w
(1.9)

Ao omitirmos as constantes e o fator de escala em frente ao somatrio teremos a
seguinte medida de erro de aprendizado:

( )
2
1
1
( ) ( ; )
2
p
n n
n
E t y

w x w , (1.10)
que a distncia Euclidiana clssica utilizada em regresses usuais.

Erro r-Minkowski

Se supusermos que o rudo distribudo segundo uma generalizao de uma
gaussiana:

( )
1
( ) exp
2 (1/ )
r
r r
p
r

(1.11)
O erro de treinamento tomar a seguinte forma:


( )
1
1
( ) ( ; )
2
p
r
n n
n
E t y

w x w . (1.12)

A figura abaixo representa densidades para vrios valores de r.
Criado por Renato Vicente 10/06/02
16


A escolha de diferentes valores para o parmetro r regula a sensibilidade do modelo a
valores com erros grandes, como pode ser visto na figura abaixo:


Conforme r aumenta maior a penalizao para desvios grandes que passam, por serem
pouco provveis, a ser considerados incompatveis com os dados.

Exerccios

(1) Generalize (1.10) para o caso de sadas t multidimensionais.
(2) Demonstre a expresso (1.12) para a funo erro r-Minkowski.
Criado por Renato Vicente 10/06/02
17
Ot imizao

H vrias tcnicas para otimizao de funes multidimensionais e no-lineares como a
funo erro que devemos minimizar. Genericamente um algoritmo iterativo de
otimizao no espao de parmetros w consiste em uma busca onde a cada passo so
determinados uma direo e um tamanho de passo:


1 t t t t

+
+ w w d (1.13)
Quanto mais informao sobre a geometria da superfcie definida pela funo erro E(w)
for utilizada mais eficiente ser o algoritmo. Uma boa idia de como um algoritmo de
otimizao pode utilizar a geometria da funo erro pode ser obtida utilizando uma
aproximao quadrtica para a superfcie. Consideremos a seguinte expanso em torno de
um ponto w :

1
( ) ( ) ( ) ( ) ( ) ( )
2
E E E + + w w w w w w w H w w (1.14)
A matriz H conhecida como Hessiano sendo definida como:


2

jk
j k
E
H
w w


w
(1.15)
Suponha que
*
w w seja um extremo de E, ento:

* * *
1
( ) ( ) ( ) ( )
2
E E + w w w w H w w (1.16)

Podemos calcular os autovetores do Hessiano H :

k k k
Hu u , (1.17)
onde

j k jk
u u . (1.18)
Podemos expandir o vetor w w
*
na base dos autovetores de H para escrevermos:

*
k k
k

w w u (1.19)
Substituindo (1.19) em (1.16) e utilizando (1.17) e (1.18) :

* 2
1
( ) ( )
2
k k
k
E E +

w w . (1.20)
Assim, os autovetores da Hessiana indicam direes ortogonais que diagonalizam a
matriz H. De (1.20) pode-se concluir que para que w
*
defina um mnimo necessrio
que todos os autovalores sejam positivos, alm disso a velocidade de convergncia do
erro maior em direes com autovalor maior.


Otimizao em Netlab

Criado por Renato Vicente 10/06/02
18
Discutiremos quatro tcnicas implementadas pelo Netlab:

1. Gradient Descent
2. Gradiente Conjugado
3. Gradiente Conjugado Escalado
4. Quase-Newton

Para exemplificarmos como Netlab pode ser usado para otimizar funes utilizaremos
um de seus programas de demonstrao denominado demopt 1. O programa demopt 1
demonstra a otimizao da seguinte funo:

2 2 2
1 2 2 1 1
( , ) 100( ) (1 ) y x x x x x + , (1.21)
conhecida como funo de Rosenbrock utilizando quatro tcnicas diferentes.

No Matlab podemos visualizar a superfcie definida pela funo acima com um nico
comando:
> ezsurfc ('100*(x1-x2^2)^2+(1-x1)^2',[-2, 2],[-2,2] )



Criado por Renato Vicente 10/06/02
19
Alternativamente, podemos utilizar a seguinte sintaxe menos direta:

1 x1=-2:0.01:2;
2 x2=-2:0.01:2;
3 [sx1, sx2] =meshgrid (x1,x2);

As instrues acima geram matrizes que contm o produto cartesiano dos vetores x1 e
x2, assim se digitarmos

> [sx1(10,23) sx2(10,23)]

ans =
-1.7800 -1.9100

Veremos um par especfico de valores.
A funo de Rosenbrock pode ser calculada de duas formas:

> Y= 100*(sx1-sx2.^2).^2 +(1-sx1).^2;
> size(Y)

ans =
401 401

onde utilizamos ".^ " com um ponto antes da operao para elevarmos cada componente
das matrizes X1 e X2, sem "." teramos calculado um produto matricial. Note que a
resposta uma discretizao da superfcie com 401 por 401 pontos.

Para exemplificar o clculo com e sem ".":

>A=[0 1; 1 0]

A =
0 1
1 0

Um produto matricial ser:

> A^2

ans =
1 0
0 1
ou
> A*A

ans =
1 0
0 1

Criado por Renato Vicente 10/06/02
20
Componente a componente teremos
> A.^2

ans =
0 1
1 0

Uma outra forma de avaliarmos a funo de Rosenbrock utilizarmos diretamente a
funo do Netlab chamada r osen:
> Y1=rosen([sx1(:),sx2(:)]);




Esta operao retorna um vetor com 401 x 401 valores:
> size(Y1)

ans =
160801 1

Este vetor pode ento ser convertido em uma matrz com as dimenses apropriadas
utilizando:

> Y1=reshape(Y1,length(x1),length(x2));

Esta instruo converte um vetor em uma matriz com o nmero de linhas igual ao
nmero de dimenses do vetor x1 (length(x1)) e o nmero de colunas igual ao nmero
de dimenses do vetor x2 (length(x2)). A matriz preenchida coluna a coluna conforme o
exemplo a seguir:

>A=[1 2 3 4 5 6 7 8 9 10 11 12];
>A=reshape(A,4,3)

A =
1 5 9
2 6 10
3 7 11
4 8 12

Para plotarmos a superfcie podemos utilizar a seguinte instruo :
> surf(x1,x2,Y)

Podemos tambm plotar curvas de nvel da superfcie:
> l=-1:6;
> v= 2.^l;
>contour(x1,x2,Y,v)
Criado por Renato Vicente 10/06/02
21

Os mnimos da funo so (-1,1) e (1,-1).

As funes de otimizao do Netlab utilizam a seguinte sintaxe:
> [x, options, errlog, pointlog] = nome ('function', x, options, 'grad');

So quatro as funes de otimizao: quasinew (Quase-Newton), conjgrad (gradiente
conjugado), scg (gradiente conjugado escalado) e graddesc (Gradient Descent). Os
argumentos das funes so, respectivamente: a funo que se quer otimizar 'function' , o
ponto inicial x, o vetor de opes de otimizao options e o gradiente da funo que se
quer otimizar 'grad' .

As sadas destas funes so, respectivamente: o resultado da otimizao x, o vetor de
opces de otimizao atualizado aps o processo options, os valores de erro aps cada
ciclo errlog e a trajetria percorrida no espao dos parmetros pointlog.

O vetor options contm parmetros para operao da rotina de otimizao e parmetros
especficos para cada algoritmo:

options(1) : 1 para mostrar na tela os valores de erro, 0 para exibir apenas mensagens de
aviso e -1 para no exibir nada;

options(2): Valor da preciso absoluta requerida para encerrar o processo de otimizao.
Se
1
(2)
t t
options
+
< x x ento esta condio satisfeita.

options(3): Valor da preciso requerida na funo otimizada. Se
1
( ) ( ) (3)
t t
function function options
+
< x x ento a condio satisfeita. Se esta e a
condio acima forem satisfeitas a otimizao encerrada.

Criado por Renato Vicente 10/06/02
22
options (7): 1 se uma busca em linha utilizada para minimizao na direo do
gradiente, 0 (default) se cada passo dado na direo do negativo do gradiente com um
learning rate definido por options(18).

options(9): 1 para que a funo verifique o gradiente informado 'grad' contra a funo
'function'.

options(10): registra o nmero total de avaliaes de 'function'.

options(11): registra o nmero total de avaliaes de 'grad'.

options(14): nmero mximo de iteraes.

options(18): learning rate. (default= 0.01).


Gradient Descent

O mtodo de gradient descent consiste na escolha do negativo do gradiente da funo
erro como direo para cada passo de otimizao, o tamnho de cada passo definido
por uma learning rate assim:

1
( )
t t t
E
+
w w w (1.22)
Os pontos fixos do algoritmo em (1.22) coincidem com os extremos da funo erro, no
entanto nada garante que ocorra convergncia para estes pontos fixos. Analisemos a
convergncia do gradient descent em torno de um ponto fixo w
*
.

O gradiente da funo erro em torno de um ponto fixo pode ser aproximado (utilizando
uma srie de Taylor) por :


* *
( ) ( ) ( ) E E w w w w , (1.23)

onde H E o Hessiano da funo erro.

Sejam
j
os autovalores do Hessiano e
j
u seus autovetores assim:

j j j
H u u (1.24)
Expandindo w-w
*
na base destes autovetores teremos:

j j j
j
E u

e (1.25)

* *
1 1
( ) ( ) ( )
t t t t j
j

+ +

w w w w u (1.26)
Utilizando (1.22) podemos escrever uma dinmica para as componentes do caminho
traado no espao dos parmetros na direo de cada autovetor do Hessiano:

j j j
(1.27)
Criado por Renato Vicente 10/06/02
23
A dinmica ao redor do ponto fixo ser :

, 1 ,
(1 )
j t j j t

+
(1.28)
Considerando learning rate fixa, para n passos teremos:

, ,
(1 )
n
j t n j j t

+
(1.29)
De (1.29) fica patente que uma condio necessria para que haja convergncia de todas
as componentes para o ponto fixo 0
j
quando n
1 1
j
< . (1.30)
Esta condio obriga que a learning rate respeite :

max
2

< , (1.31)
onde
max
o maior autovalor do Hessiano. Note que quanto maior o produto da
learning rate pelo autovalor, menor o fator multiplicador em (1.29) e, por
conseqncia, mais rpida a convergncia. Quando o Hessiano possuir um espectro de
autovalores amplo (o que ocorre freqentemente) as vrias direes apresentaro tempos
de convergncia bem diferentes. O processo total de convergncia dominado pela
direo com convergncia mais lenta, ou seja, a direo com menor autovalor. A
convergncia ser ento dominada por:

min
max
(1 2 )

. (1.32)
Se na vizinhana de um ponto fixo o Hessiano apresentar autovalores muito diferentes
, ou seja, a superfcie de erro apresentar curvas de nvel elipsoidais bastante alongadas, a
convergncia do algoritmo ser muito lenta.

Em geral gradient descent bastante ineficiente sendo de pouco interesse prtico. Apesar
disso este algoritmo recebeu bastante ateno do meio acadmico devido facilidade de
anlise utilizando tcnicas exatas. Vrias formas de melhorar seu desempenho foram
propostas entre elas: adio de um termo de "momento", reduo do nmero de passos
necessrios para convergncia pela utilizao de um esquema para minimizao
unidimensional e implementao de learning rates variando com o tempo.

O termo de momento como segue:

1 1
( ) ( )
t t t t t
E
+
+ w w w w w , (1.33)
com 0 1 .

Este termo tem o mesmo sinal da ltima variao, assim, se uma componente foi
reduzida ela continuar sendo reduzida. Em geral isto ser uma vantagem em trechos da
superfcie de erro em forma de vale, com pouca curvatura na direo do mnimo e muita
curvatura em uma outra direo qualquer como ilustrado a seguir.



Criado por Renato Vicente 10/06/02
24
>ezsurfc ('10*x1^2+x2',[-1, 1],[0,10] )




O gradiente da funo acima
1
(10 ,1) E x , assim, se iniciarmos a otimizao fora do
eixo
1
0 x teremos fortes oscilaes em decorrncia da grande curvatura de uma das
direes:


O termo de momento neste caso adicionar uma certa inrcia direo (0,1)
aumentando a taxa de convergncia.

Uma outra forma de reduzirmos o nmero de passos necessrios para convergncia a
reduo do nmero de dimenses do problema apenas direo do gradiente pela
introduo de um algoritmo de otimizao unidimensional a cada passo de otimizao.
Criado por Renato Vicente 10/06/02
25
Nesta variante a cada passo encontramos a amplitude do deslocamento na direo do
gradiente , assim:

*
1
( )
t t t
E
+
w w w , (1.34)
onde
*
definido como o mnimo de:
( ) ( ( ))
t t
E E E w w . (1.35)
De forma equivalente, escolhemos de forma a termos:


1
( )
( ) ( ) 0
t t
dE
E E
d

+
w w , (1.36)
ou seja, gradientes sucessivos ortogonais. A minimizao unidimensional em (1.35) pode
ser realizada utilizando uma busca linear. Utilizando esta forma possvel aumentar
consideravelmente a velocidade de convergncia do gradient descent. O incoveniente deste
algoritmo est na condio (1.36) que fora movimentos em zig-zag no espao de
parmetros.

Neste ponto, vale a pena discutirmos um pouco algoritmos de busca linear. O Netlab
utiliza um algoritmo proposto por Brent
1
bastante eficiente e robusto que no utiliza o
gradiente unidimensional da funo na otimizao . O algoritmo de Brent consiste em:

1. Encontrar 3 pontos a< b< c, tais que E(b)< E(a) e E(b)< E(a) .
2. Ajustar uma parbola passando pelos pontos a,b e c.
3. Minimizando a parbola para encontrar d.
4. Repetindo o processo para pontos d e escolhendo entre a,b,c os dois com menor
erro.

Em Netlab uma busca linear implementada pela funo a seguir:

> [x, options] = linemin(f, pt, dir, fpt, options);


Onde f a funo a ser minimizada, pt o ponto inicial, dir a direo que define a
linha de busca, fpt o valor da funo no ponto de incio e options o vetor de opes de
otimizao. O ponto de mnimo dado por pt+x.*dir.


Como exemplo apresentamos a seguir otimizao da funo de Rosenbrock empregando
Gradient Descent seguir os seguintes passos:

1 options = foptions;

Para importar configuraes padro para o otimizador.


1
Brent, R. 1973, Algorithms for Minimization without Derivatives. Englewood Cliffs, NJ: Prentice-Hall.
Criado por Renato Vicente 10/06/02
26
2 options(1) = -1;
3 options(3) = 1e-8;
4 options(7)=1;
5 options(14) = 100;


Nada exibido na tela , a preciso requerida para as variaes na funo otimizada de 10
-
8
, a otimizao empregar a variante com busca linear e o nmero total de iteraes
fixado em 100. O vetor options inicia o processo na seguinte configurao:

>options(1)
ans =
-1
>options(2)
ans =
1.0000e-004
>options(3)
ans =
1.0000e-008
>options(9)
ans =
0
>options(10)
ans =
0
>options(11)
ans =
0
>options(14)
ans =
100

Assim a otimizao deve encerrar quando as precises fixadas forem atingidas ou quando o
nmero de iteraes chegar a 100. Para vermos todas as outras opes disponveis basta
utilizarmos o comando:

> help graddesc

GRADDESC Gradient descent optimization.

Description
[X, OPTIONS, FLOG, POINTLOG] = GRADDESC(F, X, OPTIONS, GRADF) uses
batch gradient descent to find a local minimum of the function F(X)
whose gradient is given by GRADF(X). A log of the function values
after each cycle is (optionally) returned in ERRLOG, and a log of the
points visited is (optionally) returned in POINTLOG.

Note that X is a row vector and F returns a scalar value. The point
at which F has a local minimum is returned as X. The function value
at that point is returned in OPTIONS(8).

GRADDESC(F, X, OPTIONS, GRADF, P1, P2, ...) allows additional
Criado por Renato Vicente 10/06/02
27
arguments to be passed to F() and GRADF().

The optional parameters have the following interpretations.

OPTIONS(1) is set to 1 to display error values; also logs error
values in the return argument ERRLOG, and the points visited in the
return argument POINTSLOG. If OPTIONS(1) is set to 0, then only
warning messages are displayed. If OPTIONS(1) is -1, then nothing is
displayed.

OPTIONS(2) is the absolute precision required for the value of X at
the solution. If the absolute difference between the values of X
between two successive steps is less than OPTIONS(2), then this
condition is satisfied.

OPTIONS(3) is a measure of the precision required of the objective
function at the solution. If the absolute difference between the
objective function values between two successive steps is less than
OPTIONS(3), then this condition is satisfied. Both this and the
previous condition must be satisfied for termination.

OPTIONS(7) determines the line minimisation method used. If it is
set to 1 then a line minimiser is used (in the direction of the
negative gradient). If it is 0 (the default), then each parameter
update is a fixed multiple (the learning rate) of the negative
gradient added to a fixed multiple (the momentum) of the previous
parameter update.

OPTIONS(9) should be set to 1 to check the user defined gradient
function GRADF with GRADCHEK. This is carried out at the initial
parameter vector X.

OPTIONS(10) returns the total number of function evaluations
(including those in any line searches).

OPTIONS(11) returns the total number of gradient evaluations.

OPTIONS(14) is the maximum number of iterations; default 100.

OPTIONS(15) is the precision in parameter space of the line search;
default FOPTIONS(2).

OPTIONS(17) is the momentum; default 0.5. It should be scaled by the
inverse of the number of data points.

OPTIONS(18) is the learning rate; default 0.01. It should be scaled
by the inverse of the number of data points.

See also
CONJGRAD, LINEMIN, OLGD, MINBRACK, QUASINEW, SCG

Definimos o ponto inicial como:

5 x = [-2,3];

Criado por Renato Vicente 10/06/02
28
A otimizao propriamente dita pode ser implementada em uma linha :

6 [x,options,errgd,trajgd]=graddesc('rosen',x,options,'rosegrad');

O resultado final da otimizao est longe do valor correto:
>x

x =
-0.5424 0.2886

A figura a seguir ilustra a trajetria percorrida durante o processo de otimizao:

> a = -1.5:.02:1.5;
> b = -0.5:.02:2.1;
> [A, B] = meshgrid(a, b);
> Z = rosen([A(:), B(:)]);
> Z = reshape(Z, length(b), length(a));
> l = -10:6;
> v= 2.^l;
> contour(a, b, Z, v);
> hold on;

> plot(trajgd(:,1), trajgd(:,2), ' b-' , ' MarkerSize' , 6)
> title(' Gradient Descent' )


Exerccios

(1) Repita a otimizao acima para o gradient descent sem termo de momento com
os seguites valores para learning rate 0.001, 0.01, 0.5 . Construa o grfico
acima em cada um dos casos. Repita os experimentos adicionando momentos
0.1, 0.5 .


Criado por Renato Vicente 10/06/02
29



Criado por Renato Vicente 23/06/02
29

Gradiente Conjugado

Como vimos anteriormente o mtodo de gradient descent consiste na escolha do
negativo do gradiente da funo erro como direo para cada passo de otimizao. Em
sua verso mais eficiente o tamanho de cada passo definido por uma busca linear,
assim:

*
1
( )
t t t
E
+
w w w ,
onde

*
arg min ( )
t t
E E w . (2.1)
Esta escolha tem a incovenincia de induzir uma trajetria em zig-zag no espao dos
parmetros j que:

*
1
0 ( ) ( ) 0
t t
dE
E E
d

w w , (2.2)
o que implica que duas direes de otimizao consecutivas so sempre ortogonais. A
condio (2.1) garante que a funo seja minimizada na direo do gradiente
t
E , no
entanto o passo seguinte na direo do gradiente
1 t
E
+
no garante que (2.2) continue
sendo verdade, assim cada passo pode destruir parte do trabalho de otimizao do passo
anterior. Uma maneira de solucionar este problema impor que a nova direo dt + 1 de
otimizao seja tal que o gradiente no novo ponto no espao dos parmetros no tenha
componentes na direo dt do ltimo passo de otimizao, assim:

t+1 t+1 t
( ) 0 E + w d d . (2.3)
Expandindo o gradiente acima ao redor de wt + 1 teremos:
( )
1 1
( ) 0
t t t
E H
+ +
+ w d d , (2.4)
onde H o Hessiano e por construo teremos que:

1
0
t t
H
+
d d . (2.5)
As direes acima so mutuamente conjugadas . Vetores mutuamente conjugados formam
uma base ortogonal com mtrica definida pelo Hessiano H. Suponhamos agora que
iniciamos o processo de otimizao no ponto w1 do espao dos parmetros.
Suponhamos que w
*
seja o mnimo da funo erro E. A correo necessria para
atingirmos o mnimo da funo erro pode ser expandida em uma base de vetores
mutuamente conjugados:

*
1
1
N
i i
i

w w d , (2.6)
onde N a dimenso do espao de parmetros. Se definirmos

1
1
1
j
j i i
i

w w d , (2.7)
teremos a correo no componente j do vetor de parmetros, alternativamente

1 j j j j

+
+ w w d (2.8)
expressa como cada componente do vetor de parmetros corrigida a partir da
componente anterior. Assim a otimizao utilizando gradientes conjugados ocorre por
Criado por Renato Vicente 23/06/02
30
otimizao de uma componente por vez. Desta forma se calcularmos exatamente as
direes conjugadas em cada passo precisaremo de exatos N passos para otimizao. Para
superfcies quadrticas apenas precisamos calcular a Hessiana (segundas derivadas) uma
nica vez. As direes conjugadas so obtidas simplesmente resolvendo um problema de
autovalores para H pois :


k j j k j j jk
H d d d d , (2.9)

Para superfcies genricas o problema se torna mais complicado pois a Hessiana muda
conforme a posio no espao dos parmetros e seria necessrio recalcular a Hessiana e
resolver o problema de autovalores acima para cada ponto. Para entendermos como
podemos utilizar gradientes conjugados de forma prtica, comeamos por analisar o caso
mais simples de uma superfcie quadrtica.

Suponhamos que a superfcie de erro que queremos minimizar tenha a seguinte forma:

1
( )
2
E H + w w w w. (2.10)
O gradiente desta funo erro no ponto w ser:
( ) E H + w w. (2.11)
O ponto de mnimo ser:

*
0 H + w . (2.12)
Agora, utilizando (2.6) teremos:
(2.13)

( )
*
1
1
N
i i
i
H H

| `


. ,
j j
d w w d d , (2.14)
onde dj so direes conjugadas.
Utilizando (2.12):

1
1
N
j j i j i j j j
i
H H H

d d w d d d d . (2.15)
Assim encontramos a correo necessria em cada uma das direes conjugadas:

( )
1 j
j
j j
H
H

d w
d d
. (2.16)
Utilizando (2.7) teremos

1
1 1
1
0
j
j j j i j i j
i
H H H H

d w d w d d d w
!"#"$
e (2.17)

( ) ( )
j j j j
j
j j j j
H E
H H

+


d w d w
d d d d
. (2.18)
Calculadas as correes em cada uma das direes conjugadas temos que encontrar uma
forma de encontrarmos as prprias direes que seja mais eficiente do que o clculo de
Hessianas e a soluo de problemas de autovalor. Uma maneira prtica consiste em
Criado por Renato Vicente 23/06/02
31
adotarmos como primeira direo o negativo do gradiente no ponto de incio
1 1
( ) E d w . A seguir construmos cada uma das direes iterativamente:

1 1
( )
j j j j
E
+ +
+ d w d (2.19)
Empregando a condio para direes conjugadas teremos:

1 1
( ) 0
j j j j j j j
H E H H
+ +
+ d d w d d d e (2.20)

1
( )
j j
j
j j
E H
H

w d
d d

Se assumirmos uma aproximao quadrtica em torno de cada ponto do espao
poderemos empregar (2.20) como algoritmo para qualquer superfcie. Nesta aproximao
podemos escrever:

1 1
( ) ( )
j j j j j j
E E H H H
+ +
w w w w d (2.21)
e por conseqncia:


1 1
1
( ) ( ) ( )
( ) ( )
j j j
j
j j j
E E E
E E

+ +
+
]
]

]
]
w w w
d w w
(2.22)
conhecida como equao de Hesteness-Stiefel
1
. Com algum trabalho de lgebra possvel
mostrar que :
( ) 0,
j k
E j k w d

Empregando (2.19) teremos tambm que
( ) ( ) ( )
j j j j
E E E d w w w . (2.23)
Substituindo em (2.22) encontramos a equao de Polak-Ribiere
2
:
(2.24)

1 1
( ) ( ) ( )
( ) ( )
j j j
j
j j
E E E
E E

+ +
]
]


w w w
w w
. (2.25)
Note que no necessrio calcular o Hessiano para avaliarmos as direes conjugadas, no
entanto precisamos desta avaliao para calcularmos o tamanho do passo
j
(vide
expresso (2.18) ). Para evitarmos o clculo do Hessiano, muito caro para um nmero
muito grande de dimenses, podemos utilizar uma busca linear na direo conjugada do
momento. Assim chegamos a uma descrio completa do algoritmo de gradientes
conjugados:
1. Escolha um ponto inicial no espao dos parmetros
1
w ;
2. Calcule o gradiente no ponto inicial e faa a primeira direo de otimizao ser
1 1
( ) E d w ;
3. Para descobrir a amplitude do passo na direo d1, utilize uma busca linear
encontrando
1 1
arg min ( )
j
E + w d ;

1
Hestenes, M.R. e E. Stiefel (1952). Methods of conjugate gradients for solving linear systems. Journal of
Research of the National Bureau of Standards 49 (6), 409-436.
2
Polak, E. (1971). Computational Methods in optimization: A unified Approach. New York: Academic Press.
Criado por Renato Vicente 23/06/02
32
4. Calcule
2 1 1 1
+ w w d ;
5. Pare se os critrios de convergncia foram satisfeitos
6. Calcule
2
( ) E w ;
7. A nova direo dada por
2 2 1 1
( ) E + d w d , com
1
definido pela relao de
Polak-Ribiere.
8. V para o passo 3 para o novo d.

Utilizemos agora a implementao em Netlab do algoritmo de gradiente conjugado para
otimizarmos novamente a funo de Rosenbrock. Comeamos por verificar as opes
de otimizao disponveis para a funo conjgrad:

> help conjgrad

CONJGRAD Conjugate gradients optimization.

Description
[X, OPTIONS, FLOG, POINTLOG] = CONJGRAD(F, X, OPTIONS, GRADF) uses a
conjugate gradients algorithm to find the minimum of the function
F(X) whose gradient is given by GRADF(X). Here X is a row vector and
F returns a scalar value. The point at which F has a local minimum
is returned as X. The function value at that point is returned in
OPTIONS(8). A log of the function values after each cycle is
(optionally) returned in FLOG, and a log of the points visited is
(optionally) returned in POINTLOG.

CONJGRAD(F, X, OPTIONS, GRADF, P1, P2, ...) allows additional
arguments to be passed to F() and GRADF().

The optional parameters have the following interpretations.

OPTIONS(1) is set to 1 to display error values; also logs error
values in the return argument ERRLOG, and the points visited in the
return argument POINTSLOG. If OPTIONS(1) is set to 0, then only
warning messages are displayed. If OPTIONS(1) is -1, then nothing is
displayed.

OPTIONS(2) is a measure of the absolute precision required for the
value of X at the solution. If the absolute difference between the
values of X between two successive steps is less than OPTIONS(2),
then this condition is satisfied.

OPTIONS(3) is a measure of the precision required of the objective
function at the solution. If the absolute difference between the
objective function values between two successive steps is less than
OPTIONS(3), then this condition is satisfied. Both this and the
previous condition must be satisfied for termination.

OPTIONS(9) is set to 1 to check the user defined gradient function.

OPTIONS(10) returns the total number of function evaluations
(including those in any line searches).

Criado por Renato Vicente 23/06/02
33
OPTIONS(11) returns the total number of gradient evaluations.

OPTIONS(14) is the maximum number of iterations; default 100.

OPTIONS(15) is the precision in parameter space of the line search;
default 1E-4.

See also
GRADDESC, LINEMIN, MINBRACK, QUASINEW, SCG

Primeiro inicializamos as opes de otimizao carregando as opes de default com:
> options=foptions

options =
Columns 1 through 8
0 0.0001 0.0001 0.0000 0 0 0 0
Columns 9 through 16
0 0 0 0 0 0 0 0.0000
Columns 17 through 18
0.1000 0

Ajustamos ento algumas destas opes:
>options(1)=-1;
Para no mostrarmos em tela a trajetria de otimizao.

>options(3)=1e-8;
Se em dois passos consecutivos a funo erro diferir em menos de 1e-8 e se o vetor de
parmetros diferir em menos de 1e-2 (options(2) ) a otimizao dever ser encerrada.

>options(14)=100;
A otimizao dever parar se o nmero de iteraes atingir 100.

Agora definimos o ponto inicial :
> x=[-2 3];
A otimizao realizada em uma nica linha:
> [x,options,errgd,trajgd]=conjgrad('rosen',x,options,'rosegrad');

As sadas so
>x
x =
1.0000 1.0000

O ponto timo, que neste caso est correto !
>options
options =
Columns 1 through 8
-1.0000 0.0001 0.0000 0.0000 0 0 0 0.0000
Columns 9 through 16
0 526.0000 28.0000 0 0 100.0000 0 0.0000
Columns 17 through 18
0.1000 0
Criado por Renato Vicente 23/06/02
34
Este vetor nos informa que foram utilizadas 526 avaliaes da funo minimizada e que o
gradiente desta funo foi avaliado 28 vezes ( uma vez a cada iterao).
errgd e trajgd nos informam o valor do erro em cada passo e a trajetria no
espao dos parmetros. Para vermos a evoluo do erro podemos utilizar
> plot(errgd,'b-o');


interessante comentar neste ponto que para passarmos funes como argumentos para
rotinas de otimizao precisamos criar arquivos .m para a funo e para o gradiente da
funo.
> edit rosen;
Criado por Renato Vicente 23/06/02
35

> edit rosegrad

Criado por Renato Vicente 23/06/02
36


O Netlab oferece uma funo que possibilita a verificao de um gradiente:
>gradchek([-2,3], 'rosen', 'rosegrad');

Checking gradient ...

analytic diffs delta

-806.0000 -806.0000 0.0000
-200.0000 -200.0000 0.0000

Na sada analytic fornece o valor calculado pela funo rosegrad , diffs calcula o gradiente
numericamente utilizando a funo rosen e delta mostra a diferena entre as duas formas de
clculo.

Para visualizarmos a trajetria de otimizao repetimos o procedimento utilizado quando
discutimos gradient descent:

>a=-1.5:.02:1.5;
>b=-0.5:.02:2.1;
> [A,B]=meshgrid(a,b);
>Z=rosen([A(:),B(:)]);
>Z=reshape(Z,length(b),length(a));
Criado por Renato Vicente 23/06/02
37
>l=-10:6;
>v=2.^l;
>contour(a,b,Z,v);
>hold on;

>plot(trajgd(:,1),trajgd(:,2),'--bs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','g',...
'MarkerSize',10)
>title('Gradiente Conjugado')

Aqui utilizamos alguns recursos novos para produzirmos o grfico, as propriedades so:

1. LineWidth : espessura da linha em pontos;
2. MarkerEdgeColor : cor da borda do smbolo utizado;
3. MarkerFaceColor: cor do preenchimento do smbolo;
4. MarkerSize: tamanho dos smbolos em pontos.

fcil perceber o desempenho muito superior deste algoritmo frente ao gradient descent.

Gradiente Conjugado Escalado

Lembremos que, para uma superfcie quadrtica, a amplitude de cada passo de otimizao
dada por:

( )
j j
j
j j
E
H

d w
d d
. (2.26)

Para evitar o clculo da Hessiana acimao algoritmo de gradientes conjugados utiliza a
cada passo uma otimizao linear para . Esta otimizao linear tem duas desvantagens: (1)
requer um grande nmero de avaliaes de valor da funo sendo otimizada e (2) a
convergncia do algoritmo de gradientes depende da qualidade de cada otimizao
unidimensional. Para evitar o clculo da Hessiana ou o uso de otimizaes
Criado por Renato Vicente 23/06/02
38
unidimensionais a cada passo Mller
3
criou o algoritmo de gradientes conjugados
escalado.

A idia central do algoritmo utilizar uma aproximao numrica para o termo
envolvendo a Hessiana em (2.26).

Suponha
0
/
j
d , onde
0
uma quantidade pequena e positiva, observemos que :
( ) ( )
j j j j
E E H + + w d w d , (2.27)
portanto uma aproximao numrica para (2.26) :

( ) ( )
j j j
j
E E
H

w d w
d . (2.28)
Esta aproximao funciona se : 1) a funo sendo minimizada for quadrtica; 2) a
Hessiana for positiva definida. Para superfcies genricas nada garantir que a Hessiana
positiva definida e um passo de otimizao utilizando (2.26) poder aumentar o valor da
funo em algumas direes. Para podermos usar a aproximao numrica (2.28) e
minimizar estes efeitos podemos corrigir a equao para:

2
( )
j j
j
j j j j
E
H



+
d w
d d d
(2.29)
O parmetro regula a escala (da o nome gradiente conjugado escalado) de cada passo e
inicializado como
1
1 . Quanto maior o parmetro de escala, menor a amplitude do
passo de otimizao. A escala apropriada depende do quanto a funo sendo otimizada
localmente diferente de uma superfcie quadrtica. Se a funo for exatamente quadrtica
0 , se a funo for distante de uma funo quadrtica deve aumentar.

Uma medida do grau de similaridade local entre a funo e uma superfcie quadrtica foi
introduzida por Fletcher sendo:

( ) ( )
( ) ( )
j j j j
j
j Q j j j
E E
E E

+

+
w w d
w w d
, (2.30)
onde
2
1
( ) ( ) ( )
2
Q j j j j j j j j j j
E E E H + + + w d w d w d d . Utilizando (2.26)
simplificamos (2.30) e escrevemos:

2 ( ) ( )
j j j j
j
j j j
E E

] +
]

w w d
d d
. (2.31)
Com base neste parmetro de comparao so feitas escolhas heursticas para o
parmetro de escala a cada passo da otimizao. As escolhas so as seguintes:
1. Se 0, 75
j
> ento
1
2
j
j

+
;

3
Mller ,M. (1993). A scaled conjugate gradient algorithm for fast supervised learning. Neural Networks
6(4), 525-533.
Criado por Renato Vicente 23/06/02
39
2. Se 0, 25 0, 75
j
< < ento
1 j j

+
;
3. Se 0, 25
j
< ento
1
4
j j

+
;
4. Se 0
j
< ento
1
4
j j

+
e o passo de otimizao no efetuado;

O algoritmo de gradientes conjugados escalados adquire ento a seguinte forma:

1. Escolha um ponto inicial no espao dos parmetros
1
w ;
2. Inicialize o parmetro de escala em
1
1 ;
3. Calcule o gradiente no ponto inicial e faa a primeira direo de otimizao ser
1 1
( ) E d w ;
4. Para descobrir a amplitude do passo na direo d1 utilize (2.28) e (2.29);
5. Calcule
2 1 1 1
+ w w d ;
6. Pare se os critrios de convergncia foram satisfeitos;
7. Calcule o parmetro de comparao ;
8. Atualize o parmetro de escala de acordo com as condies acima;
9. Calcule
2
( ) E w ;
10. A nova direo dada por
2 2 1 1
( ) E + d w d , com
1
definido pela relao de
Polak-Ribiere;
11. V para o passo 3 para o novo d e para o novo parmetro de escala .

A utilizao do Netlab para otimizao com gradientes conjugados escalados segue
exatamente os mesmos passos que utilizamos para gradientes conjugados.

> options = foptions;
> options(1)=-1;
>options(3)=1e-8;
>options(14)=100;
> x= [-2 3];
> [x,options,errgd,trajgd]= scg(' rosen' ,x,options,' rosegrad' );
>x

x =
1.0000 0.9999

> options

options =
Columns 1 through 11
-1.0000 0.0001 0.0000 0.0000 0 0 0 0.0000 0 52.0000 78.0000
Columns 12 through 18
0 0 100.0000 0 0.0000 0.1000 0

Note que a qualidade do resultado final ligeiramente inferior quela obtida com o
gradiente conjugado mas o nmero de avaliaes de funo foi reduzido de 526 para 52
ao deixarmos de utilizar otimizaes unidimensionais. Para exibirmos a trajetria
Criado por Renato Vicente 23/06/02
40
utilizamos o mesmo cdigo utilizado para o algoritmo de gradiente conjugado, mas
desta vez salvamos um arquivo .m como exibido abaixo:



>trajetria

Neste exemplo o desempenho do gradiente conjugado mostrou-se muito similar, e at
um pouco inferior, ao desempenho do gradiente conjugado simples. Em geral o
Criado por Renato Vicente 23/06/02
41
gradiente conjugado escalado exibe o melhor desempenho, no entanto interessante
sempre testar cada um dos algoritmos caso a caso.

Mtodo de Newton

O mtodo de Newton se baseia em uma idia muito simples. Retomemos a expanso de
Taylor para o gradiente em torno de um ponto wj.

( ) ( ) ( )
j j
E E H + w w w w . (2.32)
Suponhamos agora que w um mnimo, ento:

( ) ( )
j j
H E w w w . (2.33)
Se resolvermos esta equao em w para qualquer wj, ento teremos encontrado o
mnimo. A soluo para a equao :

1
( )
j j
H E

w w w . (2.34)
Lembrando que (2.34) encontra o mnimo de E , o que equivale a encontrarmos a raiz
( ) ( ) f w E w . Ou seja, em uma dimenso, temos o conhecido mtodo de Newton-
Raphson.

( )
( )
n
n
n
f x
x x
f x

. (2.35)
A direo definida por
1
( )
j
H E

w conhecida como direo de Newton e tem como


propriedade principal apontar para um extremo local da funo erro.

Quase-Newton

O mtodo de Newton tem uma srie de desvantagens que limitam sua utilizao prtica
em problemas de otimizao com muitas dimenses:

1. O algoritmo requer a avaliao e inverso da matriz Hessiana que requerem,
respectivamente, O(W
2
N) e O(W
3
) operaes, sendo W o nmero de parmetros
e N o nmero de pontos.

2. Quando a superfcie onde a otimizao realizada no quadrtica necessrio
recalcular o Hessiano e seu inverso em cada ponto.

3. Ao redor de alguns pontos o Hessiano pode no ser positivo definido.

Uma alternativa para contornar estes problemas intrnsecos ao mtodo de Newton
implementar um mtodo que produza uma aproximao positiva definida para a inversa
da matriz Hessiana.


Criado por Renato Vicente 23/06/02
42
Lembremos que na aproximao quadrtica:


1 1
( ) ( ) ( )
j j j j
E E

w w H w w (2.36)
Definindo

1
( ) ( )
j j j
E E

q w w e (2.37)

1 j j j
v w w (2.38)

j j
v Hq (2.39)
Se quisermos produzir uma aproximao para a inversa da Hessiana podemos exigir que
para cada um dos pontos j excursionados que

1
,1
j i i
i j
+
G v q (2.40)
Aps N passos com vetores linearmente independentes, com N sendo o nmero de
dimenaes da matriz Hessiana teremos
1

N
G H . Um procedimento para construo
de uma srie de matrizes positvas definidas que respeitem (2.40) conhecido como
algoritmo BFGS (Broyden-Fletcher-Goldfarb-Shanno)
4
:


( ) ( ) ( )
1
1
T T T
j j j j j j j j
j j j
j j
j j j j j j
+
+ | `
+ +



. ,
q q q v G G v q
v G v
G G
v q q v q v
(2.41)
Note que
( )
T
j j
q v significa uma matriz com componentes
( )
, ,
T
j j i j l j
il
q v q v .

Em geral a superfcie que est sendo otimizada no quadrtica assim a aproximao em
(2.32) tem validade limitada e a amplitude do passo no mtodo quase-Newton deve ser
controlada:

1
( )
j j j j j
E
+
+ w w G w (2.42)
A amplitude
j
do passo de otimizao pode ser obtida por uma busca linear, mas isso
s necessrio se o passo de Newton total (
j
= 1) aumentar o valor da funo erro.

Como fizemos anteriormente, comeamos por verificar as instrues no help da funo
quasinew:



4
Press et al., Numerical Recipes in C: The Art of Scientific Computing, Cambridge University Press
(disponvel gratuitamente em www.nr.com).
Criado por Renato Vicente 23/06/02
43

>help quasinew

QUASINEW Quasi-Newton optimization.

Description
[X, OPTIONS, FLOG, POINTLOG] = QUASINEW(F, X, OPTIONS, GRADF) uses a
quasi-Newton algorithm to find a local minimum of the function F(X)
whose gradient is given by GRADF(X). Here X is a row vector and F
returns a scalar value. The point at which F has a local minimum is
returned as X. The function value at that point is returned in
OPTIONS(8). A log of the function values after each cycle is
(optionally) returned in FLOG, and a log of the points visited is
(optionally) returned in POINTLOG.

QUASINEW(F, X, OPTIONS, GRADF, P1, P2, ...) allows additional
arguments to be passed to F() and GRADF().

The optional parameters have the following interpretations.

OPTIONS(1) is set to 1 to display error values; also logs error
values in the return argument ERRLOG, and the points visited in the
return argument POINTSLOG. If OPTIONS(1) is set to 0, then only
warning messages are displayed. If OPTIONS(1) is -1, then nothing is
displayed.

OPTIONS(2) is a measure of the absolute precision required for the
value of X at the solution. If the absolute difference between the
values of X between two successive steps is less than OPTIONS(2),
then this condition is satisfied.

OPTIONS(3) is a measure of the precision required of the objective
function at the solution. If the absolute difference between the
objective function values between two successive steps is less than
OPTIONS(3), then this condition is satisfied. Both this and the
previous condition must be satisfied for termination.

OPTIONS(9) should be set to 1 to check the user defined gradient
function.

OPTIONS(10) returns the total number of function evaluations
(including those in any line searches).

OPTIONS(11) returns the total number of gradient evaluations.

OPTIONS(14) is the maximum number of iterations; default 100.

OPTIONS(15) is the precision in parameter space of the line search;
default 1E-2.

See also
CONJGRAD, GRADDESC, LINEMIN, MINBRACK, SCG



Criado por Renato Vicente 23/06/02
44
> options = foptions;
> options(1)=-1;
>options(3)=1e-8;
>options(14)=100;
> x= [-2 3];
> [x,options,errgd,trajgd]= quasinew(' rosen' ,x,options,' rosegrad' );
>x

x =
1.0000 1.0000


Utilizando o mtodo trajetoria.m :


Criado por Renato Vicente 23/06/02
45

Est imao de Densidades de Probabilidade

Simulao e Clustering


No problema tpico de simulao em finanas temos dados histricos provenientes de
um determinado processo e desejamos gerar cenrios futuros que sejam compatveis com
o comportamento estatstico observado. Em sua forma mais geral conhecemos uma
seqncia de dados
1 2
, ,...,
t
x x x mais uma seqncia de informaes de mercado
1 2
, ,...,
t
z z z e queremos estimar uma distribuio condicional do futuro em relao ao
passado
1 2 1 1
( , ,... , ,..., , ; )
t t t t
p x x x z x z w
+ +
, onde w so parmetros da distribuio. A
simulao consiste da amostragem de p . Estas simulaes so conhecidas como Monte-
Carlo e encontram aplicao importante na avaliao de riscos.

A verso mais simples do problema de estimao de densidades envolve apenas
distribuies conjuntas (no-condicionadas) ( ; ) p x w . Neste captulo exemplificaremos
o uso de Netlab na estimao de densidades de probabilidade conjuntas utilizando o
modelo conhecido como Mistura de Gaussianas.

Nosso problema de exemplo ser a estimao da densidade conjunta no-condicional de
retornos dirios de uma carteira contendo trs aes: VALE5, ITAU4 e ELET3.
Representando em um grfico cerca de 700 dias de sries teremos:

> x= load(' retornos.dat' );
> plot3(x(:,1),x(:,2),x(:,3),' .' );

Criado por Renato Vicente 23/06/02
46
A densidade que observamos resultado da convoluo de um processo com densidades
condicionais de um dia quase-normais, no-estacionrio e com grandes mudanas nas
covarincias. Isso d origem a uma densidade no-gaussiana.

No problema de clustering queremos separar um conjunto de dados
1 2
, ,...,
t
x x x em
classes C1, C2, ...,Cn para isso modelamos a densidade ( ; ) p x w como uma mistura de
Gaussianas
1
( ) ( ) ( )
n
j gauss j
j
p x p C p x C

e definimos a qual classe pertence um ponto


especfico x encontrnado a classe que maximiza ( )
j
p C x .

Mist uras de Gaussianas

A idia central por trs da estimao de densidades de porbabilidade utilizando misturas
de normais est na utilizao de uma combinao de distribuies simples, no caso
Gaussianas, para modelar distribuies de complexidade arbitrria. possvel mostrar
que, com um nmero suficientemente grande de densidades gaussianas possvel
representar qualquer densidade
1
. Uma mistura de gaussianas a dada por:


1
( ) ( ) ( )
M
gauss
j
p P j p j

x x (3.1)
Os coeficiente ( ) P j so denominados coeficientes de mistura e as densidades ( )
gauss
p j x
so componentes da mistura. Para que (3.1) defina uma densidade de probabilidade as
seguintes condies so necessrias:

1.
1
( ) 1 0 ( ) 1
M
j
P j P j


2. ( ) 1
gauss
d p j j

x x .

Uma representao grfica para um GMM (Gaussian Mixture Model) :










1
McLachlan, G.J. e K.E. Basford (1988). Misxture Models: Inference and Applications to Clustering. New
York: Marcel Dekker.
p(x|j)P(j)
( ) ( ) P j p j

x
P(j)
Criado por Renato Vicente 23/06/02
47
Os componentes da mistura tm a seguinte forma genrica:


1
1/ 2
/ 2
1 1
( ) exp ( ) ( )
2
(2 )
j j j
d
j
p j C
C



' '

x x x (3.2)
As matrizes de covarincia Cj podem ter diversas formas que influenciaro o nmero
de componentes necessrio para a representao de uma densidade:

Esfrica: Nesta escolha as covarincias so descritas por apenas um parmetro
2
j j
C I . O Netlab trs uma demonstrao do uso de GMM com componentes
esfricos.

> demgmm2


Diagonal: Cada matriz de covarincia descrita por N parmetros, onde N a
dimenso do espao dos dados, assim
, , kl j kl k j
C . Este caso exemplificado no
Netlab pela demonstrao demgmm3.





Criado por Renato Vicente 23/06/02
48
Completa: A covarincia utilizada tem
2
2
N N +
parmetros , ou seja,
2
, , kl j kl j
C .
Utilizando demgmm4.




Em Netlab podemos construir um GMM utilizando o comando gmm (dim, comp, covar)
que define uma estrutura com dim dimenses, comp componentes de mistura e
covarincia de tipo covar. Se quisermos construir um modelo para a distribuio
conjunta dos retornos das aes descrita acima utilizando 5 componentes com
covarincias completas, devemos digitar:

> mix= gmm(3,5,'full');

A estrutura definida tem as seguintes componentes:

>mix

mix =
type: 'gmm'
nin: 3
ncentres: 5
covar_type: 'full'
priors: [0.2000 0.2000 0.2000 0.2000 0.2000]
centres: [5x3 double]
covars: [3x3x5 double]
nwts: 65

Os priors so os componentes de mistura e nwts o nmero de parmetros.

A mistura acima precisa ser inicializada, para isso utilizamos o comando gmminit.





Criado por Renato Vicente 23/06/02
49
>help gmminit

GMMINIT Initialises Gaussian mixture model from data

Description
MIX = GMMINIT(MIX, X, OPTIONS) uses a dataset X to initialise the
parameters of a Gaussian mixture model defined by the data structure
MIX. The k-means algorithm is used to determine the centres. The
priors are computed from the proportion of examples belonging to each
cluster. The covariance matrices are calculated as the sample
covariance of the points associated with (i.e. closest to) the
corresponding centres. For a mixture of PPCA model, the PPCA
decomposition is calculated for the points closest to a given centre.
This initialisation can be used as the starting point for training
the model using the EM algorithm.

See also
GMM

>options=foptions;
>mix=gmminit(mix,x,options);
>mix

mix =
type: 'gmm'
nin: 3
ncentres: 5
covar_type: 'full'
priors: [0.0639 0.3083 0.0111 0.4264 0.1903]
centres: [5x3 double]
covars: [3x3x5 double]
nwts: 65

A funo gmminit utiliza um algoritmo no-paramtrico denominado K-mdias
implementado pela funo kmeans do Netlab que consiste dos seguintes passos:

1. Os N dados so so divididos em K grupos S1, S2 e SK com o mesmo nmero
de componentes;
2. So calculadas mdias (centros) para cada grupo:
1
j
j n
n S j
x
N


;
3. Calculam-se as distncias de cada dado em relao a cada um dos centros e
reagrupam-se os dados no grupo de centro mais prximo de forma a
minimizar
2
1
j
K
n j
j n S
E x

.
4. Volta ao passo 2.


Aps inicializao o treinamento do GMM efetuado utilizando um algoritmo de
otimizao de verossimilhana denominado EM atravs da funo gmmem.

Criado por Renato Vicente 23/06/02
50
>help gmmem

GMMEM EM algorithm for Gaussian mixture model.

Description
[MIX, OPTIONS, ERRLOG] = GMMEM(MIX, X, OPTIONS) uses the Expectation
Maximization algorithm of Dempster et al. to estimate the parameters
of a Gaussian mixture model defined by a data structure MIX. The
matrix X represents the data whose expectation is maximized, with
each row corresponding to a vector. The optional parameters have
the following interpretations.

OPTIONS(1) is set to 1 to display error values; also logs error
values in the return argument ERRLOG. If OPTIONS(1) is set to 0, then
only warning messages are displayed. If OPTIONS(1) is -1, then
nothing is displayed.

OPTIONS(3) is a measure of the absolute precision required of the
error function at the solution. If the change in log likelihood
between two steps of the EM algorithm is less than this value, then
the function terminates.

OPTIONS(5) is set to 1 if a covariance matrix is reset to its
original value when any of its singular values are too small (less
than MIN_COVAR which has the value eps). With the default value of
0 no action is taken.

OPTIONS(14) is the maximum number of iterations; default 100.

The optional return value OPTIONS contains the final error value
(i.e. data log likelihood) in OPTIONS(8).

See also
GMM, GMMINIT


Note a opo(5) que tem por objetivo evitar que a covarincia colapse sobre um ponto,
o que corresponde a um overfitting dos dados modelados.

>options=foptions;
>options(1)=-1;
> [mix,options,errlog] =gmmem(mix,x,options);
> mix

mix =
type: 'gmm'
nin: 3
ncentres: 5
covar_type: 'full'
priors: [0.0063 0.1210 0.2052 0.2196 0.4479]
centres: [5x3 double]
covars: [3x3x5 double]
nwts: 65

Criado por Renato Vicente 23/06/02
51
Os centros so :
> mix.centres

ans =
0.1779 0.1205 0.2443
-0.0056 0.0001 -0.0091
0.0095 0.0246 0.0130
0.0051 -0.0100 -0.0060
-0.0052 -0.0049 -0.0046

Se quisermos agora simular retornos utilizando nosso modelo recm treinado basta
utilizarmos a funo [data,label]=gmmsamp(mix,n), com n sendo o nmero de amostras,
data sendo os dados amostrados e label a componente geradora.
> [simula,label_sim]=gmmsamp(mix,500);
>plot3(simula(:,1),simula(:,2),simula(:,3),'rs','LineWidth',2,'MarkerEdgeColor','k','MarkerFaceColor','g','Mark
erSize',5);



Algoritmo EM (Expectation-Maximization)

A estimao dos parmetros em um GMM se baseia em um algoritmo conhecido como
EM (Expectation-Maximization)
2
. Para encontrarmos os parmetros mais adequados
para modelar os dados devemos maximizar a funo verossimilhana no conjunto de
dados
1
{ }
N
n n
x

:

1
( , , ) ln ( )
N
n
n
L P C p x

, (3.3)
Esta funo de verossimilhana funo dos coeficientes de mistura das mdias e das
matrizes de covarincia. Para simplificar os clculos podemos, alternativamente,
minimizar uma funo erro definida como:
ln E L (3.4)

2
Dempster, A. P., N.M. Laird e D.B. Rubin (1977). Maximum likelihood from incomplete data via the EM
algorithm. journal of the Royal Statistical Society, B 39 (1), 1-38.
Criado por Renato Vicente 23/06/02
52
Se substituirmos a estrutura do GMM em (3.4) teremos:


1 1
ln ( ) ( )
N M
n
n j
E p x j P j



' '


(3.5)

Poderiamos utilizar os algoritmos estudados no captulo anterior para otimizarmos a
funco erro em (3.5), no entanto, a experincia mostra que , para misturas de gaussianas,
o algoritmo EM converge melhor e mais rpido.

Queremos minimizar (3.5). A cada alterao de parmetros temos :

1
1
( )
ln
( )
N
t n
n t n
p x
E
p x
+

]

]
]

(3.6)
Se utilizarmos a estrutura da mistura e multiplicarmos o numerador e denominador por
( )
t n
P j x teremos:

1 1
1
1
( ) ( )
( )
ln
( ) ( )
M
t t n
N
j t n
n
t n t n
P j p x j
P j x
E
p x P j x
+ +

]
]
]

]
]
]

(3.7)
A manipulao acima teve por objetivo possibilitar o uso da desigualdade de Jensen:

Se 0 1
j j
j
e

, ento ln ln( )
j j j j
j j
x x
| `


. ,

.
Como
1
( ) 1
M
t n
j
P j x

podemos escrever uma desigualdade baseada em (3.7):



1 1
1 1
( ) ( )
( ) ln
( ) ( )
N M
t t n
t n
n j t t n
n
P j p x j
E P j x
P j x p x j
+ +

]

]
]
]

(3.8)
Na otimizao queremos minimizar a funo erro E. Isso implica em minimizar E ao
escolher novos parmetros. Podemos reescrever (3.8) como :

1 1 1
1 1 1 1
( ) ln ( ) ( ) ( ) ln ( ) ( )
N M N M
t t t n t t n t n t t n
n j n j
E E P j x P j p x j P j x P j p x j
+ + +

] + ]
] ]

(3.9)

Note que o ltimo termo acima no depende dos novos parmetros em t+ 1 sendo,
portanto, uma constante. J o segundo termo varia com a escolha de novos parmetros.
A propriedade interessante de (3.9) o fato de que qualquer alterao no segundo termo
a direita que reduza o valor da soma dos termos automaticamente implica na reduo do
erro no novo passo. Chamemos o segundo termo esquerda de Q e o terceiro de Q0 ,
teremos:

Criado por Renato Vicente 23/06/02
53

1 0
( , , )
t t
E E Q P C Q
+
+ + (3.10)
com

1 1 1 1 1
1 1
( , , ) ( ) ln ( ) ( )
N M
t t t t n t t n
n j
Q P C P j x P j p x j
+ + + + +

]
]

(3.11)
O clculo de (3.11) denominado de passo E (Expectation) do algoritmo. Para
otimizarmos o erro precisamos otimizar (3.11), em geral isso requer a utilizao de um
dos algoritmos de otimizao que discutimos no captulo anterior. Para o caso de GMMs
possvel obter equaes para os parmetros analticamente, bastando para isso
substituir (3.2) em (3.11) e calcular as derivadas. S necessrio tomar cuidado com a
condio de normalizao ao otimizar os coeficientes de mistura. Estas condies de
normalizao podem ser introduzidas via um multiplicador de Lagrange. A funo a ser
otimizada ser portanto:


1
1
( ) 1
M
t
j
Q Q P j
+

| `
+

. ,

!
(3.12)
Calculando as derivada de (3.12) teremos:


1 1
( )
0
( )
N
t n
n t
P j x
P j

(3.13)
Manipulando a expresso acima :

1 1
1 1 1 1
( )
( ) ( ) 0
( )
M M N
t n
t t
j j n t
P j x
P j P j
P j

+ +
+


(3.14)

Assim N . Calculando todas as derivadas chegamos ao passo M (Maximization) do
algoritmo :


1
1
1
( ) ( )
N
t t n
n
P j P j x
N
+


(3.15)

1
1
1
( )
( )
( )
N
n t n
n
t N
t n
n
x P j x
j
P j x

(3.16)

1 1
1
1
1
( )( ( ))( ( ))
( )
( )
N
T
t n n t n t
n
t N
t n
n
P j x x j x j
C j
P j x

+ +

(3.17)




Criado por Renato Vicente 23/06/02
54


O Netlab possui uma demonstrao do algoritmo EM entitulada demgmm1. Nesta
demosntrao dados de exemplo so gerados a partir de duas distribuies gaussianas com
covarincia esfrica.


Um GMM com duas componentes inicializado .

Aplica-se o passo E e registra-se a verossimilhana de cada ponto em uma escala de cores
do vermelho ao azul, dependendo de qual das duas componentes tem maior contribuio.
Criado por Renato Vicente 23/06/02
55


A seguir os parmetros so atualizados no passo M.

Os passos E e M so ento alternados at que haja convergncia .



Criado por Renato Vicente 23/06/02
56

Exerccio

(1) Separe os dados em retornos.dat em dois grupos. O primeiro contendo 600
pontos o segundo o restante. Modele os retornos dirios com GMMs com
nmeros de componentes M=1,...,10 utilizando o primeiro conjunto. Avalie a
funo de log-verossimilhana
1
ln ln ( )
N
n
n
L p x

no segundo conjunto (de teste)


para cada M. Construa um grfico da log-verossimilhana contra o nmero de
componentes. Qual o nmero de componentes mais adequado ?

Sugesto: Utilize a funo gmmprob no clculo da log-verossimilhana.




Criado por Renato Vicente 01/07/02
57

Redes Neurais Camada nica

Perceptron Linear: Regresso Linear

O perceptron linear implementa a seguinte famlia de funes:


0
1
( , )
M
j j
j
y w x w

x w
(3.1)
A representao grfica do percptron como segue:




Dado um conjunto de dados
1
{( , )}
N
n n n
D t

x , o treinamento do perceptron envolve a
maximizao da verossimilhana de D:

1
( ) ( )
N
j j
j
L p t

w x , (3.2)
onde ( )
j j
p t x a densidade condicional que deve descrever o processo gerador dos dados
D. Supondo que os dados so gerados por funes na famlia (3.1) corrompidas por rudo
teremos:
( )
j j j
t y + x w . (3.3)

Conforme procedimento dos captulos anteriores introduzimos uma funo erro:

1
( ) ln ( )
ln ( )
N
j j
j
E L
p t

w w
x
(3.4)
Com um modelo de rudo gaussiano teremos:

2
2
( ( ))
1
( ) ( ( )) exp
2 2
t y
p t p t y

| `


. ,
x w
w x w (3.5)


w
x
Criado por Renato Vicente 01/07/02
58

Substituindo (3.5) em (3.4) e ignorando os termos que no dependem dos parmetros w
teremos:

2
1
1
( ) ( )
2
N
j j
j
E y x t

]

]

w w . (3.6)
A minimizao de (3.6) conhecida como mtodo dos mnimos quadrados.

Para efetuarmos a otimizao de (3.6) precisamos conhecer seu gradiente , o clculo
simples:

,
1
( )
N
j j n j
j n
E
y t x
w

]
]


w (3.7)
Se introduzirmos ( )
j j j
y t w teremos:

,
1
N
j n j
j n
E
x
w


, (3.8)
onde j denota cada um dos exemplos e n cada um dos parmetros, para o limiar
0
w temos

1 0
N
j
j
E
w


. (3.9)
O gradiente pode ser avaliado em duas etapas:
1. Cculo das contribuies ( )
j j j
y t w de cada dado ao erro quando os
parmetros so w ;
2. Clculo do gradiente conforme (3.8) e (3.9) .

Em Netlab o treinamento de um perceptron linear pode ser feito utilizando qualquer um
dos mtodos de otimizao j vistos.

Como exemplo de aplicao utilizaremos retornos do ndice BOVESPA e da
Companhia Vale do Rio Doce (VALE5). Suponhamos que os retornos da VALE5
possam ser representados como (CAPM):

VALE IBOV
R R + , (3.10)
onde um termo de rudo com mdia nula.
Poderamos eventualmente adicionar mais fatores ao modelo:

1 2 2
...
VALE IBOV n n
R R x x + + + + , (3.11)
assim teramos uma regresso linear multifatorial, ou, um perceptron linear.
Criado por Renato Vicente 01/07/02
59

Voltando ao exemplo, abaixo representamos os retornos acima.



No Netlab redes de camada nica so identificadas como Generalized Linear Models
(GLM). A funo para criao de uma GLM , como no poderia deixar de ser, glm .
Para nosso problema exemplo :

> net=glm(1,1,'linear');
> net

net =
type: 'glm'
nin: 1
nout: 1
nwts: 2
actfn: 'linear'
w1: 0.0886
b1: 0.2034

A sintaxe de glm net=glm (nr. entradas, nr. sadas, 'funo de sada'). As funes de
sada so:

1. ' linear' : ( ) y x x ;
2. ' logistic' :
1
( )
1
x
y x
e

+
;
3. softmax:
j
k
x
j x
k
e
y
e

.
Criado por Renato Vicente 01/07/02
60
A funo ' logistic' utilizada nas regresses logsticas comuns em sistemas de aprovao
automtica de crdito. J a funo softmax utilizada em classificaes que envolvem
vrias classes diferentes (por ex.: rating de crdito).




Dada a estrutura net com parmetro w, a funo erro avaliada pela funo glmerr e o
gradiente pela funo glmgrad, em geral conveno do Netlab representar o erro e o
gradiente da seguinte forma:

< tipo_de_rede> err(net,x,t) , para o erro ;
< tipo_de_rede> grad(net,x,t), para o gradiente.

Desta foram podemos usar sem maiores dificuldades a funo genrica para treinamento
de redes. Primeiro carregamos os dados, o arquivo beta.dat contm duas colunas , a
primeira com retornos do Ibovespa e a segunda com retornos vale5 :

> load(' beta.dat' );
> ibov= beta(:,1);
> vale= beta(:,2);

Ento, inicializamos o otimizador e chamamos netopt
> options= foptions;
> [net,options]= netopt(net,options,ibov,vale,' scg' );
O resultado :
>net

net =
type: 'glm'
nin: 1
nout: 1
nwts: 2
actfn: 'linear'
w1: 0.5864
b1: -9.8947e-004
Criado por Renato Vicente 01/07/02
61
Ou seja, temos que :
3
0, 586 10
VALE IBOV
R R

+ . A rede treinada pode ser utilizada


atravs da funo glmfwd. Assim:

> plot(ibov,vale,' o' );
> hold;
> x= -0.08:0.001:0.08;
> valemodel= glmfwd(net,x' );
> plot(x,valemodel);

Para avaliarmos a qualidade do ajuste podemos recorrer funo glmerr fora do conjunto
de treinamento. Dentro do conjunto de treinamento temos:
> e=glmerr(net,ibov,vale)

e =
0.0329

Que equivale a uma verossimilhana de
>L=exp(-e)

L =
0.9676

Exerccio

(a) Prepare um arquivo ASCII com retornos do Ibovespa, Dow Jones, Nasdaq,
R$/ dlar e quaisquer outras variveis que achar necessrio. Carregue os dados em
Matlab e implemente em Netlab uma regresso linear multifatorial.

(b) Separe o conjunto em treinamento (80%) e teste (20%). Calcule a verossimilhana
do modelo no conjunto de teste considerando modelos que contenham: i) apenas um fator
para ibovespa, ii) fatores para ibovespa e dlar, iii) todos os fatores. Qual o melhor
modelo ?

Criado por Renato Vicente 05/08/02
62

Redes Neurais Mult icamada

Perceptron Multicamada: Regresso No-Linear

Redes multicamada (MLP) com uma camada escondida implementam a seguinte famlia
de funes :


0 0 0
1 1
( , )
M N
out
m m jm j
m j
y g w w x w w x W

] | `
+ +
]
]
. ,
]

(4.1)
A representao grfica de uma MLP como segue:


A funo de transferncia da camada de sada g . Para a camada escondida as funes de
transferncia so
1
,...,
M
. Note que a rede para (4.1) possui M entradas e n neurnios
na camada escondida.

Se escolhermos ( ) g z z e
m
como sendo funes sigmoidais contnuas
( ( ) tanh( ) ( ) ( ) z z ou z erf z ), (4.1) pode representar uma funo :
N
f ! ! !
com preciso arbitrria ( ) ( ) ( ; )
M
M f y ! " # x x W , sendo que ( ) 0
M
M !
!$
%%%!
1
. Assim,
se os dados observados consistirem de uma funo multidimensional desconhecida
corrompida por um nvel moderado de rudo uma MLP com um nmero apropriado de
unidades na camada escondida ser capaz de extrair esta dependncia funcional.

Seja um conjunto de observaes
( ) ( )
1
{( , )}
n n P
n
D t x

, suponhamos que

( ) ( )
( )
n n
n
t f ! " & x . (4.2)


1
Hornik, K. (1991). Approximation capabilities of multilayer feedforward networks. Neural Networks 4
(2), 251-257.
w
x
w
out
Criado por Renato Vicente 05/08/02
63
Com
n
! ' " e 0
n q
n q
! !
(
"
, onde ' uma densidade de probabilidade arbitrria . Ao
treinarmos uma rede neural utilizando o conjunto D de dados procuramos encontrar
parmetros W que tornem y(x;W) o mais prximo de f possvel dado um modelo para
o rudo definido pela densidade '. De forma equivalente, desejamos encontrar
parmetros para um modelo de densidade condicional ( ; ) p t x W . Parmetros
adequados podem ser encontrados, como procedemos anteriormente, maximizando a
funo verossimilhana sobre o conjunto D definida por:

( ) ( )
1
( ) ( , )
P
n n
n
L p t W x W

. (4.3)
Para simplificarmos os clculos, substituindo produtos por somas, introduzimos, como
anteriormente, uma funo erro (ou energia) :

( ) ( )
1
( ) ln ( )
ln ( , )
P
n n
n
E L
p t
W W
x W

(4.4)
Com um modelo de rudo gaussiano teremos:

2
2
1 ( ( ; ))
( , ) ( ( ; )) exp
2 2
t y x
p t x p t y x
W
W W

| `


. ,
(4.5)

Substituindo (4.5) em (4.4) e ignorando os termos que no dependem dos parmetros
W teremos:

2
( ) ( )
1
1
( ) ( ; )
2
P
n n
n
E y x t W W

]
]

. (4.6)
Uma outra possibilidade assumirmos um rudo com densidade exponencial
generalizada:

( )
1
( , ) exp ( ; )
2 (1/ )
r
r r
p t x t y x
r
W W

, (4.7)
neste cado teremos a seguinte funo erro para minimizar dado o conjunto de dados D.


( ) ( )
1
1
( ) ( ; )
2
P
r
n n
n
E y x t W W

]
]

(4.8)
Qualquer que seja o mtodo de otimizao que empregemos (Gradiente Conjugado
Escalado, Quase-Newton, etc) necessrio cacular o gradiente da funo erro. No caso
de uma MLP, h uma maneira bastante eficiente de realizar este clculo proposta
inicialmente na dcada de sessenta e depois redescoberta vrias vezes, esta tcnica
conhecida como algoritmo Backpropagation
2
.




2
Amari S., Theory of adaptive pattern classifiers, IEEE Trans EC-16 299 (1967).
Criado por Renato Vicente 05/08/02
64
Backpropagation

No caso mais simples, devemos calcular o gradiente da seguinte funo erro:

2
( ) ( )
0 0 0
1 1 1
1
( )
2
P M N
n out n
m m jm j
n m j
E w w x w w t W

] | `
+ +
]
]
. , ]

(4.9)

Para simplificarmos os clculos, assumiremos, sem perda de generalidade que os limiares
w0 so pesos sinpticos que recebem sinais constantes x=1. Tambm assumiremos que as
funes de transferncia da camada escondida so ( ) tanh( ) z z " " Assim:

2
( ) ( )
0
1 1 1
1
( ) tanh
2
P M N
n n
m jm j
n m j
E w w x t W

] | `

]
]
. , ]

. (4.10)
Aqui introduzimos a notao
jm
w para indicar conexes sinpticas unindo a entrada j
ao neurnio m da camada escondida . Agora definimos o campo ps-sinptico atuando
sobre o neurnio m quando o sinal de entrada
( ) n
x :

( ) ( )
1
N
n n
m jm j
j
h w x
"
"
)
(4.11)
A funo erro pode ser decomposta em contribuies de cada componente do conjunto
D:

( )
1
( ) ( )
P
n
n
E E W W

(4.12)
Com

2
( ) ( ) ( )
0
1
1
( )
2
M
n n n
m m
m
E w a t W

| `


. ,

, (4.13)
onde aproveitamos a interpretao do modelo descrito por (4.1) como uma rede de
neurnios para introduzimos
( ) ( )
tanh( )
n n
m m
a h " como a sada do neurnio m da camada
escondida quando o sinal de entrada
( ) n
x . Por consistncia o campo ps-sinptico na
camada externa
( ) ( )
0 0
1
M
n n
m m
m
h w a
"
"
)
e a sada
( ) ( )
0
n n
y h " . Graficamente teremos:



( ) n
m
a

x
(n)
( ) n
m
h

( )
0
n
h
( ) n
y
Criado por Renato Vicente 05/08/02
65


O gradiente em relao aos pesos sinpticos ser:

( ) ( )
( )
1
n n P
m
n
n jm m jm
h E E
w h w
"
* * *
"
* * *
)
(4.14)

Definimos o erro
( )
( )
( )
n
n
m
n
m
E
h
#
*
"
*
e assim teremos que :

( ) ( )
1
P
n n
m m
n jm
E
x
w
#
"
*
"
*
)
(4.15)
Para o neurnio de sada o clculo de
( )
0
n
# trivial resultando em:

( )
( ) ( ) ( )
0 0 ( )
0
n
n n n
n
E
h t
h

(4.16)
Lembrando que
2
tanh( )
1 tanh ( )
d z
z
dz
" # , para os neurnios da camada interna teremos:

( ) ( )
( ) ( ) ( )
0 0
( ) ( )
1
( ) ( ) ( )
0 0
(1 )
n n M
n n n m
m m m m
n n
m m m
n n n
m m m
da E
w a t w
h dh
w a a
#
#
"
+ ,
*
- .
" " # -
.
-
. - .
* / 0
" #
)
, (4.17)
conhecida como frmula de retropropagao (backpropagation).

Note que para o clculo de derivadas na camada interna necessrio utilizar erros da
camada mais externa. Pictorialmente o algoritmo consiste na seguinte seqncia:

1. Dada a entrada
( ) n
x , calculam-se os campos ps-sinpticos
( ) n
m
h por toda a rede.


Assim
( ) ( )
1
N
n n
m jm j
j
h w x
"
"
)
e
( ) ( )
0 0
1
tanh( )
M
n n
m m
m
h w h
"
"
)
.

x
(n)
( ) n
m
h

( )
0
n
h
Criado por Renato Vicente 05/08/02
66
2. Calcula-se o erro na sada
( )
0
n
# e retropropaga-se para as camadas interiores
utilizando
( ) ( ) 2 ( )
0 0
(1 tanh ( ))
n n n
m m m
w h # # " # .

3. Calcula-se os gradiente utilizando
( ) ( )
1
P
n n
m j
n jm
E
x
w
#
"
*
"
*
)
e
( ) ( )
0
1 0
P
n n
m
n m
E
a
w
#
"
*
"
*
)
.


O Backpropagation reduz o nmero de operaes necessrias para o clculo de gradientes
em MLPs de
2
( ) O W para ( ) O W , onde W o nmero de parmetros. Calculado o
gradiente podemos utilizar qualquer um dos algoritmos de otimizao conhecidos para
efetuar o treinamento da rede.


Perceptron Multicamada: Classificao

Uma classificao simples uma funo : { 1,1}
M
f ! # ! . Uma rede neural pode ser
treinada a reconhecer uma funo de classificao a partir de um conjunto de treinamento
( ) ( )
1
{ , }
n n P
n
D t
"
" x . Um perceptron de camada nica definido como

0
1
( ; ) ( )
N
j j
j
y w x w "
"
" &
)
x w , (4.18)
( ) n
m
a
( ) n
j
x

( ) n
m
#

( )
0
n
#
Criado por Renato Vicente 05/08/02
67
onde " uma funo sigmoidal (tanh, erf, ...) divide o espao em duas regies separadas
por um hiperplano definido por
0
w 1 "# w x . Assim qualquer vetor com
0
w 1 2# w x
classificado como +1 e qualquer vetor com
0
w 1 3# w x classificado como -1. Ilustrando:



A distncia do hiperplano at a origem
0
w . Uma MLP com uma camada escondida
pode representar qualquer regio convexa no espao. Cada neurnio da camada
escondida define um hiperplano e a classificao definida pela unidade de sada.


0 0 0 0
1 1
( , )
M N
out
m jm j
m j
y w w x w w x W

] | `
+ +
]
]
. , ]

(4.19)
Normalmente se utiliza ( ) tanh( ) z z " " para a camada interna e
0
1
( )
1
z
z
e
"
#
"
&
para a
camada externa. A regio convexa definida mais complicada que um simples polgono
devido ao uso de funes diferenciveis. Para obtermos regies arbitrrias necessrio
utilizar uma rede com duas camadas escondidas:

1 2 3
3 0 2 1 0 0 0
1 1 1
( , )
L M N
l ml jm j
l m j
y w w w x w w w x W

] | `

+ + +
] ' '
]
. , ]

.
Este tipo de rede um classificador universal do mesmo modo que uma MLP com uma
camada escondida pode representar qualquer funo contnua
3
.




3
Lipmann, R. P. (1987). Na introduction to computing with neural nets. IEEE ASSP Magazine, April, 4-22.
+
-
Criado por Renato Vicente 05/08/02
68
MLPs em Netlab

O Netlab trs um conjunto de funes para a implementao de MLPs com uma camada
escondida. As principais funes disponveis so:

mlp: cria uma MLP com uma camada escondida;
mlpinit: inicia os pesos com varincia definida;
mlpgrad: calcula o gradiente do erro;
mlpfwd: calcula a sda da rede;

Outras funes podem ser obtidas entrando
> help netlab;

Demonstraremos agora o uso do Netlab para uma tarefa de regresso. O problema
consiste na interpretao automtica do resultado de doze sensores utilizados em
oleodutos para a determinao da proporo de gs, leo e gua em um fluxo. Primeiro
500 medidas so efetuadas em laboratrio, 400 destas medidas so ento utilizadas para
treinar uma MLP as outras 100 so utilizadas para teste. Os dados esto armazenados no
arquivo "oleoduto.dat", as doze primeiras colunas deste arquivo so as medidas dos
sensores as ltimas duas colunas so a proporo de gua e gs respectivamente.

Comeamos por carregar o conjunto de dados em uma matriz "oleoduto":
> load ' oleoduto.dat'

A seguir separamos os dados em quatro vetores: inteste, intreino, outteste, outtreino.

> intreino= oleoduto(1:400,1:12);
> inteste = oleoduto(401:500,1:12);
> outtreino = oleoduto (1:400,13:14);
> outteste = oleoduto (401:500, 13:14);

De posse de nossos vetores de treinamento e teste, podemos agora criar uma MLP:
> net = mlp(12,7,2,' linear' );
Criado por Renato Vicente 05/08/02
69

A arquitetura que escolhemos tem a seguinte representao:



As unidades de sada so lineares e as unidades internas so tanh .

Podemos ver a rede criada digitando:
>net

net =
type: 'mlp'
nin: 12
nhidden: 7
nout: 2
nwts: 107
actfn: 'linear'
w1: [12x7 double]
b1: [-0.1817 0.3313 -0.2486 0.0904 -0.1714 -0.3418 0.3177]
w2: [7x2 double]
b2: [0.1880 0.5289]

Note que o modelo contm 107 parmetros. Agora inicializamos o vetor de controle
dos algoritmos de otimizao:

> options= foptions;

Ajustamos o vetor de controles para que os erros sejam exibidos na tela:
> options(1)= 1;
Ajustamos o nmero mximo de iteraes para 500;
> options(14)= 500;
Criado por Renato Vicente 05/08/02
70

Agora treinamos a MLP utilizando o Gradiente Conjugado Escalado (scg):
> [net,options,erro] = netopt(net,options,intreino,outtreino,'scg');


Cycle 200 Error 0.160426 Scale 1.000000e-015
Cycle 201 Error 0.160335 Scale 1.000000e-015
Cycle 202 Error 0.160068 Scale 1.000000e-015
Cycle 203 Error 0.159740 Scale 1.000000e-015
Cycle 204 Error 0.159441 Scale 1.000000e-015
Cycle 205 Error 0.159200 Scale 1.000000e-015
Cycle 206 Error 0.159114 Scale 1.000000e-015
Cycle 207 Error 0.158751 Scale 1.000000e-015
Cycle 208 Error 0.158675 Scale 1.000000e-015
Cycle 209 Error 0.158466 Scale 1.000000e-015
Cycle 210 Error 0.158082 Scale 1.000000e-015
Cycle 211 Error 0.157837 Scale 1.000000e-015
Cycle 212 Error 0.157532 Scale 1.000000e-015
Cycle 213 Error 0.157437 Scale 1.000000e-015
Cycle 214 Error 0.157029 Scale 1.000000e-015
Cycle 215 Error 0.156953 Scale 1.000000e-015
Cycle 216 Error 0.156921 Scale 1.000000e-015

Agora plotamos a evoluo do erro de treinamento com o nmero de iteraes:

> plot(err,' o-' );



Agora utilizamos o modelo treinado armazenado em net para realizar predie no
conjunto de teste:
> outmodel= mlpfwd(net,inteste);
Criado por Renato Vicente 05/08/02
71

A seguir plotamos as previses contra os valores reais no conjunto de teste:
> plot(outmodel(:,1),outteste(:,1),'o');

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9


> plot(outmodel(:,2),outteste(:,2),' o' );

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9


Se a qualidade das predies adequada ou no ir depender da aplicao. Podemos
quantificar esta qualidade calculando a diferena percentual mdia entre previses e
valores experimentais definida como:

(n) (n)
(n)
1
outmodel outteste
1
outteste
P
n
P
"
#
4"
)
(4.20)
> deltas= abs(outmodel-outteste)./ outteste;
> delta=sum(deltas)./100

delta =
0.2654 0.1465

Ou seja o erro mdio de 26,5% para a primeira sada (leo) e 14,65% para a segunda
sada (gua). Adcionalmente interessante observarmos o perfil geral das previses:
Criado por Renato Vicente 05/08/02
72
> plot(deltas(:,1),'o-'); figure; plot(outteste(:,1),'o-');
> plot(deltas(:,2),'o-'); figure; plot(outteste(:,2),'o-');
0 10 20 30 40 50 60 70 80 90 100
0
2
4
6
8
10
12
14
16
18

0 10 20 30 40 50 60 70 80 90 100
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9

0 10 20 30 40 50 60 70 80 90 100
0
0.5
1
1.5
2
2.5
3
3.5
4

0 10 20 30 40 50 60 70 80 90 100
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9

Criado por Renato Vicente 05/08/02
73
Nota-se que grandes erros esto relacionados com valores pequenos das sadas. Uma
forma de melhorar a qualidade das previses utilizar apenas valores de sada acima de
um certo limiar, para isso necessrio modificar a arquitetura da rede adicionando uma
terceira sada definida como outtreino(:,3)=1 - outtreino(:,1) outtreino (:,2) , treinar
novamente o modelo e apenas utilizar as duas previses que exibirem valores acima de
um limiar definido (por exemplo: > 0,1). A terceira previso pode ser obtida da
condio de normalizao.

Aplicaes de MLPs

O sucesso de uma aplicao de MLPs depende da natureza do problema. Se h uma
funo, mesmo que complexa, subjacente aos dados, as chances de sucesso so grandes.

H uma grande quantidade de aplicaes de MLPs e outras redes descritas na Internet,
para citar alguns links:

http:/ / www.brainstorm.co.uk/ NCTT/ Welcome.htm
http:/ / www.emsl.pnl.gov:2080/ proj/ neuron/ neural/ products/
http:/ / neuralnetworks.ai-depot.com/ Applications.html


Exerccio

1. Melhore a qualidade das previses do modelo para composio de fluxos em
oleodutos realizando as seguintes modificaes :
a) Gere conjuntos de treinamento e teste com trs sadas que somem um;
b) Treine uma rede com 7 neurnios na camada escondida do mesmo modo
apresentado ;
c) Na etapa de teste, utilize o seguinte algoritmo para efetuar previses:
tome as duas sadas com maior valor out1 e out2, obtenha a terceira sada
com out3= 1-out1-out2;
d) Calcule o erro percentual mdio para cada uma das sadas assim obtidas.
e) Repita o treinamento para redes com 5,6,8,10 e 15 neurnios. Qual a
melhor arquitetura ?


Criado por Renato Vicente 01/07/02
62

Você também pode gostar