Deep Q-Networks Explained — LessWrong |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2024-01-19 21:00 Примечание: это длинный пост. Пост построен таким образом, что не всем нужно читать все — разделы 1 и 2 представляют собой справочную информацию, которую можно пропустить, а разделы 4 и 5 посвящены техническим деталям, которые не все хотят или должны знать. Раздела 3 самого по себе достаточно, чтобы получить общее представление о DQN, если вы уже знаете, как работает обучение с подкреплением. Этот пост будет сосредоточен в основном на документе 2015 года , в котором добавлены некоторые дополнительные улучшения к документу 2013 года, а также предоставлена дополнительная информация, полезная для тиражирования. Это длинный пост, но он разбит на разделы, так что вы можете читать только те разделы, которые вас интересуют. Он начинается со справочной информации, затем переходит к DQN на трех уровнях детализации, каждый из которых основывается на предыдущем. . Вероятно, вам необходимо иметь базовое представление об обучении с учителем, чтобы получить максимальную пользу от этого поста. Вы должны понимать, что такое функция потерь, что такое градиентный спуск концептуально, и быть знакомы с концепцией нейронной сети. Контролируемое обучение с помощью нейронных сетей (раздел 1) — Справочная информация по глубокому обучению. Это можно смело пропустить, если вы уже понимаете, как работают задачи контролируемого обучения, такие как классификаторы изображений. Обучение с подкреплением (раздел 2) — Справочная информация по RL. Это можно смело пропустить, если вы уже знакомы с основами обучения с подкреплением, такими как состояния, действия и почему обучение с подкреплением сложнее, чем обучение с учителем. Обзор DQN (раздел 3) . В этом разделе DQN представлен на высоком уровне, без математических вычислений. Рекомендую всем прочитать этот раздел. Вы можете остановиться на этом или перейти к разделу 4, если хотите понять лежащую в его основе математику. Техническое объяснение DQN (раздел 4). Этот раздел основан на разделе 3 и включает алгоритмы и уравнения, обеспечивающие работу DQN. Вы можете пропустить этот раздел, если вам просто нужен общий обзор того, что такое DQN — что, но не как. Репликация DQN (раздел 5). Этот раздел основан на разделе 4 и включает советы и рекомендации по работе DQN в коде. Я рекомендую читать этот раздел только в том случае, если вы заинтересованы в самостоятельном воспроизведении этой или подобных статей. Дальнейшие улучшения (раздел 6). В этом разделе рассказывается об улучшениях, которые были внесены в направление исследований DQN с момента выхода оригинальных статей DQN. Если эта тема вас интересует, вы можете пропустить разделы 4 и 5 и все равно понять этот раздел. Независимо от того, как далеко вы продвинулись, отзывы, безусловно, приветствуются — одна из целей этого поста — проверить, готов ли я выполнять дополнительную работу по дистилляции, поэтому, если вы нашли это полезным (или бесполезным), я буду рад услышать об этом! Контролируемое обучение с использованием нейронных сетей (раздел 1) Чтобы понять контролируемое обучение, давайте начнем с игрушечной задачи, которую часто используют для сравнения алгоритмов и проверки их работоспособности, прежде чем применять их к более сложным областям. MNIST — это набор данных, состоящий из десятков тысяч рукописных цифр от 0 до 9. Каждый фрагмент данных содержит изображение в оттенках серого размером 28x28 пикселей и метку того, к какой цифре это изображение следует отнести. При подходе к этой проблеме, основанном на правилах, мы можем написать алгоритм, который пытается следовать за поворотами и краями цифр и сопоставляет их с тем, как цифры должны выглядеть. Но при этом возникают проблемы с цифрами, которые выглядят не очень красиво, например, нижняя левая 3. Вопрос, который мы можем задать - возможно ли вообще написать программу, которая бы правильно размечала эти изображения? Точнее, можем ли мы написать программу, которая будет правильно маркировать похожие изображения, которые мы раньше не видели? Ответ здесь должен быть да. Если бы было вычислительно невозможно принять 784 пикселя в качестве входных данных и вернуть цифру в качестве выходных данных, люди тоже не смогли бы этого сделать! Поэтому должен быть какой-то способ принимать эти пиксели в качестве входных данных и почти всегда возвращать правильный результат. Я говорю «почти», потому что вы можете себе представить, что я, возможно, очень плохо пишу цифры — возможно, я пишу 6, которая выглядит как 8. Это 6 или 8? Вы можете видеть, как это будет трудно сказать. К счастью для машинного обучения, люди также не набирают 100% результатов в этой задаче, поэтому, если бы мы могли справиться с ней так же хорошо, как люди, мы были бы счастливы. Но мы не совсем понимаем, как написать программу, которая сделает это надежно. Есть способы попытаться это сделать, но по состоянию на 2022 год ни один из них не будет столь же точным, как методы машинного обучения и, в частности, нейронные сети. Представьте, что у нас есть некая теоретическая математическая функция, которая принимает на вход 784 пикселя и выводит распределение вероятностей того, насколько вероятно, что изображение будет содержать каждую цифру от 0 до 9. Для этого существует некоторая оптимальная функция, но ее практически невозможно найти. Суть машинного обучения заключается в поиске способа аппроксимации этой функции — итеративного приближения к этой функции, пока наше приближение не станет достаточно хорошим, чтобы компьютер мог выполнить задачу. Обычный способ сделать это, а также способ, которым мы будем подходить к DQN позже, — это использование нейронной сети. Это 20-минутное видео представляет собой хорошее введение. Таким образом, обучение нейронной сети выполнению контролируемой задачи обучения включает в себя следующие этапы:
Помимо этого базового описания, есть много трюков, выходящих за рамки этой статьи. Если вы хотите узнать больше, этот курс на fast.ai считается хорошим ресурсом. В учебной программе для специалистов по машинному обучению этот курс упоминается как более математически строгий вариант. Я могу ручаться за качество первого курса, но второй не пробовал. А пока давайте просто примем как должное, что мы можем использовать для этого нейронную сеть. Таким образом, это основа глубокого обучения. Мы берем нейронную сеть, вводим в нее данные, заставляем сеть прогнозировать результат, а затем обновляем их таким образом, чтобы со временем улучшать прогнозы модели. Обучение с подкреплением (раздел 2) Обучение с подкреплением (RL) — совсем другое дело. В обучении с учителем мы пытались улучшить прогнозы, а в обучении с подкреплением мы хотим максимизировать будущую награду. Эта награда зависит от поставленной задачи. В среде, где сеть (называемая агентом в обучении с подкреплением) управляет роботом, что мы должны вознаграждать? Это зависит от того, чего мы хотим — это может быть максимальное пройденное расстояние, сальто назад или что-то еще, что мы можем указать. Для игр Atari, которые являются предметом сегодняшней статьи, максимальное вознаграждение — это игровой счет. Итак, каковы здесь входы и выходы? Deep Q-Networks являются примером безмодельного RL. В безмодельном RL у агента нет явной модели [2] правил игры или того, что он вообще играет в игру. Он учится, что делать, исключительно на основе входных данных, которые мы ему передаем, в данном случае пикселей из среды Atari. На каждом временном шаге мы передаем данные наблюдения в нейронную сеть, состоящую из пикселей игры Atari, и наша политика (представленная нашей нейронной сетью) сообщает нам, какое действие агент должен предпринять дальше. Затем среда (т. е. игра Atari) возвращает нам текущую награду, полученную нами за предыдущее действие, а также наблюдение следующего временного шага. Примечание. При изучении обучения с подкреплением вы можете услышать ссылки на наблюдения или состояния. Технически состояние — это полное описание мира, тогда как наблюдение — это частичное описание. Когда вы рассматриваете шахматную доску, вы видите ее состояние. Когда вы рассматриваете покерную доску, вы замечаете наблюдение. Любая видеоигра, содержащая соответствующую закадровую информацию, также показывает вам только наблюдение. В литературе по обучению с подкреплением они часто используются как взаимозаменяемые, а их полнота или отсутствие определяются окружающей средой. Итак, мы имеем здесь набор пикселей в качестве входных данных и распределение вероятностей (MNIST) или ожидаемое будущее вознаграждение (Atari) в качестве выходных данных. Это начинает во многом напоминать нашу проблему MNIST.
Таким образом, мы свели нашу проблему обучения с подкреплением к задаче обучения с учителем! Мы даже можем использовать один и тот же тип сети, известный как сверточная нейронная сеть , для решения задач MNIST и Atari. Итак, проблема обучения с подкреплением решена, верно? Ну... не совсем. Есть еще несколько проблем, над которыми нам нужно работать. Предположения о данных. При обучении с учителем мы предполагаем, что входные данные независимы и одинаково распределены. В MNIST, если первое изображение имеет цифру 3, это не имеет никакого отношения к тому, каким будет следующее изображение. Они также одинаково распределены: если у вас есть набор данных, состоящий из 50% кошек и 50% собак, предполагается, что данные будут взяты из этого распределения. Это не так в играх Atari. Если я сделаю ход в игре Atari, это напрямую повлияет на следующий ввод, который я получу. Кроме того, базовое распределение постоянно меняется. Если я играю в Space Invaders, я никогда не увижу игровое состояние, в котором половина кораблей исчезла, если только я не смогу сначала сбить другую половину, что ограничивает возможные наблюдения, которые я мог бы получить. Награда скудная. Всякий раз, когда MNIST угадывает изображение случайным образом, он сразу же узнает, где что-то пошло не так и что нужно изменить, чтобы улучшить себя. В большинстве игр Atari вероятность того, что случайное действие приведет к получению награды, мала. Мы получаем вознаграждение только в том случае, если успешно набираем очки. Если мы не набираем очков, что нам делать тогда? А для подсчета очков часто требуется несколько совместных действий. В Space Invaders вам нужно переместить корабль в нужную точку, нажать кнопку огня и пуля поразит корабль. В Pong вам нужно вывести ракетку противника из позиции, перехватить мяч на своей стороне поля, а затем запустить мяч мимо него, чтобы забить. Оптимальная политика неизвестна. И последнее, но не менее важное: всякий раз, когда MNIST угадывает изображение неправильно, ему сообщается правильный ответ. В игре Atari агент не знает, что произошло бы, если бы он выбрал иное, потому что мы, программисты, не знаем себя. Таким образом, агенту необходимо научиться действовать хорошо, не сообщая ему, каким будет оптимальный прогноз.
Именно эти три проблемы сделали обучение с подкреплением такой сложной проблемой. Только когда появилась Deep Q-Networks , эти проблемы были решены впервые. Обзор DQN (раздел 3) Есть две статьи, на которые обычно ссылаются, когда говорят о Deep Q-Networks (DQN). Один из них датирован 2013 годом ( Игра в Atari с помощью обучения с подкреплением ), а другой — 2015 года. ( Контроль на человеческом уровне посредством обучения с подкреплением ). Для наших целей мы будем использовать статью 2015 года. Оба очень похожи, но статья 2015 года включает в себя пару дополнительных приемов для улучшения алгоритма и упоминает больше гиперпараметров [ 4] , используемых для обучения сети. Так как же работает DQN? DQN использует довольно старую идею под названием Q-Learning — математический алгоритм, который существует уже несколько десятилетий. Представьте себе оптимальную функцию для прогнозирования ожидаемой суммы вознаграждений в среде, называемой Q-функцией . Чтобы максимизировать будущую награду от этой среды, мы просто выполняем любое действие, которое, как подсказывает нам Q-функция, приведет к наибольшему будущему вознаграждению. Нахождение этой функции вычислительно сложно для любых реальных задач. Однако, как мы помним из раздела обучения с учителем, суть машинного обучения заключается в аппроксимации оптимальной функции. Уоткинс и Даян опубликовали в 1992 году доказательство того, что Q-Learning будет сходиться к оптимальным значениям действий, пока мы неоднократно отбираем все действия во всех состояниях , а возможное пространство действий дискретно [5] . На самом деле мы не можем выбрать все возможные состояния игры, поэтому идея DQN состоит в том, чтобы подойти достаточно близко к этому предположению, чтобы мы могли сойтись к Q-функции, которая достаточно хороша, чтобы хорошо играть в игру. В частности, мы хотим выполнить выборку широкого распределения состояний игры, время от времени выполняя случайные действия, и мы хотим выполнять их неоднократно. Вскоре мы увидим больше об этом. Согласно нашему другому предположению, все игры Atari дискретны, поскольку есть только ограниченное количество кнопок, которые вы можете нажать, а джойстик либо нажимает в определенном направлении, либо нет. Статья находится здесь , но я рекомендую ее только в том случае, если вы глубоко заинтересованы в математике — остальную часть этого документа можно понять и без нее, и я написал работающий агент DQN, даже не читая доказательство сходимости. Что касается самой программы, мы собираемся разбить ее на части — настройка , часть, в которой агент действует в окружающей среде ( фаза действия ), и часть, в которой агент тренируется, чтобы добиться большего успеха в будущем ( фаза обучения ). . Эти последние две фазы могут быть полностью отделены друг от друга [6] , но в статье DQN на первом месте стоит фаза действия. При настройке создаем следующие вещи:
На актерском этапе мы выполняем следующие действия:
На этапе действия создаются данные для использования на этапе обучения, где агент учится действовать лучше. Прежде чем перейти к этапу обучения, давайте вернемся к одному из ограничений глубокого обучения из предыдущего раздела. В частности, при обучении с учителем мы предполагаем, что входные данные независимы и одинаково распределены, хотя в видеоигре это определенно не так. Итак, как мы можем извлечь уроки из результатов, которые получаем от выполнения действий, независимо от только что предпринятых нами действий? Ответом на обе эти проблемы является использование буфера воспроизведения опыта . Всякий раз, когда мы предпринимаем действие, мы сохраняем наблюдение в момент t, действие, награду, независимо от того, выполнен эпизод или нет, а также наблюдение в момент t+1 в этом буфере воспроизведения. Затем, когда приходит время улучшить нашу политику посредством обучения, мы берем пакет из 32 случайных действий из нашего буфера опыта и используем их для обучения агента. Подумайте о тренировочном процессе следующим образом. Вы учитесь играть в шахматы, поэтому начинаете играть. Поначалу ты не очень хорош, но записываешь все свои движения. Затем после каждой игры вы просматриваете случайную выборку этих ходов [8] и спрашиваете себя, какой ход вам следовало сделать. Со временем вы научитесь лучше оценивать шахматные позиции и сможете применять эти знания в своих играх. Агент проводит это обучение каждые несколько шагов, а не между играми, но общая идея та же. Это имеет несколько преимуществ. Во-первых, это эффективно: мы можем учиться на опыте снова и снова, а не один раз. Уоткинс и Даян показали, что мы можем гарантировать, что наша Q-функция будет сходиться, только если мы неоднократно выбираем все действия во всех состояниях. Это невозможно, но мы можем приблизиться к этому идеалу, многократно отбирая все наши кадры в ходе обучения. Во-вторых, это делает входные данные для обучения независимыми. Наконец, хотя входные данные для обучения не распределяются одинаково, это определенно расширяет набор игровых состояний, которые мы можем использовать в любой момент. Это огромное улучшение по сравнению с простым обучением на предыдущем состоянии, и это крупный прорыв в обеспечении возможности обучения с подкреплением в таких сложных областях, как Atari, вообще. После этого мы можем рассмотреть этап обучения. На этапе обучения мы делаем следующее:
При изучении этого алгоритма меня смущала одна часть: почему мы пытаемся минимизировать ошибку прогнозирования, а не максимизировать будущую награду. Дэвид Куарел любезно объяснил мне, почему это так. Представьте, что вы всегда точно знаете, какую награду (включая сумму будущих наград) вы получите за любое действие в игре Atari. В этом случае оптимальное действие тривиально — с вероятностью 1 предпринять любое действие, которое максимизирует вашу будущую награду. Выбор действия, которое принесет наибольшую будущую награду, учитывая ваши текущие знания, тривиален; точное знание того, какие действия принесут какое вознаграждение, является сложной задачей. В результате обучение Q-сети сводится к минимизации ошибки прогнозирования, как и задача обучения с учителем. Если ход лучше, чем предсказывала Q-сеть, потери сети увеличиваются, потому что мы хотим обновиться в пользу назначения более высокого ожидаемого вознаграждения за этот ход с учетом этого состояния в будущем. У меня также было интуитивное ощущение, что увеличение функции потерь «наказывает» агента за нахождение действительно хорошего хода, и я не понимал, почему мы хотели наказать за такое поведение. Этот антропоморфизм сбил меня с пути — будьте осторожны, не становитесь его жертвой! Функция потерь не наказывает агента, она просто предоставляет обратную связь, которую агент использует для улучшения себя посредством градиентного спуска. И вот оно! Подводя итог нашему алгоритму, наш агент сначала принимает текущее наблюдение, выводит действие и получает информацию о том, что произошло (награда и следующее наблюдение) из окружающей среды. Затем он учится, случайным образом выбирая выборку своих предыдущих ходов, проверяя, насколько правильным или неправильным было предсказание будущего вознаграждения, и обновляя его в пользу улучшенных прогнозов. Этот алгоритм в сочетании с буфером воспроизведения опыта и целевой сетью для уменьшения расходящегося поведения достаточен для обучения агента достижению сверхчеловеческой игры в некоторых играх Atari. В этом разделе я намеренно не стал раскрывать некоторые технические подробности. Если все, что вам нужно знать, это то, как DQN и обучение с подкреплением работают на высоком уровне, вы можете остановиться на этом или перейти к разделу 6, чтобы получить краткий обзор того, что изменилось с 2015 года. Но что такое Q-функция с математической точки зрения? Почему нас волнует, закончился эпизод или нет, когда мы сохраняем его в буфере воспроизведения? Что нам делать, чтобы загрузить буфер воспроизведения до того, как в нем будет достаточно сэмплов? Что такое эпсилон-жадная стратегия и почему она имеет значение? Если вас интересуют технические подробности, читайте раздел 4. Техническое объяснение DQN (раздел 4) В предыдущем разделе мы сознательно избегали математических вычислений, но здесь мы собираемся углубиться. Из нашего последнего раздела мы знаем, что DQN работает, сходясь к идеальной Q-функции, которая максимизирует общее вознаграждение. Чтобы максимизировать общую награду, мы учитываем текущую награду плюс сумму ожидаемых наград в будущем, с настоящего момента и до конца игры. Мы также применяем к этой сумме ставку дисконтирования, называемую гаммой (по умолчанию 0,99). При гамме 0,99 временной шаг t+n дисконтируется на 0,99н, поэтому постоянная награда, равная 1 за каждый временной шаг, будет равна 1 + 0,99 + 0,9801 и так далее. Q-функции работают по аналогичному алгоритму, целью которого является максимизация суммы дисконтированных наград с этого момента и до конца игры. Идеальная Q-функция вопрос*(с,а) можно записать следующим образом: Где ? — наша политика , ? наша ставка дисконтирования, и рт — награда в момент времени t. Стоит отметить, что вопрос*(с,а) означает оптимальную Q-функцию, тогда как вопрос(с,а) без звездочки представляет текущую Q-функцию. Цель состоит в том, чтобы вопрос(с,а) постепенно прийти к нашему оптимальному вопрос*(с,а). В DQN политика — это просто нейронная сеть, в которую мы передаем наблюдения. Наша оптимальная Q-функция равна политике , которая производит наилучшую возможную сумму вознаграждений для конкретной пары состояние-действие. Другими словами, учитывая то, что только что произошло, какому правилу мы можем следовать, чтобы получить максимально возможную награду с этого момента? Политика — это правило, которое сообщает нам, какие действия следует предпринять с учетом наблюдения, и в DQN эта политика изучается нейронной сетью. Таким образом, эта теоретически оптимальная политика – это то, к чему мы пытаемся прийти. Но как мы узнаем о наградах в будущем? Благодаря буферу воспроизведения опыта мы можем взять образцы того, что уже произошло, и посмотреть, что произошло на один временной шаг в будущем. Затем мы аппроксимируем нашу ошибку прогноза, используя нашу функцию потерь : Это выглядит сложно, но на самом деле все проще, чем кажется. Давайте вернемся к нашему нематематическому описанию из раздела 3 и немного изменим его:
Мы можем видеть, как эта функция соответствует этому. Функция потерь для заданного набора параметров ?(я) — это среднеквадратическая ошибка прогноза будущей награды целевой сетью минус прогноз Q-сети. Целевая сеть имеет доступ к большему количеству информации, чем Q-сеть, и, следовательно, является лучшим предсказателем. Это улучшает Q-сеть, которая затем обновляет целевую сеть каждый раз. С шаги с тем, что он узнал. По сути, Q-сеть движется к более информированной копии самой себя, учась предсказывать все дальше и дальше в будущее. Итак, теперь, когда мы знаем, как работает алгоритм, давайте взглянем на сокращенную версию полного алгоритма, из которой удалены некоторые детали программирования.
И вот оно! DQN использует две копии нейронной сети для постоянного совершенствования и приближения к идеальной Q-функции для конкретной среды. Мы используем буфер воспроизведения опыта, чтобы приблизительно удовлетворить требования контролируемого обучения (независимые, одинаково распределенные входные данные) и Q-функций (возможность многократно выполнять все действия во всех состояниях) достаточно точно, чтобы позволить математическим предположениям выполняться в реальной жизни. И теперь вы знаете, как работает DQN! Но что, если вы хотите это запрограммировать? Тогда вам нужно будет знать более мелкие детали: из чего именно состоит наблюдение? Как мы обрабатываем входные данные Atari? Каковы наши гиперпараметры и какие именно слои есть в нашей нейронной сети? Все эти и другие подробности читайте в разделе 5! Репликация DQN (раздел 5) Полный псевдокод для DQN, включая достаточно деталей, чтобы следовать реальному коду, выглядит следующим образом. Я предлагаю следовать вместе с реализацией на этом этапе. Реализацию CleanRL можно найти здесь: https://github.com/vwxyzjn/cleanrl/blob/master/cleanrl/dqn_atari.pyМою реализацию можно найти здесь: https://github.com/JayBaileyCS/RLAlgorithms/blob/main /DQN_From_Scratch_Atari.ipynbОсновное различие между этими двумя реализациями заключается в том, что я написал свой собственный немного более медленный, но гораздо менее сложный буфер воспроизведения. Если вас интересует максимальная производительность, используйте CleanRL. Если вы хотите узнать немного больше о том, как готовят хот-доги, воспользуйтесь моим. Я также использовал свою реализацию в качестве образца для этой статьи, так что, возможно, за ней будет немного легче следовать. Стоит отметить: обе эти реализации включают некоторые улучшения гиперпараметров по сравнению с документом 2015 года, поэтому, если вы хотите конкретно воспроизвести статью 2015 года, обратите пристальное внимание на гиперпараметры ниже в этом разделе! Реализация CleanRL слева, моя справа. Красная линия представляет средние результаты статьи за 2013 год. Как видите, с 2013 года мы внесли некоторые изменения, которые значительно улучшили результаты. Вкратце, эти изменения включают добавление целевой сети, использование оптимизатора Адама вместо RMSProp и настройку гиперпараметров. Чтобы повторить статью, нам нужно более подробно рассмотреть алгоритм, структуру нейронной сети, гиперпараметры и, наконец, среду Atari. Мы сделаем каждое из них по очереди. Не стесняйтесь следовать желаемой реализации! Алгоритм DQN
Нейронная сеть Сверточная нейронная сеть состоит из следующего: Первый слой: принимает на вход тензор 4x84x84. (Четыре предварительно обработанных кадра Atari). Применяет сверточный слой из 32 фильтров 8x8 с шагом 4, за которым следует нелинейность выпрямителя [10] (torch.nn.ReLU). Второй слой: сверточный слой из 64 фильтров 4x4 с шагом 2, за которым следует ReLU. Третий слой: сверточный слой из 64 фильтров 3x3 с шагом 1, за которым следует ReLU. Четвертый уровень: Полностью связный слой с входами 64*7*7 и 512 выходами. Последний уровень: 512 входов, N выходов, где N — количество допустимых действий в среде. Гиперпараметры В документе имеются следующие гиперпараметры:
Окружающая среда Атари Если вы прочитаете статью 2013 или 2015 года, вы заметите, что они относятся к функции ?, которая предварительно обрабатывает кадры Atari. В настоящее время мы делаем это, добавляя обертки в среду спортзала OpenAI , используя Atari API , поэтому все, что делает ?, теперь находится в функции make_env . Если вы хотите написать свою собственную, вот оболочки, которые вы захотите изучить, или функциональные возможности, которые вы хотите воспроизвести:
Эти обертки для спортзала являются стандартными для решений Atari RL, а не только для DQN. Дальнейшие улучшения (раздел 6) Статья 2015 года далека от завершения истории. За последние семь лет произошло много улучшений в обучении с подкреплением и DQN. Вот далеко не исчерпывающий список, чтобы узнать больше. ApeX DQN берет Rainbow DQN и превращает ее в распределенную систему, содержащую одного обучающегося (выполняет этап обучения) и десятков или сотен участников. (Выполняет актерскую фазу) Я не вникал в это подробно, но подозреваю, что это работает из-за одного из улучшений Rainbow, известного как приоритетное воспроизведение. Приоритетное воспроизведение выбирает кадры из буфера воспроизведения в соответствии с тем, какую информацию агент может извлечь из этих кадров, вместо обычного DQN, выбирающего кадры случайным образом. Это позволяет учащемуся выбирать только лучшие кадры, что необходимо, поскольку сотни актеров ApeX вместе проигрывают больше кадров, чем учащийся мог бы когда-либо изучить. Самопрогнозирующие представления (SPR) добавляют в Rainbow цели с самоконтролем и пополнение данных, что значительно повышает эффективность выборки DQN. Это было добавлено в MuZero (преемник AlphaGo) как часть недавнего алгоритма EfficientZero . Если вы дочитали до этого места, спасибо, что остаетесь со мной! Надеюсь, вы узнали больше об обучении с подкреплением и DQN. Этот пост также был написан для того, чтобы проверить, насколько я готов к выделению тем исследований в области ИИ, поэтому мне бы хотелось услышать, что вы думаете об этой статье, о каких-либо камнях, с которыми вы могли столкнуться, или о любых обходных путях, которые вы считали ненужными.
Источник: www.lesswrong.com Комментарии: |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||