Вы когда-нибудь слышали о братьях Стругацких, известных русских писателях-фантастах, и их рассказах вроде Пикник на обочине или Трудно быть богом? Если вы фанат научной фантастики, вам стоит почитать их романы. Я вырос на их историях вместе с такими фильмами, как Звездные войны, Чужой (люблю большинство фильмов Ридли Скотта), и, конечно же, фильм Стэнли Кубрика «2001: Космическая одиссея ''. Эти вещи воспитали во мне глубокую любовь ко всему, что связано с искусственным интеллектом, роботами, космосом и астрофизикой. Я никогда не мог представить, что когда-нибудь ИИ станет моей профессией ...

Я пришел в эту сферу с необычным прошлым - я был профессиональным артистом балета, а потом стал писателем в области искусственного интеллекта. Я погружаюсь в исследовательскую часть технологии как ключевой фактор, чтобы понять, что такое ИИ, его потенциал и ограничения. С этой целью я провел проект по науке о данных и построил классификатор нейронной сети, и теперь я развиваю свои навыки в подходе к глубокому обучению с подкреплением, который особенно популярен в OpenAI. и DeepMind, поскольку они считают, что он способствует созданию суперинтеллекта (ожидая некоторых прорывов в области аппаратного обеспечения ИИ для увеличения вычислительной мощности).

Что такое глубокий RL и зачем он нужен человечеству

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

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

Погружение в техническую часть

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

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

Набор состояний и действий вместе с правилами перехода из одного состояния в другое создают марковский процесс принятия решений. Один эпизод этого процесса (например, одна игра) представляет собой конечную последовательность состояний, действий и наград:

(s i - состояние, a i - действие, а r i + 1 - награда после выполнения действия. эпизод заканчивается конечным состоянием s n, например, «игра окончена» на экране).

Марковский процесс принятия решений основан на предположении Маркова о том, что вероятность следующего состояния s i +1, которое зависит только от текущего состояния s i и действие a i, но не для предыдущих состояний или действий.

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

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

Что такое Q-обучение?

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

Оптимальные функции q должны согласовываться с уравнением Беллмана (которое дает подсказку о том, как мы можем итеративно улучшить приближение нашей функции q).

Подход очень логичен - максимальная будущая награда за это состояние и действие - это немедленная награда плюс максимальная будущая награда за следующее состояние.

Итак, алгоритм Q обучения (получение хорошей аппроксимации q-функции) будет выглядеть следующим образом.

Фактический опыт: игра Flappy Birds как среда Deep RL

Я использовал Pygame как эмулятор для игры Flappy Birds. Pygame - это набор библиотек для Python для программирования компьютерных игр. Интерфейс - это wrapped_flappy_bird, который представляет интерфейс для игры и функцию вознаграждения и позволяет использовать Flappy Birds в качестве среды обучения с подкреплением.

Как нейронная сеть применяется в Q-обучении

Так как состояний много, мы не можем запомнить состояние каждой пары. Аппроксиматор Q-функции - ConvNet - здесь, чтобы помочь нам решить проблему. Он принимает состояние ввода (изображение из игры), а на выходе выдает значение «q function» для всех возможных действий.

Ниже представлена ​​архитектура ConvNet, реализованная в Tensorflow и служащая аппроксиматором для значений Q-функции.

Архитектура сверточной нейронной сети

Опыт повтора

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

Вуаля, результат эксперимента.