Otimização matemática em uma função barulhenta

10

Seja uma função bastante agradável (por exemplo, contínua, diferenciável, não há máximos locais demais, talvez côncavos etc.). Quero encontrar um máximo de f : um valor x R d que faça f ( x ) o maior possível.f:RdRfxRdf(x)

Se eu tivesse um procedimento para avaliar precisão em qualquer entrada de minha escolha, eu poderia usar técnicas padrão de otimização matemática : escalada, descida de gradiente (bem, ascensão de gradiente), etc. No entanto, em meu aplicativo, não maneira de avaliar f ( x ) exatamente. Em vez disso, tenho uma maneira de estimar o valor de f ( x ) .ff(x)f(x)

Em particular, dado qualquer e qualquer ε , eu tenho um oráculo que produzirá uma estimativa de f ( x ) e cujo erro esperado é aproximadamente ε . O tempo de execução dessa invocação do oracle é proporcional a 1 / ε 2 . (É implementado por um tipo de simulação; a precisão da simulação aumenta com a raiz quadrada do número de tentativas, e posso escolher quantas tentativas executar, para poder escolher a precisão desejada.) Portanto, isso me dá uma maneira de obter uma estimativa de qualquer precisão que eu deseje, mas quanto mais preciso eu quero que a estimativa seja, mais tempo levará.xεf(x)ε1/ε2

Dado esse oráculo barulhento para , existem técnicas para calcular o máximo de f da forma mais eficiente possível? (Ou, mais precisamente, encontrando um máximo aproximado.) Existem variantes de escalada, descida de gradiente etc. que funcionam nesse modelo?ff

É claro que eu poderia fixar um valor muito pequeno de e aplicar escalada ou descida de gradiente com este oráculo, mantendo o mesmo ε por toda parte. No entanto, isso pode ser desnecessariamente ineficiente: talvez não precisemos de uma estimativa tão precisa perto do início, enquanto a precisão perto do fim, quando você estiver se concentrando na solução, é mais importante. Existe alguma maneira de tirar proveito da minha capacidade de controlar a precisão de minha estimativa dinamicamente, para tornar o processo de otimização mais eficiente? Esse tipo de problema já foi estudado antes?εε

DW
fonte
2
ϵ
cibersincronicidade, encontrou exatamente esse caso recentemente em um programa de AG. concordou com rs acima que o recozimento simulado onde a precisão da avaliação da função corresponde aproximadamente à diminuição da temperatura deve funcionar. Outra idéia é fazer apenas um número fixo de amostras em cada ponto e tomar a média como estimativa. uma teoria mais avançada pode apenas dizer que você não pode obter nada por nada e que não há atalho para avaliações que melhoram a otimização.
vzn

Respostas:

4

f(x,p)f(x+Δx,p+Δp)pΔxΔp

  • Algumas técnicas usadas na otimização estocástica e otimização robusta podem ser aplicáveis.
  • fx0ΔxΔp
  • fx(x~,p~)f(x~,p~)
  • ΔpΔx1/ϵ2
  • A troca de ruído versus tempo de execução é o que diferencia esse problema dos problemas mais bem estudados. Os problemas em que o ruído é inevitável são mais comuns e melhor estudados.
Thomas Klimpel
fonte
f(x,p)f(x+Δx,Δp)pp=0f) A otimização estocástica e a otimização robusta parecem mais ou menos o tipo de coisa que eu estava procurando, então isso é muito útil. Obrigado.
DW
p=0f(x,0)f(x+Δx,Δp)ΔxΔp