Это часть постов по изучению алгоритма подкрепления.
Часть 1 доступна здесь:



Представляем бандитскую машину с К-образным вооружением

Итак, когда вы знаете основы построения простого ИИ, который учится на действиях, что дальше?

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

Для простоты предположим простую среду: "проблема с k-рукими бандитами". Игра в казино под названием «бандит», получившая свое название, эта проблема демонстрирует эффективность некоторых алгоритмов обучения с подкреплением (RL).

K-рукий бандит предполагает машину с k руками (или кнопками, независимо от того, что принимает ввод от игрока), и разные руки соответствуют разным вознаграждениям (количество монет, которые вы получаете, если это настоящий автомат казино).

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

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

Кстати, этот пост следует за книгой Введение в алгоритм подкрепления. Я бы порекомендовал прочитать книгу.

Какие алгоритмы RL мы здесь тестируем?

В предыдущем посте мы обсуждали, что алгоритм RL решает, какое действие он предпримет, на основе полученного им «сопоставления прошлых действий и вознаграждения».

Когда алгоритм строго следует наилучшему отображению вознаграждения за действие, мы называем его «чисто жадным» алгоритмом; Он никогда не рискует, выбирая неизвестные (очевидно, менее выгодные) действия, всегда перестраховывается.

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

Этот вид экспериментов с неопределенностью в уме называется «исследованием». Он исследует другие ходы, а затем извлекает из них уроки, делая предположение более подотчетным.

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

Когда почти жадный алгоритм предпринимает исследовательский ход (то есть выбирает нерелевантное действие из действия с наивысшим вознаграждением), тренер RL устанавливает параметр, определяющий вероятность перехода в этот исследовательский режим. Если этот параметр (назовем его жадность) равен 0,9, то 10% времени алгоритм выполняет исследовательский ход.

Давайте заставим ИИ играть в бандитов!

Имея в виду эти различные стратегии, давайте создадим среду тестирования. На данный момент мы тестируем 3 разных алгоритма: чисто жадный алгоритм почти жадный с жадностью 0,9 и алгоритм с жадностью 0,99 .

Чтобы подготовить бандитские машины, мы установили истинное сопоставление вознаграждения за действие, чтобы оно соответствовало нормальному (гауссовскому) распределению.
Когда машина создается впервые, мы устанавливаем «значение вознаграждения по умолчанию» для каждой руки. Это значение является случайным числом, соответствующим нормальному распределению (медиана 0, дисперсия 1).

Когда игрок играет на автомате (нажимает на рычаг), он динамически вычисляет вознаграждение, используя нормальное распределение, но на этот раз среднее значение представляет собой предварительно установленное значение вознаграждения по умолчанию (дисперсия по-прежнему равна 1).

Покажи мне код

Итак, вот код на Ruby, и вы можете запустить его, чтобы наблюдать за производительностью каждого алгоритма с бандитскими средами, описанными выше.



Выходные данные программы Ruby действительно иллюстрируют характеристики каждого алгоритма. Имейте в виду, что скорость скрипта и статистическое качество находятся в компромиссе.

Наблюдение

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

При рассмотрении почти жадных алгоритмов с разной вероятностью поисковых ходов алгоритм с жадностью 0,9 (10% изменение исследовательского хода), скорее всего, достигнет наибольшей награды в объеме 1000 игр против того же бандита. окружающая обстановка.

Когда жадность составляет 0,99 (изменение 1% исследовательских ходов), она не учится так быстро, как при 0,9, но также продолжает учиться, чтобы получать более высокие средние вознаграждения.

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

Вывод

В этом посте мы рассмотрели различные настройки параметров для простых алгоритмов RL; значение того, насколько вероятно, что алгоритм «рискует» собой, исследуя другие ходы.
Существуют более сложные способы настройки параметров, и мы сами должны исследовать больше области.

До новых встреч и с праздником!