Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
Algoritmo Nelder-Mead
Seminario I - Metodos Computacionais
Ana Julia e Arthur Tarso
Universidade Federal de Minas Gerais
Roteiro
1. Introducao
2. Algoritmo
3. Aplicacao
4. Exercıcio
1
Introducao
O que e o algoritmo
E um metodo numerico comumente usado para encontrar o mınimo
ou o maximo de uma funcao objetiva em um espaco
multidimensional;
E um metodo de busca direta, pois depende somente das
classificacoes de uma colecao de avaliacoes da funcao, enquanto
tenta encontrar um ponto superior para a proxima iteracao.
2
Simplex
Por utilizar o conceito de simplex, tambem e conhecido como metodo
amoeba
Figura 1: Exemplo de um 3-simplex ou tetraedro
3
Funcionamento
Figura 2: Simplex sobreposto aos contornos de uma funcao objetiva g
4
Funcionamento
Figura 3: Cinco possıveis transformacoes do simplex
5
Funcionamento
Figura 4: Maximizacao de uma complicada funcao bivariada por meio do
algoritmo de Nelder-Mead 6
Funcionamento
E necessario verificar dois criterios de convergencia para o algoritmo
Nelder-Mead:
i. Alguma medida de mudanca relativa na localizacao dos vertices do
simplex;
ii. Verificar se os valores da funcao objetiva aparentam ter convergido.
7
Falha do metodo
Figura 5: Ilustracao de falha do metodo Nelder-Mead
8
Reinicializacao
Quando verifica-se a estagnacao do algoritmo, uma reinicializacao com
um simplex diferente pode ser a solucao para o problema, colocando o
algoritmo em um diferente e possivelmente numa trajetoria mais
produtiva. Alternativamente, a reinicializacao orientada e projetada com
o objetivo de remodelar o simplex visando a convergencia. O
procedimento consiste em:
i. Define uma matriz de direcoes e o correspondente vetor de
funcoes objetivas diferenciadas em relacao ao x(t)best .
ii. Substitui todos os vertices exceto xbest , com os vertices com
vertices situados em eixos coordenados centrados em x(t)best e com
comprimentos reduzidos.
A justificativa para a reinicializacao orientada e que um novo gradiente
do simplex no ponto xbest deve apontar em uma direcao que se aproxima
do verdadeiro gradiente da funcao objetivo, uma vez que o simplex seja
pequeno o suficiente e desde que o gradiente do simplex esteja no
octante correto. 9
Vantagens
Nao e necessario calcular as derivadas da funcao para fazer a
otimizacao;
O metodo e eficiente para um numero baixo/moderado de
dimensoes;
O metodo possui uma abordagem robusta, no sentido de que pode
ser usado para encontrar o ponto otimo de uma vasta gama de
funcoes;
Pode ser usado para funcoes descontınuas;
Robustez para atingir a convergencia, mesmo na presenca de ruıdo
aleatorio.
10
Desvantagens
Para problemas de alta dimensionalidade, a eficacia do metodo e
variada, dependendo da natureza do problema;
Em alguns casos, o algoritmo pode convergir para pontos que nao
sao de maximo nem mınimo;
Dificuldade em escolher bons criterios de parada;
Baixa velocidade de convergencia.
11
Algoritmo
Algoritmo
1) Inicializacao
Para t = 1:
Escolha os vertices iniciais x(t)1 , . . . x
(t)p+1;
Escolha os valores dos α’s tais que:
αr > 0,
αe > max(1, αr ),
αc ∈ (0, 1),
αs ∈ (0, 1).
Valores padrao sao (1, 2, 12 ,
12 ).
12
Algoritmo
2) Ordenacao
Ordene os vertices de acordo com seu valor avaliado na funcao de
interesse e nomeie:
x(t)best : maior valor de g(x);
x(t)bad : segundo menor valor de g(x);
x(t)worst : menor valor de g(x).
13
Algoritmo
3) Orientacao (direcao)
Calcule:
c(t) =1
p
[(p+1∑i=1
x(t)i
)− x
(t)worst
]
14
Algoritmo
4) Reflexao
Calcule x(t)r = c(t) + αr (c
(t) − x(t)worst).
Compare g(x(t)r ) com g(x
(t)best) e g(x
(t)bad)
Se g(x(t)best) ≥ g(x
(t)r ) > g(x
(t)bad): aceite x
(t)r como novo vertice para
iteracao t + 1 e descarte x(t)worst . Va para o passo de parada (8).
Se g(x(t)r ) > g(x
(t)best): va para o passo de expansao (5).
Caso contrario: va para o passo de contracao (6).
15
Algoritmo
5) Expansao
Calcule x(t)e = c(t) + αe(x
(t)r − c(t)).
Compare g(x(t)e ) com g(x
(t)best).
Se g(x(t)e ) > g(x
(t)r ): aceite x
(t)e como novo vertice para iteracao
t + 1 e descarte x(t)worst . Va para o passo de parada (8).
Caso contrario: aceite x(t)r como novo vertice para iteracao t + 1 e
descarte x(t)worst . Va para o passo de parada (8).
16
Algoritmo
6) Contracao
Compare g(x(t)e ) com g(x
(t)bad) e g(x
(t)worst).
Se g(x(t)bad) ≥ g(x
(t)r ) > g(x
(t)worst): Contracao Externa.
Calcule x(t)o = c(t) + αc(x
(t)r − c(t)).
Se g(x(t)o ) ≥ g(x
(t)r ): aceite x
(t)o como novo vertice para
iteracao t + 1 e descarte x(t)worst . Va para o passo de parada (8).
Caso contrario va para o passo de encolhimento (7).
Se g(x(t)worst) ≥ g(x
(t)r ): Contracao Interna.
Calcule x(t)i = c(t) + αc(x
(t)worst − c(t)).
Se g(x(t)i ) > g(x
(t)worst): aceite x
(t)i como novo vertice para
iteracao t + 1 e descarte x(t)worst . Va para o passo de parada (8).
Caso contrario va para o passo de encolhimento (7).
17
Algoritmo
7) Encolhimento
Para todo j = 1, . . . p + 1 tal que x(t)j = x
(t)best calcule
x(t)sj = x
(t)best + αs(x
(t)j − x
(t)best).
Forme um novo simplex com os vertices x(t)best e os p novos vertices para
iteracao t + 1. Va para o passo de parada (8).
18
Algoritmo
8) Parada
Verifique o criterio de convergencia. Se ele nao foi atingido, incremente t
para t + 1 e retorne ao passo de ordenacao (2). Caso contrario, x(t)best) e
dado como o valor que aproxima o maximizador de g
19
Aplicacao
Caso univariado
O metodo de Nelder-Mead nao e confiavel para o caso univariado (Fonte:
optim, R), mas sua implementacao e justificada pela simplicidade do
algoritmo no caso de uma funcao univariada, para fins de entendimento
do metodo.
Foram determinados tres criterios de convergencia:
Volume do 2-simplex (area de um triangulo), dada por:
A =
∣∣∣∣x1(g(x2)− g(x3)) + x2(g(x3)− g(x1)) + x3(g(x1)− g(x2))
2
∣∣∣∣Diferenca absoluta entre o melhor e pior vertices avaliados na funcao
de interesse:
|g(xbest)− g(xworst)| ≤ ϵ
Diferenca absoluta entre o melhor e pior vertices:
|xbest − xworst | ≤ ϵ
20
Caso univariado
Figura 6: Resultado da maximizacao de uma Γ(4, 2) por meio do algoritmo
Nelder-Mead.
21
Caso multivariado
Para o caso multivariado, foi utilizada a funcao optim do R, selecionando
o metodo Nelder-Mead e fnscale negativo, para que seja feita a
maximizacao.
Uso:
Argumentos:
par: valores iniciais para parametros que serao maximizados.
fn: funcao a ser minimizada (ou maximizada).
gr: retorna gradiente para os metodos ”BFGS”, ”CG”e ”L-BFGS-B”.
method: metodo utilizado.
lower, upper: limites para o metodo ”L-BFGS-B”.
control: lista de parametros de controne, entre eles o fnscale.
hessian: retorna matriz Hessiana. 22
Caso multivariado
Funcao Sombreiro:
g(x , y) = 10sin(√x2 + y2)√
x2 + y2
Figura 7: Valores de maximo (triangulo vermelho) para diferentes escolhas de
pontos iniciais (par).
23
Caso multivariado
Normal Bivariada:
Figura 8: Resultado da maximizacao de uma Normal bivariada por meio do
algoritmo Nelder-Mead, utilizando funcao optim do R. Maximo marcado por
triangulo vermelho.
24
Exercıcio
Exercıcio
Utilize o metodo de Nelder-Mead para maximizar uma funcao
multivariada de sua escolha, preferencialmente multimodal, diferente das
ja apresentadas neste relatorio, e faca um plot com os resultados, para
valores iniciais distintos. Comente os resultados.
Sugestao: utilizar a funcao optim do R e o pacote scatterplot3d, da
forma como foram apresentados neste relatorio.
25
Perguntas?
25
Referencias
Givens, G. H., Hoeting, J. A. (2013). Computational Statistics. 2 ed.
Wiley, 45-52.
CRAN. R documentation on optim function.