Obrigado pelo artigo!
Fiquei sentado por um tempo ontem e hoje na função Hilly e nos métodos alglib. Aqui estão meus pensamentos.
Para encontrar o máximo dessa função, especialmente quando o número de parâmetros é 10 ou mais, não faz sentido aplicar métodos de gradiente, pois essa é a tarefa dos métodos combinatórios de otimização. Os métodos de gradiente ficam instantaneamente presos no extremo local. E não importa quantas vezes se reinicie a partir de um novo ponto no espaço de parâmetros, a chance de chegar à região correta do espaço a partir da qual o método gradiente encontra instantaneamente uma solução tende a zero à medida que o número de parâmetros aumenta.
Por exemplo, o ponto do espaço a partir do qual o lbfgs ou o CG para 2(duas) iterações encontram o máximo para qualquer número de parâmetros é {x = -1,2 , y = 0,5}.
Mas a chance de chegar a essa região, como eu disse, é simplesmente zero. Deve levar cem anos para gerar números aleatórios.
Portanto, é necessário combinar, de alguma forma, os algoritmos genéticos apresentados no artigo (para que eles possam fazer o reconhecimento e reduzir o espaço de pesquisa) com métodos de gradiente que encontrariam rapidamente o extremo a partir de um ponto mais favorável.
Obrigado por seus comentários.
Para encontrar o máximo de uma determinada função, especialmente quando o número de parâmetros é 10 ou mais, não faz sentido usar métodos de gradiente.
Sim, é isso mesmo.
Essa é a tarefa dos métodos combinatórios de otimização.
Os métodos combinatórios, como o clássico "ant", são projetados para problemas como o "problema do caixeiro viajante" e o "problema da mochila", ou seja, são projetados para problemas discretos com uma etapa fixa (borda do gráfico). Para problemas multidimensionais "contínuos", esses algoritmos não foram projetados de forma alguma, por exemplo, para tarefas como o treinamento de redes neurais. Sim, as propriedades combinatórias são muito úteis para os métodos heurísticos estocásticos, mas não são a única e suficiente propriedade para a solução bem-sucedida desses problemas de teste quase reais. As próprias estratégias de pesquisa no algoritmo também são importantes.
As baseadas em gradiente simplesmente ficam presas em um extremo local instantaneamente. E não importa quantas vezes se reinicie a partir de um novo ponto do espaço de parâmetros, a chance de chegar à região correta do espaço a partir da qual o método de gradiente encontra instantaneamente uma solução tende a zero à medida que o número de parâmetros aumenta.
Sim, isso acontece.
Mas a chance de chegar a essa região, como eu já disse, é simplesmente zero. Levaria cerca de cem anos para gerar números aleatórios.
Sim, é isso mesmo. Em espaços de baixa dimensão (1-2), é muito fácil chegar à vizinhança do global, e geradores aleatórios simples podem até funcionar para isso. Mas tudo muda completamente quando a dimensionalidade do problema aumenta, e aqui as propriedades de pesquisa dos algoritmos começam a desempenhar um papel importante, e não a Senhora Sorte.
Portanto, precisamos combinar de alguma forma os algoritmos genéticos apresentados no artigo (que fariam a exploração, reduziriam o espaço de pesquisa) com os métodos de gradiente, que encontrariam rapidamente o extremo a partir de um ponto mais favorável.
"genético" - você provavelmente quer dizer "heurístico". Por que "o peixe precisa de um guarda-chuva" e "por que precisamos de um ferreiro? Não precisamos de um ferreiro.")))) Existem maneiras eficientes de resolver problemas complexos multidimensionais em um espaço contínuo, que são descritos em artigos sobre métodos populacionais. E, para os problemas clássicos de gradiente, há suas próprias tarefas - problemas unidimensionais analiticamente determináveis (nesse caso, eles não têm igual, haverá convergência rápida e exata).
E, pergunta, quais são suas impressões sobre a velocidade da heurística?
SZY:
Oh, quantas descobertas maravilhosas
Preparam o espírito do esclarecimento
E a experiência, o filho dos erros,
E o gênio, o amigo dos paradoxos,
E o acaso, o inventor de Deus.
ZZZY. Um momento. Em um espaço de busca desconhecido, nunca é possível saber, em qualquer momento ou etapa da iteração, se essa é realmente uma direção promissora para o global. Portanto, é impossível explorar primeiro e refinar depois. Somente estratégias de pesquisa completas podem funcionar, e elas funcionam bem ou mal. Cada um escolhe o grau de "bondade" e "adequação à tarefa" por conta própria. Para isso, é mantida uma tabela de classificação para escolher um algoritmo de acordo com as especificidades da tarefa.
Sim, é isso mesmo. Em espaços de baixa dimensão (1-2), é muito fácil chegar à vizinhança de um global, e geradores aleatórios simples podem até ser úteis para isso. Mas tudo muda completamente quando a dimensionalidade do problema aumenta, e aí as propriedades de pesquisa dos algoritmos, e não a sorte, começam a desempenhar um papel importante.
Portanto, eles falham
E, pergunta, quais são suas impressões sobre a velocidade da heurística?
Apesar do fato de que elas funcionam rapidamente. O resultado para 1000 parâmetros é algo em torno de 0,4.
É por isso que intuitivamente pensei que faz sentido combinar os métodos GA e gradiente para chegar ao máximo. Caso contrário, separadamente, eles não resolverão sua função. Não testei isso na prática.
P.S. Ainda acho que essa função é muito grossa, pois em tarefas reais (treinamento de redes neurais, por exemplo) não há problemas desse tipo, embora a superfície de erro também esteja toda em mínimos locais.
1. eles não estão fazendo um bom trabalho
2. apesar de trabalharem rapidamente. O resultado para 1000 parâmetros é algo em torno de 0,4.
3. É por isso que intuitivamente pensei que faz sentido combinar os métodos GA e gradiente para chegar ao máximo. Caso contrário, separadamente, eles não resolverão sua função. Não testei isso na prática.
4. P.S. Ainda acho que essa função é muito grossa, em tarefas reais (treinamento de redes neurais, por exemplo) não há problemas desse tipo, embora a superfície de erro também esteja toda em mínimos locais.
1. O que você quer dizer com "eles não conseguem lidar com isso"? Há um limite para o número de acessos à função de destino, aquele que apresentou um resultado melhor é aquele que não consegue lidar com isso)). Devemos aumentar o número de acessos permitidos? Bem, então os mais ágeis e adaptados a funções complexas chegarão à linha de chegada de qualquer maneira. Se tentarmos aumentar o número de referências, o quadro não mudará.
2. Sim, e alguns têm 0,3, outros têm 0,2 e outros têm 0,001. Melhor ainda são aqueles que mostraram 0,4.
3. não vai adiantar, intuitivamente centenas de combinações e variações foram tentadas e re-tentadas. Melhor é aquela que mostra melhores resultados para um determinado número de épocas (iterações). Aumente o número de referências ao alvo e veja qual delas chega primeiro à linha de chegada.
4. Se houver líderes em tarefas difíceis, você acha que, em tarefas fáceis, os líderes apresentarão resultados piores do que os não líderes? Esse não é o caso, para dizer o mínimo. Estou trabalhando em uma tarefa mais "simples", mas realista, de treinamento de grade. Como sempre, compartilharei os resultados. Será interessante.
Faça experimentos, tente algoritmos diferentes, tarefas diferentes, não fique preso a uma única coisa. Tentei fornecer todas as ferramentas para isso.
1. O que você quer dizer com "falhar"? Há um limite no número de acessos à função de destino, aquele que mostrou o melhor resultado é aquele que não consegue lidar com isso)). Devemos aumentar o número de acessos permitidos? Bem, então os mais ágeis e adaptados a funções complexas chegarão à linha de chegada de qualquer maneira. Tente aumentar o número de referências, mas o quadro não mudará.
2. Sim. E alguns têm 0,3, outros 0,2 e outros 0,001. Melhor ainda são aqueles que apresentaram 0,4.
3. não vai adiantar, intuitivamente centenas de combinações e variações foram tentadas e re-tentadas. Melhor é aquela que mostra melhores resultados para um determinado número de épocas (iterações). Aumente o número de referências ao alvo e veja qual delas chega primeiro à linha de chegada.
4. Se houver líderes em tarefas difíceis, você acha que, em tarefas fáceis, os líderes apresentarão resultados piores do que os não líderes? Esse não é o caso, para dizer o mínimo. Estou trabalhando em uma tarefa mais "simples", mas realista, de treinamento de grade. Como sempre, compartilharei os resultados. Será interessante.
Faça experimentos, tente algoritmos diferentes, tarefas diferentes, não se fixe em uma coisa só. Tentei fornecer todas as ferramentas para isso.
Estou experimentando,
Sobre a tarefa realista, é correto testar algoritmos em tarefas próximas ao combate.
É duplamente interessante ver como as redes genéticas serão treinadas.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso


Novo artigo Algoritmo de busca orbital atômica — Atomic Orbital Search (AOS): Modificação foi publicado:
Na segunda parte do artigo, focaremos na modificação do algoritmo AOS, pois não podemos ignorar uma ideia tão notável sem buscar aprimorá-la. Analisaremos o conceito de melhoria do algoritmo, com especial atenção para os operadores específicos que pertencem a este método e que podem aumentar sua eficiência e adaptabilidade.
Trabalhar no algoritmo AOS abriu para mim muitos aspectos interessantes relacionados aos seus métodos de busca no espaço de soluções. Durante a pesquisa, também cheguei a várias ideias sobre como melhorar esse algoritmo interessante. Em particular, concentrei-me na reformulação dos métodos existentes que podem melhorar o desempenho do algoritmo, aprimorando sua capacidade de explorar espaços de soluções complexos. Veremos como essas melhorias podem ser integradas à estrutura existente do algoritmo AOS, tornando-o uma ferramenta ainda mais poderosa para resolver problemas de otimização. Assim, nosso objetivo é não apenas analisar os mecanismos existentes, mas também propor novas abordagens que podem ampliar significativamente as capacidades do algoritmo AOS.
Autor: Andrey Dik