AI Продвинутые RL алгоритмы: NPG, TRPO, PPO

  • Автор темы Автор темы AI
  • Дата начала Дата начала

AI

Команда форума
Редактор
Регистрация
23 Авг 2023
Сообщения
3,969
Реакции
0
Баллы
36
Ofline
a97cd8735d79312651bfe24d5ee4dba5.png


Продолжение постов про RL:

1) Intro Reinforcement Learning
2) Reinforcement Learning: Model-free & Deep RL
3) Reinforcement Learning: Policy gradient methods

Если вы заметите ошибки в формулах или опечатки — буду очень благодарна, если укажете на них 🙈.
Если вдруг формулы покажутся сложными, то отмечу, что главная ценность этой статьи – в объяснении того, откуда эти формулы берутся и что они означают. Однако если какие-то моменты останутся непонятными, то я рада доработать текст, чтобы сделать его более доступным.

Мой тг канал: not magic neural networks

Полезные ссылки:

1) Practical_RL/week09_policy_II
2) Policy gradient method
3) A Natural Policy Gradient
4) Метод сопряженных градиентов
5) Trust Region Policy Optimization (TRPO)
6) Proximal Policy Optimization (PPO)
7) DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models

1. Прежде всего вспомним Policy Gradient методы

1.1. Policy Gradient Theorem


Пусть мы имеем траектории
12bc3be6b57cbf48da019deb81db343f.svg
. Мы хотим максимизировать математическое ожидание дисконтированной суммы наград (objective function) по политикам
e954814a9b296573583b710059617234.svg
:

f0ed1e09482104a15ff1fe1fd51bfbd8.svg

Траектории
a6f317b268ae825d94f832f970af607c.svg
приходят из
70366856d2c84bf0429aced7e266b465.svg
– распределение над траекториями
a6f317b268ae825d94f832f970af607c.svg
при условии политики
e954814a9b296573583b710059617234.svg
:

f7e5cef9e8ab38f2a0ac2938d005e76b.svg

Заметим, что
1f71002e670417e2a58e5eb51f05f952.svg
можно записать как математическое ожидание по состояниям
8320d1005489da544f0244dd5ee9af63.svg
из
e1006aabb54e1538c1103b328174561c.svg
5206560a306a2e085a437fd258eb57ce.svg
-функции (позже данная запись пригодится):

ce822eee205a74b7a01e898d5ee31be6.svg

Мы научились максимизировать функционал
c44822887d94d1a4cbbe2561e547c481.svg
с помощью градиентного подъема. Градиент
62452f82b75fdd57718abbab1389ef58.svg
находим с помощью Монте-Карло оценки с применением logderivative trick
6de7a81860aed1d090f85f2c781c4a54.svg
:

80098a83740e868c8074b1ed32239aaf.svg
fe388840f3edf4ac5d577bdb0d1f7a26.svg
1f2331414e708a0423ee90024351c4b6.svg

Распишем Монте-Карло оценку:

19a457e7725da05edb92617646119df1.svg
78c4fa22473df39617a48357b0fdd2e9.svg

Перемножим скобки
646358a0ec4285ab0cc8310a40bbb10b.svg
и
a29d90701de58a10e342d9a1d1d42160.svg
между собой (занесем под одну скобку):

eea5ea31ced786a36b8d6b53acaa3f9c.svg

Разделим награду на «прошлое» и «будущее» относительно
e358efa489f58062f10dd7316b65649e.svg
:

2a8e34f6311b2986e9f9e61607e0ee7b.svg

Награда
02588778ce9fc910f52249a1c4f54fef.svg
к моменту времени
e358efa489f58062f10dd7316b65649e.svg
уже произошла и не зависит от того, какое
11134ff62a3534476fc6cc89687d67bf.svg
семплируется. Поэтому
cfd6c845d06ec5a530504533e8f4dacf.svg
– константа, при фиксированном
86ad9159785a8f6f1c1a74c4eac26365.svg
.

Рассмотрим часть формулы [1.3]:

c2a1508146ead0eb2ce8006cb1526b01.svg

Распишем математическое ожидание по определению:

7eafd0dca17ed7c8b997c29be593cba0.svg

Применим "обратный" logderivative trick
8ae2a877ff088365cd0774f1c244e01c.svg


ff39f20d4ea11c36f13450cd7ac74a0e.svg
89b37e134249f027a5dc6a0ebf527fff.svg

По определению политики
a0c94da2154ef27f34bd539da51ba3d3.svg


5bbe2c0b9a9c41cc4b473afcc15241ec.svg

Таким образом:

594a9cc318b0071c9918e59f2372480d.svg

Возвращаясь к формуле
20ce08b425d3a2af81e517868b610dfc.svg
, обнулим слагаемое с "прошлой" наградой:

9cc3698c2818ba13c79d69f5651bab24.svg

Вынесем
ec542bf3b8e3bb787d4d2f81003e5154.svg
из суммы
40bacb702d6ed796d7d84ada1331d060.svg


c261f15233ea267aae66e7a75fb367b0.svg

Применим закон полного математического ожидания
887ba8656c9239b72668e44404aa4ce7.svg
:

50fd987de26d6e1df5876ef6bd9d20b9.svg

где
9388a576c23d5ed6fe4f5e40772f661c.svg
– условное математическое ожидание возврата при заданных текущих состоянии
86ad9159785a8f6f1c1a74c4eac26365.svg
и действии
11134ff62a3534476fc6cc89687d67bf.svg
.

Заметим, что это определение
f09564c9ca56850d4cd6b3319e541aee.svg
-функции:
60df706d28f1e0625de3236a8c35be39.svg
. Тогда:

df86d10aa9187b3469c62cf9900ca6af.svg

Сформулировали Policy Gradient Theorem:

31b35518180a132138118a4e852f8174.svg

На практике оказалось, что данная формула имеет большую дисперсию. Для того чтобы снизить дисперсию решили вычитать некий
e7e14cdcfbc59bba291688ae9cf039d6.svg
из
f09564c9ca56850d4cd6b3319e541aee.svg
не зависящий от действий
0cc175b9c0f1b6a831c399e269772661.svg
.

640b0aace6afecaeaff04b459edd4c2c.svg

1.2. Baseline и Advantage


Можно доказать, что если брать в качестве
e7e14cdcfbc59bba291688ae9cf039d6.svg
использовать
5206560a306a2e085a437fd258eb57ce.svg
-функцию, то дисперсия Монте-Карло оценки будет падать.

Таким образом:

791824fb540217d1e3d3867540b22f85.svg

где
c455433cade0aaea8d195916de310579.svg
– обучаем, а
963cd803370b3ba71a0f49cbad92ccee.svg
будем получать из
c455433cade0aaea8d195916de310579.svg
по формуле
588e0951e15ef03bd360908b6fbf9e73.svg
.

78e548ce4b667b03d654b1be459c46c3.svg
называется advantage функция. Она показывает насколько действие
11134ff62a3534476fc6cc89687d67bf.svg
лучше или хуже, чем среднее действие в этом состоянии при политике
4f08e3dba63dc6d40b22952c7a9dac6d.svg
. Если
e08b9057d7714e831a87f78032eb984b.svg
, то действие
11134ff62a3534476fc6cc89687d67bf.svg
лучше среднего выбираемого политикой, иначе - хуже.

0d2ebce8de5aae062d3f19f56c4f6a32.svg

Однако, на практике оказывается удобнее эквивалентная
b121bd9f3fc478eb06b52a55b1893792.svg
формула:

b44823c6cfdd0c0d42ad1a12f5bfb566.svg

Математическое ожидание берётся по данным, сгенерированным самой
996313a8ed172e607e9e81705a951b51.svg
.
a023a8d26a2747e3fb46f3d5abe2dc56.svg
– discounted state visitation distribution политики. Это распределение состояний, которое показывает как часто политика
4f08e3dba63dc6d40b22952c7a9dac6d.svg
посещает состояние
03c7c0ace395d80182db07ae2c30f034.svg
, с учётом дисконтирования по времени.

18859ce0f951839755ba432d971feabf.svg


  • a3aa0098a782927ca4b4d7bc38a246ea.svg
    — вероятность быть в состоянии
    03c7c0ace395d80182db07ae2c30f034.svg
    на шаге
    e358efa489f58062f10dd7316b65649e.svg
    .


  • 5e0717a4d97387049c03cb3f01a2341a.svg
    – нормировка, чтобы это было распределение
    cc256619ff986ace73a35cc3c42d2370.svg


Описанные выше алгоритмы REINFORCE и A2C (Advantage Actor–Critic) являются on-policy, что делает их неэффективными с точки зрения использования данных (градиент оптимизируемой политики
996313a8ed172e607e9e81705a951b51.svg
корректно оценивается только на данных, сгенерированных этой же политикой).

При этом, сам градиентный спуск не такой дорогой как сбор данных (траекторий). Естественным образом возникает желание оптимизировать полезность политики
d1c600153effc308005011fed780b9e2.svg
, используя данные, собранные старой политикой
b35a17e01dbca68b86cbc12c4e056d5d.svg
.
В этом заключается основная цель дальнейших методов (TRPO, PPO и др.)

2. Как оптимизировать новую политики по данным из старой политики


Для этого в формуле
98b692b9f145c0f8012f804cd2e78235.svg
надо придумать как брать математическое ожидание и advantage по старой политике
b35a17e01dbca68b86cbc12c4e056d5d.svg
.


2.1. Заменяем advantage


Рассмотрим новый функционал:

0d594f1ab1e30744d63d8c0da4786e64.svg

Теперь мы хотим чтобы новая политика была как можно лучше старой.

И прежде чем расписывать новый функционал, проделаем "подготовительную" работу:
1) Представим
b9f7f6f43721e76a6c045a19ff1a409d.svg
в виде телескопические суммы.
2) Распишем разность
23dce466c83e5840e233b6931c1974b0.svg
.
3) Распишем новый функционал
d7e87f89e5ea700ae659105f60303003.svg
.

2.1.1. Телескопическая сумма


Телескопическая сумма — это сумма вида:

2750f13b0ec79fe1f6d7141733e4ee51.svg

где каждое слагаемое ряда представляется в виде разности и поэтому частичная сумма ряда упрощается.

Название "телескопическая сумма" дано по аналогии с трубой телескопа, который может уменьшить свою длину, сложившись несколько раз.

Мы будем пользоваться телескопической суммой для любой последовательности
11134ff62a3534476fc6cc89687d67bf.svg
, такой что
76e5cf07a0f2ff469e76aff209636374.svg
:

2c4f52d87ea2222fb126ea0f0d0838e2.svg

По аналогии с формулой выше: для произвольной траектории
c9e774b1a736b1861cf5cd4fff1246ca.svg
и произвольной политики
4f08e3dba63dc6d40b22952c7a9dac6d.svg
справедливо равенство:

adc805388d43e769d0483e6934c5d901.svg

при условии, что
bc6becdcc0cf732f48c271a8177f60b2.svg
.

2.1.2. Распишем разность V-функций

a6d57208425fec71f83f88b153bd4420.svg

199d6cb078078e2203720d8f7ce6eb11.svg
по определению:

f19193da8ad2bb41f543f42cbd507bc2.svg

Занесем
a9cb415405e0de608afeddec058049ba.svg
под математическое ожидание:

ddd566659d900b7ac5283166cd474fe0.svg

Запишем
40dab0ce67e07be6b0fe2f9a54720e3e.svg
в виде телескопической суммы по формуле
a49b844c1c05b5d4f049d3537ddf960f.svg
:

48c4e5dd4b586fce22a37e3834780c16.svg

Вынесем
ec542bf3b8e3bb787d4d2f81003e5154.svg
за скобки

0d39a075c810babb259e8c259f129a06.svg
807c198c545e0223f58ce2ddd0352314.svg

В силу равенства
8a3dde1d54eebeebf71590386537423b.svg
, внесём матожидание по будущим состояниям
b4527e0091094c13aa10ddd6a0ab36be.svg
, условно на
12d0a2d6889f6a32e3e910fd49731a36.svg
.

319b36a2e3cd7ddc82c263143fc286ec.svg
2dd3616dd4b29b3f6873d71b40aead48.svg

Заметим, что
add8e616103802029ae1a702512a1b26.svg
:

d94e0c978fc0d5115cbb87f59af7cdd9.svg
3f625ffb6617811ed4dc5578ae916f7c.svg

c6c7f317b7fbcd68cecd996e0bf9d0d5.svg
по определению advantage функции:

4c21c32c5602c67361e9e80ec996794a.svg
a22b191982beb28450bf4e5bd99a8999.svg

Итоговая формула:

5a77dcd963a2f20616cbae672d2a8027.svg

2.1.3. Вернемся к разности функционалов J(new) - J(old)


Вспомним формулу для
c44822887d94d1a4cbbe2561e547c481.svg
514886fe8f4d5df9de21c9a74024c363.svg
:

bcb8a6b79b253c20198f376edef75029.svg

Распишем новый функционал:

22760ad58807652374512550be49e3c4.svg

Подставим формулу
9af3b9d56360c42db9c8d1e673e3e333.svg
, получим:

42a1338a2a0c67e4b3bb782b3c2b0769.svg

По аналогии с
21142b4aa9fcac69a308b272c0e8fc77.svg
перепишем эквивалентную формулу
a89129ff8cb817c95f1fd954269d0960.svg
:

a209ab3300fbd3848da66df500fe4d21.svg

2.2. Заменяем математическое ожидание


В получившийся формуле
0ac52f274d4511a50b2dcf6ddd7f9721.svg
остается понять как заменить математические ожидания по новой политике
08bc0b9d02f6de548cbb6d10d85b2680.svg
на математические ожидания по старой политике
4ce7ddb32d30ad83e0ead3effd78668d.svg
.

2.2.1. Importance Sampling Trick / Трюк важностного семплирования


Пусть у нас есть математическое ожидание функции
50bbd36e1fd2333108437a2ca378be62.svg
по распределению
4130c89f2d12c3ac81aba3adbff28685.svg
:

70734451befb09ca78bf1405687f9aea.svg

Теперь мы хотим выразить
49dad912a49e69f91950bc8c5a503bfc.svg
через другое распределение
2216667551c62a6524a5d2127500a86f.svg
. Чтобы это сделать, просто умножаем и делим под интегралом на
2216667551c62a6524a5d2127500a86f.svg
.

4d3cf8c3ab4aa1e01f128c2b6ba5527f.svg

С помощью данного трюка можно заменить математическое ожидание по действиям в
0ac52f274d4511a50b2dcf6ddd7f9721.svg
:

76f20de95cf46feea05df0c7bfe8074d.svg
26de907785e04d8246c787a544610aab.svg

2.2.2. Суррогатная функция


Для
80f44b0b2715121f0f77928937a270f5.svg
Importance Sampling сделать не получится, поскольку мы не знаем
5585a9480de52ba5562edfd2a1751467.svg
.

Просто заменим
80f44b0b2715121f0f77928937a270f5.svg
на
7bcc0409377019a840273bd174012b83.svg
и назовем получившийся функционал суррогатной функцией
99441a18a00b2216f0b970a13e25f834.svg
.

520593353bce277f238cd52fa33544eb.svg
dfae27f26a3af09e362de9ecea36856b.svg

Однако, максимизируя данный функционал, мы будем увеличивать вероятность действий, которые максимизируют значение advantage-функции
2ff0fb93422b9adce692f12ef2dbf8cd.svg
. Решение будет сходится к
a0e95adbfc4e4fec28609443d3f9afcc.svg
, где
991622
будет у действия приводящего advantage к максимуму, а для остальных действий
cfcd208495d565ef66e7dff9f98764da.svg
. В результату получится детерминированная политика.

Если пытаться повышать вероятности маловероятных действий, отношение
f496310e4f1ebb92d8187dea3d735640.svg
. Градиенты будут очень большими.

Аналогично, если пытаться уменьшать вероятность популярных действий, то
22d75e0ac28a06fc61ca4d349ef6daa1.svg
. Градиенты будут очень маленькими

2.3. Теоретическая граница ошибки для нового функционала (theoretic error bound)


В статье Trust Region Policy Optimization (2015) важным результатом является следующая теорема (Theorem 1):

16c5e7e5da2069ef649643a420a5a626.svg
7ddee2455b415867c7ed22f0b9052701.svg
8918c114bf1d93c0d50aa3ee949698ca.svg

Модуль разницы между желаемым оптимизируемым функционалом
11e573c3ddf3018fd6db6a7cb266e10c.svg
и суррогатной функцией
74603364987e60b7132586b0b14f2a33.svg
ограничен максимумом по состояниям
7e9293e90055a83d4943872232ff638f.svg
-дивергенции между старой и новой политикой.

Другими словами, если политики
08bc0b9d02f6de548cbb6d10d85b2680.svg
и
4ce7ddb32d30ad83e0ead3effd78668d.svg
близки, то разница
6e13448a2cabb4a43681cb5c5b3f5abc.svg
не велика.


Введем вариационную низкую оценку
11e573c3ddf3018fd6db6a7cb266e10c.svg
(variational lower bound):

9ab114ca2541d8023c925d082bff54df.svg

Будем улучшать политику в два шага:


  1. Minorization step: фиксируем текущую политику и строим нижнюю оценку
    cf54beb6082bf204e4b642854d32af95.svg
    , совпадающую с истинной целью
    11e573c3ddf3018fd6db6a7cb266e10c.svg
    в текущей точке.


  2. Maximization step: максимизируем нижнюю вариационную оценку
    221cb46bc9cca3375c03a9f503d148a4.svg
    в надежде, что максимизируется желаемый функционал
    19ce9dcdbbb71fa9c7fb07177a4584fe.svg


24c02c42430aacaa08624c2325103458.svg
будет оценивать усредненным
7e9293e90055a83d4943872232ff638f.svg
между двумя политиками по состояниям.

e8c1c25804c44d13a9a801a8edea4471.svg

А константу
0d61f8370cad1d412f80b84d143e1257.svg
объявим гиперпараметром.

Таким образом, будем оптимизировать
74603364987e60b7132586b0b14f2a33.svg
с ограничением на разницу между старой и новой политиками.


3. Проблема оптимизации


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

Пусть
b60350edc53cb11a3d71acf8bf0354b8.svg
– оптимизируемая функция. Будем оптимизировать
b60350edc53cb11a3d71acf8bf0354b8.svg
в ее локальной окрестности. Другими словами, рассмотрим задачу обновления параметров
2554a2bb846cffd697389e5dc8912759.svg
, начиная с точки
dbc9011a370bca098d4752346ba71d5c.svg
. Мы хотим сделать шаг
b7ea8908ee7f36cfe9bb475fedd68f52.svg
, который минимизирует линейную аппроксимацию функции
800618943025315f869e4e1f09471012.svg
в окрестности
dbc9011a370bca098d4752346ba71d5c.svg
, но при этом величина шага не должна быть слишком большой.

Приблизим
b60350edc53cb11a3d71acf8bf0354b8.svg
линейной аппроксимацией с помощью разложения в ряд Тейлора:

bd26ef4ccf52c5a68afe9e3493bb17e6.svg

Поскольку
fae4065b5919686a02484057bc81c279.svg
не зависит от параметров
2554a2bb846cffd697389e5dc8912759.svg
, то константу можно опустить.
Таким образом, будем оптимизировать
112e1ac0b3238e17481c265efa5ced19.svg
.
Обозначим расстояние между старыми и новыми параметрами:
57a0529fceb2fa4902ad3d64f0b688bb.svg
. Тогда, мы хотим найти
8277e0910d750195b448797616e091ad.svg
такое что
cef1abd8d5b17e2e4e5ba006606a5795.svg
с квадратичным ограничением
7d294e8075fd3fd25b544b2ccab018cd.svg
.
Аналитическое решение методом множителей Лагранжа:
ed6711f9a2c3b7623888d738f45d9c66.svg

72c449c21cbdfe1dd096642d3d7b7b35.svg

Оптимальная дистанция
f55f008fb263829fdb662724e21adcfa.svg
пропорциональна антиградиенту оптимизируемой функции
fcaaaf8da696860435edbb32510832cc.svg
.

eca09fa0fe78f36ab7d9b2bc22ca580f.svg

Немного усложним задачу. Будем минимизировать ту же функцию
cef1abd8d5b17e2e4e5ba006606a5795.svg
, но ограничим расстояние между старыми и новыми параметрами по неевклидовой метрике
3d9f91873ce5b7ad778af9897ccc2fad.svg
, где
a5f3c6a11b03839d46af9fb43c97c188.svg
– положительно определённая матрица.

Аналитическое решение для такого ограничения:
e1936da4f9f16da7722a85c048d9ab1c.svg

eaf3bf0efab25ccaf668016a19b7cd8e.svg

4c0dca642d78c90eb9082e71fec2f163.svg

Таким образом,
9555536abbde42f2d0316323cbde7c28.svg
пропорционально
b88dc08048d121283cac5b64f0d058c9.svg


676607dfc3b49586f9450a6c629a0a1f.svg

3.1. Natural Policy Gradient, NPG (2001)


Статья: A Natural Policy Gradient

Вернемся к задаче обучения с подкреплением.

Пусть имеется политика с параметрами
8e9e5d32a4cc4e897b907064b1f3af96.svg
. Хочется найти новые параметры
10ff0e1eb4084a4e13e7c235320832ca.svg
, которые находились бы в окрестности параметров
8e9e5d32a4cc4e897b907064b1f3af96.svg
.

Квадратичное расстояние между весами
29b17e558d018c7fbbe4fcd326d86ce4.svg
, где
c398503b7c6fc39121ca0c3c3e13a884.svg
будет задавать окружность в пространстве весов. Однако, хотелось бы измерять расстояние между политиками
e451c891b8eabdddd1838b103ba99ff0.svg
и
b5d250ca8d699cc187d1c6ce5637f174.svg
какими-то более умными способами.

Будем использовать расхождение Кульбака-Лейблера (
7e9293e90055a83d4943872232ff638f.svg
-дивергенцию) между распределениями над действиями в качестве метрики между политиками
4ce7ddb32d30ad83e0ead3effd78668d.svg
и
08bc0b9d02f6de548cbb6d10d85b2680.svg
.

89fac1e9cd56246fab3ac20fef544dea.svg

Обозначим
7e9293e90055a83d4943872232ff638f.svg
как функцию параметров
0180c3de6d049a8a169fa03b2d059ea6.svg
.
Разложим
8819683a72852fa92e5b0312071d4eb0.svg
около точки
8e9e5d32a4cc4e897b907064b1f3af96.svg
в ряд Тейлора до второго порядка производной:

452c0417a2296846a62802c3e3774ada.svg


  1. 3a3e7da1b80fc42a9800e034f020ffea.svg
    – из определения
    7e9293e90055a83d4943872232ff638f.svg
    -дивергенции.


  2. c25aed5d272397e20dc4a21f35b9a118.svg
    поскольку
    7e9293e90055a83d4943872232ff638f.svg
    -дивергенция при совпадении распределений достигает своего минимума.


  3. 8e8d1c8d19e9ff6bf79f993f4b6746ba.svg
    – пренебрежимо мало.

Остается только член второго порядка:

1051d65394769daa3e8b0a6c488ab7cc.svg
60085d5fcf575a14f70358a5a85e9039.svg

6653dc4ca1eb509e73b05675bd915de0.png


Сформулируем метод Natural Policy Gradient.

Пока что, пользуемся функционалом
6069e7ce5475aeb7ea13041cee722237.svg
.
Максимизируем
a65efc7336ebbe25923fad208a7003cb.svg
с ограничениями
3d9f91873ce5b7ad778af9897ccc2fad.svg
, где
08101cef18fc2bf5e887abb9a33cabb7.svg
– матрица вторых производных
7e9293e90055a83d4943872232ff638f.svg
-дивергенции.

В таком случае, оптимальный вектор изменения
9555536abbde42f2d0316323cbde7c28.svg
будет пропорционален
df31af7f62e8cc3fdb5d5ab9d447ca0b.svg
.
Обновление политики происходит по формуле:

14bdd00a7db6b62c882b4e40af5af286.svg

Однако, обращение матрицы
0cc46806cf2172c2c76f2634f65dfad6.svg
очень дорогая операция, потому данный метод будет работать только на игрушечных средах. Хотелось бы этот метод как-то улучшить.

Заметим, что можно не искать отдельно матрицу
0cc46806cf2172c2c76f2634f65dfad6.svg
, а искать сразу значение выражения
df31af7f62e8cc3fdb5d5ab9d447ca0b.svg
.

aa7ac2606a39018fcdd1d1a11b13b7f2.svg

Тогда вместо обращения матрицы можно решить линейную систему:

41a6d2f183483a92962e6393acf9f786.svg

Поскольку матрица
a5f3c6a11b03839d46af9fb43c97c188.svg
положительно определённая, то мы можем воспользоваться эффективным методом решения линейных систем — методом сопряжённых градиентов (conjugate gradients).

В результате получаем вектор изменения весов:

110541569d45a92870287c3e0ccd13a9.svg

Параметр
7b7f9dbfea05c83784f8b85149852f08.svg
подбирают линейным поиском шагая от
8e9e5d32a4cc4e897b907064b1f3af96.svg
по направлению
df31af7f62e8cc3fdb5d5ab9d447ca0b.svg
:

6d1a854ef95b7e50f1a27a13890dc5ca.svg

Остается обновить политику:

58e66903fc90d6f91be1b5e040b546e8.svg

f912c0c7b3fa39917d79feed0cea6dfc.png

3.2. Trust Region Policy Optimization, TRPO (2015)


Статья: Trust Region Policy Optimization

Вернемся к ранее выведенному функционалу:

0982595f8dd0d801b70cf1f258035b33.svg

Сформулируем задачу оптимизации с ограничениями:

6a32df9de5b4bfccf6a41b49308112d0.svg
8cfa596522fff00eef277e70b64e85b0.svg

Метод Trust Region Policy Optimization:


  1. Инициализируем политику
    08bc0b9d02f6de548cbb6d10d85b2680.svg


    1. Loop:

      1. 3a7faeaf5c7c1507aa0ad741ec7e9afe.svg



      2. Генерируем траектории, используя текущую политику
        4ce7ddb32d30ad83e0ead3effd78668d.svg
        .


      3. Считаем
        2ba091137f78af15031c89a72c64f473.svg



      4. Цикл по эпохам:

        1. Цикл по батчам:

          1. Считаем градиент суррогатной функции:
            eec52d2902cd6899fc20345076bc197b.svg



          2. Аналитически считаем матрицу вторых производных KL-дивергенции:
            a9164aa56b9f635c74691de6ff9bd69d.svg



          3. Методом сопряженных градиентов ищем направление обновления весов, решая систему
            35da1781939626779f01fe9ab3245de4.svg
            методом сопряжённых градиентов:
            39e5344aee354b760756e6001eeac5f6.svg



          4. Линейным поиском подбираем параметр
            7b7f9dbfea05c83784f8b85149852f08.svg
            , в направлении
            8277e0910d750195b448797616e091ad.svg
            с ограничением:
            f0802a25041c27d6b29060e5414c7e2b.svg
            и одновременной проверкой значения:
            0bc17c9f99504f85a69faa0042ab660b.svg



          5. Обновляем параметры политики
            2ca45fe04481e02db6a5f0d742d4c1c2.svg


TRPO – стабильный алгоритм, не требующий большого числа итераций для достижения качественных результатов. Однако его реализация нетривиальна, а для аппроксимации матрицы вторых производных требуется огромный объём сэмплов, что делает процесс вычислительно дорогим.

В современных условиях классический TRPO практически не применяется — он слишком требователен к памяти и плохо масштабируется на большие модели. На смену ему пришла его усовершенствованная модификация — PPO (Proximal Policy Optimization).

3.3. Proximal Policy Optimization (PPO), 2017


Proximal Policy Optimization Algorithms

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

Добавим регуляризацию прям в максимизируемый функционал:

204c1c7c3f67bdaa96dc5295f19bd267.svg

Однако, данный функционал не гарантирует сходимости алгоритма.

a32e3956d0781367181b566c55a73c3b.svg
не достаточно штрафует за разницу между политиками и выражение
c504fe27b026d5e4e79089edfe9beb5d.svg
часто уходит либо в беcконечность, либо в ноль и обучение разваливается.

Ограничиваем изменение политики, "подрезая" (clipping) слишком большие значения importance ratio
c504fe27b026d5e4e79089edfe9beb5d.svg
.

1e4709f0bb0a7b7fe4d0de36868b03d3.png

f6a8b272509a2419fd391bfa50330fa2.svg
aa49f9f9162e961a54c40b6916cc299d.svg

Если
c504fe27b026d5e4e79089edfe9beb5d.svg
выходит за границы
ef7270b2602bca877c0ca3419c081e02.svg
, то считаем его равным
ef7270b2602bca877c0ca3419c081e02.svg
.Таким образом, новая политика не сможет выйти за регион
ef7270b2602bca877c0ca3419c081e02.svg
.

Однако процедура "клиппинга" (ограничения) вносит смещение в оценку, нарушая важное теоретическое свойство градиента – монотонность гарантированного улучшения. Для решения этой проблемы на практике используют комбинированный подход: окончательное выражение для целевой функции принимают как минимум из двух вариантов – с применением клиппинга и без него.

36f65a493879aacb2f29cbef5a7a091e.svg

В статье PPO были представлены следующие графики. По вертикальной оси находятся значения функции ошибки, а по горизонтальной значение функции
3f73f9e0cafb7d015e36be06af8f59d7.svg
.
В красной точке
08bc0b9d02f6de548cbb6d10d85b2680.svg
совпадает с
4ce7ddb32d30ad83e0ead3effd78668d.svg
, соответсвенно
448e1a0554e7a44653db21090441fea3.svg
.

Допустим
17d9c075c38185fc7315e5888f9537e0.svg
, то тогда и
4b43b0aee35624cd95b910189b3dc231.svg
должно увеличиваться, поскольку мы хотим увеличить вероятность этого действия. Однако, когда
4b43b0aee35624cd95b910189b3dc231.svg
доходит до числа
65cffbfed89a085078b743de58a27580.svg
, дальнейшее изменение параметров не имеет смысла с точки зрения функции потерь, даже если бы это было на пользу. В обратной ситуации аналогично, если
62fd54f1b95ae69407b5fc6b15bdf11c.svg
, то
4b43b0aee35624cd95b910189b3dc231.svg
должно уменьшаться. Но, при достижении границы
e4e34822c51622a5215ea025ece9134e.svg
выгода с точки зрения функции потерь теряется.

38c59999ed79486e5f274d1035279f7d.png


На графике ниже представлена линейная интерполяция изменения весов. Слева расположена
4ce7ddb32d30ad83e0ead3effd78668d.svg
, справа последняя версия
08bc0b9d02f6de548cbb6d10d85b2680.svg
.


  • Синяя функция показывает изменение
    7e9293e90055a83d4943872232ff638f.svg
    -дивергенции между старой и новой политикой.


  • Желтая функция – это обычная суррогатная функция без клиппинга. Однако она является лишь приближением целевого функционала
    c66818fe58c57758971d4e99cb4b0e23.svg
    и не гарантирует его улучшения.


  • Зеленая функция – это клипнутый importance ratio (
    4b43b0aee35624cd95b910189b3dc231.svg
    ). На графике видно, что при опредленном количестве обновлений, она достигает своего плато, что логично из формулы клиппинга.


  • Красная функция – это минимум из клипнутой функции и обычной суррогатная функции. Видно, что ДО того как функция достигнет значения
    9d9dff9320e27082b15b4ed7a086ba83.svg
    , она просто улучшает политику. По достижении
    9d9dff9320e27082b15b4ed7a086ba83.svg
    хорошие политики больше не улучшаются и плохие начинают портить красную функцию. Значит отходить дальше от
    4ce7ddb32d30ad83e0ead3effd78668d.svg
    не имеет смысла.
011248cb78c6941e3d8a5c4b8ff283fa.png


Сформулируем метод Proximal Policy Optimization:


  1. Инициализируем параметры политики
    08bc0b9d02f6de548cbb6d10d85b2680.svg



  2. Loop:

    1. Сохраняем старую политику
      3a7faeaf5c7c1507aa0ad741ec7e9afe.svg



    2. Генерируем траектории c
      4ce7ddb32d30ad83e0ead3effd78668d.svg



    3. Считаем advantage estimate
      48f9fbb19aec819ba8a6c745133d85aa.svg



    4. Цикл по эпохам:

      1. Цикл по батчам:

        1. Считаем importance ratio:
          a7fbdf11c5ae9a9fbc30df108a0f176b.svg



        2. Считаем clipped importance ratio:
          d7da0e925890f259d0d4b45db01d6bb4.svg



        3. Считаем Сlipped objective:
          a8d0d7b18a4f7616e7817d7a38cdc9bd.svg



        4. Обновляем параметры
          9279ff8fdbbbeb5e8157d2d1b815fe22.svg

4. Generalized Advantage Estimation (GAE)


Можно заметить, что в методах TRPO и PPO был упущен момент c подсчетом advantage estimate
7b2a67dbfae32c4ff1e9a1a593efdcba.svg
.

205faaaf98cb93c7e08f8e3311783acb.svg
8a94d1fe470fadedb142696a2f951fb8.svg

На практике функции
f09564c9ca56850d4cd6b3319e541aee.svg
и
5206560a306a2e085a437fd258eb57ce.svg
неизвестны и аппроксимируются по данным. Обычно обучается только value-функция, а advantage оценивается через возвраты.

4.1. Обучение Value-функции


Функцию ценности обычно аппроксимируют нейронной сетью
b67ccbc7610260a07d75d721e80d286e.svg
с функцией потерь

5f14838d22e50f3c58cffbe56420a7d2.svg

где
a568bf104397bd8311073893dff24222.svg
– оценка истинного возврата.

Monte-Carlo возврат
a987224c633b40221a02c841d7363e04.svg
несмещённый, но имеет огромную дисперсию.
Поэтому на практике используют усечённую
7b8b965ad4bca0e41ab51de7b31363a1.svg
-шаговую оценку:

ca9480d007f9428d2a59d8976046243b.svg

Из определения
55672a4188e65fbe244fb2f22f08fbcb.svg
c89dd1bf6ee8a386c47813aa22c47eb6.svg
. Следовательно, оценка возврата может быть записана как

795f3a15b7c0231f4ec88b4a7e1e9abc.svg

Тогда:

06a866adcdee6165762243a0bb5a29fb.svg

Обновление параметров градиентным спуском:

e6c99c4e29b0a3f68051655dd81d2e59.svg
686ae1a538dee776f300f7f1cd1e3604.svg

4.2. n-шаговый Advantage


В зависимости от метода оценки
f09564c9ca56850d4cd6b3319e541aee.svg
-функции, существуют различные оценки для Advantage:

1596cf5f3cf184f29997de88cc4286f7.svg

Монте-Карло оценка будет иметь высокий разброс (и низкое смещение).

eb7d11e7522dc57a3e70155cb583b545.svg

Можно
f09564c9ca56850d4cd6b3319e541aee.svg
-функцию оценить одношаговой оценкой из знаний
5c3cc8063bc8a08c4ebca2e857954109.svg
:

0f4106f58587e5e25a18aa179c8cb2b9.svg

Такая оценка будет иметь высокое смещение (и низкий разброс).

Возникает задача умного подбора шага
8d9c307cb7f3c4a32822a51922d1ceaa.svg
при оценивании функции
7211c2fa4ea74200d14e81d44376b8c3.svg
:

74d45c0eb140d5026460e5b672124ef1.svg
4c66c907dc99a7cc2075979d9e27f796.svg

Переобозначим функционал (актора):

b2b1200990f36e867c69cf968ee0ded6.svg

и функционал критика:

6124a0e32c6c9876354a7d3a7d6e998f.svg

4.3. Generalized Advantage Estimation (GAE)


Вместо того чтобы подбирать количество шагов
8d9c307cb7f3c4a32822a51922d1ceaa.svg
, можно использовать все
8d9c307cb7f3c4a32822a51922d1ceaa.svg
-шаговые оценки Advantage с затухающими весами:


Estimation​

60719fe9e3e1e1a09850bf7700e5262b.svg

f0dfde892afd514414176583ad561741.svg

49b081f2b746bcc44629458cae104a11.svg

3bde5c71067f2d0732e27d1598d0e3f1.svg


Weight​



bfef564031b8d5d2200dd9ef3a62893f.svg



65bcb2adb12d6c622316ec363fdb7ab9.svg



9ddd169ea032297f47935270c118ab65.svg



3bde5c71067f2d0732e27d1598d0e3f1.svg

1a406e149cd63a8eb49ffc9c4e47a23b.svg
d2e9409150444ab1cb78d5c947ae6a92.svg
5eccddd10720193a51385d088cd0f27b.svg

Однако, пересчитывать все
7074880ea5a2292966da86d18be0f7aa.svg
слишком долго и не оптимально.

Выпишем двушаговый
86e23a30c7a019cb5c40c189144eada7.svg
через
1c7f68cdb1d0397a8a70b45eae83739f.svg
.


  1. Из определения
    3389b6541ee889bcfa2a935794133cee.svg
    :
08f4d88488b323a6895d5459d95f7481.svg


  1. Выпишем одношаговый
    8056b99d22601798bb08d224d637e475.svg
    , но для следующего состояния
    b4527e0091094c13aa10ddd6a0ab36be.svg
    и следующего действия
    89e512ceb47b463d4842256761550c96.svg
    :
77449d6dfc5581c55d6deff318c55e59.svg


  1. Умножим на
    ae539dfcc999c28e25a0f3ae65c1de79.svg
    :
de752df873ee833ece38c410203cea09.svg


  1. Добавим и вычтем
    b7ca66bc0eedc3f6b638ec018fb6b09a.svg
    из
    05431691385129af58bc2f2b1ac52983.svg
    :
c066ec2c957be15614672d851ec57354.svg
b5c1f07eaec0e8b2becc8513e9096a38.svg

Если обобщить
4313a5a343f5b62c8c75081589c20e77.svg
на
8d9c307cb7f3c4a32822a51922d1ceaa.svg
шагов, то получится общая формула
8d9c307cb7f3c4a32822a51922d1ceaa.svg
-шаговой ошибки через одношаговые:

c10501ac485007c478015cbeb9ae894c.svg

Подставив получившуюся формулу
8ae6621713ec2b7b5a2924c3d8f65796.svg
в
b93291e0926f1538b25eca40c512c3a4.svg
можно доказать, что:

ca7e6eb5fa1d1997c04463db38a899a4.svg
0c5e96ecee9e37be23cdb7ac4ff508fa.svg

Однако
76bff2ee86e0eafe215a496ffcb3af3e.svg
считаем не до конца траектории, а только по сделанным шагам, потому ограничим
7f4114a25ec502ef960a77bf9a89fcf4.svg
до
b9ece18c950afbfa6b0fdbfa4ff731d3.svg
:

454fbf8a9402fdae5053b40341677346.svg

На практике удобнее использовать следующую эквивалентную формулу к
94ba059655772fd8d721589d90b21372.svg
:

eb683eb3114087e2277c9295da8e60e8.svg

А функцию ценности обновляем:

997af87e0608a5b824e32fcb980702e1.svg

Основная проблема классического
7b8b965ad4bca0e41ab51de7b31363a1.svg
-шагового возврата заключается в необходимости заранее выбрать конкретный горизонт
7b8b965ad4bca0e41ab51de7b31363a1.svg
. Выбрав маленькое
7b8b965ad4bca0e41ab51de7b31363a1.svg
, оценка возврата будет иметь высокий
1603f79f250bd05d84dcb190bee408bc.svg
. Выбрав большое
7b8b965ad4bca0e41ab51de7b31363a1.svg
, оценка возврата будет с огромной дисперсией. На практике это создаёт трудности: оптимальный горизонт
7b8b965ad4bca0e41ab51de7b31363a1.svg
различается для разных состояний, длины эпизодов непостоянны, а обучение становится нестабильным.

Вместо выбора одного
7b8b965ad4bca0e41ab51de7b31363a1.svg
,
c6a6eb61fd9c6c913da73b3642ca147d.svg
строит смесь всех
7b8b965ad4bca0e41ab51de7b31363a1.svg
-шаговых возвратов. Таким образором, выбирается не конкретный горизонт, а скорость затухания памяти. При
726b3f22ce0493a4e51e06141e079545.svg
алгоритм имеет короткую память и оценка близка к
bbf66ab09ee416e47152f13db922551d.svg
(низкая дисперсия, но высокое смещение). При
85ab8fb11883534e2113343d90fced79.svg
– долгая память, оценка стремится к полному Монте-Карло возврату (низкое смещение, но высокая дисперсия). Эмпирически для многих задач оптимальный баланс достигается в диапазоне
dd4a6efb664b9769e36127f6f4a920ec.svg
.


4.4. Вернемся к PPO


Напишем полностью алгоритм Proximal Policy Optimization:


  1. Инициализируем параметры политики
    08bc0b9d02f6de548cbb6d10d85b2680.svg
    и параметры критика
    b172a2be78a56dd3c3943058e2fcaa9c.svg
    .


  2. Loop:

    1. Сохраняем политику
      3a7faeaf5c7c1507aa0ad741ec7e9afe.svg



    2. Генерируем траектории (rollouts) из политики
      4ce7ddb32d30ad83e0ead3effd78668d.svg
      , сохраняя логиты
      69e0c8b5d8af58a46423eb31a5951787.svg
      для подсчета importance ratio.


    3. Сохраняем выходы критика
      fa322c3eaed782f4961c373927427831.svg



    4. Считаем одношаговые оценки для всех состояний:
      if not
      ce213b1332b1bf66249af6257a3146db.svg
      :
      174e50061a332b29eaa3644845c73041.svg

      else:
      73e225eea3f638732ae40922f4866fe0.svg



    5. Считаем рекурсивно по формуле
      24f04afe72ce97e8ebb57448951cc830.svg
      GAE оценки:
      127c4d2313c58215c1d4c30ab16a1874.svg

      for t in (N-2, 0, -1):
      if not
      ce213b1332b1bf66249af6257a3146db.svg
      :
      f5f7c11ff3b38039afe369e0d161c838.svg

      else:
      b6783cdf7b8bd9b567533daf410a1e5f.svg



    6. Считаем целевые значения критика:
      cf9ee3790947dd4a76cbd4bbbdd2eaab.svg



    7. for epoch in n_epochs:

      1. for batch in batches:

        1. Считаем importance ratio:
          27a197728ab0bf3cb8260d94a915eb21.svg



        2. Считаем clipping importance ratio
          5c0da7a0542718479be4cbbe4fff0dac.svg



        3. Считаем clipped objective:
          690f1fb00ffd73f1e9b02a13fe8c0ecb.svg



        4. Обновляем параметры актора:
          9279ff8fdbbbeb5e8157d2d1b815fe22.svg



        5. Обновляем лосс критика:
          a80ceb4a1a4e7dbfdd5996ab3a6f3e28.svg



        6. И обновляем параметры критика:
          ac0af85f64568ac9b05c10df52d24977.svg


Реализацию PPO можно посмотреть здесь: Practical_RL/week09_policy_II/ppo.ipynb at main · anyakangur/Practical_RL https://github.com/anyakangur/Practical_RL/blob/main/week09_policy_II/ppo.ipynb

На GRPO сил не хватило, но будет в следующий раз!
 
Назад
Сверху Снизу
Яндекс.Метрика Рейтинг@Mail.ru