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

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

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

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

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

Но сегодня я здесь, чтобы поговорить об одном из самых простых алгоритмов — случайном поиске.

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

Поскольку у нас есть большое количество избыточных решений, и мы можем запускать большое количество симуляций параллельно (16 на сервере c4.4xlarge на AWS), мы фактически можем произвольно искать в нашем пространстве параметров и находить подходящее решение за короткое время. количество времени (для нас это означает день или два). Лучшее решение, которое мы находим, скорее всего, будет близко к глобальному оптимальному решению, но для нас этого достаточно.

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

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

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

Итак, все это говорит о том, что, несмотря на то, что существует множество чрезвычайно сложных и интересных оптимизаторов поиска, возможно, стоит начать со случайного поиска. Вы можете получить удивительно хороший результат — мы это сделали.