Обучение с подкреплением и выравнивание
Динамическое программирование
Value iteration против policy iteration — 215 проходов против трёх итераций
Два способа решить одно уравнение
Уравнение Беллмана можно решать двумя способами, и они устроены принципиально по-разному.
Измерение
Разница на случайном MDP с восемью состояниями и четырьмя действиями, , точность :
| алгоритм | итераций |
|---|---|
| value iteration | |
| policy iteration |
Обе дают одно и то же (совпадение до ). Разница в семьдесят раз — не аномалия, а типичная картина, и объясняется она одним наблюдением из урока 020: политике нужен порядок величин, а не сами величины. Value iteration уточняет числа до десятого знака, хотя порядок установился давно; policy iteration переспрашивает только про порядок.
Но итерации у них разной цены:
| стоимость одной итерации | |
|---|---|
| проход value iteration | |
| точная оценка политики | решением системы |
| приближённая оценка | за проходов |
При , это против — то есть policy iteration дороже вдвое за итерацию и всё равно выигрывает в семьдесят раз по общей работе. При больших кубический член становится неприемлемым, и его заменяют несколькими проходами вместо точного решения. Так получается обобщённое policy iteration, частными случаями которого оказываются оба алгоритма:
| проходов оценки | что получается |
|---|---|
| value iteration | |
| до сходимости | policy iteration |
| то, что используют на практике |
Гарантия завершения
У policy iteration есть свойство, которого нет у value iteration: она заканчивается точно, за конечное число шагов. Причина комбинаторная — политик конечное число (), каждая итерация строго улучшает политику (теорема из урока 030), а значит ни одна не повторяется.
Value iteration в общем случае сходится лишь в пределе: значения приближаются к геометрически и достигают её точно только в вырожденных случаях вроде детерминированной сетки из урока 010.
Практический вывод обратен интуиции: алгоритм, который «делает больше работы за итерацию», завершается за меньшее их число и с точным ответом.
терминал стена
- горизонт 1/(1−γ)
- 10
- значение старта
- -0.164
- изменение за проход
- 5.6e-1
- проходов до сходимости
- 7
Три оговорки
Нужна модель. Оба алгоритма содержат . Без знания переходов ни один не применим — и это ровно то ограничение, которое снимает следующий урок.
Нужен перебор всех состояний. Проход по состояниям невозможен, когда велико. Отсюда асинхронные варианты, где обновляются не все состояния подряд, а те, что чаще встречаются или где ошибка больше. Сходимость сохраняется, если каждое состояние обновляется бесконечно часто.
Нужна табличная форма. Значения хранятся как массив, по числу на состояние. Как только становится нейросетью, теория из урока 030 перестаёт применяться: оператор Беллмана в композиции с проекцией на пространство функций сети не обязан быть сжимающим, и расходимость становится возможной. Это известная «смертельная триада» — аппроксимация, бутстрэппинг и off-policy обучение вместе, — и урок 090 к ней вернётся.
Третья оговорка — самая важная и чаще всего пропускаемая. Аккуратные гарантии этого блока относятся к таблицам; всё, что работает в больших задачах, работает без них.
Итог
- Value iteration и policy iteration решают одно уравнение с разной стратегией.
- Измерено: проходов против итераций на одной задаче, при цене итерации вдвое выше.
- Причина — политике нужен порядок величин, а не их точность.
- Policy iteration завершается точно за конечное число шагов; value iteration — в пределе.
- Обобщённая схема с несколькими проходами оценки покрывает оба алгоритма и используется на практике.
- Всё это требует модели, перебора состояний и табличного представления.
Источники
- Sutton, Barto — Reinforcement Learning, An Introduction — Глава 4, оба алгоритма и обобщённая схема
- Howard — Dynamic Programming and Markov Processes — Policy iteration в исходной формулировке
Проверки
0 из 2Два алгоритма, одно уравнение
Отметьте все верные утверждения о динамическом программировании.
Сравнить два алгоритма
Возьмём ту же цепочку, что в уроке 030: состояний, действия «стоять» (награда , остаёмся) и «идти» (награда
rewards[s], переход в ; из последнего — в терминал с ценностью ).Реализуйте
compare_dp(rewards, gamma, tolerance)— верните[optimal_first_value, vi_sweeps, pi_iterations, agree]:optimal_first_value— ценность состояния в оптимуме;vi_sweeps— сколько проходов value iteration понадобилось, считая проход, после которого изменение стало меньшеtolerance. Начинайте с нулей;pi_iterations— сколько итераций policy iteration понадобилось. Одна итерация — это точная оценка текущей политики плюс жадное улучшение; считайте итерации до той включительно, на которой политика не изменилась. Начинайте с политики «везде стоять»;agree— единица, если оба алгоритма дали одинаковые значения (с точностью ), иначе нуль.
Оценку политики считайте итеративно, до изменения меньше — точное решение системы для этой цепочки не требуется.
Загрузка редактора…
Ctrl/⌘ + Enter