Discussão do artigo "Métodos de otimização da biblioteca Alglib (Parte II)" - página 5

[Excluído]  
fxsaber #:

Há situações em que uma pesquisa de força bruta completa não encontrará um ótimo porque os nós da grade de força bruta não caem sobre ele.

Acho que não sei
 

Maxim Dmitrievsky #:
1. Какой-нибудь конкретный критерий оценки кач-ва оптимизации есть?)

2. se o algoritmo precisar de mais iterações, isso é ruim?


3. Comparar a velocidade de encontrar o ótimo com uma pesquisa completa é uma comparação normal.

1) O limite de 10.000 acessos não é tirado "do teto". O otimizador do MetaTrader 5 usa esse número como o ideal do ponto de vista prático. Esse número é usado como um limite de referência de praticidade. Você pode fazer mais chamadas, mas por que desperdiçar tempo e recursos se você pode usar um algoritmo mais poderoso e obter os mesmos resultados mais rapidamente. Esse número é um limite e é usado na comparação de diferentes algoritmos.

Isso descreve as qualidades dos algoritmos que devem ser consideradas:

Precisão da convergência

Repetibilidade dos resultados (robustez)

Escalabilidade (capacidade de continuar trabalhando com eficiência à medida que a dimensionalidade do problema aumenta).

2. Se a geração de pontos aleatórios for usada, seria ruim se fosse necessário um grande número de chamadas para o FF?

3) Se o número de acessos ao FF em uma pesquisa completa estiver dentro de limites razoáveis, ele deverá ser usado. Por que precisamos do AO se apenas 200 acessos são necessários, por exemplo?

Популяционные алгоритмы оптимизации
Популяционные алгоритмы оптимизации
  • www.mql5.com
Вводная статья об алгоритмах оптимизации (АО). Классификация. В статье предпринята попытка создать тестовый стенд (набор функций), который послужит в дальнейшем для сравнения АО между собой, и, даже, возможно, выявления самого универсального алгоритма из всех широко известных.
 
fxsaber #:

Há situações em que uma pesquisa de força bruta completa não encontrará um ótimo porque os nós da grade de força bruta não caem sobre ele.

Exatamente isso. E a redução da grade levará a um aumento gradual das chamadas para o FF. É aí que começa a área de aplicabilidade prática da AO sob restrições de tempo e recursos na vida real.

[Excluído]  
Nem mesmo é certo que os otimizadores alglib sejam usados corretamente. Não há certeza de que alguém os utilize para essas tarefas.

Se você tinha uma tarefa para otimizar algo, você a otimizou e obteve um resultado normal. A função é complexa, portanto, ela é otimizada normalmente.

Talvez eles devam ser usados de alguma outra forma, como a redução de dimensionalidade primeiro.
 
Maxim Dmitrievsky #:
1. Ainda não é um fato que os otimizadores da alglib sejam usados corretamente.

2. Você tinha a tarefa de otimizar alguma coisa - você a otimizou e obteve um resultado normal. A função é complexa, portanto, é otimizada normalmente.

1. Você pode questionar qualquer coisa, mas é sempre muito mais construtivo falar a partir da posição de códigos-fonte completos e testes corretos e reproduzíveis.

2) É possível obter um resultado ideal em uma megacidade bidimensional se você pedir a 9 bilhões de pessoas que enfiem os dedos aleatoriamente em uma folha de papel em branco, atrás da qual a superfície da função está oculta (uma delas certamente acabará muito próxima do global e dirá que foi ela quem resolveu o problema com sucesso). Mas precisamos encontrar a solução ideal não em 9 bilhões de tentativas por meio de tentativas aleatórias, mas em 10.000 usando uma estratégia.

Quanto mais alto for o resultado médio de uma série de testes independentes (estabilidade, repetibilidade dos resultados), mais alto será o método testado em comparação com o método de busca aleatória para um tipo específico de problema (para alguns problemas, alguns métodos não são muito diferentes do método de busca aleatória e, para outros, são muito eficazes).

Esse é o objetivo do teste e da comparação de diferentes algoritmos, para os quais não apenas uma função de teste, mas três diferentes com propriedades diferentes são tomadas como benchmarks, para que se possa ver claramente a aplicabilidade de diferentes algoritmos em diferentes tarefas, suas limitações e capacidades em diferentes tarefas. Isso permite que você aborde a solução de problemas de otimização de forma significativa.

No futuro, prefiro responder a perguntas específicas sobre o conteúdo do artigo e sobre os códigos.

[Excluído]  

Pegamos os métodos de otimização local, aplicamos ao problema global e os comparamos com os métodos de otimização global. É sobre isso que estou falando.

Estou falando sobre como podemos adaptar esses métodos para a otimização global. A opção mais simples é aumentar o número de inicializações.

 

Se eu entendi corretamente, o Adam etc. é aperfeiçoado para velocidade, não para qualidade.

Seria interessante ver a classificação quando limitada pelo tempo em vez do número de iterações.

 
Rorschach #:

Se eu entendi corretamente, Adam etc. está focado na velocidade, não na qualidade.

Seria interessante ver a classificação quando limitada pelo tempo em vez do número de iterações.

A família de algoritmos ADAM (AdamW, RAdam, AdaBelief e outros), bem como SGD, SGRAD e outros (há muitos deles) foram desenvolvidos como um substituto moderno para os métodos clássicos de gradiente e foram projetados para resolver problemas de grandes dimensões sem o conhecimento da fórmula analítica, geralmente para treinar redes neurais (todos eles têm suas vantagens e desvantagens). Há também métodos Lion interessantes do Google (2023) e alguns outros muito recentes. É muito interessante estudar esse tópico, especialmente no contexto do treinamento de redes neurais, em que será útil e informativo criar uma superfície de destino em algum exemplo simples (ou talvez complexo) e realizar experimentos (com análise de suas entranhas, com estudo profundo das propriedades dos métodos, avaliação cuidadosa de seus recursos - tudo como quisermos).

Com restrições de tempo, não há nada a que se prender. Um usuário fará 1 milhão de acessos ao alvo em 1 minuto e outro fará 1 bilhão. Como podemos comparar os algoritmos nessas condições? É por isso que usamos um limite para o número de acessos e comparamos a eficiência dentro desse limite.

 
Andrey Dik #:

Com restrições de tempo, não há nada a que se vincular. Um usuário fará 1 milhão de acessos ao alvo em 1 minuto, enquanto outro fará 1 bilhão. Como podemos comparar os algoritmos entre eles nessas condições? É por isso que usamos um limite para o número de acessos e comparamos a eficiência dentro desse limite.

Vinculação ao PC do autor. Tome como base o tempo de 10.000 iterações de ANS.

Meus resultados no código do fxsaber:


pso 72 segundos, 40,8 KB, BestResult = -14,0: TPdist = 0,41, SLdist = 0,68

bga 22 seg, 38,5 KB, BestResult = -14,0: TPdist = 0,32, SLdist = 1,04
4 pOeS 23 seg, 19,9 KB, BestResult = -14,0: TPdist = 0,54, SLdist = 1,12
6 sdsm 23 seg, 21,1 KB, Melhor resultado = -14,0: TPdist = 0,42, SLdist = 1,28

sds 22 seg, 14,5 KB, BestResult = -14,0: TPdist = 0,89, SLdist = 1,34
8 esg 22 seg, 23,3 KB, BestResult = -14,0: TPdist = 0,82, SLdist = 0,36
9 sia 23 seg, 19,2 KB, BestResult = -14.0: TPdist = 0,82, SLdist = 1,02
13 de 22 seg, 13,3 KB, BestResult = -14.0: TPdist = 0,6 , SLdist = 0,74
16 hs -
16,5 KB


17 ssg 22 seg, 22,7 KB, BestResult = -14.0: TPdist = 0,57, SLdist = 0,4
20 poes 23 seg, 18,8 KB, BestResult = -14.0: TPdist = 0,42, SLdist = 2,0
26 acom 22 seg, 21,3 KB, BestResult = -14,0: TPdist = 0,46, SLdist = 0,98
27 bfoga 30 seg, 22,9 KB, BestResult = -14.0: TPdist = 0,1 , SLdist = 0,2
32 mec 22 seg, 23,7 KB, BestResult = -14,0: TPdist = 0,91, SLdist = 0,58
33 iwo 23 seg, 25,4 KB, BestResult = -14.0: ???
34 mais 23 seg, 21.0 KB, BestResult = -14.0: TPdist = 0,54, SLdist = 1,44
35 coam 22 seg, 16,9 KB, BestResult = -14,0: TPdist = 0,32, SLdist = 1,96
36 sdom 22 seg, 13,9 KB, BestResult = -14,0: TPdist = 0,72, SLdist = 2,0
37 nmm 22 seg, 32,9 KB, BestResult = -14.0: TPdist = 1,0 , SLdist = 1,58
38 fam 22 seg, 17,3 KB, BestResult = -14,0: TPdist = 0,83, SLdist = 0,48
39 gsa 22 seg, 23,1 KB, BestResult = -14,0: TPdist = 0,83, SLdist = 1,44
40 bfo 22 seg, 19,5 KB, BestResult = -14,0: TPdist = 0,62, SLdist = 1,6
41 abc - (err) 32,0 KB


42 ba 23 seg, 20,0 KB, BestResult = -14.0: TPdist = 0,49, SLdist = 1,18
44 sa 23 seg, 12,5 KB, BestResult = -14.0: TPdist = 0,8 , SLdist = 1,6
45 iwdm 23 seg, 27,3 KB, BestResult = -14,0: TPdist = 0,32, SLdist = 0,72

pso 23 seg, 12,8 KB, Melhor resultado = -14,0: TPdist = 0,74, SLdist = 1,42

ma 22 seg, 18,0 KB, BestResult = -14,0: TPdist = 0,88, SLdist = 0,62

sfl -
29.8 KB



fss 22 seg, 24,5 KB, BestResult = -14.0: TPdist = 0,78, SLdist = 1,96

rnd -
16.6 KB



gwo 22 seg, 17,0 KB, Melhor resultado = -14.0: TPdist = 0,72, SLdist = 1,56

css 22 seg, 17,2 KB, BestResult = -14,0: TPdist = 0,74, SLdist = 1,3

em -
17.7 KB



sc 23 seg, 18,8 KB, BestResult = -14.0: TPdist = 0,51, SLdist = 1,3


Tamanho do código PS como uma métrica adicional (quão complexa é a implementação do algoritmo)