Обучение с подкреплением
Введение в RL: агент и среда
9 марта 2016, Сеул, 5-я партия. AlphaGo делает ход 37. Все эксперты: «это ошибка новичка». Ли Седоль уходит из зала на 15 минут. AlphaGo побеждает. Ход 37 - позиция, которую ни один человек не делал за 2500 лет игры в Го. RL-агент нашёл стратегию за пределами человеческого понимания. ChatGPT обучен через RLHF - тот же класс алгоритмов. Беллман написал уравнение оптимальности в 1957 году. Ход 37 - практическое следствие.
- **AlphaGo/AlphaZero** - победа над чемпионами мира в го, шахматах и сёги без единого записанного правила (ход 37 стал символом выхода RL за пределы человеческого понимания)
- **ChatGPT (RLHF)** - языковые модели обучаются через Reinforcement Learning from Human Feedback: агент получает награду от людей-оценщиков и учится давать полезные ответы
- **Google Data Centers (DeepMind)** - RL-агент снизил энергопотребление охлаждения на 40%, экономя десятки миллионов долларов в год
- **Tesla Autopilot** - политика управления автомобилем, обученная на 100 петабайтах видео с 5 миллионов машин, обновляется через RL-подобные методы
- **Торговые алгоритмы HFT** - агенты, принимающие тысячи решений в секунду на основе состояния биржевого стакана
От закона эффекта до AlphaGo
Эдвард Торндайк сформулировал закон эффекта в 1911 году: действия, за которыми следует удовлетворение, повторяются, а действия с неприятным исходом - нет. Обучение методом проб и ошибок, психологический корень RL. В 1957 году Ричард Беллман ввёл динамическое программирование и марковский процесс принятия решений, дав области её математическое ядро. Артур Сэмюэл в 1959 году построил в IBM самообучающуюся программу игры в шашки, которая улучшалась, играя сама с собой, и придумал термин «machine learning». Ричард Саттон и Эндрю Барто объединили эти линии: temporal-difference learning в 1988 году и учебник «Reinforcement Learning: An Introduction» (1998, 2nd ed. 2018), до сих пор главный справочник.
Предварительные знания
- Базовая теория вероятностей: случайные величины и математическое ожидание
- Уверенное чтение Python (циклы, классы, NumPy)
- Общее представление о парадигмах машинного обучения
Агент: кто принимает решения?
9 марта 2016. Сеул. 5-я партия. AlphaGo делает ход 37. Комментаторы замолкают. Эксперты говорят: «это ошибка новичка». Ли Седоль встаёт, уходит из зала на 15 минут - ему нужно время чтобы осознать. AlphaGo побеждает. Ход 37 - позиция, которую **ни один человек не делал за 2500 лет игры в Го**. RL-агент нашёл стратегию за пределами человеческого понимания. Никто не объяснял ему правила. Никто не показывал примеры ходов. Агент сам.
**Агент (agent)** - сущность, которая наблюдает за окружением, принимает решения (действия) и получает обратную связь (награду). Робот, программа, торговый алгоритм, RLHF-тренер языковой модели - что угодно, что умеет действовать и учиться.
Чем RL отличается от других парадигм machine learning?
| Парадигма | Данные | Обратная связь | Пример |
|---|---|---|---|
| Supervised Learning | Пары (вход, ответ) | Правильный ответ сразу | Классификация изображений |
| Unsupervised Learning | Только входные данные | Нет обратной связи | Кластеризация клиентов |
| Reinforcement Learning | Опыт взаимодействия | Награда с задержкой | Робот учится ходить |
**Ключевое отличие RL:** агент не знает правильный ответ заранее. Он сам обнаруживает, какие действия ведут к награде, экспериментируя с окружением. Именно так работает RLHF в ChatGPT - тот же класс алгоритмов, что AlphaGo.
Центральная дилемма RL - **exploration vs exploitation**. Нашли ресторан с неплохой едой. Продолжать ходить туда (exploitation - используем известное) или попробовать новый ресторан, рискуя разочароваться (exploration - исследуем неизвестное)? Агент постоянно балансирует между этими двумя стратегиями. Tesla Autopilot решает эту дилемму на каждом перекрёстке.
**epsilon = 0.1** означает: в 10% случаев агент исследует случайное действие, в 90% - выбирает лучшее из известных. Это **epsilon-greedy** стратегия. DeepMind использовала именно её в DQN, который научился играть в Atari лучше человека.
Что отличает Reinforcement Learning от Supervised Learning?
Среда: мир агента
**Среда (environment)** - всё, с чем агент взаимодействует. Для AlphaGo - доска и правила Го. Для Boston Dynamics робота - физический мир с гравитацией и препятствиями. Для торгового алгоритма HFT - биржевой стакан в реальном времени. Среда принимает действие агента и возвращает два сигнала: **новое состояние** и **награду**.
Цикл RL: агент наблюдает **состояние** (state) → выбирает **действие** (action) → среда возвращает **новое состояние** и **награду** (reward) → повторяем. Последовательность от начала до конца называется **эпизод** (episode).
На практике для экспериментов с RL используют библиотеку **Gymnasium** (ранее OpenAI Gym). Она предоставляет десятки готовых сред - от CartPole до Atari. Именно на CartPole проверяют новые алгоритмы перед тем как запустить их на реальных задачах.
Полный цикл одного эпизода - от `reset()` до `terminated == True`:
**terminated** означает, что эпизод закончился по правилам среды (шест упал). **truncated** - эпизод прерван по таймауту (достигли максимума шагов). Различие важно для корректного обучения.
Что возвращает метод env.step(action) в Gymnasium?
Награда: сигнал обучения
**Reward (награда)** - единственный сигнал, по которому агент понимает, хорошо ли он действует. Число: положительное (хорошо), отрицательное (плохо), ноль (нейтрально). Вся мудрость RL сводится к одному: **максимизируй суммарную награду**. DeepMind снизил энергопотребление охлаждения дата-центров Google на 40% - агент просто максимизировал одно число: эффективность охлаждения.
Но есть подвох. AlphaGo делает ход 37 на 37-м ходу из 211. Итог: +1 за победу, -1 за поражение, 0 за каждый промежуточный ход. Какой из 37 ходов привёл к победе? Все? Только последний? Это называется **credit assignment problem** - задача приписывания заслуг. Ход 37 стал победным потому что алгоритм научился решать эту задачу.
**Sparse rewards** (редкие награды) - сигнал только в конце эпизода (шахматы, го). **Dense rewards** (частые награды) - сигнал на каждом шаге (CartPole: +1 за каждый шаг). С dense rewards учиться проще, но их не всегда легко спроектировать.
Ещё одна ключевая идея: **рубль сегодня ценнее рубля завтра**. Награда через 100 шагов менее ценна, чем награда сейчас - за 100 шагов много может пойти не так. Вводят **discount factor** (коэффициент дисконтирования) - gamma от 0 до 1.
| gamma | Поведение агента | Аналогия |
|---|---|---|
| 0.0 | Жадный: учитывает только немедленную награду | Потратить всё сейчас |
| 0.5 | Краткосрочный: горизонт 2-3 шага | Планировать на неделю |
| 0.99 | Дальновидный: учитывает далёкое будущее | Пенсионные накопления |
| 1.0 | Бесконечный горизонт (может расходиться!) | Бессмертный инвестор |
**Reward shaping** - искусственное добавление промежуточных наград - мощный, но опасный инструмент. Неудачный reward shaping приводит к лазейкам: робот, получающий +1 за каждый шаг «ближе к цели», может научиться ходить кругами возле цели, не достигая её. Такие баги встречаются в реальных production-системах.
На практике **gamma = 0.99** - самое популярное значение. Награда через 100 шагов стоит 0.99^100 ≈ 0.37 от текущей. Через 500 шагов - почти ноль.
При gamma = 0.9, награда +10, полученная через 2 шага, эквивалентна текущей награде:
Политика: стратегия агента
**Политика (policy)** - правило, по которому агент выбирает действие в каждом состоянии. Обозначается **π**. Таблица «в состоянии X делай Y», нейронная сеть с миллиардами параметров, или простое правило «всегда иди направо» - всё это политики. AlphaZero - политика в виде нейросети на 40 миллионов параметров. Bellman написал уравнение оптимальности в 1957 году - и оно по сей день лежит в основе каждого RL-алгоритма.
Формально: **π(a|s)** - вероятность выбрать действие **a**, находясь в состоянии **s**. Политика бывает двух типов:
| Тип | Определение | Пример |
|---|---|---|
| Детерминистическая | π(s) = a (одно конкретное действие) | В состоянии «шест наклоняется вправо» → всегда двигай тележку вправо |
| Стохастическая | π(a|s) = P(a|s) (распределение вероятностей) | 60% - вправо, 40% - влево (для исследования) |
**Оптимальная политика π*** - политика, максимизирующая ожидаемый cumulative discounted reward из любого состояния. Цель RL - найти π* или приблизиться к ней. AlphaGo нашла политику лучше чем любой человек за 2500 лет.
Epsilon-greedy - самый простой способ решить дилемму exploration vs exploitation. Большую часть времени агент использует лучшее известное действие, но с вероятностью epsilon пробует что-то случайное. Со временем epsilon уменьшают: агент исследовал достаточно.
**Распространённая ловушка:** если epsilon уменьшается слишком быстро, агент может застрять на плохой стратегии, найденной первой. Если слишком медленно - тратит время на бесполезные случайные действия.
Цель RL-агента - максимизировать мгновенную (immediate) награду на каждом шаге
Цель - максимизировать cumulative discounted reward (сумму дисконтированных будущих наград). Иногда выгоднее получить маленькую награду сейчас, чтобы получить большую позже.
Жадная стратегия «бери максимум прямо сейчас» проваливается в большинстве задач. В Го жертва камнями (отрицательная немедленная награда) может привести к победе через 50 ходов (огромная будущая награда). Именно так AlphaGo нашла ход 37 - он был «плохим» с точки зрения жадной стратегии. Discount factor gamma определяет, насколько далеко в будущее «смотрит» агент.
Что такое оптимальная политика π*?
Ключевые идеи
- **Агент** наблюдает состояние, выбирает действие, получает награду - и так по циклу. Это отличает RL от supervised (нет готовых ответов) и unsupervised (есть обратная связь) learning
- **Среда** определяет правила игры: состояния, действия, переходы. Gymnasium даёт стандартный API: reset() → step(action) → (state, reward, terminated, truncated, info)
- **Награда** - единственный обучающий сигнал. Discount factor gamma балансирует краткосрочные и долгосрочные цели. AlphaGo жертвовала камни сейчас ради победы через 100 ходов
- **Политика π** - стратегия агента. Цель RL - найти оптимальную политику π*, максимизирующую cumulative discounted reward. Беллман 1957 → Ход 37 2016 → RLHF ChatGPT 2022
Связанные темы
Введение в RL закладывает фундамент для всей дальнейшей теории:
- Марковские процессы (MDP) — Формализация понятий среды, состояний и переходов в математическую модель
- Bellman Equations — Математический аппарат для вычисления ценности состояний и оптимальной политики
- Neural Networks (ML) — Нейросети используются как аппроксиматоры политики и value function в Deep RL
Вопросы для размышления
- Почему exploration важен даже для агента, который уже нашёл «неплохую» стратегию? В каких ситуациях прекращение исследования может быть катастрофическим?
- Как задать функцию награды для робота-пылесоса? Какие побочные эффекты может вызвать неудачный reward shaping?
- В чём фундаментальная проблема credit assignment в шахматах - и почему dense rewards не всегда решают её?
Связанные уроки
- rl-02 — MDP: формальная математика среды и policy
- ml-01-intro — Основы ML как контекст для RL
- st-01-feedback-loops — Кибернетика и RL: один и тот же принцип
- prob-01-intro — Вероятности для стохастических политик
- alg-21-dp — Dynamic programming решает уравнения Беллмана в RL
- ml-48-rl-intro — Глубокое погружение в алгоритмы RL: Q-Learning, PPO