Обучение с подкреплением #2:
Dynamic Programming
Policy Iteration, Value Iteration
Павел Темирчев
@cydoroga
В прошлых сериях...
- Формализм MDP
- state, action, policy, markov
- 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\)
\(Q\)-функция ценности:
\(s_0\)
\(s_1\)
\(s_2\)
\(s_3\)
\(s_4\)
\( 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