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

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

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

Рассмотрим случай, когда компьютер пытается научиться играть в видеоигру. Среда в данном случае — это мир игры и правила, которые ею управляют. Состояние — это массив чисел, представляющих все, что касается того, как выглядит игровой мир в определенный момент.

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

Законы игры определяются следующим образом:

Стержень соединен шарниром с тележкой, которая движется по рельсу без трения. Система управляется приложением силы +1 или -1 к тележке. Шест начинается вертикально, и цель состоит в том, чтобы предотвратить его падение. Награда +1 предоставляется за каждый временной шаг, в течение которого шест остается в вертикальном положении. Эпизод заканчивается, когда шест отклоняется от вертикали более чем на 15 градусов или тележка перемещается более чем на 2,4 единицы от центра.

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

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

В контексте Cart Pole политика представляет собой массив весов, который определяет, насколько важен каждый из 4 компонентов состояния для выполнения определенного действия. Мы умножаем каждый вес на компоненты состояния, затем суммируем их все, чтобы получить одно число. Это число представляет действие, которое мы предпримем. Для Cart Pole, если число положительное, мы перемещаем тележку вправо и наоборот.

Представьте, что тележка находится в центре игрового экрана, движется вправо, столб наклонен вправо и падает вправо. Состояние может быть представлено как [0,1, 0,02, 0, 0,3]. Примером политики может быть [0,23, 0,45, -0,11, -0,09]. В этом случае состояние игры и политика будут соответствовать следующим образом:

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

Действие = (полюсный угол x относительная важность полюсного угла для решения о действии) + …

Действие = (0,1 x 0,23) + (0,02 x 0,45) + (0 x -0,11) + (0,3 x -0,09)

Действие = 0,005

Порог = 0

Действие › Порог, поэтому мы смещаемся вправо на одну единицу.

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

Скорее всего, мы придумали политику, которая позволяет набрать 500 очков. Наш агент выиграл игру!

Куда мы отправимся отсюда? Вот и все, но если мы хотим построить более надежную систему, мы можем рассмотреть некоторые из следующих подходов:

  • Использование алгоритма оптимизации для поиска лучшей политики вместо случайного выбора (например, Deep Q Learning, Proximal Policy Optimization, поиск по дереву Монте-Карло и т. д.)
  • Тестирование наилучшей политики, которую мы получили во многих эпизодах, чтобы убедиться, что нам не повезло только в одном эпизоде.
  • Тестирование нашей политики на версии тележки с высшим баллом выше 500, чтобы увидеть, насколько устойчива политика.

Спасибо за чтение.

Первоначально опубликовано на https://ericvanular.com 28 декабря 2018 г.