Что такое RL и чем оно отличается от обучения с учителем

Урок объясняет, что такое обучение с подкреплением и почему это отдельная парадигма машинного обучения.

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

Три парадигмы машинного обучения

Машинное обучение принято делить на три большие группы, и RL стоит особняком.

ВидЧто даётсяЦель
С учителем (supervised)Пары «вход → правильный ответ»Предсказать ответ для нового входа
Без учителя (unsupervised)Данные без метокНайти структуру (кластеры, скрытые признаки)
С подкреплением (RL)Среда, которая выдаёт наградыНайти стратегию максимальной суммарной награды

В обучении с учителем кто-то заранее знает «правильный ответ» — мы лишь учим модель его воспроизводить. В RL правильного ответа никто не знает: есть только сигнал награды, который говорит «хорошо» или «плохо», но не подсказывает, какое действие было лучшим. Об основах supervised/unsupervised у нас есть отдельный курс «Машинное обучение основы» — здесь мы на нём не задерживаемся.

Почему RL — это сложнее, чем кажется

В RL есть три особенности, которых нет в обучении с учителем.

  • Отложенная награда. Хороший ход в шахматах может принести победу через 30 ходов. Какой именно ход «виноват» в выигрыше — неочевидно. Это называют проблемой назначения заслуги (credit assignment).
  • Действия влияют на будущее. В обучении с учителем примеры независимы. В RL действие меняет состояние мира, а значит — и все следующие наблюдения. Ошибка в начале портит всю траекторию.
  • Нет готовой обучающей выборки. Агент сам собирает данные, действуя в среде. Чтобы узнать, хорош ли ход, его надо попробовать.

Как работает под капотом

В основе RL лежит идея обратной связи. Агент находится в некотором состоянии, выбирает действие, среда переводит его в новое состояние и выдаёт число — награду. Агент не получает инструкций «делай так», он видит только числа и сам строит модель того, какие действия выгодны. Покажем простейший цикл «решения по награде» без всякой теории — просто чтобы почувствовать идею.

import random
random.seed(0)

# Агент выбирает одну из двух кнопок. У каждой своя средняя награда.
true_reward = {"A": 1.0, "B": 3.0}
estimate = {"A": 0.0, "B": 0.0}
count = {"A": 0, "B": 0}

for step in range(1000):
    # 90% времени жмём кнопку с лучшей оценкой, 10% — пробуем случайную
    if random.random() < 0.1:
        action = random.choice(["A", "B"])
    else:
        action = max(estimate, key=estimate.get)
    reward = true_reward[action] + random.uniform(-0.5, 0.5)
    count[action] += 1
    estimate[action] += (reward - estimate[action]) / count[action]

print("Оценка награды кнопки A:", round(estimate["A"], 2))
print("Оценка награды кнопки B:", round(estimate["B"], 2))
print("Агент предпочитает:", max(estimate, key=estimate.get))

Вывод:

Оценка награды кнопки A: 1.05
Оценка награды кнопки B: 3.0
Агент предпочитает: B

Агент не знал заранее, что кнопка B лучше. Он выяснил это сам, пробуя и усредняя награды. Это и есть зерно RL.

Частые ошибки

  • Путать награду с меткой. Награда не говорит, какое действие правильное, — она лишь оценивает результат уже сделанного действия.
  • Думать, что RL всегда лучше supervised. Если у вас есть размеченные данные — обучение с учителем обычно проще, дешевле и стабильнее. RL берут там, где правильного ответа нет, а есть только цель.
  • Ждать мгновенного результата. RL-агенту нужны тысячи и миллионы взаимодействий, чтобы научиться. Это плата за отсутствие учителя.

Итоги

  • RL — обучение через взаимодействие со средой ради максимизации суммарной награды.
  • В отличие от supervised, нет правильных ответов — только сигнал награды.
  • Ключевые сложности: отложенная награда, влияние действий на будущее, самостоятельный сбор данных.
Проверьте себя
1. Чем RL принципиально отличается от обучения с учителем?
AВ RL больше данных
BВ RL нет правильных ответов, есть только сигнал награды
CRL работает только с изображениями
DВ RL не используются нейросети
2. Что такое проблема назначения заслуги (credit assignment) в RL?
AСложность выбрать язык программирования
BТрудность понять, какое из прошлых действий привело к награде
CНевозможность хранить данные
DПроблема нехватки памяти GPU
3. Когда обычно разумнее выбрать обучение с учителем, а не RL?
AКогда есть размеченные данные «вход → правильный ответ»
BКогда нет никаких данных
CКогда нужна максимальная суммарная награда без меток
DВсегда — supervised лучше во всём