Estou testando a otimização bayesiana, seguindo Snoek, Larochelle e Adams [ http://arxiv.org/pdf/1206.2944.pdf] , usando GPML [ http://www.gaussianprocess.org/gpml/code/matlab / doc /] . Eu implementei a função de aquisição de melhoria esperada descrita na página 3, e estou assumindo que estou certo de que para decidir onde próxima consulta meu objetivo devo levar o que maximiza:
Mas eu não consigo encontrar orientação sobre o conjunto de candidatos 's considerar. Teoricamente, eu gostaria de encontrar o melhor em todo o domínio, e o artigo foi escrito de uma maneira que parece sugerir que isso é possível ("[AE] também tem uma forma fechada no processo gaussiano" ) Mas, como uma questão prática, preciso calcular as médias e variações preditivas posteriores a qualquer eu possa considerar antes de poder calcular e enquanto essas posteriores têm como um formulário fechado, ainda preciso calculá-los usando álgebra matricial, portanto não consigo encontrar uma maneira de escolher um monte de 's.x x ∗ a E I ( x ∗ ) x
A questão: qual é um método prático para escolher o conjunto grande (médio? Pequeno?) De candidatos sobre os quais eu maximizo EI (ou qualquer outra função de aquisição)? (Isso está no jornal em algum lugar e eu perdi isso?)
No momento, estou apenas pegando meu conjunto atual , amostrando-o com substituição 2000 vezes e adicionando algum ruído gaussiano a cada ponto. Parece bom, eu acho.
fonte
Respostas:
A norma é usar qualquer otimizador global que você desejar. O problema é que a superfície da EI é altamente multimodal e desconectada; otimizar essa função de aquisição é um problema não trivial em si.
Uma escolha comum que eu já vi em vários artigos é o algoritmo DIRECT ; às vezes eu vi o CMA-ES, que é um método de ponta em otimização não linear. Na minha experiência com outras formas de otimização, o MCS ( pesquisa de coordenadas em vários níveis ) tende a funcionar relativamente bem. Você pode encontrar uma revisão dos otimizadores globais sem derivativos aqui :
A propósito, a EI é analítica. Se você quiser, também pode calcular seu gradiente para orientar a otimização, mas isso não é necessário. Uma técnica eficaz é executar um otimizador global primeiro para encontrar soluções promissoras e, em seguida, executar um otimizador local para refiná-lo (por exemplo, um método quase-Newton como o BFGS, que é fminunc no MATLAB; ou fmincon, se você tiver restrições).
Finalmente, se a velocidade da otimização da função de aquisição é um fator (que não é o cenário BO "tradicional"), eu encontrei resultados decentes iniciando com um design Latin Hypercube ou um design de seqüência quase aleatória de Sobol, depois refinado com algumas etapas de um otimizador local a partir dos melhores pontos; veja também o comentário @ user777. Como esse não é o cenário de BO padrão, não tenho nenhuma referência específica que realmente use esse método.
Exemplos de trabalhos que se referem ao DIRECT ou CMA-ES:
Você pode pesquisar no Google "otimização bayesiana" + o algoritmo de otimização global desejado e encontrará vários papéis. Além disso, em praticamente todos os outros artigos sobre BO, você encontraria uma frase como :
fonte