Estou interessado em maximizar uma função , onde .θ ∈ R p
O problema é que não conheço a forma analítica da função ou de suas derivadas. A única coisa que posso fazer é avaliar a função ponto a ponto, um valor e obtendo uma estimativa NOISY nesse ponto. Se eu quiser, posso diminuir a variabilidade dessas estimativas, mas tenho que pagar custos computacionais crescentes. * f ( θ * )
Aqui está o que eu tentei até agora:
Descida mais acentuada estocástica com diferenças finitas: pode funcionar, mas requer muita sintonia (por exemplo, sequência de ganho, fator de escala) e geralmente é muito instável.
Recozimento simulado: funciona e é confiável, mas requer muitas avaliações de funções, então achei bastante lento.
Então, eu estou pedindo sugestões / idéias sobre um possível método de otimização alternativo que possa funcionar sob essas condições. Estou mantendo o problema o mais geral possível, a fim de incentivar sugestões de áreas de pesquisa diferentes das minhas. Devo acrescentar que estaria muito interessado em um método que me desse uma estimativa do Hessian na convergência. Isso ocorre porque eu posso usá-lo para estimar a incerteza dos parâmetros . Caso contrário, terei que usar diferenças finitas em torno do máximo para obter uma estimativa.
fonte
Respostas:
Nosso pacote Matlab SnobFit foi criado precisamente para esse fim. Nenhuma suposição sobre a distribuição do ruído é necessária. Além disso, os valores das funções podem ser fornecidos através de arquivos de texto, assim você pode aplicá-lo às funções implementadas em qualquer sistema capaz de gravar um arquivo de texto. Consulte
http://www.mat.univie.ac.at/~neum/software/snobfit/
O SnobFit havia sido desenvolvido para uma aplicação em que a função a ser otimizada nem existia, e os valores das funções (uma medida da qualidade de fabricação) foram obtidos por equipamentos especializados e caros, criando produtos de amostra e medindo-os manualmente, resultando em cerca de 50 funções. avaliações por dia.
fonte
Existem várias técnicas de otimização bayesiana que você pode tentar. As mais fáceis são baseadas no processo gaussiano:
Eles operam, formando funções posteriores a plausíveis, dando observações até agora e sugerindo o próximo ponto para aprender rapidamente a função e encontrar os máximos globais (veja meu post no blog ).
Outra vantagem é que você pode estimar o Hessian no máximo. No entanto, você precisa especificar um modelo de ruído.
fonte
O algoritmo SPSA de James Spall (abreviação de Recozimento Simulado de Perturbação Estocástica, se bem me lembro) foi projetado para exatamente esse tipo de problema. Ele tem alguns papéis em que o usa para problemas como o que você descreve.
fonte