Введение

В последние годы популярным способом оценки производительности агентов на основе обучения с подкреплением был набор игр для Atari 2600. Этот пакет, как известно, использовался для оценки прогресса в создании все более интеллектуальных агентов.

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

Мы начнем с повторной реализации Deep-Q Learning, чтобы играть в игры Atari. На втором этапе мы будем стремиться уменьшить пространство состояний с помощью простого механизма фокусировки. Такой подход называется активным видением. На рисунке 0 ниже вы можете увидеть игры (Pong, Breakout, Space Invaders), а белым прямоугольником отмечены примеры приоритетных областей.

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

Формулировка проблемы

Краткое введение в глубокое обучение с подкреплением

DQN (глубокое Q-обучение) — это вариант Q-обучения, который представляет собой метод решения марковских процессов принятия решений (MDP) путем изучения ценности действий на основе опыта. Для каждой временной метки t среда дает агенту состояние St, которое представляет собой кадр RGB, и вознаграждает Rt. На основании этого агент выбирает действие At. Взамен среда дает агенту новое вознаграждение Rt+1 и его новое состояние St+1. И этот цикл повторяется до тех пор, пока агент не достигнет терминального состояния, знаменующего конец эпизода. Цель агента — максимизировать отдачу Gt, которая представляет собой сумму дисконтированных вознаграждений за эпизод. Агент улучшает свою производительность, изучая функцию ценности Q(St, At), которая предсказывает для каждой пары состояние-действие (St, At) будущую сумму вознаграждений со скидкой, используя архитектуру глубокой нейронной сети для аппроксимации Q.

Агент обучения с подкреплением DQN популяризировался благодаря успешным демонстрациям игр Atari, таких как Pong[2]. Чтобы проиллюстрировать проблему, мы обсудим современную DQN, использующую игру Atari в качестве среды. [2]. Игра дает агенту состояние в виде цветного кадра, обычно 210 * 160 пикселей RGB с частотой 60 Гц. Чтобы уменьшить размерность входных данных, состояние преобразуется в полутоновое изображение и уменьшается в масштабе. Затем агент превращает это состояние в предварительно обработанное состояние, содержащее 4 последних предварительно обработанных кадра. Сверточная нейронная сеть (CNN) принимает этот ввод и извлекает абстрактные функции внутри скрытых слоев. Затем он передает данные полностью подключенному слою (FC), который посредством градиентного спуска учится предсказывать значения Q(s) внутреннего состояния для каждого действия.

Мотивация

В последние годы агенты DQN успешно работали с набором игр Atari ([2]). Например, знаменитая игра Pong отображается с разрешением 210x160 пикселей RGB, что равно 98 кБ. Для сравнения, современная камера может снимать изображения с разрешением 4096x2168 пикселей RGB, что составляет 27 МБ (примерно в 300 раз больше возможностей). В глубоком обучении чем больше пространство признаков, тем больше образцов требуется для изучения целевой функции. Вот почему даже для тех архаичных игр Atari уменьшение разрешения ввода и использование ядер GPU вполне стандартно. Другая проблема заключается в том, что резкое уменьшение разрешения изображения может привести к потере полезных деталей, а значит и информации. Так как же DQN может справиться с размером входного пространства без потери информации?

Оман (Дж. Оман, сентябрь 2020 г.) [4] дает вдохновляющий ответ, представляя Активное видение. В активном видении агент перемещает свою точку зрения, чтобы воспринимать только ту визуальную информацию, которая необходима для предшествующей цели. Одним из примеров робототехники может быть монокулярный робот в трехмерном мире, который действительно движется, чтобы улучшить свое восприятие глубины. В оригинальной статье исследователи замаскировали зрение агента до 35% от его первоначального размера. И агент учится динамически перемещать фокус своего внимания, чтобы воспринимать окружающую среду, а также учится играть. Этот агент теперь будет называться активным агентом. В этой статье доказано, что активный агент способен активно отслеживать в режиме реального времени наиболее важные объекты в играх Atari.

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

Лог-полярная визуализация — это метод представления изображений таким образом, чтобы разрешение было максимальным в центре и линейно уменьшалось к границе кадра. Метод логарифмической полярности представляет собой пространственно-вариантное отображение разрешения, которое обеспечивает эффективное с вычислительной точки зрения представление изображения. Этот метод используется в компьютерном зрении с 70-х годов, и было доказано, что он моделирует преобразование изображения между сетчаткой и зрительной корой млекопитающих. (В. Дж. Травер и А. Бернардино, 2009 г.) [5].

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

Оценка

Эмуляторы игр Atari 2600 представляют собой готовые к использованию среды, и их использование стало историческим для DQN. Производительность модели будет оцениваться по производительности агента в играх Atari и сравниваться с агентом из оригинальной статьи. Агент из оригинальной статьи послужит основой для наших экспериментов. В этой статье для оценки алгоритма используются 3 игры Atari (Pong, Breakout и Space Invaders). Производительность агента выражается как средний балл по 100 эпизодам. Мы также можем использовать результаты более традиционных игр Double DQN для Atari, чтобы интерпретировать наши результаты. Исследователи представили оценку за первые тренировочные часы, пояснив, что 1 секунда соответствует 1000 шагам. Поэтому мы можем сказать, что 3 тренировочных часа соответствуют примерно 10 миллионам шагов.

Предполагаемый вклад

Предполагаемый вклад этой диссертации состоит в том, чтобы объединить механизм фокусировки с эффективным представлением изображения. Кроме того, мы бы поэкспериментировали с несколькими лог-полярными преобразованиями с разными гиперпараметрами и сравнили их производительность. Наконец, мы сделаем исходный код доступным через GitHub.

Обзор литературы

Предварительная обработка

Кадры Atari представляют собой изображения размером 210x160 пикселей с палитрой из 128 цветов[2]. Это может потребовать вычислительных ресурсов. Чтобы уменьшить размерность входных данных, состояние преобразуется в изображение в градациях серого и обрезается до области размером 84x84 пикселя, которая захватывает игровое действие. Затем эти уменьшенные кадры группируются по 4, чтобы генерировать входные данные для обучения нейронной сети (см. рис. 5).

Двойной DQN

Поскольку цель нейронной сети фактически движется в процессе обучения, оптимизация веса может быть очень нестабильной[2]. Вот почему обычно используется метод, называемый Double DQN. Существует онлайн-сеть θ, которая используется для действий в игре и обновляется на каждом этапе. Целевая сеть θ’, которая использовалась в качестве цели для вычисления функции потерь. Последний обновляется только с более низкой фиксированной скоростью, которая является гиперпараметром.

Исследование и эксплуатация

Был введен компромисс между разведкой и эксплуатацией[2]. С вероятностью ϵ, гиперпараметром, разыгрывается случайное действие, в противном случае действие исходит из сети. ϵ обычно инициализируется равным 1 и постепенно уменьшается по мере того, как агент учится действовать оптимально. Таким образом, агент начинает в основном с изучения, потому что его политика слаба, и использует все больше и больше по мере улучшения политики.

повтор опыта

Обучение на последовательном опыте, который сильно коррелирует, добавляет много нестабильности. Именно поэтому был введен Experience Replay[2]. Опыт сначала сохраняется в памяти воспроизведения при взаимодействии с окружающей средой. И, чтобы декоркоррелировать выборки, как в стохастическом градиентном спуске, опыты отбираются случайным образом для выполнения шага оптимизации. Поскольку эта память воспроизведения имеет фиксированный размер, самые старые события регулярно отбрасываются, чтобы освободить место для самых новых.

Приоритетное повторение опыта (PER)

Вместо того, чтобы выбирать опыт случайным образом, они выбираются на основе их приоритета [6], который растет с величиной их соответствующей ошибки (временной разницы). Эта неравномерная выборка вносит смещение, которое численно корректируется во временных различиях. Этот метод уменьшает количество шагов, необходимых для изучения оптимальной политики.

Распределенное воспроизведение с приоритетом (DPER)

DPER расширяет приоритетное воспроизведение опыта до распределенной настройки, делая его легко масштабируемым за счет нескольких ключевых модификаций. Этот упомянутый подход называется Ape-X[1]. DPER разделяет обучение и накопление опыта (см. рис. 6). DPER содержит 3 основных компонента: актеры, учащийся и общую память воспроизведения. Актеры играют со своим собственным компромиссом между разведкой и эксплуатацией, собирают опыт, вычисляют первоначальные приоритеты и записывают их в общую память. Ученик вычисляет ошибки, а затем настраивает приоритеты в памяти воспроизведения. Он отбирает опыт в соответствии с обновленными приоритетами и обновляет сеть.

Контроль на уровне человека с помощью глубокого обучения с подкреплением

«Управление на уровне человека посредством глубокого обучения с подкреплением» (В. Мних, 2015) [6] — наиболее влиятельная работа, сочетающая Q-обучение, безмодельный алгоритм, используемый для процессов принятия решений, и глубокие нейронные сети, которые были успешными только в обучении с учителем. . Благодаря одной единственной архитектуре он превзошел большинство параллельных моделей в самых разных задачах и даже достиг человеческого уровня в некоторых играх. Исследователи объясняют, что изучение функции Q на основе опыта нестабильно из-за корреляции между последующими состояниями и того факта, что небольшие изменения Q могут резко изменить политику, которая меняет распределение данных. Чтобы решить эту проблему, в документе представлено воспроизведение опыта и показано его значение в DQN. В документе показано, что нейронная сеть способна обучаться хорошему представлению только благодаря вознаграждению и многомерному сенсорному вводу.

Применение глубокого q-learning для контроля зрения в средах Atari

Исследовательская работа под названием «Применение глубокого Q-обучения для управления зрением в средах Atari» (Дж. Оман, сентябрь 2020 г.)[4] вдохновила на идею объединения активного зрения с обучением с подкреплением. Теперь агент изучает Qn функцию ценности для естественных действий и Qv функцию ценности для визуальных действий. Авторы представляют архитектуру глубокого обучения для активного агента, которую они называют Myopic DQN (MyDQN). В нем есть визуальные действия, которые перемещают фокус, а также естественные действия, которые являются действиями из игры. Архитектура глубокого обучения включает в себя общие слои свертки (Convolutional Torso) и два набора полностью связанных слоев: Natural Head выводит Qn, а Vision Head выводит Qv. Исследователи использовали технику DPER и GPU для ускорения процесса обучения. Хотя производительность агента оценивалась только в 3 играх (Pong, Breakout и Space Invaders), было бы интересно посмотреть, как активное зрение работает во всех 49 играх Atari. В некоторые игры можно играть, сосредоточив внимание на одном конкретном интересующем регионе, в то время как в другие требуется переключаться между несколькими регионами. Активное зрение было реализовано с размером области фокусировки 35%, а также 13%. Кроме того, в этой статье показано, что добавление слоя долговременной памяти (LSTM) повышает производительность агента Active Vision, особенно на Pong; эта архитектура называется архитектурой MyDRQN (R означает рекуррентный).

Обзор логарифмической визуализации для визуального восприятия

В документе, озаглавленном «Обзор логарифмической визуализации для визуального восприятия» (В. Дж. Травер и А. Бернардино, 2009 г.) [5], рассматривается применение логарифмической поляризации в компьютерном зрении и вводятся другие методы картирования, основанные на зрении центральной ямки. Исследователи объясняют, что это преобразование демонстрирует хорошие математические свойства (биологическое правдоподобие, инвариантность вращения и масштабирования…) и некоторые детали реализации. Кроме того, в документе отмечается отсутствие работы, показывающей взаимодействие между зрительным вниманием и логарифмическим зрением.

Рекуррентные модели зрительного внимания

«Рекуррентные модели зрительного внимания» (Мних, Владимир и др., 2014) [3] представляет новую модель рекуррентной нейронной сети, которая может извлекать данные из изображения или видео, обучаясь выбирать последовательность регионов или местоположений и обрабатывая только выбранные области в высоком разрешении. Подобно CNN, новая модель демонстрирует встроенный уровень трансляционной инвариантности, но объем выполняемых ею вычислений можно контролировать независимо от размера входного изображения. Используя методы обучения с подкреплением, рекуррентная модель может научиться отслеживать элемент без явного контроля. В этой статье представлен дополнительный подход к зрительному вниманию.

Первые результаты

Агент MyDQN

Нам удалось внедрить агент MyDQN, добавив активное видение в уже существующий агент Double DQN. Теперь агент изучает Qn функцию ценности для естественных действий и Qv функцию ценности для визуальных действий.

from gym import spaces
import torch.nn as nn
import torch.nn.functional as F

class ConvTorso(nn.Module):
    """
    convolutional torso
    """

    def __init__(self,
                 observation_space: spaces.Box):
        """
        Initialise the convolutional layers
        :param observation_space: the state space of the environment
        """
        super().__init__()
             
        # convolution layer
        self.conv = nn.Sequential(
            nn.Conv2d(in_channels=observation_space.shape[0], out_channels=32, kernel_size=8, stride=4),
            nn.ReLU(),
            nn.Conv2d(in_channels=32, out_channels=64, kernel_size=4, stride=2),
            nn.ReLU(),
            nn.Conv2d(in_channels=64, out_channels=64, kernel_size=3, stride=1),
            nn.ReLU()
        )
   
    def forward(self, x):
        return self.conv(x).view(x.size()[0],-1)
      
class NaturalHead(nn.Module):

    def __init__(self,
                 action_space: spaces.Discrete):
        """
        Initialise the fully connected layers for the natural actions
        :param action_space: the action space of the environment
        """
        super().__init__()
     
        # fully connected layer for natural actions  
        self.fc = nn.Sequential(
            nn.Linear(in_features=64*7*7 , out_features=512),
            nn.ReLU(),
            nn.Linear(in_features=512, out_features=action_space.n)
        )
        
    # compute value for natural actions
    def forward(self, conv):
        return self.fc(conv)


class VisionHead(nn.Module):

    def __init__(self,n: 5):
        """
        Initialise the fully connected layers for the visual actions
        :param n: number of visual actions  of the environment
        """
        super().__init__()

        # fully connected layer for natural actions  
        self.fc = nn.Sequential(
            nn.Linear(in_features=64*7*7 , out_features=512),
            nn.ReLU(),
            nn.Linear(in_features=512, out_features=n)
        )
        
    # compute value for natural actions
    def forward(self, conv):
        
        return self.fc(conv)


class ActiveDQN(nn.Module):
    """
    Active vision version of a Deep Q-Network. The architecture is the same as that described in the
    Activision DQN paper.
    """

    def __init__(self,
                 observation_space: spaces.Box,
                 action_space: spaces.Discrete, n_visual_actions:int):
        """
        Initialise the DQN
        :param observation_space: the state space of the environment
        :param action_space: the action space of the environment
        """
        super().__init__()
        assert type(
            observation_space) == spaces.Box, 'observation_space must be of type Box'
        assert len(
            observation_space.shape) == 3, 'observation space must have the form channels x width x height'
        assert type(
            action_space) == spaces.Discrete, 'action_space must be of type Discrete'
        # convolution layer
        self.conv = ConvTorso(observation_space)
        # fully connected layer for natural actions  
        self.fcn = NaturalHead(action_space)
        
        # fully connected layer for visual actions  
        self.fcv = VisionHead(n_visual_actions)
        
        self._visual_forward = None
    # compute value 
    def forward(self, x):
        conv_out = self.conv(x)
        self._visual_forward  = self.fcv(conv_out)
        return self.fcn(conv_out)
    
    def visual_forward(self, x):
        conv_out = self.conv(x)
        self._visual_forward  = self.fcv(conv_out)
        return self._visual_forward
        
class Qv(nn.Module):
    
    def __init__(self, active_dqn: ActiveDQN):

        super().__init__()
       
        # convolution layer sub module
        self.conv = active_dqn.conv
        
        # fully connected layer submodule
        self.fc = active_dqn.fcv
    # compute value 
    def forward(self, x):
        conv_out = self.conv.forward(x)
        return self.fc.forward(conv_out)

Архитектура нейронной сети и гиперпараметры такие же, как и в статье об активном видении. Затем мы обучили его 10 миллионам шагов в Breakout и записали результат. Аппаратное обеспечение состоит из процессора (Intel Xeon W2255, 4,5 ГГц) с графическим процессором Quadro RTX 6000.

Обучение MyDQN при прорыве

Здесь мы обсудим производительность MyDQN в Breakout, сравнив его со случайным агентом, агентом DQN ([6]) и агентом MyDQN [4] из исходной статьи об активном видении. Наилучшая производительность MyDQN составляет около 12 (см. рис. 10), что лучше, чем у случайного агента с оценкой 1,7. Это, а также тот факт, что производительность агента в глобальном масштабе увеличивается, доказывает, что агент обучается. А агент MyDQN+DPER набирает около 50 баллов (после 3 часов обучения, что примерно эквивалентно 10 миллионам шагов). Мы видим, что агент MyDQN работает хуже, чем агент MyDQN из документа с активным видением, который использует DPER. Впечатления по-прежнему равномерно отбираются из памяти воспроизведения независимо от величины ошибки. Приоритизация опыта с использованием величины ошибки должна уменьшить количество выборок, необходимых для изучения оптимальной политики. Кроме того, наш алгоритм не распространяется, как MyDQN+DPER, который использует 7 разных участников для сбора опыта. Он также работает намного хуже, чем классический агент Double DQN (401.2). Одна из причин заключается в том, что MyDQN учится играть и одновременно учится контролировать свое зрение.

Основные оставшиеся задачи

Далее мы интегрируем Active Vision в уже существующую реализацию DQN с использованием DPER, а затем добавим слой LSTM. Мы сможем сравнить наши результаты с результатами оригинальной статьи. Затем мы расширим границы, исследуя различные типы логарифмических разрешений датчиков, которые могут еще больше уменьшить пространство состояний. Также будет интересно посмотреть на способы сочетания активного зрения с логарифмическим датчиком. Ниже представлен подробный план действий с описанием основных этапов.

полный код доступен на GitHub

Автор: Коломб М’Бунгу

БИБЛИОГРАФИЯ

[1] Дэн Хорган, Джон Куан, Дэвид Бадден, Габриэль Барт-Марон, Маттео Хессель, Хадо Ван Хасселт и Дэвид Сильвер. Распределенное воспроизведение опыта с приоритетом. Препринт arXiv arXiv: 1803.00933, 2018 г.

[2] Владимир Мних, Корай Кавукчуоглу, Дэвид Сильвер, Алекс Грейвс, Иоаннис Антоноглу, Даан Вирстра и Мартин Ридмиллер. Игра в atari с глубоким обучением с подкреплением. АрХив, 2013.

[3] Владимир Мних, Николас Хесс, Алекс Грейвс и др. Рекуррентные модели зрительного внимания. страницы 2204–2212, 2014.

[4] Джим Оман. Применение Deep Q-Learning для контроля зрения в средах Atari. 2020.

[5] В. Хавьер Травер и Александр Бернардино. Обзор логполярной визуализации для визуального восприятия. Эльзевир, 2009.

[6] Давид Сильвер Владимир Мних, Корай Кавукчуоглу. Контроль на уровне человека посредством глубокого обучения с подкреплением. Природа, 2015. https://doi.org/10.1038/nature14236.