Дисконтирование и коэффициент gamma

Урок объясняет дисконтирование и роль коэффициента gamma в том, насколько агент думает о будущем.

Дисконтирование — это уменьшение веса будущих наград: награда через n шагов учитывается с множителем gamma в степени n. Коэффициент gamma из диапазона [0, 1] управляет «дальновидностью» агента.

Зачем уменьшать будущие награды

У дисконтирования две причины — практическая и идейная.

  • Математическая. В бесконечных задачах сумма наград может расходиться. Множитель gamma<1 делает геометрический ряд конечным.
  • Содержательная. Награда сейчас обычно ценнее такой же награды потом — будущее неопределённо. Это похоже на банковский процент: «100 рублей сегодня» лучше «100 рублей через год».

Как gamma меняет поведение агента

Значение gamma напрямую влияет на стратегию.

gammaПоведение агента
близко к 0близорукий: гонится за немедленной наградой
около 0.9учитывает ближайшее будущее
около 0.99очень дальновидный: ценит далёкие награды

Сколько «стоит» будущая награда

Награда +100 через n шагов сегодня стоит gamma в степени n умножить на 100. Посмотрим, как быстро тает её ценность при разных gamma.

# Ценность награды +100, полученной через 0,1,5,10,20 шагов, при разных gamma
for gamma in (0.5, 0.9, 0.99):
    row = [round(gamma ** n * 100, 2) for n in (0, 1, 5, 10, 20)]
    print("gamma =", gamma, "->", row)

Вывод:

gamma = 0.5 -> [100.0, 50.0, 3.12, 0.1, 0.0]
gamma = 0.9 -> [100.0, 90.0, 59.05, 34.87, 12.16]
gamma = 0.99 -> [100.0, 99.0, 95.1, 90.44, 81.79]

При gamma=0.5 награда через 10 шагов почти ничего не стоит (0.1), а при gamma=0.99 даже через 20 шагов сохраняет 82% ценности. Так gamma регулирует горизонт планирования.

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

Дисконтированный возврат — это сумма r_0 + gamma·r_1 + gamma²·r_2 + ... Если все награды ограничены величиной R_max, то даже бесконечная сумма не превышает R_max/(1-gamma). Это и гарантирует, что ценности конечны, а уравнение Беллмана имеет решение. Множитель 1/(1-gamma) можно считать «эффективным горизонтом»: при gamma=0.99 это около 100 шагов.

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

  • Слишком маленький gamma. Агент становится близоруким и не научится стратегиям с отложенной наградой (например, жертве пешки ради мата).
  • gamma = 1 в бесконечной задаче. Сумма наград расходится, обучение нестабильно. В непрерывных задачах gamma строго меньше 1.
  • Считать gamma свойством среды. gamma — это часть постановки задачи / гиперпараметр, который выбирает инженер, а не среда.

Итоги

  • Дисконтирование уменьшает вес будущих наград множителем gamma в степени числа шагов.
  • gamma управляет дальновидностью: меньше — близорукий агент, больше — дальновидный.
  • gamma<1 делает сумму наград конечной и обеспечивает существование решения Беллмана.
Проверьте себя
1. Что делает коэффициент gamma в RL?
AЗадаёт число состояний
BУменьшает вес будущих наград, управляя дальновидностью агента
CОпределяет скорость GPU
DВыбирает действие агента
2. Как поведёт себя агент при gamma близком к 0?
AСтанет очень дальновидным
BСтанет близоруким и будет гнаться за немедленной наградой
CПерестанет действовать
DБудет игнорировать награды
3. Почему в бесконечных задачах нельзя брать gamma = 1?
AЭто запрещено синтаксисом
BСумма бесконечного числа наград может расходиться
CАгент станет слишком умным
Dgamma=1 ускоряет обучение