Parece que você está interessado em estudar métodos de otimização estocástica . Se você enquadrar a otimização como um tipo de problema de amostragem, obterá um método de otimização estocástica, e esse último método só será vantajoso se fornecer alguma melhoria em relação aos métodos de otimização determinísticos análogos.
De um modo geral, métodos de otimização estocástica desse tipo envolvem a geração de valores aleatórios de uma maneira que depende da função que está sendo otimizada e, portanto, é provável que seja pelo menos tão computacionalmente intensivo (e provavelmente mais computacionalmente intensivo) que os métodos determinísticos correspondentes . Métodos estocásticos também são geralmente mais complicados de entender. Portanto, a única vantagem que provavelmente resultará em métodos de otimização estocástica (bem construída) é que eles geralmente mantêm uma probabilidade diferente de zero de "procurar" áreas do domínio que podem ser perdidas por métodos determinísticos e, portanto, são indiscutivelmente mais robusto, se você estiver disposto a executá-los por um longo tempo.
A maioria dos métodos de otimização determinística padrão envolve dar passos iterativos em direção ao ótimo, escolhendo uma direção determinística do movimento e movendo-se nessa direção por uma quantidade determinística (por exemplo, com a subida mais acentuada nos movemos na direção do vetor gradiente). A direção e o comprimento das etapas são geralmente determinados observando o gradiente da função, que na prática é calculada observando a inclinação em um pequeno incremento de movimento. Ao transformar a otimização em um problema de amostragem, você efetivamente apenas se move em uma direção aleatória em uma quantidade aleatória, mas ainda deseja usar informações na inclinação da função para determinar o comportamento estocástico desse movimento. É provável que o último método use as mesmas informações que o primeiro, apenas de forma mais complexa (e, portanto, mais intensamente computacionalmente). Abaixo, construirei um método usando o algoritmo MH, com base na sua descrição.
Implementação com o algoritmo Metropolis-Hastings: Suponha que você esteja lidando com um problema de maximização com uma distribuição em uma dimensão e considere o método de amostragem Metropolis-Hasting usando desvios gaussianos. Este é um método bem conhecido de amostragem que é bastante robusto contra comportamentos desagradáveis pela densidade de amostragem.
Para implementar o algoritmo, geramos uma sequência de desvios aleatórios, que mais tarde multiplicaremos pelo parâmetro "largura de banda" (portanto, este parâmetro representa o desvio padrão de nossas etapas propostas). Também geramos uma sequência de variáveis aleatórias uniformes. Escolhemos um valor inicial arbitrariamente e geramos a sequência de valores de amostra recursivamente como:ε1,ε2,ε3,...∼IID N(0,1)λ>0U1,U2,U3,...∼U(0,1)x0
xt+1=⎧⎩⎨xt+λεt+1xtif Ut+1⩽exp(k(f(xt+λεt+1)−f(xt))),otherwise.
O algoritmo MH tem uma distribuição estacionária igual à densidade alvo, portanto, temos a distribuição aproximada para grandes . Tomando um valor grande para (relativo ao parâmetro de largura de banda) significa que os desvios na direção dos ótimos serão aceitos com alta probabilidade e os desvios dos ótimos (ou superação dos ótimos) serão rejeitados com alta probabilidade.Portanto, na prática, os valores da amostra devem convergir para perto do ponto de maximização da densidade (ainda haveria casos em que isso não ocorreria; por exemplo, se a densidade for bimodal e o algoritmo subir na inclinação errada). Se pegarmos um valor grande de , a distribuiçãoXn∼exp(k(f(x))nkfkexp(k(f(x)) é altamente concentrado próximo ao valor maximizador, portanto, neste caso, a média amostral dos valores amostrados (descartando alguns valores de queima) deve nos fornecer uma boa estimativa do valor maximizador na otimização .
Agora, suponha que neutralizemos o grande valor de , definindo a largura de banda como pequena. Nesse caso, obtemos pequenos valores para os desvios, portanto, temos as probabilidades de aceitação aproximadas:kλ
exp(k(f(xt+λεt+1)−f(xt)))≈exp(kλ⋅εt+1⋅f′(xt)).
Podemos ver que, neste caso, a probabilidade de aceitação é determinada pela derivada da densidade, pela magnitude e direção do desvio e pelo valor .εt+1kλ
Então, esse algoritmo realmente tem um desempenho melhor do que os algoritmos de otimização determinística aplicáveis? Bem, podemos ver que o algoritmo exige que calculemos a densidade em cada etapa potencial e, se o parâmetro de largura de banda for pequeno, isso equivale a calcular a derivada da função. Portanto, isso é bastante semelhante a uma forma de ascensão do gradiente estocástico, com mais trabalho computacional do que o método determinístico correspondente. A vantagem, se houver, é que os desvios propostos são aleatórios e todos ocorrem com uma probabilidade diferente de zero (embora desapareça muito rapidamente); portanto, o algoritmo tem o potencial de "escapar" de regiões de alta, mas não maximizável, densidade .