Como implementar os detalhes da escalada de espingarda para torná-la eficaz?

7

Atualmente, estou trabalhando em uma solução para um problema para o qual (após um pouco de pesquisa) o uso de uma escalada e, mais especificamente, uma idéia algorítmica de escalada de espingarda (ou reinício aleatório ) parece ser a melhor opção, como eu não tenho idéia de como o melhor valor inicial pode ser encontrado.

Mas não há muita informação sobre esse tipo de algoritmo, exceto a idéia rudimentar por trás dele:

A escalada [espingarda] é um meta-algoritmo construído sobre o algoritmo de escalada. Faz iterativamente escaladas, sempre com uma condição inicial aleatória . O melhor é mantido: se uma nova corrida de subida produz um melhor que o estado armazenado, ele substitui o estado armazenado.x0xmxm

Se eu entendi isso corretamente, isso significa algo assim (assumindo a maximização):

x = -infinity;
for ( i = 1 .. N ) {
  x = max(x, hill_climbing(random_solution()));
}
return x;

Mas como você pode tornar isso realmente eficaz, melhor do que a subida normal? É difícil acreditar que o uso de valores iniciais aleatórios ajude muito, especialmente em grandes espaços de pesquisa. Mais precisamente, eu me pergunto:

  • Existe uma boa estratégia para escolher o (que está sendo implementado ), em especial o conhecimento (intermediário) dos resultados de iterações anteriores?x0random_solution
  • Como escolher , ou seja, quantas iterações são necessárias para garantir que a solução perfeita não seja perdida (por muito)?N
Sim
fonte

Respostas:

8

A idéia geral por trás de várias subidas é tentar evitar ótimos locais. Esta é a razão pela qual a escalada com espingarda pode funcionar melhor do que apenas um método simples de escalada.

Geralmente, começa-se com um valor aleatório. Por outro lado, se alguém pode adivinhar algo melhor, isso também pode ser usado como valor inicial. Se não houver conhecimento de qual deve ser um bom valor inicial, faz sentido usar um valor aleatório.

O valor adequado para varia. Geralmente é preciso definir um critério de parada. Um critério adequado pode depender do seu domínio específico. Por exemplo, se, por um pequeno número de movimentos, você não melhorar sua solução, pare. Em geral, você não sabe - você está usando heurísticas e elas não dão garantias. Você pode até determinar um adequado experimentalmente.NN

Juho
fonte