Дилемма исследования и использования
Урок объясняет главный компромисс RL: исследовать новое или использовать уже найденное.
Дилемма исследования и использования (exploration vs exploitation) — это выбор между тем, чтобы пробовать новые действия (вдруг они лучше) и тем, чтобы пользоваться действием, которое уже кажется выгодным.
Суть конфликта
Представьте, что вы переехали в новый город. Можно каждый день ходить в первое же понравившееся кафе (использование) или пробовать новые места (исследование). Если только использовать — вы рискуете застрять на посредственном варианте, не узнав о лучшем за углом. Если только исследовать — вы никогда не насладитесь найденным хорошим. RL-агент в каждый момент решает ровно эту дилемму.
Почему чистая жадность проигрывает
Жадный агент всегда выбирает действие с максимальной текущей оценкой. Проблема: оценки в начале случайны. Если первое действие случайно дало хорошую награду, агент будет повторять его вечно, так и не попробовав по-настоящему лучшее. Без исследования он не сможет исправить ошибочную раннюю оценку.
import random
random.seed(0)
# Два действия: A в среднем 5, B в среднем 8. Но первая проба A была удачной.
true_mean = {"A": 5.0, "B": 8.0}
estimate = {"A": 9.0, "B": 0.0} # ошибочно завышенная оценка A
count = {"A": 1, "B": 0}
# ЧИСТО жадный агент: всегда берёт действие с лучшей оценкой
for _ in range(500):
action = max(estimate, key=estimate.get)
reward = true_mean[action] + random.uniform(-1, 1)
count[action] += 1
estimate[action] += (reward - estimate[action]) / count[action]
print("Сколько раз пробовал A и B:", count)
print("Итоговые оценки:", {k: round(v, 1) for k, v in estimate.items()})
print("B так и не попробован:", count["B"] == 0)Вывод:
Сколько раз пробовал A и B: {'A': 501, 'B': 0}
Итоговые оценки: {'A': 5.0, 'B': 0.0}
B так и не попробован: True
Жадный агент застрял на A и ни разу не попробовал B, которое на самом деле лучше. Это цена полного отказа от исследования.
Как работает под капотом
Баланс достигается тем, что в стратегию закладывают долю случайных, «исследовательских» действий. Со временем эту долю обычно снижают: в начале знаний мало — исследуем много; ближе к концу оценки надёжны — больше используем. Самый простой способ — epsilon-greedy (следующий урок); есть и более хитрые (UCB, softmax/Boltzmann, Thompson sampling), которые исследуют умнее, отдавая предпочтение перспективным, но недоизученным действиям.
Частые ошибки
- Нулевое исследование. Чисто жадный агент часто застревает на первом удачном действии.
- Постоянное исследование. Если всё время выбирать случайно, агент не использует найденное и набирает мало награды.
- Не снижать долю исследования. На старте полезно исследовать активно, но к концу обучения это только мешает.
Итоги
- Дилемма exploration vs exploitation — фундаментальный компромисс RL.
- Чистая жадность застревает на неоптимальных действиях из-за ранних случайных оценок.
- Решение — закладывать долю исследования и со временем её уменьшать.