Вопрос

Для исследования у меня есть система (Black-Box), которая требует ввода в виде массива с 4 значениями (input_array) и в зависимости от их значений, он создает сигнал выхода (ответа).

 Блок-диаграмма

Генеракодицетагкод содержит 4 реальных значения (параметры P1-4), с заданными и отдельными диапазонами. Качество выходных сигналов измеряется путем расчета его отношения сигнал / шум (SNR). Каждый вариант input_array может применяться к системе один раз в 3 секунды (не быстрее, чем 3 с).

Я должен найти оптимальный генеракодицетагкод, который вызывает наибольшее количество SNR (предпочтительно, как наименьшее количество времени). То есть комбинация 4 реальных ценностей, которые максимизируют SNR (достаточно оптимального решения; абсолютный раствор приветствуется, но не обязательно требуется). Если полезно в нахождении решения, 4 параметра могут быть дискретизированы, но их диапазоны будут включать сотни возможных (дискретных) значений.

Значения можно считать независимыми, для них не доступно предыдущие знания, кроме их диапазонов, и их индивидуальное влияние на SNR неизвестно. SNR - это реальное значение, которое зависит от шума (таким образом, для того же генеракодицетагкода, применяемого последовательно, он может иметь разные (но близкие) значения).

Какие решения могут быть применены к этой проблеме?

  1. Самое простое решение, которое приходит к уму, это выполнить Исчерпывающий поиск параметров домена , но это не применимо, потому что требуется время, будет слишком длинным.

  2. Первоначально я рассматривал применение <сильные> обучения подкрепления алгоритмы для непрерывных действий, рассмотрев каждый параметр отдельное действие и возвращение положительного / отрицательного вознаграждения Когда SNR увеличивается / уменьшается (например, +/- 1). Тем не менее, я думаю, что они потребует слишком много времени; Тем не менее, я могу остановить обучение процесс в любое время я считаю, что генеракодицетагкод производит приемлемый SNR.

  3. После дальнейшего мышления эта проблема казалась проблемами поиска, так что я думал, что <сильные> (эвристические) алгоритмы поиска могут быть уместно.

  4. У кого-нибудь есть идея, что было бы наиболее подходящим решением этой проблемы?

Это было полезно?

Решение

Похоже, что у вас есть функция $ f: \ mathbb {r} ^ 4 \ \ \ mathbb {r} $ и вы хотите найти <класс span= «Математический контейнер»> $ X $ , который максимизирует $ f (x) $ , но вы не можете вычислить $ f $ напрямую; Вы можете получить только шумную оценку ее стоимости.

Многие Методы оптимизации могут быть адаптированы к этой настройке. Простая вещь, которую вы могли бы попробовать, будет итеративный метод, такой как Градиентное восхождение или метод Ньютона , но с большим количеством итераций для учета шума; Идея состоит в том, что шум среднего размера ускоряется достаточным количеством итераций.

Например, градиентное восхождение требует, чтобы вы могли вычислить градиент $ \ Nabla F (x) $ для любой точки вашего выбора. В вашем случае это можно сделать путем оценки

$$ \ nabla f (x)= ((f (x + e_1) -F (x-e_1)) / 2, \ dots, (f (x + e_4 ) -F (X-E_4)) / 2), $$

Где $ e_1= (1,0,0) $ , $ E_2= (0,1, 0,0) $ и так далее. Теперь дали возможность вычислить $ F $ на точке вашего выбора, вычисления $ F $ ON 8 Входных данных, вы можете оценить $ \ Nabla f (x) $ а затем сделать один шаг градиента подъема; и повторить до конвергенции.

Более сложный подход будет пытаться использовать оптимизацию Bayesian, например, Google Vizier .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с cs.stackexchange
scroll top