Траектория «Обучение с подкреплением» · конспект 1 из 12

Задача обучения с подкреплением

О чём эта тема
Третья парадигма машинного обучения: агент взаимодействует со средой, получает награды и вырабатывает стратегию, максимизирующую суммарное вознаграждение. Вводятся базовые понятия — агент, среда, наблюдение, действие, награда, политика, эпизод, возврат — и разбираются классические задачи-среды от многорукого бандита до шагающего робота. По конспекту преподавателя и лекции курса «RL: от бандитов до RLHF» (мехмат МГУ).
Аннотация
Конспект начинается с постановки задачи: цикл взаимодействия агента и среды, свойства сред (стохастичность, полнота описания, стационарность), терминальные состояния и эпизоды. Затем вводится политика — правило выбора действия — и объясняется, чем обучение с подкреплением отличается от обучения с учителем и без учителя: разметки оптимальных действий не существует, а данные зависят от поведения самого агента. Далее разбирается галерея классических сред — многорукий бандит, FrozenLake, CartPole, MountainCar, Pong, шагающий робот, рекомендательная система — с их наблюдениями, действиями и наградами. Вводятся возврат и дисконтирование, и на разобранном численном примере считаются ценности состояний и действий. Интерактивный тренажёр позволяет прожить цикл «состояние → действие → награда» вручную. Завершается конспект классификацией методов RL и первым запуском среды Gymnasium из кода.
Пререквизиты
Траектория «Нейросети»: конспект 1 (нейрон, функции активации, softmax), конспект 9 (обучение с учителем и без учителя — здесь появится третья парадигма). Python и основы теории вероятностей (условная вероятность, математическое ожидание).
Мотивация
Всплеск интереса к обучению с подкреплением начался, когда компания DeepMind применила глубокое обучение к компьютерным играм Atari и достигла уровня типичного игрока-человека (2013), а затем система AlphaGo победила чемпиона мира по игре в го (2016). Принципиальное отличие от всего, что было в траектории «Нейросети»: агент должен решить задачу, даже если человек сам не знает, как её решать, — никто не размечает «правильные ходы», есть только награда за результат.

1. Агент и среда

Во всей траектории «Нейросети» обучение выглядело одинаково: есть готовая выборка, сеть делает предсказание, функция ошибки сравнивает его с правильным ответом. Теперь представим компьютерную игру. «Правильных ответов» нет: есть экран, кнопки и счёт очков. Игрок жмёт кнопку — картинка меняется, очки прибавляются или нет; понять, какое нажатие было удачным, можно только по тому, как сложится игра дальше. Обучение из такого взаимодействия — вместо обучения по размеченной выборке — и есть предмет этой траектории.

Обучение с подкреплением (англ. Reinforcement Learning, RL) — набор методов, позволяющих агенту (интеллектуальной системе — «игроку») вырабатывать оптимальную стратегию при взаимодействии со средой (внешним миром — «игрой»). В каждый — обычно дискретный — момент времени \(t\) агент оказывает на среду воздействие — действие \(a_t\). В ответ он получает наблюдение \(o_{t+1}\), полностью или частично характеризующее новое состояние среды \(s_{t+1}\), и числовую оценку успешности — награду \(r_{t+1}\):

Схема взаимодействия: агент получает от среды состояние и награду и отправляет обратно действие
Цикл «агент — среда»: состояние и награда в одну сторону, действие — в другую. Из презентации курса

Взаимодействие разворачивается в траекторию — чередование наблюдений, действий и наград:

\[ o_0 \xrightarrow{\;a_0\;} \{o_1, r_1\} \xrightarrow{\;a_1\;} \{o_2, r_2\} \xrightarrow{\;a_2\;} \ldots \tag{1.1}\]

Задача агента — выбирать действия так, чтобы максимизировать накопленное вознаграждение \(R = r_1 + r_2 + \ldots\) за достаточно большой промежуток времени. Четвёрка «состояние — действие — награда — новое состояние» — базовая единица опыта в RL:

Обозначения: S0 состояние, A0 действие, R1 награда, S1 следующее состояние
Обозначения одного шага: состояние, действие, награда, следующее состояние. Из презентации курса

Среда может быть детерминированной или стохастической; со стационарными или меняющимися во времени свойствами; с полным или неполным описанием. Неполное описание означает, что наблюдение несёт не всю информацию о среде (есть «скрытые переменные»); при полном описании наблюдение эквивалентно состоянию: \(o_t = s_t\). В стохастической среде, даже стартовав из одного состояния и совершив одинаковые действия, можно получить различные траектории. В среде могут быть терминальные состояния, при достижении которых «игровой» эпизод оканчивается; обычно эпизоды ограничены и по числу шагов.

Награда устроена коварно: она часто не связана с последним действием напрямую — может запаздывать, приходить редко или только в самом конце эпизода (как в го). Награда может быть и всегда отрицательной: если каждый шаг стоит \(r = -1\), максимизация суммарного вознаграждения означает минимизацию времени до цели.

2. Политика и третья парадигма

Алгоритм, по которому агент выбирает действие, называется его политикой (англ. policy). Это может быть детерминированная функция \(a = \pi(s)\), но в общем случае политика — условная вероятность \(\pi(a\,|\,s)\) выбора действия \(a\) в состоянии \(s\): для изучения среды агент должен «экспериментировать», иначе он рискует застрять в далёкой от оптимума области. Детерминированную политику несложно сделать вероятностной: с вероятностью \(1-\varepsilon\) выбирать лучшее известное действие, а с вероятностью \(\varepsilon\) — случайное (подробно эта идея разбирается в конспекте 2). Если действия дискретны, политику можно аппроксимировать нейросетью с softmax-выходом (траектория «Нейросети», конспект 3) — по выходу на каждое действие.

Главное отличие от обучения с учителем: обучающих данных вида «состояние → правильное действие» не существует. Никто не знает оптимальных действий — агент должен найти их сам, по оценочной обратной связи. При этом данные, на которых агент учится, он же сам и порождает: изменилась политика — изменилась и выборка наблюдений. Сводка отличий парадигм из лекции курса:

ПарадигмаТип данныхЦельОсновная трудность
обучение с учителемпары (x, y)минимизация ошибки предсказанияобобщение, шум разметки
обучение без учителяобъекты x без разметкивыявление структуры, представленийвыбор метрики качества
обучение имитациейдемонстрации экспертавоспроизведение стратегии экспертанакопление ошибок по траектории
обучение с подкреплениемтраектории взаимодействиямаксимизация ожидаемого возвратаразведка, отложенная награда, нестабильность

Сравнение парадигм машинного обучения (по лекции курса «RL: от бандитов до RLHF»). Первые две строки — конспекты 1–8 и 9–12 траектории «Нейросети».

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

3. Галерея классических задач

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

FrozenLake. Карта замёрзшего озера 4×4, часть ячеек — проруби. Гнома нужно провести из левого верхнего угла к подарку в правом нижнем. Лёд скользкий: с вероятностью 1/3 гном идёт туда, куда планирует, и с вероятностями по 1/3 — в перпендикулярные стороны. Всего 16 дискретных состояний (номер ячейки) и 4 действия; награда 1 — только за достижение цели. Среда с полным описанием, но сильно стохастичная и со скудной наградой:

Карта FrozenLake 4 на 4 с прорубями, гномом и подарком; стрелки показывают оптимальные действия в каждой клетке
FrozenLake: стрелки — оптимальные действия. Почему у левого столбца оптимально «влево» — хорошее упражнение (подсказка: скольжение). Из конспекта преподавателя

CartPole. Стержень на шарнире прикреплён к тележке; задача — не дать ему упасть, толкая тележку вправо или влево. Наблюдение — четыре числа \((x, \dot x, \theta, \dot\theta)\): положение и скорость тележки, угол и угловая скорость стержня. За каждый шаг, пока стержень не упал, даётся \(r = +1\). Среда с полным описанием; если убрать из наблюдения скорости — описание станет неполным, и придётся учитывать два последовательных наблюдения:

Среда CartPole: тележка на рельсе с вертикальным стержнем
CartPole
Среда MountainCar: машинка в ложбине между двумя холмами, на правом холме флаг
MountainCar
Среда BipedalWalker: двуногий робот на пересечённой местности
BipedalWalker

Из конспекта преподавателя

MountainCar. Машинка в ложбине должна забраться на правый холм, но «мощности» не хватает — нужно раскачиваться. Каждый шаг стоит \(r = -1\), эпизод ограничен 200 шагами. Задача заметно коварнее CartPole: случайные действия почти никогда не приводят к цели, и в большой области пространства параметров суммарная награда одинакова (−200) — нет ориентиров, где искать оптимум. К тому же эффект неправильных действий «отложен» до конца эпизода.

Pong — классика Atari: наблюдение — изображение 210×160 пикселей, награды очень редкие (за пропущенный/забитый мяч). BipedalWalker — управление роботом: действие — четыре непрерывных числа (моменты в шарнирах ног), наблюдение — 24 числа. Рекомендательная система — пример RL в продакшене: наблюдение — признаки контента и клиента, действие — выбор показываемых элементов, награда — клик; среда неполная, стохастическая и нестационарная.

СредаНаблюдениеДействияНаграда
бандитнетдискретные (номер ручки)случайный выигрыш
FrozenLakeномер ячейки (16)4 дискретных1 в конце
CartPole4 числа2 дискретных+1 каждый шаг
MountainCar2 числа3 дискретных−1 каждый шаг
Pongизображение 210×160дискретныередкая, ±1
BipedalWalker24 числа4 непрерывныхза продвижение, −100 за падение

Сводка сред; многие методы RL работают только с дискретными либо только с непрерывными действиями — это первый вопрос при выборе метода.

4. Возврат и дисконтирование

Суммарное будущее вознаграждение, начиная с момента \(t\), принято дисконтировать:

\[ G_t = \sum_{k=0}^{\infty} \gamma^k\, r_{t+k} = r_t + \gamma\, r_{t+1} + \gamma^2 r_{t+2} + \ldots = r_t + \gamma\, G_{t+1}, \tag{1.2}\]

где \(\gamma \in [0, 1]\) — коэффициент дисконтирования, гиперпараметр обучения. При \(\gamma = 1\) возврат \(G_t\) — просто сумма будущих наград; при \(\gamma < 1\) ближайшие доходы важнее далёких, что отражает неопределённость будущего, а технически позволяет работать с бесконечными суммами (в задачах с конечным эпизодом сумма обрывается в терминальном состоянии). Так как и политика, и среда могут быть вероятностными, максимизируется среднее значение возврата:

\[ J(\pi) = \bigl\langle G_0 \bigr\rangle_{\pi} \;\to\; \max_{\pi}, \qquad \pi^* = \arg\max_{\pi} J(\pi), \tag{1.3}\]

где угловые скобки — среднее по траекториям при фиксированной политике \(\pi\).

Тренажёр: цикл «состояние → действие → награда»

Вы играете за агента (данные иллюстративные): 7 состояний, слева яма (награда −1, терминальная), справа цель (+1, терминальная), каждый обычный шаг стоит −0.04. Журнал — это траектория (1.1): четвёрки (s, a, r, s′). Дойдите до цели кратчайшим путём — R = 0.92; сходите сначала влево-вправо и сравните: каждый лишний шаг съедает и суммарный, и дисконтированный возврат. Прогоните несколько эпизодов и следите за средним R — это и есть оценка J вашей «политики» (1.3).

Как сравнивать действия числом? Разберём пример из конспекта преподавателя: детерминированная среда с семью состояниями, четыре из которых терминальные; в каждом состоянии два действия (\(a = 0\) — вверх, \(a = 1\) — вниз), награды подписаны на рёбрах:

Дерево из семи состояний: из s0 два действия ведут в s1 и s2 с наградами 4 и 2, далее в четыре терминальных состояния с наградами 0, 4, 16 и минус 4
Простая среда: 7 состояний, награды на переходах. Из конспекта преподавателя

Ценностью состояния назовём средний будущий возврат из него (при \(\gamma = 1\)). Для политики, выбирающей действия равновероятно, из \(s_0\) возможны четыре равновероятные траектории, и ценность стартового состояния

\[ V(s_0) = \tfrac{1}{4}\bigl[(4+0) + (4+4) + (2+16) + (2-4)\bigr] = 7. \tag{1.4}\]

Аналогично для действий: \(Q(s_0, 0) = 4 + \frac{0+4}{2} = 6\), а \(Q(s_0, 1) = 2 + \frac{16-4}{2} = 8\) — действие «вниз» доходнее, хотя его немедленная награда меньше (2 против 4): выгода отложена. Оптимальная же политика детерминирована и даёт \(V^*(s_0) = 2 + 16 = 18\). Строгие определения функций ценности \(V\) и \(Q\) и уравнение Беллмана — предмет конспекта 3.

Типичная ошибка Выбирают действие по немедленной награде. В примере выше «вверх» из \(s_0\) даёт сразу 4 против 2 у «вниз», но проигрывает по возврату (6 против 8): качество действия определяется всей будущей траекторией, а не ближайшим шагом — в этом суть отложенной награды.

5. Классификация методов RL

Методов RL много, универсального нет: в зависимости от задачи метод может быть неэффективным или неприменимым (например, работать только с дискретными действиями). Сравнивают методы по трём критериям: скорость (за сколько эпизодов достигается заданный средний возврат), оптимальность (какой средний возврат достижим в пределе) и устойчивость (не «обваливается» ли результат в ходе обучения). Интегральный критерий — площадь под кривой среднего возврата как функции числа эпизодов.

Основные оси классификации:

Карта методов (по диаграмме OpenAI из конспекта преподавателя). Почти все названия встретятся в конспектах 5–11.

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

6. Первый запуск: Gymnasium

Gymnasium (развитие OpenAI Gym) — стандартная библиотека сред для RL: все задачи из раздела 3 доступны под единым интерфейсом. Среда создаётся по имени, эпизод начинается с reset(), а каждый шаг — вызов step(action), возвращающий ровно те величины, что на схеме из раздела 1:

import gymnasium as gym

env = gym.make('CartPole-v1')
print(env.observation_space)   # Box(4,)  — четыре вещественных числа
print(env.action_space)        # Discrete(2) — два действия: влево/вправо

# один эпизод со случайной политикой
obs, info = env.reset()
total_reward, done = 0.0, False
while not done:
    action = env.action_space.sample()          # случайное действие
    obs, reward, terminated, truncated, info = env.step(action)
    total_reward += reward
    done = terminated or truncated             # упал стержень / кончилось время

print('возврат эпизода:', total_reward)      # у случайной политики ~20-30 шагов

Пара флагов в step различает две причины конца эпизода: terminated — достигнуто терминальное состояние среды (стержень упал), truncated — эпизод обрезан по внешнему лимиту времени. Подробно устройство сред, обёртки и создание собственной среды — в конспекте 6.

Типичная ошибка Складывают награды за все эпизоды подряд, не сбрасывая счётчик на reset(). Возврат \(G\) определён в пределах одного эпизода; качество политики — средний возврат по многим эпизодам, а не сумма всего подряд.

Контрольные вопросы