Обучение с подкреплением #2:

Dynamic Programming

Policy Iteration, Value Iteration
 

Павел Темирчев

@cydoroga

В прошлых сериях...

  • Формализм MDP
    • state, action, policy, markov
       
  • Cross-Entropy Method
    • просто имплементировать
    • почти работает
    • black-box оптимизация

Сегодня:

учитываем особенности RL задачи

План:

  • Научиться оценивать политику
     
  • Научиться улучшать политику
     
  • Замешать все вместе

Напоминалочка

\( p(s_{t+1}|s_t, a_t) \) - динамика переходов в среде (марковская) 

\( s \sim \mathcal{S} \); \( a \sim \mathcal{A} \) - пространства состояний \ действий

\( \pi(a|s) \) - политика агента 

\( r(s, a) \) - награда за действие \(a\) в состоянии \(s\) 

\( p(\tau|\pi) = p(s_0) \prod_{t=0}^T \pi(a_t|s_t) p(s_{t+1}|a_t, s_t)\) - политика агента 

где \( \tau= (s_0, a_0, s_1, a_1, \dots, s_T, a_T) \) - траектория агента 

\( R_t = r(s_t, a_t) + \gamma r(s_{t+1}, a_{t+1}) + \gamma^2 r(s_{t+2}, a_{t+2}) + \dots \) - reward to go или return

\( R_t = \sum_{\tau=t}^{\infty} \gamma^{\tau-t} r(s_{t+\tau}, a_{t+\tau}) \)

сегодня их считаем известными,
​но на практике - нет!!
Return - случайная величина. Почему?

Оценка политики

Насколько хороша политика \(\pi\), если начать в состоянии \(s\)?

\( V_t^\pi(s) = \mathbb{E}_{\tau \sim \pi} \left[ R_t | s_t = s \right] \)

Политика \(\forall s\):

\(V\)-функция ценности:

\(s_0\)

\(s_1\)

\(s_2\)

\(s_3\)

\(s_4\)

1
\gamma
\gamma^2
\gamma^3
\gamma^4

\(Q\)-функция ценности:

\(s_0\)

\(s_1\)

\(s_2\)

\(s_3\)

\(s_4\)

1
\gamma
\gamma^2
\gamma^3
\gamma^4
1
\gamma^3
\gamma^4
\gamma^5
\gamma^5

\( Q_t^\pi(s, a) = \mathbb{E}_{\tau \sim \pi} \left[ R_t | s_t = s, a_t = a \right] \)

А что если в \(s\) "принудительно" выбрать действие \(a\), а только затем идти по политике \(\pi\)?

В сложных средах считать неудобно!

терминальное состояние

+1 за рыбку

Конечные и бесконечные

по времени MDP

\( V_t^\pi(s) = \mathbb{E}_{\tau \sim \pi} \left[ \sum_{i=t}^\infty \gamma^{i - t} r_i | s_t = s \right] \)

Пусть длина эпизода \(T = \infty \), тогда легко заметить, что:

\( V_t^\pi(s) = \mathbb{E}_{\tau \sim \pi} \left[ \sum_{i=t}^\infty \gamma^{i - t} r_i | s_t = s \right] = \left[ \sum_{i=0}^\infty \gamma^i r_i | s_0 = s \right] \)

\( V_t^\pi(s) =  V_0^\pi(s) = V^\pi(s) \)

А значит, 

не зависит от времени!

Такие MDP называются бесконечными.

MDP с терминальными состояниями сводятся к бесконечным добавлением поглощающего состояния.

нельзя выйти
нулевая награда

Конечные и бесконечные

по времени MDP

\( V_0^\pi(s_0) = \gamma^4 \)

Если длина эпизода \(T < \infty \), то в общем случае V зависит от времени.

В теории, однако, и тут t опускают.

Для этого достаточно считать, что состояние содержит t:

Например, при \(T = 4 \):

\( V_1^\pi(s_0) = 0 \)

\( s \rightarrow (s, t) \)

Такие MDP называются конечными.

Динамическое программирование

Переформулирование сложной задачи в виде рекурсивной последовательности более простых задач.

Получим рекурсивное соотношение для кумулятивной награды \(R_t\):

\( R_t = r(s_t, a_t) + \gamma r(s_{t+1}, a_{t+1}) + \gamma^2 r(s_{t+2}, a_{t+2}) + \dots \) 

\( R_t = r(s_t, a_t) + \gamma \left( r(s_{t+1}, a_{t+1}) + \gamma r(s_{t+2}, a_{t+2}) + \dots \right) \) 

\( R_t = r(s_t, a_t) + \gamma R_{t+1} \) 

Для \(V\)-функции:

\( V^\pi(s) = \mathbb{E} \left[ R_t | s_t = s \right] \)

\( V^\pi(s) = \mathbb{E} \left[ r(s_t, a_t) + \gamma R_{t+1} | s_t = s \right] \)

\( V^\pi(s) = \mathbb{E}_{a \sim \pi(\cdot|s)} \left[ r(s, a) + \gamma \mathbb{E}_{s' \sim p(s'|s, a)} \mathbb{E} [R_{t+1} | s_{t+1} = s'] \right] \)

\( V^\pi(s) = \mathbb{E}_{a \sim \pi(\cdot|s)} \left[ r(s, a) + \gamma \mathbb{E}_{s' \sim p(s'|s, a)} V^\pi(s') \right] \)

Для \(Q\)-функции:

\( Q^\pi(s, a) = r(s, a) + \gamma \mathbb{E}_{s' \sim p(\cdot|s,a)} \mathbb{E}_{a' \sim \pi(\cdot|s')} Q^\pi(s', a') \)

Динамическое программирование

Если в среде состояния никогда не повторяются, граф этого MDP будет деревом

Уравнения Беллмана говорят, как посчитать ценность "задом наперед"

\(s_0\)

\(a^0_0\)

\(a^1_0\)

\(s^0_1\)

\(s^1_1\)

\(s^2_1\)

\(s^3_1\)

\( V^\pi(s) = \mathbb{E}_{a \sim \pi(\cdot|s)} \left[ r(s, a) + \gamma \mathbb{E}_{s' \sim p(s'|s, a)} V^\pi(s') \right] \)

\( V^\pi(s_T) = \mathbb{E}_{a \sim \pi(\cdot|s_T)} r(s_T, a) \)

Связь Q и V функций

Выражение Q через V:

\(Q^\pi(s, a) = r(s, a) + \mathbb{E}_{s' \sim p(\cdot|s, a)} V^\pi(s') \)

Выражение V через Q:

\(V^\pi(s) = \mathbb{E}_{a \sim \pi(\cdot|s)} Q^\pi(s, a) \)

V - это Q, в которое подставили действие из политики

Q - это мгновенная награда за (s, a) плюс ценность будущего состояния

Как решить Беллмана?

\( V^\pi(s) = \mathbb{E}_{a \sim \pi(\cdot|s)} \left[ r(s, a) + \gamma \mathbb{E}_{s' \sim p(s'|s, a)} V^\pi(s') \right] \)

Как СЛАУ:

\( V^\pi(s) = \mathbb{E}_{a \sim \pi(\cdot|s)} r(s, a) + \gamma \mathbb{E}_{s' \sim p(s'|s)} V^\pi(s') \)

Относительно V все линейно

\( U \)

\( V \)

\( P \)

\( V = U + \gamma PV \)

\( V^\pi(s) = u(s) + \gamma \mathbb{E}_{s' \sim p(s'|s)} V^\pi(s') \)

\( (I - \gamma P) V = U\)

\( V = (I - \gamma P)^{-1}U\)

Дороговато будет!

Без учета \( |\mathcal{A}| \) - уже \(O(|\mathcal{S}|^3) \)

Как решить Беллмана?

\( V^{new} = F \left( V^{old} \right) \)

Методом простой итерации:

\( F(V)_s = \mathbb{E}_{a \sim \pi(\cdot|s)} \left[ r(s, a) + \gamma \mathbb{E}_{s' \sim p(s'|s, a)} V_s \right] \)

Будет ли алгоритм сходиться?

Будет, если отображение \(F\) сжимающее

\(V\)

iterations

\(V^\pi\)

Является ли оператор Беллмана сжатием?

По норме-бесконечность:

\( || F(V) - F(W) ||_\infty = \)

\(=  || U + \gamma PV - U - \gamma PW ||_\infty = \)

\(=  ||\gamma P(V - W) ||_\infty \le \)

\(\le \gamma|| P ||_\infty ||V - W ||_\infty \)

\(|| P ||_\infty = \max_{x: ||x||_\infty=1} ||Px||_\infty = \)

где матричная норма:

\( = \max_{x: ||x||_\infty=1} \max_i |\sum_j P_{ij} x_j | \)

\( x_j = \text{sign} (P_{ij}) \)

\( = \max_i |\sum_j P_{ij}| = 1 \)

ЧТД: \( ||F(V) - F(W) ||_\infty \le \gamma||V-W||_\infty \)

reminder: \( ||x||_\infty = max_i |x_i| \)

Алгоритм Policy Evaluation

  • инициализируем \(V(s) \;\; \forall s\)
  • повторять:
    • \(\Delta = 0\)
    • для всех \(s\):
      • \(v = V(s) \)
      • \( V(s) = \mathbb{E}_{a \sim \pi(\cdot|s)} \left[ r(s, a) + \gamma \mathbb{E}_{s' \sim p(\cdot|s, a)} V(s') \right] \)
      • \( \Delta = \max \left( \Delta, |v - V(s)| \right) \)
  • ​пока \(\Delta > \epsilon \)

Улучшение политики

Оптимальные уравнения Беллмана

V-функция для оптимальной политики:

\( V^*(s) = \max_\pi V^\pi (s) \)

\( V^*(s) = \max_\pi( \mathbb{E}_a \left[ r(s, a) + \gamma \mathbb{E}_{s'} V^\pi (s') \right] ) \)

\( V^*(s) = \max_{\pi_0, \pi_1, \dots}( \mathbb{E}_a \left[ r(s, a) + \gamma \mathbb{E}_{s'} V^{\pi_1, \dots} (s') \right] ) \)

\( V^*(s) = \max_{\pi_0}( \mathbb{E}_a \left[ r(s, a) + \gamma \mathbb{E}_{s'} \max_{\pi_1, \dots} V^{\pi_1, \dots} (s') \right] ) \)

Относительно \( \pi_0 \) решается задача вида:

\( \sum_i \pi_i y_i \rightarrow \max_\pi \)

\( \pi_i \ge 0 \)

\( \sum_i \pi_i = 1 \)

\{

Задача ЛП

Среди оптимальных политик всегда есть детерминированная (жадная)

\( V^*(s) = \max_a \left[ r(s, a) + \gamma \mathbb{E}_{s'} V^* (s') \right] \)

Оптимальное уравнение Беллмана:

\(\pi_0\)

\(\pi_1\)

\(1\)

\(1\)

множество допустимых политик

Это разве правда?

Камень - ножницы - бумага

Какая стратегия оптимальна?

  • Если у оппонента фиксированная политика, найдется оптимальная детерминированная для вас!
  • Если оппонент подстраивается, то это не MDP.
    Награда в такой среде:

\( p(r | history) \) или \( p(r | \pi ) \)

  • тут нет состояний - оно единственно
  • среда == случайная награда

Оптимальные уравнения Беллмана

\( V^*(s) = \max_a \left[ r(s, a) + \gamma \mathbb{E}_{s'} V^* (s') \right] ) \)

Оптимальное уравнение Беллмана для V-функции:

\( Q^*(s, a) = r(s, a) + \gamma \mathbb{E}_{s'} \max_{a'} Q^* (s', a')  \)

Оптимальное уравнение Беллмана для Q-функции:

\( V^*(s) = \max_a Q^* (s, a) \)

Выражение \( V^*\) через \(Q^*\):

Выражение \( Q^*\) через \(V^*\):

\( Q^*(s, a) = r(s, a) + \gamma \mathbb{E}_{s'} V^*(s')  \)

Улучшение политики

Опр.  \(\pi' \ge \pi \) если 

\(V^{\pi'}(s) \ge V^\pi(s) \;\;\; \forall s \)

Наша стратегия обновления политики:

  • пусть \(\exist s\) такой, что:
    \( \exist a: Q^\pi(s, a) > V^\pi(s) \)
     
  • тогда \(\pi'(s) := a \),
    а во всех \(\tilde s \neq s \) положим \(\pi'(\tilde s) = \pi(\tilde s) \)

В таком случае, \(\pi' \ge \pi \)

ПРОВЕРИМ

Улучшение политики

Наша стратегия обновления политики:

  • пусть \(\exist s\) такой, что:
    \( \exist a: Q^\pi(s, a) > V^\pi(s) \)
  • тогда \(\pi'(s) := a \),
    а во всех \(\tilde s \neq s \) положим \(\pi'(\tilde s) = \pi(\tilde s) \)

\( V^\pi(s) \le Q^\pi(s, \pi'(s)) \)

\( = r(s, \pi'(s)) + \mathbb{E}_{s'} V^\pi(s')\le \) 

\( \le r(s, \pi'(s)) + \mathbb{E}_{s'} Q^\pi(s', \pi'(s')) \le \) 

\( \le \dots \le V^{\pi'}(s) \) 

ЧТД

Алгоритм Policy Iteration

  • инициализируем \(V(s), \; \pi(s) \;\; \forall s\)
  • оценить \(V\) для политики \(\pi\) методом PE
  • \(\text{stop} = True\)
  • для всех \(s\):
    • \( a = \pi(s) \)
    • \(\pi(s) = \arg\max_a [ r(s, a) + \mathbb{E}_{s'} V(s') ] \)
    • если \(a \ne \pi(s) \):
      • \(\text{stop} = False\)
  • ​если не \(\text{stop}\)

Алгоритм Value Iteration

  • инициализируем \(V(s) \;\; \forall s\)
  • повторять:
    • \(\Delta = 0\)
    • для всех \(s\):
      • \(v = V(s) \)
      • \( V(s) = \max_a \left[ r(s, a) + \gamma \mathbb{E}_{s' \sim p(\cdot|s, a)} V(s') \right] \)
      • \( \Delta = \max \left( \Delta, |v - V(s)| \right) \)
  • ​пока \(\Delta > \epsilon \)

вражеский кот - 1

дружественная рыбка + 1

Пример Value Iteration

Инициализируем \( V(s) = 0 \;\; \forall s \)

RL #2 Dynamic Programming

By cydoroga

RL #2 Dynamic Programming

  • 457