Обучение с подкреплением (RL) — метод машинного обучения, при котором агент учится принимать решения, взаимодействуя со средой методом проб и ошибок, получая награды или штрафы.
Области применения: интернет-маркетинг, робототехника, игры, медицина, финансы, диалоговые системы и др.
Основные сущности:
- Агент — принимает решения.
- Среда — внешний мир, выдаёт состояния и награды.
Цикл взаимодействия:
- Действие (Action, (a))
- Состояние (State, (s)) — обладает марковским свойством.
- Награда (Reward, (r))
- Стратегия (Policy, (\pi(a|s))) — правило выбора действия.
Стратегия задаётся как условная вероятность:
Цели агента:
- Максимизировать суммарное ожидаемое вознаграждение за эпизод.
- Эпизод — последовательность:
- Суммарная награда:
- Цель обучения:
Отличие от других парадигм:
- Обучение с учителем — есть готовые ответы.
- Обучение без учителя — поиск структур без обратной связи.
- RL — нет эталонов, действия влияют на будущие данные, награда — ключевой сигнал.
Итеративный алгоритм, основанный на отборе лучших стратегий.
Цикл:
- Проигрывание (N) сессий.
- Выбор (M) лучших («элитных»).
- Обновление стратегии, чтобы успешные действия стали более вероятными.
Применяется при небольшом числе состояний и действий.
- Стратегия — матрица вероятностей:
(сумма по действиям для каждого состояния равна 1).
- Сбор данных: (N) сессий.
- Отбор элитных: сохраняем все пары ((s,a)) из (M) лучших сессий.
- Обновление стратегии:
- Критерий остановки — по числу итераций или стабильности политики.
При большом пространстве состояний используется нейросеть (f_W(s)), предсказывающая вероятности действий.
- Инициализация весов (W) случайно.
- Сбор (N) сессий.
- Отбор элитных ((M)).
- Оптимизация — максимизация логарифма правдоподобия действий из элитных сессий:
- Для непрерывных действий стратегию моделируют как гауссово распределение:
Функция ценности состояния (V_\pi(s)) — ожидаемая дисконтированная сумма наград, начиная с состояния (s) и далее следуя политике (\pi):
где дисконтированная награда:
(\gamma) — коэффициент дисконтирования.
Рекуррентная форма:
Уравнение Беллмана для (V_\pi):
Функция ценности действия (Q_\pi(s,a)):
Оптимальная политика (\pi^*) даёт максимальные (V) и (Q) во всех состояниях.
Алгоритм поиска оптимальной стратегии в MDP.
- Инициализация: произвольная (\pi), (V(s)=0).
- Оценка политики — итеративно решаем уравнение Беллмана для фиксированной (\pi):
Повторяем до сходимости.
- Улучшение политики — делаем стратегию жадной относительно (V):
Если (\pi) не изменилась — останов, иначе повторяем с шага 2.
Сравнение с Value Iteration:
- Policy Iteration — полная оценка на каждом шаге, но меньше внешних итераций.
- Value Iteration — одна итерация оценки, но больше внешних шагов.
Оба — model-free методы семейства TD, обучают (Q(s,a)).
Обновление использует максимальное Q-значение следующего состояния:
Учитывает реальное следующее действие (a'):
Дилемма:
- Exploitation — выбор наилучшего по текущим оценкам действия.
- Exploration — исследование новых действий.
Решения:
- (\varepsilon)-greedy: с вероятностью (\varepsilon) случайное действие, иначе жадное.
- Softmax — выбор пропорционален экспоненте:
где (T) — температура.
Заменяет таблицу (Q(s,a)) нейросетью, которая по состоянию (s) выдаёт вектор Q-значений для всех действий.
Проблемы обучения и их решения:
- Experience Replay — буфер переходов ((s,a,r,s')).
- Target Network — отдельная сеть (\Theta^-) для стабильных целей.
Функция потерь:
- Сохраняем до (10^6) последних переходов.
- Сэмплируем батчи случайно.
- Решает проблемы корреляции, забывания, неэффективности использования опыта.
Целевая сеть обновляется реже.
Способы обновления:
- Hard update: (\Theta^- \leftarrow \Theta) каждые (n) шагов.
- Soft update:
Исправляет завышение оценок:
- Выбор действия по основной сети:
- Оценка по целевой сети:
Итоговая формула:
Методы, оптимизирующие стратегию (\pi_\theta(a|s)) напрямую.
Целевая функция:
Градиент (с использованием логарифмической производной):
Базовый on-policy алгоритм.
- Инициализация (\theta).
- Генерация (N) сессий.
- Оценка градиента:
- Обновление:
Снижение дисперсии с помощью базовой линии (b(s)) (часто (V(s))):
Гибрид: Actor — стратегия, Critic — оценка ценности.
В Advantage Actor-Critic (A2C):
Обучение:
- Actor выбирает действие.
- Critic вычисляет TD-ошибку (\delta = r + \gamma V(s') - V(s)).
- Critic минимизирует MSE.
- Actor обновляется, увеличивая вероятность действий с положительным (\delta).
Архитектура Encoder-Decoder:
- Encoder — сжимает входную последовательность в вектор.
- Decoder — генерирует выходную последовательность пошагово.
Области применения: машинный перевод, генерация описаний изображений, диалоговые системы и др.
Обучение — с учителем, цель — максимизация логарифма вероятности эталонного ответа.
Проблема: сдвиг распределения (distribution shift) — модель использует свои собственные предсказания на этапе генерации.
RL используется для устранения сдвига распределения и оптимизации недифференцируемых метрик.
Основные подходы:
- Self-Critical Sequence Training (SCST) — базовая линия — результат жадной генерации.
- RLHF (Reinforcement Learning from Human Feedback) — три этапа: SFT, обучение модели вознаграждения, оптимизация с PPO.
- DPO (Direct Preference Optimization) — оптимизация напрямую на предпочтениях без отдельной модели вознаграждения.
An open course on reinforcement learning in the wild. Taught on-campus at HSE and YSDA and maintained to be friendly to online students (both english and russian).
- Optimize for the curious. For all the materials that aren’t covered in detail there are links to more information and related materials (D.Silver/Sutton/blogs/whatever). Assignments will have bonus sections if you want to dig deeper.
- Practicality first. Everything essential to solving reinforcement learning problems is worth mentioning. We won't shun away from covering tricks and heuristics. For every major idea there should be a lab that makes you to “feel” it on a practical problem.
- Git-course. Know a way to make the course better? Noticed a typo in a formula? Found a useful link? Made the code more readable? Made a version for alternative framework? You're awesome! Pull-request it!
-
FAQ: About the course, Technical issues thread, Lecture Slides, Online Student Survival Guide
-
Anonymous feedback form.
-
Virtual course environment:
- Google Colab - set open -> github -> yandexdataschool/pracical_rl -> {branch name} and select any notebook you want.
- Installing dependencies on your local machine (recommended).
- Alternative: Azure Notebooks.
The syllabus is approximate: the lectures may occur in a slightly different order and some topics may end up taking two weeks.
-
week01_intro Introduction
- Lecture: RL problems around us. Decision processes. Stochastic optimization, Crossentropy method. Parameter space search vs action space search.
- Seminar: Welcome into openai gym. Tabular CEM for Taxi-v0, deep CEM for box2d environments.
- Homework description - see week1/README.md.
-
week02_value_based Value-based methods
- Lecture: Discounted reward MDP. Value-based approach. Value iteration. Policy iteration. Discounted reward fails.
- Seminar: Value iteration.
- Homework description - see week2/README.md.
-
week03_model_free Model-free reinforcement learning
- Lecture: Q-learning. SARSA. Off-policy Vs on-policy algorithms. N-step algorithms. TD(Lambda).
- Seminar: Qlearning Vs SARSA Vs Expected Value SARSA
- Homework description - see week3/README.md.
-
recap_deep_learning - deep learning recap
- Lecture: Deep learning 101
- Seminar: Intro to pytorch/tensorflow, simple image classification with convnets
-
week04_approx_rl Approximate (deep) RL
- Lecture: Infinite/continuous state space. Value function approximation. Convergence conditions. Multiple agents trick; experience replay, target networks, double/dueling/bootstrap DQN, etc.
- Seminar: Approximate Q-learning with experience replay. (CartPole, Atari)
-
week05_explore Exploration
- Lecture: Contextual bandits. Thompson Sampling, UCB, bayesian UCB. Exploration in model-based RL, MCTS. "Deep" heuristics for exploration.
- Seminar: bayesian exploration for contextual bandits. UCB for MCTS.
-
week06_policy_based Policy Gradient methods
- Lecture: Motivation for policy-based, policy gradient, logderivative trick, REINFORCE/crossentropy method, variance reduction(baseline), advantage actor-critic (incl. GAE)
- Seminar: REINFORCE, advantage actor-critic
-
week07_seq2seq Reinforcement Learning for Sequence Models
- Lecture: Problems with sequential data. Recurrent neural networks. Backprop through time. Vanishing & exploding gradients. LSTM, GRU. Gradient clipping
- Seminar: character-level RNN language model
-
week08_pomdp Partially Observed MDP
- Lecture: POMDP intro. POMDP learning (agents with memory). POMDP planning (POMCP, etc)
- Seminar: Deep kung-fu & doom with recurrent A3C and DRQN
-
week09_policy_II Advanced policy-based methods
- Lecture: Trust region policy optimization. NPO/PPO. Deterministic policy gradient. DDPG
- Seminar: Approximate TRPO for simple robot control.
-
week10_planning Model-based RL & Co
- Lecture: Model-Based RL, Planning in General, Imitation Learning and Inverse Reinforcement Learning
- Seminar: MCTS for toy tasks
-
yet_another_week Inverse RL and Imitation Learning
- All that cool RL stuff that you won't learn from this course :)
Course materials and teaching by: [unordered]
- Pavel Shvechikov - lectures, seminars, hw checkups, reading group
- Nikita Putintsev - seminars, hw checkups, organizing our hot mess
- Alexander Fritsler - lectures, seminars, hw checkups
- Oleg Vasilev - seminars, hw checkups, technical support
- Dmitry Nikulin - tons of fixes, far and wide
- Mikhail Konobeev - seminars, hw checkups
- Ivan Kharitonov - seminars, hw checkups
- Ravil Khisamov - seminars, hw checkups
- Anna Klepova - hw checkups
- Fedor Ratnikov - admin stuff
- Using pictures from Berkeley AI course
- Massively refering to CS294
- Several tensorflow assignments by Scitator
- A lot of fixes from arogozhnikov
- Other awesome people: see github contributors
- Alexey Umnov helped us a lot during spring2018