Выпуклая оптимизация
Оптимизация в задачах обучения с подкреплением
ChatGPT (175 миллиардов параметров), AlphaGo (победил Ли Седоля 4:1 в 2016), роботы Boston Dynamics - за всеми этими системами стоит одна и та же математика. Как оптимизировать что-то, когда «правильного ответа» нет, а есть только числовая оценка результата через несколько секунд или часов? **Policy gradient** и его потомки (PPO, SAC) превратили RL из теории в технологию.
- **RLHF в LLM**: ChatGPT, Claude, Gemini обучаются на финальном этапе через PPO с reward model - именно это делает ответы полезными и безопасными, а не просто правдоподобными
- **AlphaGo/AlphaZero**: натуральный градиент политики + MCTS позволил превзойти мировых чемпионов по Go без человеческих партий в обучении
- **Робот Boston Dynamics**: Spot обучается ходить по неровной поверхности через Actor-Critic в симуляторе - миллиарды шагов, которые невозможно прошагать на реальном железе
Теорема Policy Gradient
В обучении с подкреплением (RL) мы хотим найти политику π_θ(a|s) - распределение над действиями, максимизирующее суммарную награду. В отличие от supervised learning, у нас нет явного «правильного ответа» - только скалярный сигнал награды. **Теорема Policy Gradient** даёт формулу для градиента ожидаемой награды по параметрам политики θ.
Основная проблема REINFORCE - **высокая дисперсия** градиента. Одна и та же политика порождает разные траектории с разными наградами, что делает Monte-Carlo оценку шумной. Ключевой трюк для снижения дисперсии - **базовая линия (baseline)**: вычесть b(s) из Q(s,a). Это не меняет среднее (baseline не зависит от действия), но снижает дисперсию: ∇J(θ) = E[∇log π · (Q(s,a) - b(s))].
**REINFORCE**: Q(s,a) оценивается через Monte-Carlo (весь эпизод). Несмещён, но высокая дисперсия. **Actor-Critic**: Q(s,a) оценивается через параметрическую аппроксимацию (нейросеть critic). Снижает дисперсию, но вводит смещение. Это bias-variance trade-off в самом центре RL.
Зачем в Policy Gradient вычитается baseline b(s) из Q(s,a)?
TRPO и PPO: ограничение на изменение политики
Наивный градиентный шаг в пространстве политик опасен: слишком большое обновление θ может разрушить политику - из хорошей она станет катастрофически плохой, а recover из этого состояния долго. **TRPO** (Trust Region Policy Optimization) и **PPO** (Proximal Policy Optimization) ограничивают размер обновления через KL-дивергенцию между старой и новой политикой.
В GPT-4, Claude и других LLM PPO используется на финальном этапе RLHF: reward model даёт скаляр за ответ модели, PPO оптимизирует политику (LLM) чтобы максимизировать этот скаляр. Без clipping обновления LLM мог бы полностью деградировать за один шаг - клиппинг r_t(θ) делает обучение стабильным. Дополнительно добавляется KL-штраф к SFT модели: r = r_rm - β · KL(π ‖ π_SFT).
Почему PPO использует clip(r_t, 1-ε, 1+ε) а не просто ограничение r_t ≤ 1+ε?
Натуральный градиент политики
Обычный градиент ∇J(θ) зависит от **параметризации** политики: если переставить параметры, шаг станет другим, хотя политика изменится одинаково. **Натуральный градиент** использует метрику в пространстве *распределений* (не параметров), делая обновление инвариантным к параметризации.
Adam с диагональным приближением матрицы Фишера - это приближённый натуральный градиент! Делитель √(v̂) в Adam приближает √(диагональ(F))⁻¹. Это объясняет, почему Adam работает лучше SGD: он неявно учитывает кривизну пространства параметров. K-FAC (Kronecker-Factored Approximate Curvature) - более точное блочно-диагональное приближение F для нейросетей.
Почему обычный SGD шаг α·∇J(θ) субоптимален для оптимизации политики?
Actor-Critic: одновременная оптимизация политики и оценочной функции
**Actor-Critic** - архитектура RL, объединяющая policy gradient (actor) и value function approximation (critic). Actor обновляется по policy gradient с использованием advantage A(s,a) = Q(s,a) - V(s), оцениваемого critic'ом. Это снижает дисперсию по сравнению с REINFORCE, сохраняя меньшее смещение, чем TD-методы.
**GAE** (Schulman et al., 2015) - компромисс между высокодисперсным MC и смещённым TD через экспоненциальное взвешивание: A^GAE_t = Σ_{k≥0} (γλ)ᵏ δ_{t+k} δₜ = rₜ + γV(s_{t+1}) - V(sₜ) - TD error - λ = 0: чистый TD (низкая дисперсия, высокое смещение) - λ = 1: Monte Carlo (нулевое смещение, высокая дисперсия) - λ ≈ 0.95: оптимум в большинстве задач GAE используется в PPO, SAC и большинстве современных RL-агентов.
Зачем в A2C/PPO к actor loss добавляется entropy bonus (-β·H[π])?
Ключевые идеи
- **Policy Gradient теорема**: ∇J(θ) = E[∇log π(a|s) · Q(s,a)] - оптимизируем политику прямо, через log-derivative trick
- **PPO**: ограничивает обновление через clip(r_t, 1-ε, 1+ε) - де-факто стандарт для RLHF, robotics, game playing
- **Натуральный градиент**: F⁻¹·∇J учитывает кривизну статистического многообразия - эквивалентен TRPO без явного constraint
- **Actor-Critic с GAE**: critic оценивает V(s) для advantage; GAE (λ≈0.95) балансирует bias-variance trade-off
Связанные темы
RL оптимизация объединяет методы стохастической оптимизации с теорией управления:
- Дифференцируемое программирование — Policy gradient - частный случай DP: REINFORCE дифференцирует через стохастическое выполнение
- Федеративная оптимизация — Multi-agent RL с приватностью использует FL: агенты обучают совместную политику без обмена наблюдениями
- Теоретические гарантии сходимости — PPO и TRPO имеют теоретические гарантии монотонного улучшения политики - через trust region и surrogate objective
Вопросы для размышления
- В чём принципиальное отличие оптимизационной задачи в RL от supervised learning с точки зрения сложности?
- Почему большой шаг gradient descent разрушителен для политики, но не для обычной нейросети?
- Как entropy bonus связан с принципом максимальной энтропии в байесовской статистике?