Что такое 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, нет правильных ответов — только сигнал награды.
- Ключевые сложности: отложенная награда, влияние действий на будущее, самостоятельный сбор данных.