Otimizar uma função desconhecida que pode ser avaliada apenas?

11

Dada uma função desconhecida , podemos avaliar seu valor em qualquer ponto de seu domínio, mas não temos sua expressão. Em outras palavras, é como uma caixa preta para nós.f:RdRf

Qual é o nome do problema de encontrar o minimizador de ? Quais são alguns métodos por aí?f

Qual é o nome do problema de encontrar a solução para a equação ? Quais são alguns métodos por aí?f(x)=0

Nos dois problemas acima, é uma boa idéia interpolar ou ajustar algumas avaliações de f: usando uma função com forma e parâmetro conhecidos a ser determinado e, em seguida, minimize ou encontre sua raiz?g θ θ g θ(xi,f(xi)),i=1,,ngθθgθ

Obrigado e cumprimentos!

Tim
fonte
1
Você pode avaliar seu gradiente em um determinado ponto?
precisa
@chaohuang: Existem dois casos: você pode ou não avaliar seu gradiente, dependendo das suposições.
Tim
Se o gradiente estiver disponível, as tarefas solicitadas podem ser realizadas por algoritmos baseados em gradiente. Por exemplo, o mínimo, ou pelo menos um mínimo local, pode ser calculado pelo método de descida mais íngreme e as raízes podem ser encontradas pelo método de Newton.
chaohuang
E se o gradiente for desconhecido, existem métodos metaheurísticos , que também são chamados de métodos livres de derivativos ou de caixa preta e geralmente na forma de otimização estocástica.
precisa
2
Você sabe se a função é suave (mesmo que você não consiga avaliar o gradiente)? Você sabe se a função é convexa? Se não é convexo, você sabe se é pelo menos contínuo ao Lipschitz? Se a função é completamente geral, esse é um problema sem esperança.
precisa saber é o seguinte

Respostas:

13

Os métodos que você está procurando - ou seja, que usam apenas avaliações de funções, mas não derivadas - são chamados métodos de otimização livre de derivadas . Há uma grande quantidade de literatura sobre eles, e você pode encontrar um capítulo sobre esses métodos na maioria dos livros sobre otimização. As abordagens típicas incluem

  • Aproximação do gradiente por diferenças finitas, se pudermos razoavelmente esperar que a função seja suave e, possivelmente, convexa;
  • Métodos de Monte Carlo, como recozimento simulado;
  • Algorítmos genéticos.
Wolfgang Bangerth
fonte
1
Posso apenas adicionar "Modelagem substituta" a essa lista? Eles são muito aplicáveis ​​à otimização de caixas pretas, principalmente se a função é cara de avaliar.
OscarB 08/04
Sim, você pode :-) Certamente um ótimo complemento.
Wolfgang Bangerth
Pode-se também usar o método Nelder-Mead se forem conhecidas boas estimativas dos ótimos.
JM
Sim, você pode usar o Nelder-Mead, mas é um algoritmo terrível comparado com quase todos os outros.
Wolfgang Bangerth
1
@WolfgangBangerth: seu comentário sobre Nelder-Mead é válido apenas na dimensão d> 2. Em duas dimensões, é para muitos problemas um método excelente e muito difícil de vencer.
Arnold Neumaier 23/09/13
2

Eu acho que você deveria começar com: Workshop da GECCO sobre Benchmarking de otimização de caixa preta de parâmetros reais (BBOB 2016) http://numbbo.github.io/workshops/index.html

Você encontrará muitos algoritmos diferentes que foram usados ​​em competições anteriores e que foram comparados em uma base comum. Se você começar em outro lugar, logo se afogará nas centenas de artigos que afirmam que seus métodos e algoritmos têm melhor desempenho do que outros, com poucas evidências reais dessas alegações.

Até recentemente, era, para ser franco, um estado de coisas vergonhoso e todo o poder para o INRIA, GECCO e muitos outros pelo esforço que fizeram para estabelecer uma estrutura para comparações racionais.

Lisístrata
fonte
-1

Eu apenas acrescentaria que uma das chaves aqui é poder escalar o método de otimização em CPUs multicore . Se você pode executar várias avaliações de função simultaneamente, isso fornece uma aceleração igual a um número de núcleos envolvidos. Compare isso usando apenas um modelo de resposta um pouco mais preciso, o que o torna 10% mais eficiente.

Eu recomendo olhar para este código , ele pode ser útil para pessoas que têm acesso a vários núcleos. Uma matemática por trás disso é descrita neste artigo .

Paulo
fonte
1
Essa resposta é muito curta para ser útil (e permanecer útil, pois os links podem desaparecer a qualquer momento). Além disso, mencione que você é o autor deste software .
Christian Clason