Discusión sobre el artículo "Métodos de optimización de la biblioteca ALGLIB (Parte II)" - página 5

 
fxsaber #:

Hay situaciones en las que una búsqueda de fuerza bruta completa no encontrará un óptimo porque los nodos de la cuadrícula de fuerza bruta no caen en él.

Supongo que no sé
 

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

2. si el algoritmo necesita más iteraciones, ¿es malo?


3. Comparar la velocidad de búsqueda del óptimo con una búsqueda completa es una comparación normal.

1. El límite de 10 000 accesos no se toma "del techo". El optimizador de MetaTrader 5 utiliza este número como el óptimo desde el punto de vista práctico. Este número se utiliza como un límite de referencia de la practicidad. Usted puede hacer más llamadas, pero ¿por qué perder tiempo y recursos cuando se puede utilizar un algoritmo más potente y lograr los mismos resultados más rápido. Este número es un umbral y se utiliza al comparar distintos algoritmos.

Describe las cualidades de los algoritmos que deben tenerse en cuenta:

Precisión de convergencia

Repetibilidad de los resultados (robustez)

Escalabilidad (capacidad de seguir trabajando eficientemente a medida que aumenta la dimensionalidad del problema).

2. Si se utiliza la generación aleatoria de puntos, ¿sería malo que se requiriera un gran número de llamadas al FF?

3. Si el número de accesos al FF en una búsqueda completa está dentro de unos límites razonables, entonces debería utilizarse. ¿Por qué necesitamos AO si sólo se requieren 200 accesos, por ejemplo?

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

Hay situaciones en las que una búsqueda de fuerza bruta completa no encontrará un óptimo porque los nodos de la cuadrícula de fuerza bruta no caen en él.

Exacto. Y la reducción de la rejilla conducirá a un aumento gradual de las llamadas a FF. Aquí es donde comienza el área de la aplicabilidad práctica de AO bajo limitaciones de tiempo y recursos en la vida real.

 
Ni siquiera es seguro que los optimizadores alglib se utilicen correctamente. No es seguro que nadie los utilice en absoluto para estas tareas.

Si tuvieras una tarea para optimizar algo, la optimizas y obtienes un resultado normal. La función es compleja, así que la optimiza normalmente.

Quizá deberían utilizarse de otra forma, como la reducción de la dimensionalidad primero.
 
Maxim Dmitrievsky #:
1. Todavía no es un hecho que los optimizadores de alglib se utilicen correctamente.

2. Tenías la tarea de optimizar algo - lo optimizaste y obtuviste un resultado normal. La función es compleja, por lo que optimiza normalmente.

1. Puedes cuestionar cualquier cosa, pero siempre es mucho más constructivo hablar desde la posición de códigos fuente completos y pruebas correctas reproducibles.

2. Se puede obtener un resultado óptimo en una Megaciudad bidimensional si se pide a 9.000 millones de personas que introduzcan sus dedos al azar en una hoja de papel en blanco, tras la cual se oculta la superficie de la función (una de ellas acabará sin duda muy cerca de la global y dirá que es la que ha resuelto con éxito el problema). Pero tenemos que encontrar la solución óptima no en 9.000 millones de intentos pinchando al azar, sino en 10.000 utilizando una estrategia.

Cuanto más alto sea el resultado medio de una serie de pruebas independientes (estabilidad, repetibilidad de los resultados), más alto será el método probado en comparación con el aporreo aleatorio para un tipo concreto de problema (para algunos problemas algunos métodos no difieren mucho del aporreo aleatorio, y para otros son muy eficaces).

Este es el sentido de probar y comparar diferentes algoritmos, para lo cual no se toma como referencia una sola función de prueba, sino tres diferentes con diferentes propiedades, de forma que se pueda ver claramente la aplicabilidad de diferentes algoritmos en diferentes tareas, sus limitaciones y capacidades en diferentes tareas. Esto permite abordar la solución de problemas de optimización de una manera significativa.

En el futuro, prefiero responder a preguntas concretas sobre el contenido del artículo y sobre los códigos.

 

Tomamos los métodos de optimización local, los aplicamos al problema global y los comparamos con los métodos de optimización global. A eso me refiero.

Estoy hablando de cómo podemos adaptar estos métodos para la optimización global. La opción más sencilla es aumentar el número de inicializaciones.

 

Si no he entendido mal, Adam, etc. se perfeccionan en función de la velocidad, no de la calidad.

Sería interesante ver la puntuación cuando se limita por el tiempo en lugar de por el número de iteraciones.

 
Rorschach #:

Si no he entendido mal, Adam y otros se centran en la velocidad, no en la calidad.

Sería interesante ver la clasificación cuando se limita por el tiempo en lugar de por el número de iteraciones.

La familia de algoritmos ADAM (AdamW, RAdam, AdaBelief y otros) así como SGD, SGRAD y otros (hay muchos de ellos) se desarrollan como un reemplazo moderno de los métodos de gradiente clásicos y están diseñados para resolver problemas de grandes dimensiones sin conocimiento de la fórmula analítica, a menudo para el entrenamiento de redes neuronales (todos ellos tienen sus ventajas y desventajas). También son interesantes los métodos de León de Google (2023) y algunos otros muy recientes. Este tema es muy interesante para estudiar, especialmente en el contexto de la formación de redes neuronales, donde será útil e informativo para construir una superficie de destino en algún ejemplo simple (o tal vez complejo) y llevar a cabo experimentos (con el análisis de sus entrañas, con un estudio profundo de las propiedades de los métodos, la evaluación cuidadosa de sus capacidades - todo lo que nos gusta).

Con las limitaciones de tiempo, no hay nada a lo que estar atado. Un usuario hará 1 millón de accesos al objetivo en 1 minuto, y otro hará 1.000 millones. ¿Cómo podemos comparar algos en tales condiciones? Por eso utilizamos un límite en el número de accesos y comparamos la eficacia dentro de este límite.

 
Andrey Dik #:

Con limitaciones de tiempo, no hay nada a lo que vincularse. Un usuario hará 1 millón de accesos al objetivo en 1 minuto, mientras que otro hará 1.000 millones. ¿Cómo podemos comparar algos entre ellos en esas condiciones? Por eso utilizamos un límite en el número de accesos y comparamos la eficacia dentro de ese límite.

Vinculación al PC del autor. Tome el tiempo de 10000 iteraciones de ANS como base.

Mis resultados en el código de fxsaber:


pso 72 seg, 40,8 KB, BestResult = -14.0: TPdist = 0,41, SLdist = 0,68

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

sds 22 seg, 14,5 KB, MejorResultado = -14,0: TPdist = 0,89, SLdist = 1,34
8 esg 22 seg, 23,3 KB, MejorResultado = -14,0: TPdist = 0,82, SLdist = 0,36
9 sia 23 seg, 19,2 KB, MejorResultado = -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 ssg 22,7 KB, MejorResultado = -14,0: TPdist = 0,57, SLdist = 0,4
20 poes 23 seg, 18,8 KB, MejorResultado = -14,0: TPdist = 0,42, SLdist = 2,0
26 acom 22 seg, 21,3 KB, MejorResultado = -14,0: TPdist = 0,46, SLdist = 0,98
27 bfoga 30 seg, 22,9 KB, MejorResultado = -14,0: TPdist = 0,1 , SLdist = 0,2
32 mec 22 seg, 23,7 KB, MejorResultado = -14,0: TPdist = 0,91, SLdist = 0,58
33 iwo 23 seg, 25,4 KB, MejorResultado = -14.0: ???
34 más 23 seg, 21.0 KB, MejorResultado = -14.0: TPdist = 0.54, SLdist = 1,44
35 coam 22 seg, 16,9 KB, MejorResultado = -14,0: TPdist = 0,32, SLdist = 1,96
36 sdom 22 seg, 13,9 KB, MejorResultado = -14,0: TPdist = 0,72, SLdist = 2,0
37 nmm 22 seg, 32,9 KB, MejorResultado = -14,0: TPdist = 1,0 , SLdist = 1,58
38 fam 22 seg, 17,3 KB, MejorResultado = -14,0: TPdist = 0,83, SLdist = 0,48
39 gsa 22 seg, 23,1 KB, MejorResultado = -14,0: TPdist = 0,83, SLdist = 1,44
40 bfo 22 seg, 19,5 KB, MejorResultado = -14,0: TPdist = 0,62, SLdist = 1,6
41 abc - (err) 32,0 KB


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

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

ma 22 seg, 18,0 KB, MejorResultado = -14,0: TPdist = 0.88, SLdist = 0,62

sfl -
29,8 KB



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

rnd -
16,6 KB



gwo 22 seg, 17.0 KB, MejorResultado = -14.0: TPdist = 0.72, SLdist = 1,56

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

em -
17,7 KB



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


Tamaño del código PS como métrica adicional (grado de complejidad de la implementación del algoritmo)