Эволюционные стратегии против обучения с подкреплением
Метод, где вместо градиентов агента обучает случайный шум и естественный отбор, масштабируется на тысячи ядер почти линейно. Разбираем, где он обгоняет RL, а где проигрывает.

Что такое эволюционные стратегии и почему о них снова говорят
Обучение с подкреплением (RL) обещало универсальный способ учить агентов действовать в среде: получил награду — подправил веса нейросети через градиент. На практике классические алгоритмы вроде Q-learning и policy gradient страдают от нестабильности, чувствительности к гиперпараметрам и плохо переносят разреженные награды, когда сигнал приходит редко и с большой задержкой.
Эволюционные стратегии (ES) заходят с другой стороны. Вместо того чтобы считать градиент функции награды по весам сети, ES берёт текущий набор параметров, добавляет к нему случайный шум по многим направлениям сразу, прогоняет каждую зашумлённую копию через среду и двигает параметры в сторону тех возмущений, которые дали больше награды. Градиент здесь не вычисляется точно, а оценивается — по разбросу результатов случайных мутаций.
Идея не новая: эволюционные вычисления существуют десятилетиями. Внимание вернулось после того, как исследователи показали, что простая версия ES решает те же задачи, что и глубокий RL, но параллелится почти без потерь на тысячи процессов. Там, где RL упирается в последовательность шагов обучения, ES раскладывается на независимые вычисления.
Как это работает в одном абзаце
Возьмите вектор параметров сети. Сгенерируйте, скажем, несколько сотен случайных векторов шума той же размерности. Прибавьте каждый к исходным параметрам, получите столько же вариантов политики. Прогоните каждую в среде, запишите суммарную награду. Обновите исходные параметры как взвешенную сумму шумовых векторов, где вес — это насколько хорошо сработал соответствующий вариант. Повторяйте. Никакого обратного распространения ошибки через шаги эпизода — только прямые прогоны.
Где ES реально выигрывает
Главное преимущество — масштабируемость. Каждый воркер получает исходные параметры, сам генерирует шум по известному сиду и возвращает одно число: набранную награду. Обмен между узлами — это скаляры, а не многомегабайтные градиенты. Поэтому ES масштабируется почти линейно: удвоили число ядер — почти вдвое сократили время обучения.
- Разреженные и отложенные награды. ES смотрит на итоговый результат эпизода целиком и не требует, чтобы награда приходила на каждом шаге. Проблема «кредита за действие» — какое из действий привело к успеху — здесь не стоит так остро.
- Недифференцируемые части. Если внутри политики есть операции, через которые нельзя пропустить градиент (жёсткие ветвления, дискретный выбор, вызов внешней программы), RL приходится изворачиваться. ES это безразлично: нужен только скаляр награды на выходе.
- Устойчивость к длинным горизонтам. В задачах с тысячами шагов градиент в RL склонен затухать или взрываться. ES не распространяет сигнал во времени и от длины эпизода страдает меньше.
- Меньше гиперпараметров. Нет коэффициента дисконтирования, нет отдельной value-функции, не нужно балансировать несколько лоссов.
ES обменивает вычислительную эффективность на инженерную простоту: он тратит больше прогонов среды, но эти прогоны почти идеально параллельны, а сам цикл обучения устойчивее и предсказуемее.
Где ES проигрывает
Бесплатного обеда нет. За устойчивость и параллелизм ES расплачивается сэмпл-эффективностью* — сколько взаимодействий со средой нужно, чтобы чему-то научиться.
- Жадность до данных. ES оценивает градиент по разбросу случайных возмущений. Чем больше параметров у сети, тем больше прогонов нужно, чтобы оценка была неслучайной. На задачах, где один прогон среды дорог (реальный робот, симуляция физики), это критично.
- Слабое использование структуры. RL c off-policy буфером переиспользует прошлый опыт много раз. ES обычно выбрасывает прогоны после одного обновления — информация используется однократно.
- Проклятие размерности. С ростом числа параметров случайный поиск в пространстве весов становится всё менее направленным. Здесь помогают приёмы вроде нормализации наград и виртуального пакетирования, но фундаментальная зависимость остаётся.
Сравнение подходов
| Критерий | Обучение с подкреплением (policy gradient / Q-learning) | Эволюционные стратегии |
|---|---|---|
| Как считается направление обновления | Точный градиент через backprop | Оценка градиента по случайным возмущениям |
| Параллелизация | Ограничена обменом градиентами | Почти линейная, обмен скалярами |
| Сэмпл-эффективность | Обычно выше, особенно off-policy | Обычно ниже, нужно больше прогонов |
| Разреженные награды | Даются тяжело | Переносятся легче |
| Недифференцируемые компоненты | Требуют обходных приёмов | Не мешают |
| Число гиперпараметров | Больше | Меньше |
Когда выбирать ES на практике
Решение сводится к тому, что у вас дороже — вычисления или взаимодействия со средой.
- Оцените стоимость одного прогона. Если среда — быстрый симулятор, который можно запустить тысячами копий, ES выглядит привлекательно. Если каждый прогон — это часы работы физического стенда, сэмпл-эффективный RL, скорее всего, выгоднее.
- Проверьте характер награды. Награда приходит редко, в конце длинного эпизода, и промежуточный сигнал придумать трудно — это в пользу ES.
- Посмотрите на архитектуру политики. Есть недифференцируемые блоки или внешние вызовы — ES снимает головную боль.
- Оцените доступное железо. Есть кластер из многих узлов и хочется масштабировать обучение горизонтально — ES масштабируется проще, чем распределённый RL.
На деле граница подвижна. Многие современные системы комбинируют подходы: используют ES для грубого поиска в пространстве политик и градиентные методы для тонкой настройки, либо наоборот. Есть и семейство методов вроде augmented random search, которые показывают, что даже линейные политики с простым случайным поиском решают ряд задач управления, где раньше применяли тяжёлый RL.
Что стоит запомнить
ES — не замена обучению с подкреплением и не устаревший конкурент, а другой инструмент с другим профилем компромиссов. Он покупает устойчивость обучения и почти идеальную параллелизацию ценой большего числа взаимодействий со средой. Если у вас дешёвые прогоны и много ядер — это серьёзный кандидат. Если каждый эксперимент дорог, а награда информативна на каждом шаге — градиентный RL, вероятно, справится меньшей кровью.
* Сэмпл-эффективность — мера того, сколько взаимодействий со средой (прогонов, шагов, эпизодов) алгоритму нужно, чтобы достичь заданного качества. Чем меньше требуется данных, тем выше сэмпл-эффективность.
Prompt-инженер: Идеальные запросы для Midjourney, ChatGPT и других моделей.
Спросить за 15 ₽Источники: OpenAI — Evolution Strategies as a Scalable Alternative to Reinforcement Learning
Частые вопросы
ES — это то же самое, что генетические алгоритмы?
Почему ES так хорошо параллелится?
Значит, RL больше не нужен?
Подойдёт ли ES для обучения на реальном роботе?
Насколько сложно реализовать ES самому?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.