1 Востаннє редагувалося Betterthanyou (30.03.2021 11:13:47)

Тема: Пошук оптимальних параметрів для блекбоксу

Про задачу

Це не теоретична проблема, а практична. Я би хотів пояснити на конкретному прикладі, але щоб це пояснити потрібно дуже багато писати... навряд чи ви це захочете читати

Уявіть що є блекбокс який приймає багато параметрів, діапазон мах/мін значень відомий наперед, параметри в середині блекбоксу мають якусь залежність один від одного, для простоти нехай їх буде три. А виводить блекбокс один параметр - це точність, від 1 до 100; Також на точність впливають внутрішні параметри блекбоксу, тому оптимальна може бути, наприклад 55%

Блекбокс:
Дано: Діапазон для кожного параметру, кожний раз різна.
Виводить: Точність від 1 до 100. Але оптимальна може бути менша за 100 тому що є внутрішні параметри.
Ціль: Знайти для всіх параметрів такі значення щоб отримати найвищу з можливих точностей.

Наприклад:

Є параметри А (від 10 до 55), Б (від 30 до 60), С (від 1 до 9)

виправив

А (від 10 до 55), Б (від 30 до 60), С (від 10 до 55)

Якщо: А = 27, Б = 51, С = 8 то ми отримаємо максимально можливу точність 98% (більше не можливо отримати за внутрішніх параметрів на які не можливо вплинути).

Якщо ми будемо не системно шукати значення параметрам, а по одному, ми не знайдемо оптимального.
Наприклад: Якщо Б = 30, С = 1, тобто ми вказали мінімальні значення для Б, С, то А знайдеться як 48, а має бути 27. Ну і в подальшому порушаться Б, С параметри. В результаті буде щось таке А = 48, Б = 32, С = 7 що дасть точність 63%.

Можна перебрати всі можливі значення у вкладених циклах, але це буде дуже довго. Наприклад, в реальній задачі може бути 300 параметрів.

Підкажіть найшвидший метод пошуку оптимальних параметрів для такої задачі.

2 Востаннє редагувалося koala (30.03.2021 08:50:26)

Re: Пошук оптимальних параметрів для блекбоксу

Betterthanyou написав:

Є параметри А (від 10 до 55), Б (від 30 до 60), С (від 10 до 55)
Якщо: А = 27, Б = 51, С = 8

Який сенс у діапазонах, якщо C у свій діапазон не потрапляє?

Це задача оптимізації; без інформації про цільову функцію тут неможливо щось гарантувати.
Якщо припустити, що функція всюди визначена, диференційована і має лише один максимум у діапазоні, то можна його шукати дихотомією/бінарним пошуком по кожній змінній окремо; для кращої збіжності можна робити кроки циклічно по кожній змінній.
Якщо це не гарантовано - то можна припустити, що в якихось малих діапазонах усе ж таки буде диференційованість та єдиний максимум, обчислити значення у вузлах мережі з кроком, скажімо (розмір діапазону/8) і знайти найкращі результати, а потім вже шукати в найкращій комірці.

Ілюстрація: вхідних параметрів 2 - по координатах площини; результат відкладено у висоту

https://thumbs.dreamstime.com/z/yellow-net-square-net-abstraction-d-black-background-neural-network-wave-volume-net-yellow-169152116.jpg

Якщо функція - абсолютна чорна скринька, то доведеться таки робити повний перебір.

Подякували: Betterthanyou, leofun012