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

Зачем вообще усложнять политику шумом
Классический агент обучения с подкреплением плохо переносит редкую награду. Если робот получает сигнал только за достижение цели в лабиринте, а до цели тысячи шагов, градиент почти всегда равен нулю: агент не понимает, что из его метаний хоть немного приблизило к успеху. Иерархический подход разбивает проблему на два уровня — политику низкого уровня, которая владеет набором навыков (идти вперёд, поворачивать, прыгать), и менеджер высокого уровня, который переключает эти навыки под задачу.
Проблема в том, откуда взять сами навыки, если размеченной награды за них нет. Один из подходов — стохастические нейросети (Stochastic Neural Networks, SNN). Идея, описанная в работе Флоренсы, Дуана и Аббеля «Stochastic Neural Networks for Hierarchical Reinforcement Learning» (2017), простая: подмешать в вход политики скрытую случайную переменную и заставить сеть за счёт этой переменной порождать разные осмысленные поведения.
Что делает переменную полезной
Если просто добавить шум, сеть научится его игнорировать — шум мешает набирать награду. Чтобы латентная переменная реально управляла поведением, авторы используют два приёма:
- Пре-тренировка на прокси-награде. Вместо целевой задачи агент тренируется в простой среде на generic-награду вроде пройденного расстояния. Это заставляет освоить локомоцию, не привязываясь к конкретной цели.
- Бонус за взаимную информацию. К награде добавляется член, поощряющий зависимость между латентным кодом и состоянием агента. Проще говоря, разные значения кода должны приводить в разные части пространства состояний.
Стохастическая сеть против смеси политик
Наивная альтернатива — обучить несколько отдельных политик. SNN выигрывает за счёт того, что навыки делят между собой веса сети: общие мышцы движения переиспользуются, различается лишь то, что задаёт латентный код. Это и экономнее по параметрам, и даёт более плавное пространство навыков.
| Подход | Разнообразие навыков | Переиспользование весов | Слабое место |
|---|---|---|---|
| Отдельные политики | Высокое, но дискретное | Нет | Дорого по параметрам, навыки не связаны |
| SNN с латентным кодом | Управляемое кодом | Да | Нужен бонус за взаимную информацию, иначе шум игнорируется |
| Плоская политика без иерархии | Нет | — | Не справляется с редкой наградой |
Ключевая мысль иерархии: навыки учат один раз в дешёвой среде, а дорогую задачу с редкой наградой решает лёгкий менеджер, которому осталось выбрать из готового репертуара.
Как устроена двухуровневая схема
После пре-тренировки латентный код фиксируется на время нескольких шагов среды — это горизонт переключения. Менеджер высокого уровня наблюдает состояние и раз в такой интервал выбирает код, которым будет пользоваться политика низкого уровня. Низкоуровневая сеть при этом заморожена: менеджер учится не двигать конечностями, а дирижировать навыками.
Дискретный код против непрерывного
В базовом варианте латентная переменная — one-hot вектор из нескольких категорий, то есть конечное число навыков. Это упрощает работу менеджера: у него дискретное множество действий. Непрерывный код теоретически даёт бесконечный спектр поведений, но менеджеру тяжелее в нём ориентироваться, и без дополнительной регуляризации навыки размываются.
Что показали эксперименты
В оригинальной работе агенты — управляемые роботы вроде змейки и муравья (swimmer, ant) в средах на базе физического движка. Сценарии с редкой наградой: сбор еды на большой территории и прохождение лабиринта, где сигнал приходит только у цели. Плоская политика в таких задачах практически не обучалась, тогда как иерархия на SNN находила стратегию заметно чаще. Точные числа успешных прогонов и график сходимости смотрите в самой статье — воспроизводимость здесь сильно зависит от сида и настроек среды.
Где это ломается
- Пропасть между пре-тренировкой и задачей. Если навыки набраны в среде, не похожей на целевую, менеджеру нечего комбинировать. Репертуар должен покрывать нужные движения.
- Замороженный низкий уровень. Он не адаптируется под задачу. В ситуациях, где нужен навык, отсутствующий в репертуаре, система упирается в потолок.
- Настройка горизонта переключения. Слишком частое переключение лишает навыки времени развернуться, слишком редкое делает менеджер неповоротливым.
Место SNN среди соседей
SNN — не единственный способ добывать навыки без награды. Подходы вроде обучения по взаимной информации между кодом и состоянием развивались дальше и в других работах, где навыки выделяются вообще без внешнего сигнала. Но SNN остаётся понятной отправной точкой: она показывает, что случайность на входе плюс правильный регуляризатор — уже достаточный механизм, чтобы одна сеть держала целый набор поведений.
Практический вывод для тех, кто собирает иерархического агента: не гонитесь сразу за непрерывным пространством навыков и обучаемым низким уровнем. Начните с нескольких дискретных навыков на прокси-награде, заморозьте их и проверьте, вытягивает ли менеджер задачу. Если нет — проблема, скорее всего, в репертуаре, а не в менеджере.
Prompt-инженер: Идеальные запросы для Midjourney, ChatGPT и других моделей.
Спросить за 15 ₽Частые вопросы
Что такое стохастическая нейросеть в этом контексте?
Зачем нужен бонус за взаимную информацию?
Чем это лучше обучения нескольких отдельных политик?
Почему плоская политика не справляется с редкой наградой?
Можно ли дообучать низкоуровневую политику под задачу?
Дискретный или непрерывный латентный код выбрать?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.