Новый взгляд на обучение с подкреплением: шаг к общему искусственному интеллекту с Super Mario

Все началось с простой задачи: обучить агента играть в Super Mario Brothers. Но вы найдете так много учебных пособий в Интернете, чтобы сделать это. Но как насчет того, чтобы научить агента играть в Марио так, как играют люди? Есть ли разница? Это еще одна задача, столь же простая, как обучение агента 😉. Да, вы уловили здесь выделенный курсивом намек.

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

1) Движение. Какой путь?

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

Я уже слышу, как вы, ребята, говорите: «Все просто, бро: давайте агенту три варианта — двигаться влево, двигаться вправо или ничего не делать — и агент поймет, что лучше. Кусок пирога".

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

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

2) Взаимодействие. Как классифицировать Хорошего, Плохого и Уродливого?

Нам нужно сначала разобраться в вещах и прочем. Извините, что ввожу жаргон 😁. Итак, вещи — это вещи, с которыми вы можете взаимодействовать, а вещи — это фоновые вещи, с которыми вы не можете взаимодействовать. Насколько мета может получиться 😉?

Хм, зачем нам выяснять, с какими вещами мы можем взаимодействовать, а с какими нет? Поэтому мы не всегда прыгаем и избегаем гор и кустов…! Давайте проанализируем скриншот выше. Мы начинаем стоять перед горой: это говорит нам о том, что горы — это в основном материал. Хотя, в исключительных случаях, один (да, это я) стоял бы там под горой, нажимая кнопку «вверх» в надежде, что Марио взберется на гору или несколько раз прыгнет, чтобы попасть на вершину горы. Поскольку большинство из нас идет в кусты и горы, не прыгая, мы вскоре узнаем, что на самом деле это не то, с чем мы можем взаимодействовать.

Как насчет облаков? Что делают грибы? Могу ли я съесть гумбу, просто наткнувшись на него? Сможет ли Марио растоптать и убить растения-пираньи? Мы ничего этого не знали, когда начинали игру…!

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

CNN все это видит и должен сам во всем разобраться, какое нам дело? Потому что не видит подсказок и намеков. Мы используем множество скрытых подсказок и подсказок, чтобы выяснить, является ли какая-то «вещь» хорошей, плохой или уродливой.

Давайте снова обратим внимание на детали. Мы знаем, например, что монеты не помешают, поэтому смело и пробуем их собирать. Растение пиранья, например, естественным образом сообщает, что оно опасно. Знак вопроса на кирпичах говорит нам: «Эй, я мог бы быть монетой, а может, грибом, попробуй меня!». На самом деле гейм-дизайнеры учитывают все это при разработке игр и дают вам подсказки разными способами, так что вы не тратите дни на изучение всех возможных взаимодействий с каждой «вещью».

Агент может пытаться прыгать всеми возможными способами, чтобы достичь возвышенности, но он усвоит на собственном горьком опыте, что должен использовать пружину, в отличие от нас, людей, которые достаточно умны, чтобы уловить намек и подумать: «Эй, это выглядит как пружина, может быть, я смогу использовать ее, чтобы подняться выше?». Агент может действовать умно, если он может использовать эти подсказки. Кроме того, любые новые знания, полученные во время обучения, должны быть переданы. Это передаваемое знание является важным шагом на пути к созданию ОИИ.

3) Какова цель?

Давайте упростим задачу, используем счет в качестве функции вознаграждения, и агент будет играть в игру так, как мы хотели. Проблема решена? Неа!

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

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

Тогда и то, и другое? Хм, да, вроде близко, но не совсем правильно. Фактически, это становится первым вопросом, когда вы обучаете своего агента, но, с другой стороны, мы не задавали этот вопрос, когда начинали игру. О том, что Марио пытается спасти принцессу, я узнал только после прохождения нескольких уровней…!

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

4) Увеличение сложности и постепенное расширение пространства действий

Самый первый зеленый горшок не поставляется с растением-пираньей, или вы не видите Боузера в конце мира 1–1 не только потому, что разработчики игры не хотят, чтобы вы потерпели неудачу так сильно, что вы сдались, но также и то, что они не раскрывают все элементы игры в одном кадре. Игра становится все сложнее, поэтому агент должен учиться так же. Формирование вознаграждения и увеличение сложности абсолютно необходимы для правильного обучения.

У агентов есть список всех возможных действий, и они могут выбрать любое из списка. Однако мы исследуем и расширяем пространство действия по мере необходимости и по ходу игры. Помните, что мы не знали, как бегать или стрелять в самом начале игры. Вместо этого мы изучаем их на ходу. Даже если мы пропустим их — некоторые из нас просто подумали бы, что улучшение огненного цветка — это просто улучшение костюма — наш мозг вскоре соединяет точки: цвет цветка, отношение к огню, модный костюм, так что, суперсила? Нажимаем другие кнопки и бум! Ну вот…!

Решения?

Я назвал проблемы, которые нам нужно решить, но я знаю, что у вас в голове: «Все в порядке, где код? Как мне решить эти проблемы?». Я напишу, как эти проблемы решались ранее, что было сделано правильно, что было упущено и как мы можем их улучшить в другой статье. Надеюсь, это было полезно, и, возможно, вы взяли что-то или два. Удачи сделать вашего агента умным.