Обучение с подкреплением · часть 2

Q‑learning

В прошлой части MCTS планировал, проигрывая партии в голове. Теперь агент будет учиться на собственном опыте — методом проб, ошибок и вознаграждений, постепенно составляя карту того, какое действие в каком состоянии выгоднее.

Учиться на вознаграждении

Представьте существо, которое ничего не знает о мире. Оно в некотором состоянииs, выбирает действиеa, получает наградуr и попадает в новое состояние s. Так по кругу. Цель одна — набрать как можно больше награды за всю жизнь.

Этот цикл «агент ↔ среда» и есть суть обучения с подкреплением (Reinforcement Learning):

Стрелки, Home и End — переход между объектами и стрелками; Enter или пробел — открыть пояснение; Escape — закрыть. Tab — выйти из диаграммы.

a(s,r)
Объекты и связи диаграммы
агент
Хранит правило выбора действия по текущему состоянию.
среда
Изменяет состояние в ответ на действие и назначает награду за переход.
действие агента
От «агент» к «среда».Единственный сигнал, которым агент непосредственно влияет на среду.
новое состояние и награда
От «среда» к «агент».Ответ среды после выполненного действия.

Награду будущего мы ценим чуть меньше, чем награду сейчас. Поэтому суммарная отдача с момента t считается с коэффициентом дисконтированияγ[0,1]:

Gt=rt+1+γrt+2+γ2rt+3+
Gt=k=0γkrt+k+1

При γ1 агент дальновиден; при γ0 — живёт одним мгновением.

Ценность действия: Q(s,a)

Ключевая идея — завести число Q(s,a): «насколько хорошо в состоянии s выбрать действие a», если дальше играть наилучшим образом. Знай мы все Q, задача решена: в каждом состоянии берём действие с максимальным Q.

π(s)=argmaxaQ(s,a)

Но Q неизвестна. Зато у неё есть красивое рекуррентное свойство — она «согласована сама с собой». Ценность действия = немедленная награда плюс дисконтированная ценность лучшего продолжения. Это уравнение Беллмана:

Q(s,a)=E[r+γmaxaQ(s,a)]

Как учить Q на опыте

Мы не знаем матожидание, но можем подталкивать оценку к наблюдаемому результату после каждого шага. Пожив один переход (s,a,r,s), делаем маленький шаг в сторону беллмановской цели:

δ=r+γmaxaQ(s,a)Q(s,a)
Q(s,a)Q(s,a)+αδ

Выражение в скобках — «ошибка предсказания» (TD-error). α — скорость обучения.

Величина в квадратных скобках — насколько реальность разошлась с ожиданием. Шаг α(0,1] говорит, как сильно верить свежему опыту. Повторяя это правило снова и снова, Q сходится к Q.

Целиком алгоритм — это тот же шаг обновления, завёрнутый в цикл по эпизодам:

Алгоритм

Q-learning

  1. инициализироватьQ(s,a)0 для всех s,a
  2. повторять для каждого эпизода:
    1. s начальное состояние
    2. покаs не терминальное:
      1. выбрать действие a по ε-жадной стратегии
      2. выполнить a: получить награду r и новое состояние s
      3. вычислить цель yr+γmaxaQ(s,a)
      4. обновить Q(s,a)Q(s,a)+α[yQ(s,a)]
      5. ss

Именно этот цикл крутится в интерактивах ниже — по одному эпизоду за нажатие кнопки. Больше ничего в Q-learning нет.

Дилемма исследования — снова

Если всегда брать текущее лучшее действие, агент рискует не найти по-настоящему хороший путь. Простейшее лекарство — ε-жадная стратегия: с вероятностью ε берём случайное действие (исследуем), иначе — жадно лучшее по Q:

a={arandom,p=ε,argmaxaQ(s,a),p=1ε

Учим агента игре в камни

Возьмём ту же игру, что и в части про MCTS: куча из 15 камней, за ход берём 1–3, кто взял последний — победил. Теперь состояние — это число камней на ходу агента, действия — «взять 1/2/3», а награда=+1 за победу и 1 за поражение.

Агент играет против случайного соперника и после каждого хода обновляет Q. Ниже — опорный срез Q-таблицы от конца партии до начальной позиции: строка это состояние, столбец — действие, цвет — выученная ценность (красная — плохо, зелёная — хорошо). После начала обучения рамка и звезда отмечают ход с единственной наибольшей оценкой. При равных оценках выделения нет.

Начните с одного эпизода и найдите изменившиеся оценки ближе к концу партии. Затем обучите агента на серии эпизодов и сравните действия в одной строке таблицы. Может ли равенство текущих оценок означать, что действия действительно равноценны?

Q-таблица · игра в камни

0 эп.
взять 1
взять 2
взять 3
1 🪨
0.00
2 🪨
0.00
0.00
3 🪨
0.00
0.00
0.00
4 🪨
0.00
0.00
0.00
7 🪨
0.00
0.00
0.00
10 🪨
0.00
0.00
0.00
13 🪨
0.00
0.00
0.00
15 🪨
0.00
0.00
0.00
ценность Q-1 → 0 → 1
Стратегия ещё не обучена. Запустите эпизод и наблюдайте, как меняются оценки.
0эпизодов
% побед (посл. 100)
ход из 15 камней
Параметры модели
ε (исследование)
0,2
α (скорость)
0,3
γ (дисконт)
0,95
Q-значения меняют выбор ходаОбновляются оценки посещённых пар «состояние — действие». Равные начальные значения отражают отсутствие опыта, а не доказанную равноценность ходов.

Прогоните пару сотен эпизодов и посмотрите на столбцы: агент сам, без всякой теории игр, выясняет, какие ходы ведут к победе против случайного соперника — цвета в таблице «прорастают» из выигрышных состояний в проигрышные, ровно как награда +1 распространяется назад по уравнению Беллмана.

Мир-сетка: ценность в пространстве

Игра в камни одномерна. Чтобы увидеть, как ценность растекается по состояниям, перейдём к классике RL — gridworld. Агент 🤖 стартует в углу и ищет путь к цели ⚑ (награда +1), обходя ловушку ☠ (награда 1) и стены. Каждый шаг стоит немного (0.02) — чтобы путь был короче.

Сначала запустите один эпизод и найдите посещённые клетки. Затем добавьте серию эпизодов: как меняются оценки возле цели и у старта? Различайте текущую оценку клетки и действие, которое агент иногда выбирает для исследования.

Gridworld

0 эп.
+1−1
0эпизодов
шагов в последнем
исход
Параметры модели
ε (исследование)
0,2
α (скорость)
0,4
γ (дисконт)
0,9
Ценность распространяется по картеНаграда влияет на оценки через посещённые переходы. Ещё не исследованные клетки и отдельные неудачные эпизоды не позволяют судить о предельной политике.

Сначала стрелки хаотичны, а карта серая — агент блуждает. Но с каждым эпизодом награда цели «протекает» на соседние клетки: сначала загораются клетки рядом с ⚑, потом их соседи, и так до старта. Через сотню-другую эпизодов стрелки складываются в оптимальный маршрут в обход ловушки.

Планирование против обучения

MCTS и Q-learning решают одну задачу — «что делать?» — но с разных сторон. Один думает наперёд под текущую ситуацию, другой помнит опыт всех прошлых ситуаций.

Смысловые этапы метода
  1. ПланированиеСтроит дерево под конкретное состояние прямо сейчас. Не хранит знание между ходами. Нужна модель игры, чтобы прокручивать партии.
  2. ОбучениеКопит таблицу ценностей из опыта многих эпизодов. Переиспользует её всюду. Модель не нужна — учится прямо из наград среды.

Оба страдают от размера пространства состояний. Q-таблица не влезет для го или шахмат, а MCTS в одиночку слишком поверхностен. Решение оказалось в их союзе:

δ(s,a)=r+γmaxaQ(s,a)Q(s,a)
Q(s,a)Q(s,a)+αδ(s,a)Q-learning
U(s,a)=Q(s,a)+clnN(s)N(s,a)
asel=argmaxaU(s,a)MCTS

Сверху — обучение, снизу — планирование. Две стороны одной медали.