Это серия статей об обучении с подкреплением, и если вы новичок и не изучали раньше, пожалуйста, прочтите (ссылки в конце этой статьи). До сих пор мы обсуждали только основы обучения с подкреплением и то, как сформулировать задачу обучения с подкреплением, используя марковский процесс принятия решений (MDP). С этого момента мы будем работать над решением MDP.

Уравнение Беллмана

Если вы читали что-нибудь, связанное с обучением с подкреплением, вы, должно быть, где-то встречали уравнение Беллмана. Уравнение Беллмана является основным блоком решения обучения с подкреплением и повсеместно присутствует в RL. Это помогает нам решать MDP. Решить - значит найти оптимальную политику и функции ценности.

Функция оптимального значения V * (S) - это функция, которая дает максимальное значение.

Значение для данного состояния равно максимальному действию (действие, которое максимизирует значение) награды за оптимальное действие в данном состоянии и добавляет умноженный коэффициент скидки на значение следующего состояния из уравнения Беллмана.

Давайте поймем это уравнение, V (s) - это значение нахождения в определенном состоянии. V (s ’) - это значение нахождения в следующем состоянии, в котором мы окажемся после выполнения действия a. R (s, a) - это награда, которую мы получаем после выполнения действия a в состоянии s. Поскольку мы можем выполнять разные действия, мы используем максимум, потому что наш агент хочет быть в оптимальном состоянии. γ - коэффициент дисконтирования, как обсуждалось ранее. Это уравнение Беллмана в детерминированной среде (обсуждается в части 1). Это будет немного отличаться для недетерминированной среды или стохастической среды.

В стохастической среде, когда мы предпринимаем действие, не подтверждается, что мы окажемся в определенном следующем состоянии, и есть вероятность того, что мы закончим в определенном состоянии. P (s, a, s ’) - вероятность завершения состояния s’ из s путем выполнения действия a. Суммируется до общего количества будущих состояний. Например, если, совершив действие, мы можем попасть в 3 состояния s₁, s₂ и s₃ из состояния s с вероятностью 0,2, 0,2 и 0,6. Уравнение Беллмана будет

V (s) = maxₐ (R (s, a) + γ (0,2 * V (s₁) + 0,2 * V (s₂) + 0,6 * V (s₃))

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

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

Динамическое программирование (DP) - это метод решения сложных проблем. В DP вместо решения сложных проблем по одной мы разбиваем проблему на простые подзадачи, а затем для каждой подзадачи мы вычисляем и сохраняем решение. Если возникает такая же подзадача, мы не будем пересчитывать, вместо этого мы используем уже вычисленное решение.

Мы решаем уравнение Беллмана, используя два мощных алгоритма:

  • Итерация значений
  • Итерация политики

Итерация значений

Узнаем это по схемам и программам.

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

Начнем с программирования, мы будем использовать для этого open ai gym и numpy.

Итерация политики

В «Итерации политики» сначала определяются или инициализируются действия, которые агент должен предпринять, и в соответствии с политикой создается таблица значений.

Код для итерации политики:

Серия обучения с подкреплением

  1. Введение в обучение с подкреплением.
  2. Марковские цепи и марковский процесс принятия решений.
  3. Уравнение Беллмана и динамическое программирование → Вы здесь.

Ссылки

  1. Практика обучения с подкреплением на питоне от Сударшана Равичандрана
  2. Https://medium.com/@taggatle/02-reinforcement-learning-move-37-the-bellman-equation-254375be82bd