Безболезненное введение в обучение с подкреплением: Q-Learning

машинное обучение

Введение в серию: Серия статей «Введение в безболезненное обучение с подкреплением» направлена ​​на то, чтобы представить вводные знания, связанные с обучением с подкреплением, и заложить основу для вашего последующего углубленного изучения. Он включает в себя основную идею обучения с подкреплением, структуру MDP, введение в несколько основных алгоритмов обучения и несколько простых практических случаев.

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

8 Q-Learning

8.1 Q-Learning

В предыдущем разделе мы представили алгоритм SARSA TD, и его основная формула такова:

qt(s,a)=qt−1(s,a)+1N[R(s′)+q(s′,a′)−qt−1(s,a)]

Другой алгоритм TD, который мы рассмотрим далее, называется Q-Learning, и его основная формула такова:

qt(s,a)=qt−1(s,a)+1N[R(s′)+maxa′q(s′,a′)−qt−1(s,a)]

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

Во-первых, реализовать код:

__Mon Nov 20 2017 11:29:28 GMT+0800 (CST)____Mon Nov 20 2017 11:29:28 GMT+0800 (CST)__def q_learning(self):
    iteration = 0
    while True:
        iteration += 1
        self.q_learn_eval()
        ret = self.policy_improve()
        if not ret:
            break__Mon Nov 20 2017 11:29:28 GMT+0800 (CST)____Mon Nov 20 2017 11:29:28 GMT+0800 (CST)__

Соответствующий код оценки политики:

__Mon Nov 20 2017 11:29:28 GMT+0800 (CST)____Mon Nov 20 2017 11:29:28 GMT+0800 (CST)__def q_learn_eval(self):
    episode_num = 1000
    env = self.snake
    for i in range(episode_num):
        env.start()
        state = env.pos
        prev_act = -1
        while True:
            act = self.policy_act(state)
            reward, state = env.action(act)
            if prev_act != -1:
                return_val = reward + (0 if state == -1 else np.max(self.value_q[state,:]))
                self.value_n[prev_state][prev_act] += 1
                self.value_q[prev_state][prev_act] += (return_val - \
                    self.value_q[prev_state][prev_act]) / \
                    self.value_n[prev_state][prev_act]
            prev_act = act
            prev_state = state
            if state == -1:
                break__Mon Nov 20 2017 11:29:28 GMT+0800 (CST)____Mon Nov 20 2017 11:29:28 GMT+0800 (CST)__

Фактический рабочий код опущен, и окончательный результат:

__Mon Nov 20 2017 11:29:28 GMT+0800 (CST)____Mon Nov 20 2017 11:29:28 GMT+0800 (CST)__Timer Temporal Difference Iter COST:4.24033594131
return_pi=81
[0 0 0 0 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0]
policy evaluation proceed 94 iters.
policy evaluation proceed 62 iters.
policy evaluation proceed 46 iters.
Iter 3 rounds converge
Timer PolicyIter COST:0.318824052811
return_pi=84
[0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0]__Mon Nov 20 2017 11:29:28 GMT+0800 (CST)____Mon Nov 20 2017 11:29:28 GMT+0800 (CST)__

Видно, что между методом Q-Learning и коэффициентом итерации стратегии все еще есть небольшой разрыв, Конечно, число может быть улучшено некоторыми методами, но это не тема этой статьи. Однако, судя по результатам, Q-Learning лучше, чем SARSA.

8.2 Политика и не политика

На самом деле эти два алгоритма представляют собой два способа осмысления проблем: On-Policy и Off-Policy. Представителем On-Policy является SARSA, и обновление его функции значений полностью основано на ходе эпизода, что эквивалентно непрерывному расчету и улучшению на предыдущей основе; представителем Off-Policy является Q-Learning, а его Значение функции содержит Сущность предыдущей, поэтому ее можно рассматривать как борьбу выше и видение дальше. Конечно, нельзя сказать, что Off-Policy — это абсолютно хорошо, Off-Policy тоже принесет свои проблемы, короче, нужно детально разбирать конкретные проблемы.

Наконец, вот краткое изложение двух категорий алгоритмов. На самом деле, если игра имеет конечную точку и модель не сложна (как наши шахматы-змейки), метод Монте-Карло все же имеет безусловное преимущество, но очевидна и слабость метода Монте-Карло: он требует полного эпизода и дает большая дисперсия результатов.Это не подходит для некоторых крупномасштабных игр, поэтому TD все еще больше в реальном обучении с подкреплением в масштабе продукта.

8.3 Перспективы

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

8.3.1 Function Approximation

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

Допустим, что состояние равно s∈S, действие равно a∈A, а функция конечного значения равна v∈R, тогда мы должны установить такое отображение:

С×А→R

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

Функции моделей и обучение с учителем позволяют взглянуть на обучение с подкреплением под другим углом. В настоящее время модель должна учитывать компромисс между предвзятостью и дисперсией, а также обобщение модели Эти проблемы в конечном итоге будут сопоставлены с обучением с подкреплением. Существует также много представлений модели.Приведенное выше S×A→R является лишь формой представления модели, и мы также можем выразить ее в виде S→A, R. Для первого представления, поскольку разные действия будут воздействовать на одно и то же состояние (или разные действия манипулируются одним и тем же действием), представление параметров в модели должно повторяться, тогда для лучшего совместного использования параметров мы можем использовать последнюю форму выражать.

Поговорив о форме модели, давайте взглянем на целевую функцию модели. Простейшей целевой функцией, естественно, является квадрат функции потерь:

obj=12∑Ni(v′i(s,a;w)−vi)2

Среди нихv'i представляет собой значение, оцененное моделью, а vi представляет текущее реальное значение, которое определяет целевую функцию.Далее мы можем использовать классический метод машинного обучения с градиентным спуском для решения:

∂obj∂w=∑Ni(v′i−vi)∂v′i∂w

Эта формула кажется знакомой? На самом деле, если

∂v′i∂w=1

, то оптимальное решение модели равно

v′i=1N∑Ниви

То есть среднее всех обучающих данных.Этот результат согласуется с формулой расчета табличной версии, а это значит, что алгоритм табличной версии на самом деле является моделью, но его градиент везде равен 1.

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

8.3.2 Policy Gradient

Другое направление — выпрыгнуть из существующих рамок мышления и перейти к другому методу вычислений. Этот подход называется градиентом политики. В этом методе мы больше не используем метод поиска сначала функции ценности, а затем обновления политики, а напрямую моделируем политику, то есть моделирование π(a|s).

Мы возвращаемся к источнику проблемы обучения с подкреплением, изначально мы хотели найти стратегию, которая максимизирует долгосрочную отдачу агента, то есть:

maxEπ[vπ(s0)]

Эта формула для решения градиента может быть расширена как:

∇vπ(s0)=Eπ[γtGt∇logπ(at|st;w)]

Формула обновления:

θt+1=θt+αGt∇logπ(at|st;w)

Процесс вывода здесь опущен. Получив градиент целевой функции, мы можем напрямую найти экстремальное значение в соответствии с градиентом. Та часть, о которой мы действительно заботимся, на самом деле ищет градиент внутри, поэтому, когда общая цель достигает максимума, политика также достигает максимального значения, поэтому градиент целевой функции может быть передан обратно в модель для использования. Поскольку логарифмическая функция не изменяет монотонность функции и влияет на последний шаг оптимальной стратегии, мы можем напрямую моделировать logπ(a|s;w). Этот метод называется REINFORCE.

Конечно, с этим алгоритмом все еще есть некоторые проблемы. Например, Gt внутри тоже получается методом Монте-Карло. Как и метод Монте-Карло, он имеет проблему высокой дисперсии.Чтобы решить проблему высокой дисперсии, некоторые люди предлагают построить модель базовой линии, чтобы каждый Gt вычитал число базовой линии, тем самым уменьшая дисперсию модели. Формула обновления:

θt+1=θt+α(Gt−b(St))∇logπ(at|st;w)

8.3.3 Actor-Critic

Поскольку есть метод Монте-Карло, основанный на Policy-Gradient, должен быть и метод TD. Этот подход называется подходом актера-критика. Этот метод состоит из двух моделей, в которых Актер отвечает за моделирование Политики, а Критик отвечает за моделирование функции ценности, поэтому формула алгоритма REINFORCE, основанная на приведенной выше базовой линии, принимает вид:

θt+1=θt+α(Rt+1+γˆv(st+1;w)−ˆv(St;w))∇logπ(at|st;w)

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

В общем случае (Rt+1+γˆv(st+1;w)−ˆv(St;w)) в приведенной выше формуле представляет собой разницу между значением шага вперед и значением текущего анализа. Всем, кто играет в шахматы, известен принцип «играть в шахматы, чтобы увидеть три хода», то есть, иногда сталкиваясь с некоторыми игровыми состояниями, мы можем смотреть вперед и принимать решения в определенных условиях, поэтому обычно считается, что более Функция ценности одного шага будет выше и лучше, поэтому вышеуказанный термин обычно называют преимуществом.

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

Вышеизложенное является введением в «Безболезненное обучение с подкреплением».В качестве примера мы берем Snake Chess, чтобы представить базовую структуру обучения с подкреплением, MDP, и ввести несколько методов, известных модели - итерация стратегии, итерация значения и метод итерации обобщения. Есть несколько методов для неизвестных моделей - Монте-Карло, SARSA, Q-Learning и еще несколько более продвинутых методов расчета кратко представлены.Надеюсь, каждый сможет что-то из этого извлечь. В связи с отсутствием таланта и знаний автора неизбежны пропуски в написании, прошу меня простить.

об авторе

Фэн Чао, окончил Университет Китайской академии наук, руководитель отдела визуальных исследований исследовательской группы Юаньфуфу и один из руководителей фотопоиска Сяо Юаньсоу. Самостоятельно написано в 2017 г.«Легкое обучение глубокому обучению: основные алгоритмы и визуальная практика»Эта книга знакомит с базовой структурой глубокого обучения, деталями оптимизации моделей и настройки параметров, а также применением в поле зрения легким и юмористическим языком. С 2016 года он открыл на Zhihu собственную колонку: «Безболезненное машинное обучение», публиковал статьи, связанные с машинным обучением и глубоким обучением, и получил хороший отклик и был перепечатан многими СМИ. Неоднократно участвовал в мероприятиях по обмену технологиями сообщества.