Как использовать обучение с подкреплением на основе DQN с использованием нескольких исполнителей.

Обучение с подкреплением приобрело большую популярность после исторической победы AlphaGo над чемпионом по го (человеческого) и совсем недавно после того, как OpenAI в сотрудничестве с Blizzard объявила о своей тестовой среде StarCraft 2.

Большинство из этих недавних достижений стало возможным благодаря архитектуре под названием «Deep Q-Network». Эта архитектура обеспечивает сверхчеловеческую производительность в играх Atari, собирая воспоминания, пробуя различные сценарии и записывая полученные награды, а затем используя эти воспоминания для обучения нейронной сети.

Актер-критик асинхронного преимущества

Но что будет после? Та же компания, которая отвечает за DQN, DeepMind, недавно представила архитектуру A3C. Он должен быть быстрее, проще и надежнее, чем DQN, а также обеспечивать лучшие результаты. Но как?

Вы можете определить самую большую разницу, посмотрев на название этой загадочной архитектуры: Асинхронная, «Актер-критик». В DQN один агент (или так называемый работник) взаимодействует с единой средой, генерируя данные для обучения. A3C запускает несколько рабочих асинхронно (столько, сколько может обработать ваш ЦП) и позволяет им всем взаимодействовать со своим собственным экземпляром среды. Они также тренируют свою собственную копию сети и делятся своими результатами в конце моделирования.

Преимущество

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

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

Если вам интересно увидеть реализацию A3C вместе с гораздо более подробным объяснением двух оставшихся A A3C, я настоятельно рекомендую взглянуть на этот средний пост Артура Джулиани!

Что будет дальше?

В начале этого года NVIDIA представила следующее поколение A3C, GA3C, которое также использует GPU. Вместо того, чтобы копировать всю сеть для каждого отдельного рабочего, сеть здесь остается глобальной на GPU.

Из-за задержки, возникающей при копировании данных из CPU в GPU и обратно, это делает небольшие сети примерно в 6 раз быстрее. Однако для более крупных сетей этот метод дает те же результаты примерно в 45 раз быстрее, согласно статье.

Спасибо за внимание! Теперь вы знаете, что такое A3C! Вы также узнали о его преимуществах перед DQN и его следующем развитии: GA3C. Следуйте за мной на Medium, чтобы получить более подробные объяснения ваших любимых сетей и алгоритмов!