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

Обучение с подкреплением

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

Вот простой график, показывающий, как работают агенты

Агент в текущем состоянии (St) выполняет действие (At), на которое среда реагирует и реагирует, возвращая агенту новое состояние (St + 1) и вознаграждение (Rt + 1). Учитывая обновленное состояние и награду, агент выбирает следующее действие, и цикл повторяется до тех пор, пока среда не будет решена или завершена.

OpenAI Gym - это набор инструментов с открытым исходным кодом для разработки и сравнения алгоритмов обучения с подкреплением, который дает вам доступ к стандартизированному набору сред.

Итак, давайте установим среду тренажерного зала OpenAI и попробуем практическую работу с классической средой управления.

pip install gym

Приступим к созданию алгоритма обучения с подкреплением openai gym в классической среде CartPole-v1.

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

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

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

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

Затем нам нужно создать объект агента и вызвать метод действия get, чтобы получить действие для окружающей среды и таблицы наблюдений, мы видим, что информация о полюсном угле находится в индексе 2 пространства наблюдения, так что это означает, что нам нужно передать текущее состояние нашему агенту. при выборе действия для следующего временного шага, чтобы оказалось, что env.reset действительно возвращает начальное состояние, а затем env.step возвращает кортеж, содержащий следующее состояние или награду за последний шаг временного шага, независимо от того, достиг ли эпизод конечного состояния.

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