Обсуждение статьи "Методы оптимизации библиотеки Alglib (Часть II)" - страница 5

 
fxsaber #:

Есть же ситуации, когда полный перебор не найдет оптимум, потому что узлы сетки перебора не попадают на него.

Наверное, не разбираюсь 
 

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

2. если алгоритму нужно больше итераций это плохо?


3. Сравнить скорость поиска оптимума с полным перебором - норм сравнение.

1. Лимит  в 10 000 обращений взят не "с потолка". В MetaTrader 5 в оптимизаторе используется это число как оптимальное с практической точки зрения. Это число и используется как эталонная граница практической целесообразности. Можно и больше делать обращений, но зачем тратить время и ресурсы, когда можно взять более мощный алго и достичь тех же результатов быстрее. Это число пороговое и используется при сравнении разных алго.

Тут описаны качества алгоритмов, которые следует учитывать:

Точность сходимости

Повторяемость результатов (устойчивость)

Масштабируемость (способность продолжать эффективно работать с увеличением размерности задачи).

2. Если использовать случайную генерацию точек, то разве будет плохо, что требуется огромное количество обращений к ФФ?

3. Если количество обращений к ФФ при полном переборе лежит в разумных пределах, то его и следует использовать. Зачем нужен AO, если требуется, например, всего 200 обращений?

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

Есть же ситуации, когда полный перебор не найдет оптимум, потому что узлы сетки перебора не попадают на него.

Совершенно верно. А уменьшение сетки будет приводит к степеному увеличению обращений к ФФ. Тут то и начинается область практической применимости AO при временных и ресурсных ограничениях в реальной жизни.

 
Ещё не факт, что правильно используются оптимизаторы из алглиба. Что их вообще кто-нибудь использует для этих задач. 

Была задача что-то оптимизировать - оптимизировал и получил нормальный результат. Функция типа сложная, значит оптимизирует нормально.

Может их ещё каким-то способом надо использовать, например делать уменьшение размерности сперва.
 
Maxim Dmitrievsky #:
1. Ещё не факт, что правильно используются оптимизаторы из алглиба.

2. Была задача что-то оптимизировать - оптимизировал и получил нормальный результат. Функция типа сложная, значит оптимизирует нормально.

1. Можно ставить под сомнение всё что угодно, но всегда гораздо конструктивнее разговаривать с позиции полных исходных кодов и правильных воспроизводимых тестов.

2. Оптимальный результат можно получить на двумерном Мегасити если попросить 9 млрд человек случайно тыкнуть пальцем в чистый лист бумаги, за которым скрыта поверхность функции (кто-то из них обязательно окажется очень близко к глобалу и будет говорить, что именно он успешно решил задачу). Но нужно найти оптимальное решение не за 9 млрд попыток методом случайного тыка, а за 10 000 используя стратегию.

Чем выше получится средний результат за серию независимых испытаний (устойчивость, повторяемость результатов), тем выше тестируемый метод находится по сравнению со случайным тыком для конкретного типа задач (для одних задач некоторые методы мало отличимы от случайного тыка, а для других они очень эффективны).

В этом и смысл тестирования и сравнения разных алго, для которых взяты в качестве бенчмарков не просто одна кака-то тестовая функция, а три разных, с разными свойствами, чтобы можно было четко видеть применимость разных алго на различных задачах, их ограничения и возможности на различных задачах. Это позволяет осмысленно подходить к решению задач оптимизации.

В дальнейшем предпочитаю отвечать на конкретные вопросы по содержанию статьи и по кодам.

 

Берем методы для локальной оптимизации, применяем к задаче глобальной и сравниваем с методами для глобальной. Так что ли.

Я веду разговор о том, как можно адаптировать эти методы для глобальной оптимизации. Самым простым вариантом является увеличение кол-ва инициализаций.

 

Если я правильно понял, Адам и т.п. заточены на скорость, а не на качество.

Интересно глянуть рейтинг при ограничении по времени, а не количеству итераций.

 
Rorschach #:

Если я правильно понял, Адам и т.п. заточены на скорость, а не на качество.

Интересно глянуть рейтинг при ограничении по времени, а не количеству итераций.

Семейство алгоритмов ADAM (AdamW, RAdam, AdaBelief и другие) а так же SGD, SGRAD и прочие (их много) разработаны как современная замена классическим градиентным методам и задуманы для решения задач больших размерностей без знаний аналитической формулы, зачастую для обучения нейронных сетей (все они имеют свои достоинства и недостатки). Так же есть интересные методы Lion от Google (2023) и некоторые другие прям очень свежие. Эта тема очень интересная для изучения, в особенности в контексте обучения нейронных сетей, где будет полезно и познавательно построить на каком нибудь простом примере (а может быть и сложном) поверхность целевой и провести эксперименты (с разбором их внутренностей, с глубоким изучением свойств методов, тщательной оценкой их возможностей - всё как мы любим).

При ограничении по времени не к чему привязываться. У одного пользователя за 1 минуту будет произведено 1 млн обращений к целевой, а у другого 1 млрд. Как сравнивать в таких условиях алго между собой? Поэтому используем лимит по количеству обращений и сравниваем эффективность в рамках этого лимита.

 
Andrey Dik #:

При ограничении по времени не к чему привязываться. У одного пользователя за 1 минуту будет произведено 1 млн обращений к целевой, а у другого 1 млрд. Как сравнивать в таких условиях алго между собой? Поэтому используем лимит по количеству обращений и сравниваем эффективность в рамках этого лимита.

Привязка к ПК автора. Взять за базу время 10000 итераций ANS.

Мои результаты по коду fxsaber'а:


pso 72 sec, 40.8 KB, BestResult = -14.0: TPdist = 0.41, SLdist = 0.68

bga 22 sec, 38.5 KB, BestResult = -14.0: TPdist = 0.32, SLdist = 1.04
4 pOeS 23 sec, 19.9 KB, BestResult = -14.0: TPdist = 0.54, SLdist = 1.12
6 sdsm 23 sec, 21.1 KB, BestResult = -14.0: TPdist = 0.42, SLdist = 1.28

sds 22 sec, 14.5 KB, BestResult = -14.0: TPdist = 0.89, SLdist = 1.34
8 esg 22 sec, 23.3 KB, BestResult = -14.0: TPdist = 0.82, SLdist = 0.36
9 sia 23 sec, 19.2 KB, BestResult = -14.0: TPdist = 0.82, SLdist = 1.02
13 de 22 sec, 13.3 KB, BestResult = -14.0: TPdist = 0.6 , SLdist = 0.74
16 hs -
16.5 KB


17 ssg 22 sec, 22.7 KB, BestResult = -14.0: TPdist = 0.57, SLdist = 0.4
20 poes 23 sec, 18.8 KB, BestResult = -14.0: TPdist = 0.42, SLdist = 2.0
26 acom 22 sec, 21.3 KB, BestResult = -14.0: TPdist = 0.46, SLdist = 0.98
27 bfoga 30 sec, 22.9 KB, BestResult = -14.0: TPdist = 0.1 , SLdist = 0.2
32 mec 22 sec, 23.7 KB, BestResult = -14.0: TPdist = 0.91, SLdist = 0.58
33 iwo 23 sec, 25.4 KB, BestResult = -14.0: ???
34 mais 23 sec, 21.0 KB, BestResult = -14.0: TPdist = 0.54, SLdist = 1.44
35 coam 22 sec, 16.9 KB, BestResult = -14.0: TPdist = 0.32, SLdist = 1.96
36 sdom 22 sec, 13.9 KB, BestResult = -14.0: TPdist = 0.72, SLdist = 2.0
37 nmm 22 sec, 32.9 KB, BestResult = -14.0: TPdist = 1.0 , SLdist = 1.58
38 fam 22 sec, 17.3 KB, BestResult = -14.0: TPdist = 0.83, SLdist = 0.48
39 gsa 22 sec, 23.1 KB, BestResult = -14.0: TPdist = 0.83, SLdist = 1.44
40 bfo 22 sec, 19.5 KB, BestResult = -14.0: TPdist = 0.62, SLdist = 1.6
41 abc - (err) 32.0 KB


42 ba 23 sec, 20.0 KB, BestResult = -14.0: TPdist = 0.49, SLdist = 1.18
44 sa 23 sec, 12.5 KB, BestResult = -14.0: TPdist = 0.8 , SLdist = 1.6
45 iwdm 23 sec, 27.3 KB, BestResult = -14.0: TPdist = 0.32, SLdist = 0.72

pso 23 sec, 12.8 KB, BestResult = -14.0: TPdist = 0.74, SLdist = 1.42

ma 22 sec, 18.0 KB, BestResult = -14.0: TPdist = 0.88, SLdist = 0.62

sfl -
29.8 KB



fss 22 sec, 24.5 KB, BestResult = -14.0: TPdist = 0.78, SLdist = 1.96

rnd -
16.6 KB



gwo 22 sec, 17.0 KB, BestResult = -14.0: TPdist = 0.72, SLdist = 1.56

css 22 sec, 17.2 KB, BestResult = -14.0: TPdist = 0.74, SLdist = 1.3

em -
17.7 KB



sc  23 sec, 18.8 KB, BestResult = -14.0: TPdist = 0.51, SLdist = 1.3


PS объем кода, как дополнительная метрика (на сколько сложна реализация алгоритма)