Обучение с подкреплением и выравнивание
Марковский процесс принятия решений
Пять объектов, из которых состоит задача — и что на самом деле делает дисконт
Чем эта задача отличается от предыдущих
Во всём курсе до сих пор были данные: пары «вход — правильный ответ» или просто выборка из распределения. Здесь их нет. Есть среда, которая отвечает на действия, и последствия, растянутые во времени.
Формально задача — это пятёрка : состояния, действия, вероятности перехода, награды и дисконт. Марковость означает, что зависит только от текущего состояния и действия, а не от истории.
Заметьте, что максимизируется
Что делает дисконт
Сходимость. При ограниченных наградах ряд сходится и . Без дисконта в бесконечной задаче сумма может расходиться, и «максимизировать» становится бессмысленно.
Горизонт. Величина — характерное число шагов, которое «видит» агент:
| горизонт | |
|---|---|
Сжатие. Это самое важное для следующих уроков: делает оператор Беллмана сжимающим, и отсюда существование и единственность решения (урок 030).
Стоит понимать, что дисконт — часть постановки задачи, а не гиперпараметр решателя. Меняя , вы меняете, какую задачу решаете; оптимальная политика при и при — разные политики, и обе правильные для своей задачи.
Потяните дисконт и посмотрите на стрелки в дальних от цели клетках.
цель стена
- горизонт 1/(1−γ)
- 10
- значение старта
- -0.076
- изменение за проход
- 7.7e-1
- проходов до сходимости
- 7
При и цене шага значения сходятся к такой картине:
| стена | |||
| стена |
Проверьте одну клетку руками: значение соседа цели равно . Следующая за ней — . Вся таблица получается этим правилом, и в этом весь урок 030.
Про скорость сходимости — поправка
Стандартное утверждение: ошибка убывает как . Проверим на этой сетке:
| проход | отношение | |
|---|---|---|
| — | ||
| — |
Первые проходы дают ровно , как и обещано. Но затем ошибка становится точным нулём, а не продолжает убывать геометрически. Причина в том, что среда детерминирована: как только до каждой клетки дошёл её оптимальный путь целиком, значение перестаёт меняться вовсе.
Отсюда вывод, полезный на практике: — это верхняя граница для худшего случая. На детерминированных задачах с коротким диаметром сходимость наступает за число проходов порядка диаметра, независимо от . В этой сетке — за семь проходов и при , и при .
Что делает цену шага важной
Слагаемое за каждый шаг выглядит технической деталью, но именно оно задаёт задачу. Уберите его — и агенту станет всё равно, сколько идти: любой путь к цели даст одно и то же значение при и почти одно и то же при близком к единице. Сделайте его большим по модулю — и цель перестанет окупать дорогу.
Это первое проявление общей проблемы: награда задаёт задачу целиком, и ошибка в её формулировке не лечится ни алгоритмом, ни объёмом данных. Урок 130 покажет, во что это выливается, когда награду не пишут руками, а обучают.
Итог
- MDP — это ; марковость означает, что история сжата в состояние.
- Максимизируется возврат, а не награда: последствия растянуты во времени.
- Дисконт делает три вещи сразу — обеспечивает сходимость, задаёт горизонт и делает оператор Беллмана сжимающим.
- — часть постановки, а не настройка решателя.
- Оценка — верхняя граница; на детерминированных задачах сходимость бывает точной за число проходов порядка диаметра.
Источники
- Sutton, Barto — Reinforcement Learning, An Introduction — Глава 3, формализм MDP и возврат
- Puterman — Markov Decision Processes — Строгое изложение, условия существования оптимальной политики
Проверки
0 из 2Постановка задачи
Отметьте все верные утверждения о марковском процессе принятия решений.
Возврат, горизонт и граница
Реализуйте
return_facts(rewards, gamma)— верните[discounted_return, horizon, bound, terms_to_one_percent]:discounted_return= по данному конечному списку наград (первая награда берётся с весом );horizon= ;bound= — граница на возврат бесконечной последовательности с такими же по модулю наградами;terms_to_one_percent— наименьшее целое , при котором , то есть за сколько шагов вес будущего падает до одного процента.
Проверить себя можно так: при пяти единичных наградах и возврат равен .
Загрузка редактора…
Ctrl/⌘ + Enter