Предварительная подготовка. Обзор

Обзор. Введение

Здравствуйте и вновь добро пожаловать на занятия по теме «Глубокое обучение с подкреплением: глубокое обучение на языке Python, часть 7».

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

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

Итак, что же охватывает данный раздел? В частности, мы поговорим о марковских процессах принятия решений (MDP). Это та структура, с помощью которой мы решаем задачи обучения с подкреплением. Мы поговорим о компонентах системы обучения с подкреплением – состоянии, среде, действиях, вознаграждениях, отдачах, эпизодах, обесценивании, стратегиях и функциях ценности. Далее мы рассмотрим конкретные решения марковских процессов принятия решений. Если помните, они делятся на три основные категории: динамического программирование, метод Монте-Карло и обучение методом временных разниц. У каждого их этих трёх методов есть свои сильные и слабые стороны. Одно предостережение: в общем виде они выглядят примерно одинаково, поэтому вам действительно нужен опыт написания кода для них, чтобы понять, в чём различие.

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

И наконец, поскольку тут глубокое обучение с подкреплением, которое объединяет как обучение с подкреплением, так и глубокое обучение, мы сделаем обзор и важнейших понятий глубокого обучения. В этом курсе мы используем понятия из ряда предыдущих курсов по глубокому обучению: свёрточные нейронные сети, рекуррентные нейронные сети, регрессию, классификацию и так далее. Вы должны знать их всех, а не только курс «Глубокое обучение, часть 1», который является лишь основой.

Обзор марковских процессов принятия решений

Сделаем обзор важнейших компонент системы обучения с подкреплением, в частности, в рамках структуры MDP, или марковских процессов принятия решений.

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

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

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

Вознаграждение – это то, что мы получаем на каждом этапе игры. Не забывайте, что вознаграждение является вещественным числом, а цель агента – получить максимальное общее будущее вознаграждение. Не забывайте также, что мы должны быть осторожны с определением вознаграждений: если у нас есть робот, пытающийся найти выход из лабиринта, и мы назначаем вознаграждение 0 за каждый шаг и 1 за выход из лабиринта, то вероятно, что робот никогда не выберется из него или сделает это очень неэффективно. Это связано с тем, что если робот видит одни лишь нули, то подумает, что 0 – это максимальное возможное вознаграждение, и решит, что не имеет значения, что он будет делать, поскольку все действия ведут к нулевому вознаграждению. Другая возможность состоит в том, что он сможет научиться находить выход из лабиринта, но только делая случайные движения, поскольку у него нет стимулов найти выход как можно быстрее. Лучшим решением будет назначить вознаграждение -1 за каждый шаг. В таком случае все вознаграждения будут отрицательными. Однако не забывайте, что это лишь числа на оси вещественных чисел; агент не придаёт особого значения положительности или отрицательности, как мы, а только старается максимизировать число. Другими словами, общее вознаграждение -3 лучше, чем общее вознаграждение -300. Таким образом, важно то, как мы определяем вознаграждения. Позже вы увидите, что OpenAI Gym фактически назначает нам вознаграждения. Обсуждалась, будет ли хорошей идеей назначать вознаграждения, отличные от тех, которые представляются по умолчанию. В реальном мире мы будем назначать вознаграждения, поскольку для наших агентов сделать это больше некому.

Далее идут вероятности перехода состояний. На первый взгляд они могут показаться не нужными. Представим мир-решётку. Если мы нажмём клавишу «вверх», то перейдём на следующее поле. Это поле должно всегда приносить одно и то же вознаграждение. Тут всё кажется определённым, и вы можете задаться вопросом, зачем моделировать это в виде вероятности? Ответ заключается в том, что не все среды детерминированы – сама по себе среда может быть источником случайности. Другим таким источником является то, что наше осознание состояния может быть несовершенным, отражая только частичное знание окружающей среды. Используем уже виденный нами пример и рассмотрим один кадр из игры Breakout. Из одного этого кадра мы не можем сказать, двигается ли шарик вверх или вниз, а следовательно, следующее состояние не определено.

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

p(sr|s, a).

Обратите внимание на несколько странные обозначения: мы используем s для обозначения следующего состояния в момент t + 1, но не пишем r, а просто r для вознаграждения в момент t + 1. То есть апостроф не обязательно означает момент t + 1.

Следующим идёт коэффициент обесценивания. Смысл его интуитивно понятен: мы скорее согласимся взять 100 долларов сейчас, а не ждать обещанные 100 долларов через 10 лет. Хотя мы хотели бы максимизировать своё будущее вознаграждение, чем дальше мы всматриваемся в будущее, тем труднее его спрогнозировать: может случиться множество вещей в промежуток между сегодняшним днём и 10 лет спустя. Поэтому, по всей видимости, мы должны обесценивать будущие вознаграждения, основываясь на том, насколько далеко в будущем мы их получим. Коэффициент обесценивания обозначается γ.

Отсюда мы можем определить отдачу:

Это приводит нас к следующему понятию – функции ценности. Поскольку вознаграждения имеют вероятностную природу, а отдача – это сумма вознаграждений, то отдача также имеет вероятностную природу. Это позволяет нам определить ожидаемую отдачу, находясь в состоянии s. Это и называется функцией ценности. Функция ценности – это оценка отдачи на данный момент:

Это приводит нас к следующему понятию – функции ценности. Поскольку вознаграждения имеют вероятностную природу, а отдача – это сумма вознаграждений, то отдача также имеет вероятностную природу. Это позволяет нам определить ожидаемую отдачу, находясь в состоянии s. Это и называется функцией ценности. Функция ценности – это оценка отдачи на данный момент:

Напомню, что функция ценности состояний обычно обозначается через V(s), а функция ценности действий – через Q(s, a):

Q обычно используется для изучения оптимальной стратегии, что называется проблемой управления. Нахождение же V(s) или Q(s, a) при заданной фиксированной стратегии называется проблемой предсказания. Не забывайте, что стратегия обычно обозначается символом π и показывает, какое действие надо предпринять, находясь в состоянии s. Она может быть детерминированной или вероятностной.

Функция Q лучше подходит к проблеме управления, поскольку индексируется по действиям и потому сообщает нам, каково лучшее действие в заданном состоянии, – мы просто берём максимум по всем действиям. С V(s) мы так сделать не можем. Вместо этого надо действительно выполнить действие, увидеть, в каком состоянии мы оказались, а затем найти максимум по всем возможным действиям после их выполнения. Как понимаете, это невозможно в реальном мире, поэтому мы всегда используем Q для нахождения оптимальных стратегий.

Ещё одним ключевым понятием является эпизод. Это похоже на одну партию в крестики-нолики. Как правило, нашему агенту потребуется сыграть много эпизодов, чтобы изучить оптимальную стратегию. Задачи с такими окончаниями называются эпизодическими задачами. Задачи же, которые могут длиться вечно, называются непрерывными. Состояние, при котором эпизод заканчивается или в котором нельзя предпринять никаких действий, называется конечным. Поскольку функция ценности определяется как ожидаемая отдача после попадания в состояние, а отдача – это сумма всех будущих вознаграждений, то ценность любого конечного состояния равна нулю.

Обзор методов Монте-Карло

В отличие от динамического программирования, метод Монте-Карло целиком посвящён обучению из опыта. Напомню, что функция ценности – это ожидаемое значение отдачи после попадания в состояние s. Напомню также, что любое ожидаемое значение может быть приближённо выражено через среднее значение выборки:

Q обычно используется для изучения оптимальной стратегии, что называется проблемой управления. Нахождение же V(s) или Q(s, a) при заданной фиксированной стратегии называется проблемой предсказания. Не забывайте, что стратегия обычно обозначается символом π и показывает, какое действие надо предпринять, находясь в состоянии s. Она может быть детерминированной или вероятностной.

Функция Q лучше подходит к проблеме управления, поскольку индексируется по действиям и потому сообщает нам, каково лучшее действие в заданном состоянии, – мы просто берём максимум по всем действиям. С V(s) мы так сделать не можем. Вместо этого надо действительно выполнить действие, увидеть, в каком состоянии мы оказались, а затем найти максимум по всем возможным действиям после их выполнения. Как понимаете, это невозможно в реальном мире, поэтому мы всегда используем Q для нахождения оптимальных стратегий.

Ещё одним ключевым понятием является эпизод. Это похоже на одну партию в крестики-нолики. Как правило, нашему агенту потребуется сыграть много эпизодов, чтобы изучить оптимальную стратегию. Задачи с такими окончаниями называются эпизодическими задачами. Задачи же, которые могут длиться вечно, называются непрерывными. Состояние, при котором эпизод заканчивается или в котором нельзя предпринять никаких действий, называется конечным. Поскольку функция ценности определяется как ожидаемая отдача после попадания в состояние, а отдача – это сумма всех будущих вознаграждений, то ценность любого конечного состояния равна нулю.

Обзор методов Монте-Карло

В отличие от динамического программирования, метод Монте-Карло целиком посвящён обучению из опыта. Напомню, что функция ценности – это ожидаемое значение отдачи после попадания в состояние s. Напомню также, что любое ожидаемое значение может быть приближённо выражено через среднее значение выборки:

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

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

Но что с проблемой управления? Тут мы вновь возвращаемся к идее итерации по стратегиям. Главные этапы следующие. Вначале мы инициируем случайную стратегию. Затем мы проигрываем эпизод, получаем отдачи и пересчитываем функцию ценности, основываясь на собранных отдачах. Это этап оценки стратегии. После этого мы выполняем этап совершенствования стратегии, точно такой же, как и в динамическом программировании: просто берём argmax. Обратите внимание, что в методе Монте-Карло используется Q(s, a), поскольку предварительный поиск с V(s) непрактичен: если у нас нет полного контроля над средой, мы не можем поместить нашего агента в любое избранное нами состояние, а значит, предварительный поиск не сработает. Что необычно и интересно в этом алгоритме, так это то, что поскольку мы обновляем стратегию при каждой итерации цикла, то собираемые нами отдачи на самом деле относятся к разным стратегиям. Однако это не играет никакой роли, и алгоритм Монте-Карло всё равно сходится.

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

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

Андрей Никитенко
Андрей Никитенко
Задать вопрос эксперту
Понравилась статья? Поделить с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: